资源简介

该实验是利用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 ++ < sqar_num)
{
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


评论

共有 条评论