当前位置:文档之家› 信号发生器设计与制作

信号发生器设计与制作

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转换、放大,输出模拟信号,总体结构框架图如下图时钟电路复位电路电源电路At89S52ADC0832D/A转换数码管显示运放信号发生器原理图设计如图用AT89S52作控制、DAC08032作数模转换、AT89S52的P0.0P0.7作波形发生数据的输出端口,与D/A转换器DAC0832的转换数据输入端口(D0D7)相连,用AT89S52的P1.0P1.2作按键端口。

为节省端口,DAC0832采用直通方式。

用LM358做运算放大器。

参考图如上图信号发生器程序设计1.程序流程图(1)主程序流程图开始是否有键按下消抖动等待按键释放读键值、按键值散转键值1方波键值2三角波键值3正玄波返回2)程序#include<reg51.h>#include<absacc.h>#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<i;j++)for(k=0;k<120;k++);}void fangbo(){DAC0832=0xff;delay(10);DAC0832=0x00;delay(10);}void sanjiaobo(){unsigned int j;for(j=0;j<255;j++) DAC0832=j;for(j=255;j>0;j--) DAC0832=j;}void zhengxianbo() {unsigned char g;for(g=0;g<255;g++) DAC0832=zhengxian[g]; }void fxianshi(){P2=duanma[4];p30=0;fangbo();p30=1;P2=duanma[5];p31=0;fangbo();p31=1;P2=duanma[0];p32=0;fangbo();p32=1;}void sxianshi(){P2=duanma[3];p30=0;P2=duanma[5]; p31=0; sanjiaobo();p31=1;P2=duanma[1]; p32=0; sanjiaobo();p32=1;}void zxianshi() {P2=duanma[2]; p30=0; zhengxianbo(); p30=1;P2=duanma[5]; p31=0; zhengxianbo(); p31=1;P2=duanma[2]; p32=0; zhengxianbo(); p32=1;}key1(){while(1){fxianshi();}}key2(){while(1){sxianshi();}{while(1){zxianshi();}}void judge_key(){unsigned char key_value; P1=0xff;key_value=~(P1)&0xff; while(key_value!=0){delay(10);if(key_value!=0){while((key_value&P1)!=0); switch(key_value){case 0x01:key1();break; case 0x02:key2();break; case 0x04:key3();break; }}}}main(){p36=0;while(1)judge_key();}5、仿真信号发生器仿真模型与结果6、元器件的清单所用元器件1 名称型号数量2 单片机At89s52 13 D/A转换器DAC0832 14 电阻8.2kΩ 15 晶振12MHz 16 瓷片电容22pF 27 瓷片电容103 18 电解电容10uF/16V 29 电源直流5v输出110 电阻560Ω811 数码管共阴4位一体212 按键触摸按键47、元器件的安装安装效果图8、数字电压表调试调试指标1. USB下载模块2. CPU系统模块3. 电源模块4. 数码管显示模块5. DA 转换模块调试方法步骤1)先静态检查是否有虚焊。

相关主题