基于单片机的16位数模转换波形发生器项目报告.doc

上传人:西安人 文档编号:5020827 上传时间:2020-01-29 格式:DOC 页数:28 大小:955KB
返回 下载 相关 举报
基于单片机的16位数模转换波形发生器项目报告.doc_第1页
第1页 / 共28页
基于单片机的16位数模转换波形发生器项目报告.doc_第2页
第2页 / 共28页
基于单片机的16位数模转换波形发生器项目报告.doc_第3页
第3页 / 共28页
基于单片机的16位数模转换波形发生器项目报告.doc_第4页
第4页 / 共28页
基于单片机的16位数模转换波形发生器项目报告.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《基于单片机的16位数模转换波形发生器项目报告.doc》由会员分享,可在线阅读,更多相关《基于单片机的16位数模转换波形发生器项目报告.doc(28页珍藏版)》请在三一文库上搜索。

1、1 目录目录 一、 概述2 1.1 课题研究的内容和意义.2 1.2 达到的技术指标2 二、系统总体设计4 2.1 系统设计方案论证(几种方案选一).4 2.2 系统总体框图及简要说明实现了的主要功能.4 三、 硬件电路设计6 3.1 元器件的选择.6 3.2 单片机控制模块13 3.3 温度数据采集模块14 3.4 显示模块14 3.5 温度数据无线传输电路15 四、软件设计17 4.1 主程序流程图17 4.2 其他功能流程图19 五、系统调试23 5.1 测试环境和方法23 5.2 测试结果23 5.3 出现问题及解决方法23 六、展望26 一、一、 概述概述 1.1 课题研究的内容和意

2、义课题研究的内容和意义 本课题采用本课题采用 51 单片机对两个单片机对两个 DAC0832 进行控制来实现进行控制来实现 16 位位 DA 输出。因为高精度输出。因为高精度 DAC 转换芯片价格比较贵,而且有时不易转换芯片价格比较贵,而且有时不易 购买,通过对购买,通过对 2 个个 DAC0832 进行控制,可以构成高精度的进行控制,可以构成高精度的 DAC, 既降低了成本又解决了实际需要。既降低了成本又解决了实际需要。 2 1.2 技术指标技术指标 设计并制作一个基于单片机的设计并制作一个基于单片机的 16 位位 DA 输出,能够输出方波、输出,能够输出方波、 锯齿波、三角波、梯形波、正弦

3、波这锯齿波、三角波、梯形波、正弦波这 5 种波形,在输出波形的同时种波形,在输出波形的同时 能够实现波形的调频和调幅,波形在示波器上显示。能够实现波形的调频和调幅,波形在示波器上显示。 本设计可以通过按键控制实现波形调频,通过改变本设计可以通过按键控制实现波形调频,通过改变 DA 的基的基 准电压输入来实现调幅。准电压输入来实现调幅。 二系统的总体设计二系统的总体设计 2.1 系统设计方案论证系统设计方案论证 第一种方案:直接采用第一种方案:直接采用 16 位位 DA 转换芯片,让单片机对转换芯片,让单片机对 16 位位 DA 芯片进行控制,从而输出波形。芯片进行控制,从而输出波形。 第二种方

4、案:采用第二种方案:采用 2 个个 8 位位 DA 转换芯片转换芯片 DAC0832,两个,两个 DA 芯片采用双缓冲数据输入方式,让单片机先后控制这两个芯片采用双缓冲数据输入方式,让单片机先后控制这两个 DA 芯片芯片 的数据输入,最后再一起把数据经的数据输入,最后再一起把数据经 DA 转换器转换输出,从而输出转换器转换输出,从而输出 波形。波形。 最终采用第二种方案。最终采用第二种方案。 2.2 系统总体框图及简要说明实现了的主要功能。系统总体框图及简要说明实现了的主要功能。 3 实现了波形输出和波形的调频调幅。实现了波形输出和波形的调频调幅。 三、硬件电路设计三、硬件电路设计 3.1 元

5、器件的选择:硬件电路用了元器件的选择:硬件电路用了 STC89C51RC 单单 片机,片机,8 位位 DA 转换芯片转换芯片 DAC0832,运放,运放 LM358,还还 有有 MAX232. 3.2 单片机控制模块单片机控制模块 单片机 两个 DAC0832 按键示波器 4 3.3DA 输出模块:输出模块: 5 软件设计 1.主程序流程图: 2.子程序独立按键检测及波形显示程序流程图 开始 单片机端口 初始化 调用 独立键盘扫描 子程序 调用 显示波形 子程序 6 是 否 否 是 否 是 否 是 否 开始 判断键 1 是否被 按下,是则置标 志位 a+;a5 置 0 判断 标志位 a 是否等

6、于 0 检测键 2 是否按下 波形调频延时函数 时间标志位加大 检测键 3 是否按下 结束 波形调频延时函数 时间标志位减小 7 是 否 是 否 是 否 是 否 是 否 开始 判断标志 位 a=1? 判断标志 位 a=2? 判断标志 位 a=3? 判断标志位 a=4? 判断标志位 a=5? 结束 产生锯齿波 产生方波 产生三角波 产生正弦波 产生梯形波 8 总程序: #include #include #include #define uchar unsigned char #define uint unsigned int sbit da1wr1=P10; sbit da1wr2=P11;

7、sbit da2wr1=P12; sbit da2wr2=P11; sbit ile=P13; sbit cs=P12; sbit key1=P34; sbit key2=P35; sbit key3=P36; sbit key4=P37; uint i=0; uint ih=0; 9 uint il=0; /uchar numdis=0; uchar a=0; uchar d=0; uchar c=10; uchar k; uchar num=3; uchar code tab256= 0x80,0x82,0x85,0x88,0x8b,0x8e,0x91,0x94,0x97,0x9a,0x9

8、d,0xa0,0x a3,0xa6, 0xa9,0xac,0xaf,0xb2,0xb6,0xb9,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0 xcf, 0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xe a,0xec, 0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0x fd, 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

9、0xff, 0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0x f1, 0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0 xd6, 10 0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0 xb1, 0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x8 9,0x86, 0x8

10、3,0x80, 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d, 0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x 38,0x35, 0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x 18,0x16, 0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x 05,0x04, 0x03,0x02,0x02,

11、0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00, 0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x 0a,0x0b, 0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x 22,0x25, 0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x 45,0x48, 0x4c,0x4e,0x51,0x55,0x57,0x

12、5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x 6f,0x72, 11 0x76,0x79,0x7c,0x80 ; code unsigned char table2=0,255; void delayms(uint xms) uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-); /*void delay( ) uchar i; for(i=0;i=10)num=1; if(c=20)c=5; if(key3=0) delayms(10); if(key3=0) while(!key3); c-; num-; if(num=0)num

13、=10; if(c3)c=20; void display(uchar a) 14 if(a=1)/锯齿波 i=i+5; ih=i/256; il=i%256; P0=il; da1wr1=0; da1wr1=1; P0=ih; da2wr1=0; da2wr1=1; da1wr2=0; da1wr2=1; for(k=0;kc;k+) _nop_(); if(a=2)/方波 15 /da1wr1=0; /da2wr1=0; /da1wr2=0; P0=0; da1wr1=0; da1wr1=1; da2wr1=0; da2wr1=1; da1wr2=0; da1wr2=1; for(k=0;

14、kc-2;k+) _nop_(); P0=255; da1wr1=0; da1wr1=1; da2wr1=0; da2wr1=1; da1wr2=0; da1wr2=1; for(k=0;kc;k+) _nop_(); 16 if(a=3)/ 三角波 if(d=0) i=i+5; if(i=65535)d=1; ih=i/256; il=i%256; P0=il; da1wr1=0; da1wr1=1; P0=ih; da2wr1=0; da2wr1=1; da2wr2=0; da2wr2=1; for(k=0;kc;k+) _nop_(); else 17 i=i-5; if(i=5)d=0

15、; if(i=65535)d=1; ih=i/256; il=i%256; P0=il; da1wr1=0; da1wr1=1; P0=ih; da2wr1=0; da2wr1=1; da2wr2=0; da2wr2=1; for(k=0;kc;k+) _nop_(); if(a=4)/正弦波 18 if(+i=256)i=0; P0=tabi; da1wr1=0; da1wr1=1; da2wr1=0; da2wr1=1; da1wr2=0; da1wr2=1; for(k=0;kc;k+) _nop_(); if(a=5)/梯形波 if(d=0) i=i+5; P0=i; da1wr1=0

16、; da1wr1=1; da2wr1=0; da2wr1=1; 19 da1wr2=0; da1wr2=1; if(i=255) P0=255; da1wr1=0; da1wr1=1; da2wr1=0; da2wr1=1; da1wr2=0; da1wr2=1; delayms(num); d=1; else i=i-5; P0=i; if(i=0) d=0; 20 da1wr1=0; da1wr1=1; da2wr1=0; da2wr1=1; da1wr2=0; da1wr2=1; void main() ile=1; cs=0; da1wr1=1; da2wr1=1; da1wr2=1;

17、 while(1) keyscan(); display(a); 21 系统调试 1.测试环境和方法 (1)软件测试 软件测试的环境是在 Proteus 软件。首先是搭建电路,总电路 如下图所示。然后通过电路中的单片机下载编写好的程序,打开 示波器查看是否产生了预料的波形。调试过程先是用一块 DAC0832 搭建电路并进行测试,之后进行两块 DAC0832 搭建电 路实现 16 位数模转换测试。 22 (2)硬件测试 硬件是在万能板上进行焊接,先是焊接出一个单片机小系统, 包括电源电路,晶振电路,复位电路,串口下载电路,独立键盘 电路等。为了测试小系统是否正常工作,又加上了 led 灯电路进

18、行测试。焊接好电路后接到示波器上进行测试。 2.测试结果 (1)软件测试 在 Proteus 软件中测试一块 DAC0832 产生波形时可以正常显 示。而两块 DAC0832 一起工作时便出现了问题。其中锯齿波, 方波能够正常显示,但三角波,梯形波,正弦波就出现了问题, 三角波和梯形波在显示时只能先显示波形上升部分,也就是先显 示一个上升的锯齿波,隔段时间再显示波形下降部分,也就是一 个下降的锯齿波。两个总是不能同时显示。 (2)硬件测试 首先单片机小系统通过 led 灯测试通过,单片机正常工作。 之后进行一块 DAC0832 数模转换产生波形测试,发现无法产生 波形,都是一些杂波,而且电压的

19、峰值很小,只有几毫伏,完全 达不到 5 伏的电压要求。两块 DAC08332 一起工作也是一样。 3.产生问题及解决方法 (1)软件 两块 DAC0832 一起工作时 Proteus 软件中测试出现了问题。 其中锯齿波,方波能够正常显示,但三角波,梯形波,正弦波就 23 出现了问题,三角波和梯形波在显示时只能先显示波形上升部分, 也就是先显示一个上升的锯齿波,隔段时间再显示波形下降部分, 也就是一个下降的锯齿波。两个总是不能同时显示。但是产生波 形的程序使用的思想是一样的,为什么会出现这样的结果呢?通 过修改多次程序循环的方式后以失败告终,后来采用改变数模转 换加数字的幅度,发现,当数字提高到

20、 257 时,波形就可以正常 输出了,此时相当于每次两块 DAC0832 都是输出同样的转换数 据。因为加数字的幅度过大,所以失去了 16 位数模转换的意义, 但尝试过多种方法仍然无法解决,最后只能通过牺牲精度换取波 形的正常显示。而正弦波在使用正弦函数后无法产生预料的波形, 总是出现杂波。我们通过 Visual C+6.0 测试正弦函数发现函数 可以产生正常的正弦数组,证明我们产生数模转换的数据是没有 问题的,但是把数据送去转换后出来的波形就是一些杂波,同上 面一样,我们又尝试用精度来换取波形的正常显示,发现是可以 的,但这种方法缺陷大,它牺牲了精度,使 16 位数模转化的意 义无法很好地体

21、现。 (2)硬件 一块 DAC0832 数模转换产生波形测试,发现除了方波能显示 (但电压不够) ,其他都是一些杂波,而且电压的峰值很小,只 有几毫伏,完全达不到 5 伏的电压要求。两块 DAC08332 一起工 作也是一样。起初我们测试是不是单片机发送数据出现问题,于 是采用串口通信进行测试,发现单片机发出的数据是对的,排除 24 了一个可能。之后又测试是否 DA 芯片、运算放大器芯片 LM385 与单片机连接是否有问题,于是对电路板进行大加修改, 用万能表进行测试,线路的连接都是没有问题的,但发现还是无 法产生波形,且电压还是很小。冲着电压很小这一点,我们用实 验室的恒压源进行测试,发现我

22、们电压再升高时,波形依然出不 来。最后我们把目光转向了运算放大器。查阅大量资料后,发现 MAX232 芯片 2、6 管脚的电压是在+10,-10 左右,于是我们想 到把这个电压加在运算放大器电源管脚,经过测试后波形终于出 来了,电压虽然有所提高,提到了 3 点多伏,但还是达不到要求。 我们想到我们这个电路所使用的运算放大器芯片总共有两块 LM385 双运放。所以我们猜测是因为两块运放把电压分走了, 所以我们又加上了一块 MAX232 上去,每个运放接电源的两管 脚都接上 MAX232 的 2、6 脚。此时电压终于提了上来,符合要 求了。最后一个问题是波形不够准,很粗糙。我们开始怀疑是软 件有问

23、题,但转念一想,仿真测试是通过的,但我们还是报着试 试的心态进行程序修改。考虑到 DAC0832 转换时间的问题,所 以在程序上进行延时处理,发现波形还是一样粗糙。后来经过多 种尝试未果,就否决了软件问题,转向硬件方面。我们最后使用 买来的单片机实验板来给 DAC0832 提供数据,发现此时波形光 滑了。终于找出了原因,于是重新焊电路板,省略了原先的 led 电路。电路板焊出来后波形正常产生了。至此遇到的问题基本解 决。 25 展望 在做项目的期间,碰到了某些波形无法正常输出的问题,虽然已 经解决了,但解决的方法缺陷大,在接下来的时间里,将学习汇编 语言,尝试用汇编看能否解决此问题。也会尝试使

24、用其他种类的运 算放大器来搭建电路看能否有所好转如果可以解决的话,利用这种 思路,我们还可以用四块 DAC0832 实现 32 位数模转换,甚至用更 多的芯片实现更高的精度的数模转换,做出更加精密的波形发生器。 26 另外,我们将用标准的 16 位数模转换芯片来做信号发生器,与我们 用两块 8 位芯片做的信号发生器做对比,看它们的差距。作为一个 信号发生器,做得足够精确的话,给下一级电路供给信号源将得到 非常准确的结果。信号源往往是电子系统的第一级电路,这一级的 好坏与否,直接影响到下面种种电路的效果,其意义非常重大。在 这次做项目的过程中,我们学习到许多调试电路的方法,为以后做 更难的项目打

25、下基础。同时,好的开端是成功的一半,我们第一个 项目的成功,将推动我们后面更多项目的进展。相信凭借我们此次 项目中所表现出来的努力争取,绝不放弃的精神,我们会学到更多 的东西。 附录 1:原理图 附录 2:PCB 27 附录 3:程序: 附录附录 4:主要元件的:主要元件的 PDF 文件文件(另附另附) 28 项目所用元器件: 元件列表:元件列表: 型号型号 封装封装价格(元)价格(元)公司公司 1.STC89C51 单片机DIP40 7.8 STC 2.晶振 11.0592MXTAL1.3 3.DAC0832DIP206.45NationalSemiconductor 4.LM358DIP80.68COPES-VULCAN 5.MAX232DIP161.0 6.电容 30pf直插0.01 7 电容 10uf直插0.02 8.电阻 1K直插0.03 9.电阻 10K直插0.02 10.电阻 15K直插0.02 11.电阻 240K直插0.03 1210K 排阻直插0.2 13.发光二极管DIP0.13 14.按键直插0.03

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1