信号发生器设计与制作

  • 格式:doc
  • 大小:9.98 MB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xxxxxxxxxxxxxxxxxxx学院电子技术应用专业

《微处理器应用与实践》

作业

组别 xxx

姓名 xxx 、xxx、xxx、xxx

学号 xxxxxxxxxxxxx

班级 xxxxxxxxxxxxx

信号发生器设计与制作作业卡

1、信号发生器的功能与任务

1、信号发生器功能指标要求及任务

1、功能指标要求

1)用KEILC51.PROTEUS.EASY下载软件开发工具

2)用AT89S52单片机作控制,DAC0832作D/A转换器。

3)三只按键作操作按键,8位数码管作显示。

4)键控输出方波,三角波,正弦波。

5)输出信号幅度稳定,频率可调。

6)发挥拓展功能,如幅度可调,频率可调,幅度,频率范围及精度可控等。

2、任务

1)拟定总体设计制作方案。

2)拟定硬件电路

3)编制软件流程图及设计相应源程序。

4)仿真调试信号发生器

5)安装元件,制作信号发生器。调试功能指标。

6)完成项目报告。

2、总体设计思路

实现思路与框图设计

基本功能部分的实现思路是:用AT89S52单片机作控制,DAC0832作D/A转换器,单片机输出产生信号的数据,控制DAC0832输入数据的大小及组合关系,得到不同的周期和频率,保持输入数据稳定,保持信号幅度不变,经D/A转换、放大,输出模拟信号,总体结构框架图如下图

时钟电路

复位电路电源电路At89S52

ADC0832D

/A转换

数码管

显示

信号发生器原理图设计

如图

用AT89S52作控制、DAC08032作数模转换、AT89S52的P0.0P0.7作波形发生数据的输出端口,与D/A转换器DAC0832的转换数据输入端口(D0D7)相连,用AT89S52的P1.0P1.2作按键端口。为节省端口,DAC0832采用直通方式。用LM358做运算放大器。参考图如上图

信号发生器程序设计

1.程序流程图

(1)主程序流程图

开始

是否有键按下

消抖动

等待按键释放

读键值、按键值散转

键值1方波键值2三角波键值3正玄波

返回

2)程序

#include

#include

#define DAC0832 XBYTE[0x7fff]

float code zhengxian[255]={

100.0000 , 102.4541 , 104.9068 , 107.3565 , 109.8017 ,112.2411 , 114.6730 , 117.0962, 119.5090 121.9101 , 124.2980, 126.6713 , 129.0285, 131.3682 , 133.6890 , 135.9895, 138.2683, 140.5241, 142.7555 , 144.9611, 147.1397, 149.2898 ,151.4103 , 153.4998 , 155.5570, 157.5808 , 159.5699, 161.5232 , 163.4393 , 165.3173, 167.1559 , 168.9541, 170.7107, 172.4247 , 174.0951, 175.7209,177.3010 , 178.8346, 180.3208 , 181.7585 , 183.1470, 184.4854 , 185.7729, 187.0087 ,188.1921,189.3224 , 190.3989 , 191.4210 , 192.3880 , 193.2993 , 194.1544 , 194.9528 , 195.6940 , 196.3776, 197.0031 , 197.5702 ,

200.0000 , 199.9699, 199.8795 , 199.7290 , 199.5185 , 199.2480 ,198.9177 ,198.5278, 198.0785, 197.5702, 197.0031 , 196.3776, 195.6940 , 194.9528 , 194.1544, 193.2993 , 192.3880, 191.4210 , 190.3989 , 189.3224 , 188.1921, 187.0087, 185.7729 , 184.4854, 183.1470, 181.7585,180.3208, 178.8346 , 177.3010, 175.7209 , 174.0951 , 172.4247 , 170.7107, 168.9541 , 167.1559, 165.3173 , 163.4393 , 161.5232, 159.5699 , 157.5808 , 155.5570 , 153.4998 ,151.4103 , 149.2898,147.1397 , 144.9611 , 142.7555 , 140.5241 , 138.2683 , 135.9895 , 133.6890, 131.3682, 129.0285,126.6713 , 124.2980 , 121.9101 , 119.5090 , 117.0962 , 114.6730 , 112.2411, 109.8017, 107.3565, 104.9068, 102.4541 , 100.0000 , 97.5459 , 95.0932, 92.6435, 90.1983 , 87.7589 , 85.3270, 82.9038 , 80.4910 , 78.0899 , 75.7020 , 73.3287 , 70.9715, 68.6318, 66.3110 , 64.0105, 61.7317 , 59.4759 , 57.2445 , 55.0389, 52.8603 , 50.7102 , 48.5897, 46.5002 , 44.4430, 42.4192 , 40.4301, 38.4768 , 36.5607 , 34.6827, 32.8441 , 31.0459 , 29.2893 , 27.5753,25.9049, 24.2791, 22.6990 , 21.1654 , 19.6792 , 18.2415 , 16.8530 , 15.5146 , 14.2271,12.9913, 11.8079, 10.6776, 9.6011 , 8.5790, 7.6120, 6.7007, 5.8456 , 5.0472,4.3060 , 3.6224 , 2.9969 , 2.4298 ,

1.9215 , 1.4722 , 1.0823 , 0.7520 , 0.4815, 0.2710 , 0.1205, 0.0301 , 0 , 0.0301 , 0.1205 , 0.2710 , 0.4815 , 0.7520,1.0823 , 1.4722 , 1.9215 ,

2.4298, 2.9969 ,

3.6224 ,

4.3060 ,

5.0472 , 5.8456,

6.7007 ,

7.6120 ,

8.5790,

9.6011 , 10.6776, 11.8079 , 12.9913 , 14.2271, 15.5146, 16.8530 , 18.2415, 19.6792 , 21.1654 , 22.6990 , 24.2791 , 25.9049 , 27.5753 , 29.2893,

31.0459 , 32.8441 , 34.6827, 36.5607 , 38.4768 , 40.4301, 42.4192 ,

44.4430 , 46.5002, 48.5897 , 50.7102 , 52.8603, 55.0389 , 57.2445 , 59.4759, 61.7317 , 64.0105 , 66.3110,68.6318 , 70.9715 , 73.3287 ,75.7020 , 78.0899, 80.4910, 82.9038 , 85.3270 , 87.7589, 95.0932 , 97.5459 , 100.0000};

unsigned char code duanma[6]={0x3f,0x06,0x5b,0x6d,0x71,0x7c};

sbit p36=P3^6;

sbit p30=P3^0;

sbit p31=P3^1;

sbit p32=P3^2;

void delay(unsigned int i)

{

unsigned int j,k;

for(j=0;j

for(k=0;k<120;k++)

;

}

void fangbo()

{