資源簡介
該實驗是利用DAC0832芯片并結合AT89C52主控模塊,在一定的運算下制造出不同波形的原理來設計的,通過結合示波器以及鍵盤,可以模擬出按鍵產生不同波形的效果。
本實驗可以產生鋸齒波、正弦波、方波和三角波這四種波形,祝大家學習愉快。

代碼片段和文件信息
#include
#define?uint?unsigned?int
#define?uchar?unsigned?char
sbit?cs?=?P2^4;
sbit?wr?=?P3^6;
sbit?stw_check?=?P1^0;
sbit?sin_check?=?P1^1;
sbit?square_check?=?P1^2;
sbit?triangle_check?=?P1^3;
sbit?led?=?P2^5;
bit?flag;
uchar?inums_numt_numsqar_num?=?128f1;
code?unsigned?char?sin_num[]?=?{?????
??0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2
??2 3 3 4 4 4 5 5 6 6 7 7 8 8 9 9
??????10 10 11 12 12 13 14 15 15 16 17 18 18 19 20 21
??22 23 24 25 25 26 27 28 29 30 31 32 34 35 36 37
??????38 39 40 41 42 44 45 46 47 49 50 51 52 54 55 56
??????57 59 60 61 63 64 66 67 68 70 71 73 74 75 77 78
? ??80 81 83 84 86 87 89 90 92 93 95 96 98 99 101102
??104 106 107 109 110 112????113 115 116 118 120 121 123 124 126 128
??129 131????132 134 135????137????139 140 142 143 145 146 148????149 151 153
??154 156 157 159 160 162 163 165????166 168 169 171 172 174 175 177
??178 180 181????182 184 185 187 188 189 191 192 194 195 196 198 199
??200 201 203 204 205 206 208 209 210 211 213 214 215 216 217 218
??219 220 221 223 224 225 226 227 228 229 230 230 231 232 233 234
??235 236 237 237 238 239 240 240 241 242 243 243 244 245 245 246
??246 247 247 248 248 249 249 250 250 251 251????251 252 252 253 253
??253 253 254 254 254 254 254 255 255 255 255????255 255 255 255 255
??????};
void?delay(uint?iuint?j)?//delay(182)為1.01779ms
{
uint?xy;?//delay(x0):15.19,39.07,62.94,86.9,110.68,134.55,158.42,182.29,206.17,230.04,253.91(x取0?~?10)us?
for(x?=?i;x?>?0;x?--)?
for(y?=?j;y?>?0;y?--);?//執行此句約需24us,24x?+?14?=?delay(x0)的延時時間
}
void?sin()?//正弦波
{
????if(!flag)
????{
P0?=?sin_num[num++];
if(num?==?0)
{
num?=?255;
flag?=?1;
}
?? }
????else?if(flag)?
????{
P0?=?sin_num[num--];
if(num?==?255)
{
num?=?0;
flag?=?0;
} ?
}
}
void?square()?//方波
{
????if(i?++? {
P0?=?0xff;
}
else
{
P0?=?0x00;
}
}
void?triangle() //三角波
{
if(~flag)
{
P0?=?t_num?++;
if(t_num?==?0)
{
t_num?=?255;
flag?=?1;
}
}
else?if(flag)
{
P0?=?t_num?--;
if(t_num?==?255)
{
t_num?=?1;
flag?=?0;
}
}
}
void?stw()?//鋸齒波
{
P0?=?s_num?++;
}
void?main()
{
led?=?0;
wr?=?0;
cs?=?0;
while(1)
{
if(stw_check?==?0?&&?sin_check?==?1?&&?square_check?==?1?&&?triangle_check?==?1)
{
if(stw_check?==?0)
{
f1?=?0;
while(!stw_check);
}
}
else?if(stw_check?==?1?&&?sin_check?==?0?&&?square_check?==?1?&&?triangle_check?==?1)
{
if(sin_check?==?0)
{
f1?=?1;
while(!sin_check);
}
}
else?if(stw_check?==?1?&&?sin_check?==?1?&&?square_check?==?0?&&?triangle_check?==?1)
{
if(square_check?==?0)
{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????19??2012-04-20?12:57??Signal\ExtDll.iex
?????文件?????403258??2012-05-11?16:23??Signal\Last?Loaded?Signal.DBK
?????文件???????5311??2012-05-11?16:31??Signal\signal
?????文件???????3535??2012-05-11?16:31??Signal\signal.c
?????文件?????403756??2012-05-11?16:30??Signal\Signal.DSN
?????文件???????2072??2012-05-11?16:31??Signal\signal.hex
?????文件?????????44??2012-05-11?16:31??Signal\signal.lnp
?????文件???????9788??2012-05-11?16:31??Signal\signal.LST
?????文件???????9210??2012-05-11?16:31??Signal\signal.M51
?????文件???????6056??2012-05-11?16:31??Signal\signal.OBJ
?????文件????????376??2012-05-11?16:50??Signal\signal.plg
?????文件????????766??2012-05-11?16:33??Signal\Signal.PWI
????.......????143079??2012-05-11?16:50??Signal\signal.uvgui.Administrator
????.......????140322??2012-04-22?15:31??Signal\signal.uvgui_Administrator.bak
????.......??????6241??2012-05-11?16:50??Signal\signal.uvopt
?????文件??????13273??2012-04-19?17:18??Signal\signal.uvproj
????.......??????6243??2012-04-22?15:31??Signal\signal_uvopt.bak
?????文件??????????0??2012-04-19?15:24??Signal\signal_uvproj.bak
?????文件?????498688??2012-05-11?16:52??Signal\操作說明.doc
?????目錄??????????0??2012-05-11?16:52??Signal
-----------?---------??----------?-----??----
??????????????1652037????????????????????20
- 上一篇:verilog 開方 pdf
- 下一篇:華為面試題目,經典的題目,有幫助
評論
共有 條評論