信号发生器设计与制作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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()
{