版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1目录目录一、 概述.21.1 课题研究的内容和意义.21.2 达到的技术指标.2二、系统总体设计.42.1 系统设计方案论证(几种方案选一).42.2 系统总体框图及简要说明实现了的主要功能.4三、 硬件电路设计.63.1 元器件的选择.63.2 单片机控制模块.133.3 温度数据采集模块.143.4 显示模块.143.5 温度数据无线传输电路.15四、软件设计.174.1 主程序流程图.174.2 其他功能流程图.19五、系统调试.235.1 测试环境和方法.235.2 测试结果.235.3 出现问题及解决方法.23六、展望.26一、一、 概述概述1.1 课题研究的内容和意义课题研究的内
2、容和意义本课题采用本课题采用 51 单片机对两个单片机对两个 dac0832 进行控制来实现进行控制来实现 16位位 da 输出。因为高精度输出。因为高精度 dac 转换芯片价格比较贵,而且有时不易转换芯片价格比较贵,而且有时不易购买,通过对购买,通过对 2 个个 dac0832 进行控制,可以构成高精度的进行控制,可以构成高精度的 dac,既降低了成本又解决了实际需要。既降低了成本又解决了实际需要。21.2 技术指标技术指标设计并制作一个基于单片机的设计并制作一个基于单片机的 16 位位 da 输出,能够输出方波、输出,能够输出方波、锯齿波、三角波、梯形波、正弦波这锯齿波、三角波、梯形波、正
3、弦波这 5 种波形,在输出波形的同时种波形,在输出波形的同时能够实现波形的调频和调幅,波形在示波器上显示。能够实现波形的调频和调幅,波形在示波器上显示。本设计可以通过按键控制实现波形调频,通过改变本设计可以通过按键控制实现波形调频,通过改变 da 的基的基准电压输入来实现调幅。准电压输入来实现调幅。二系统的总体设计二系统的总体设计2.1 系统设计方案论证系统设计方案论证第一种方案:直接采用第一种方案:直接采用 16 位位 da 转换芯片,让单片机对转换芯片,让单片机对 16 位位da 芯片进行控制,从而输出波形。芯片进行控制,从而输出波形。第二种方案:采用第二种方案:采用 2 个个 8 位位
4、da 转换芯片转换芯片 dac0832,两个,两个 da芯片采用双缓冲数据输入方式,让单片机先后控制这两个芯片采用双缓冲数据输入方式,让单片机先后控制这两个 da 芯片芯片的数据输入,最后再一起把数据经的数据输入,最后再一起把数据经 da 转换器转换输出,从而输出转换器转换输出,从而输出波形。波形。最终采用第二种方案。最终采用第二种方案。2.2 系统总体框图及简要说明实现了的主要功能。系统总体框图及简要说明实现了的主要功能。3 实现了波形输出和波形的调频调幅。实现了波形输出和波形的调频调幅。三、硬件电路设计三、硬件电路设计3.1 元器件的选择:硬件电路用了元器件的选择:硬件电路用了 stc89
5、c51rc 单单片机,片机,8 位位 da 转换芯片转换芯片 dac0832,运放,运放 lm358,还还有有 max232.3.2 单片机控制模块单片机控制模块单片机两个dac0832按键示波器43.3da 输出模块:输出模块:5软件设计1.主程序流程图: 2.子程序独立按键检测及波形显示程序流程图开始 单片机端口 初始化 调用独立键盘扫描 子程序 调用 显示波形 子程序6 是 否 否 是 否 是 否 是 否 开始判断键 1 是否被按下,是则置标志位 a+;a5置 0 判断 标志位 a 是否等于 0检测键 2是否按下波形调频延时函数时间标志位加大检测键 3是否按下 结束波形调频延时函数时间标
6、志位减小7 是 否是否是否是 否是否 开始判断标志位 a=1?判断标志位 a=2?判断标志位 a=3?判断标志位a=4?判断标志位a=5? 结束产生锯齿波产生方波产生三角波产生正弦波产生梯形波8总程序:#include#include#include#define uchar unsigned char#define uint unsigned intsbit da1wr1=p10;sbit da1wr2=p11;sbit da2wr1=p12;sbit da2wr2=p11;sbit ile=p13;sbit cs=p12;sbit key1=p34;sbit key2=p35;sbit k
7、ey3=p36;sbit key4=p37;uint i=0;uint ih=0;9uint il=0;/uchar numdis=0;uchar a=0;uchar d=0;uchar c=10;uchar k;uchar num=3;uchar code tab256=0 x80,0 x82,0 x85,0 x88,0 x8b,0 x8e,0 x91,0 x94,0 x97,0 x9a,0 x9d,0 xa0,0 xa3,0 xa6,0 xa9,0 xac,0 xaf,0 xb2,0 xb6,0 xb9,0 xbc,0 xbf,0 xc2,0 xc5,0 xc7,0 xca,0 xcc,0
8、 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfd,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0 xfb,0 xfa,0 xf9,0
9、 xf8,0 xf7,0 xf6,0 xf5,0 xf4,0 xf2,0 xf1,0 xef,0 xee,0 xec,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,100 xd4,0 xd1,0 xcf,0 xcc,0 xca,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99,0 x96,0 x93,0 x90,0 x8d,0 x89,0 x86,0 x83
10、,0 x80,0 x80,0 x7c,0 x79,0 x76,0 x72,0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c,0 x48,0 x45,0 x43,0 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30,0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a,0 x18,0 x16,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09
11、,0 x08,0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x02,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x01,0 x02,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0a,0 x0b,0 x0d,0 x0e,0 x10,0 x11,0 x13,0 x15,0 x16,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x22,0 x25,0 x27,0 x29,0 x2b
12、,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3a,0 x3d,0 x40,0 x43,0 x45,0 x48,0 x4c,0 x4e,0 x51,0 x55,0 x57,0 x5a,0 x5d,0 x60,0 x63,0 x66,0 x69,0 x6c,0 x6f,0 x72,110 x76,0 x79,0 x7c,0 x80;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; fo
13、r(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=10;if(c3)c=20;void display(uchar a)14if(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=
14、0;da1wr1=0;da1wr1=1;da2wr1=0;da2wr1=1;da1wr2=0;da1wr2=1;for(k=0;kc-2;k+)_nop_();p0=255;da1wr1=0;da1wr1=1;da2wr1=0;da2wr1=1;da1wr2=0;da1wr2=1;for(k=0;kc;k+)_nop_();16if(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;
15、k+)_nop_();else17i=i-5;if(i=5)d=0;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;da1
16、wr1=0;da1wr1=1;da2wr1=0;da2wr1=1;19da1wr2=0;da1wr2=1;if(i=255)p0=255;da1wr1=0;da1wr1=1;da2wr1=0;da2wr1=1;da1wr2=0;da1wr2=1;delayms(num);d=1;elsei=i-5;p0=i;if(i=0)d=0;20da1wr1=0;da1wr1=1;da2wr1=0;da2wr1=1;da1wr2=0;da1wr2=1;void main()ile=1;cs=0;da1wr1=1;da2wr1=1;da1wr2=1;while(1)keyscan();display(a);
17、 21 系统调试 1.测试环境和方法(1)软件测试软件测试的环境是在 proteus 软件。首先是搭建电路,总电路如下图所示。然后通过电路中的单片机下载编写好的程序,打开示波器查看是否产生了预料的波形。调试过程先是用一块dac0832 搭建电路并进行测试,之后进行两块 dac0832 搭建电路实现 16 位数模转换测试。22(2)硬件测试硬件是在万能板上进行焊接,先是焊接出一个单片机小系统,包括电源电路,晶振电路,复位电路,串口下载电路,独立键盘电路等。为了测试小系统是否正常工作,又加上了 led 灯电路进行测试。焊接好电路后接到示波器上进行测试。2.测试结果(1)软件测试在 proteus
18、软件中测试一块 dac0832 产生波形时可以正常显示。而两块 dac0832 一起工作时便出现了问题。其中锯齿波,方波能够正常显示,但三角波,梯形波,正弦波就出现了问题,三角波和梯形波在显示时只能先显示波形上升部分,也就是先显示一个上升的锯齿波,隔段时间再显示波形下降部分,也就是一个下降的锯齿波。两个总是不能同时显示。(2)硬件测试首先单片机小系统通过 led 灯测试通过,单片机正常工作。之后进行一块 dac0832 数模转换产生波形测试,发现无法产生波形,都是一些杂波,而且电压的峰值很小,只有几毫伏,完全达不到 5 伏的电压要求。两块 dac08332 一起工作也是一样。3.产生问题及解决
19、方法(1)软件两块 dac0832 一起工作时 proteus 软件中测试出现了问题。其中锯齿波,方波能够正常显示,但三角波,梯形波,正弦波就23出现了问题,三角波和梯形波在显示时只能先显示波形上升部分,也就是先显示一个上升的锯齿波,隔段时间再显示波形下降部分,也就是一个下降的锯齿波。两个总是不能同时显示。但是产生波形的程序使用的思想是一样的,为什么会出现这样的结果呢?通过修改多次程序循环的方式后以失败告终,后来采用改变数模转换加数字的幅度,发现,当数字提高到 257 时,波形就可以正常输出了,此时相当于每次两块 dac0832 都是输出同样的转换数据。因为加数字的幅度过大,所以失去了 16
20、位数模转换的意义,但尝试过多种方法仍然无法解决,最后只能通过牺牲精度换取波形的正常显示。而正弦波在使用正弦函数后无法产生预料的波形,总是出现杂波。我们通过 visual c+6.0 测试正弦函数发现函数可以产生正常的正弦数组,证明我们产生数模转换的数据是没有问题的,但是把数据送去转换后出来的波形就是一些杂波,同上面一样,我们又尝试用精度来换取波形的正常显示,发现是可以的,但这种方法缺陷大,它牺牲了精度,使 16 位数模转化的意义无法很好地体现。(2)硬件一块 dac0832 数模转换产生波形测试,发现除了方波能显示(但电压不够) ,其他都是一些杂波,而且电压的峰值很小,只有几毫伏,完全达不到
21、5 伏的电压要求。两块 dac08332 一起工作也是一样。起初我们测试是不是单片机发送数据出现问题,于是采用串口通信进行测试,发现单片机发出的数据是对的,排除24了一个可能。之后又测试是否 da 芯片、运算放大器芯片lm385 与单片机连接是否有问题,于是对电路板进行大加修改,用万能表进行测试,线路的连接都是没有问题的,但发现还是无法产生波形,且电压还是很小。冲着电压很小这一点,我们用实验室的恒压源进行测试,发现我们电压再升高时,波形依然出不来。最后我们把目光转向了运算放大器。查阅大量资料后,发现max232 芯片 2、6 管脚的电压是在+10,-10 左右,于是我们想到把这个电压加在运算放
22、大器电源管脚,经过测试后波形终于出来了,电压虽然有所提高,提到了 3 点多伏,但还是达不到要求。我们想到我们这个电路所使用的运算放大器芯片总共有两块lm385 双运放。所以我们猜测是因为两块运放把电压分走了,所以我们又加上了一块 max232 上去,每个运放接电源的两管脚都接上 max232 的 2、6 脚。此时电压终于提了上来,符合要求了。最后一个问题是波形不够准,很粗糙。我们开始怀疑是软件有问题,但转念一想,仿真测试是通过的,但我们还是报着试试的心态进行程序修改。考虑到 dac0832 转换时间的问题,所以在程序上进行延时处理,发现波形还是一样粗糙。后来经过多种尝试未果,就否决了软件问题,转向硬件方面。我们最后使用买来的单片机实验板来给 dac0832 提供数据,发现此时波形光滑了。终于找出了原因,于是重新焊电路板,省略了原先的 led电路。电路板焊出来后波形正常产生了。至此遇到的问题基本解决。25 展望在做项目的期间,碰到了某些波形无法正常输出的问题,虽然已经解决了,但解决的方法缺陷大,在接下来的时间里,将学习汇编语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年乡村医生考试题库及答案
- 钢筋工程专项施工方案
- 湖北省武汉市黄陂区2025~2026学年高一下册期末考试数学试卷【附解析】
- 2026年宿迁泽达职业技术学院单招职业倾向性测试题库附答案
- 桡骨远端骨折护理查房
- 2026年乾安县事业单位专项招聘普通高校毕业生6人笔试模拟试卷(知识)含答案解析
- 2026年秋季学期高一历史必修一第一课单元检测练习卷
- 26-27六年级上人教版数学开学摸底测试卷二(含答案)
- 医院护理安全相关知识试题及答案
- 2025-2026年考研数学线性代数重点习题
- 湖南炎德英才名校联考2027届高三上学期开学考试英语+答案
- 高三历史复习策略课件
- 2026年秋季学期统编版小学语文五年级(新教材)上册教学计划附教学进度表
- 炼油化工企业开工准备手册
- 2026拖拉机驾驶证科目一理论考试复习题库(含完整答案)
- 2026秋人教版小学美术二年级上册第一单元 身边的自然第1课 树叶的血管教学课件
- 2026中铁北京工程局集团北京有限公司招聘3人笔试历年备考题库附带答案详解
- 2026年及未来5年市场数据中国菠萝深加工行业市场全景评估及投资规划建议报告
- 发改委机关内部管理制度
- 2026甘肃省公务员行测真题
- 2026年辽宁生态工程职业学院单招综合素质笔试备考试题附答案详解
评论
0/150
提交评论