欢迎来到天天文库
浏览记录
ID:6805890
大小:704.00 KB
页数:17页
时间:2018-01-26
《单片机课程设计-基于单片机信号发生器设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单片机设计报告广东第二师范学院单片机课程设计报告物理系09级电子信息工程专业题目单片机函数发生器设计姓名学号指导教师2011-4-517单片机设计报告目录引言3一设计任务31设计内容32设计要求4二芯片功能介绍4三总体功能图和总原理图5四程序流程图61锯齿波程序流程图62三角波程序流程图73梯形波程序流程图84方波程序流程图95正弦波程序流程图116整体程序流程图12五程序设计13六仿真测试16七总结与体会19八参考文献19九致谢1917单片机设计报告引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。这次的设计分为五个模块:单片机控制及显示模块、数模转换模块、波
2、形产生模块、输出显示模块、电源模块。使用AT98C52作为主控台结合芯片DAC0832产生1HZ-10HZ频率可调的五种信号波(锯齿波、三角波、方波、梯形波、正弦波)。这几种波形有几个开关控制,可以随意进行切换,十分方便。另外,波形的频率和振幅也可以通过开关进行更改。可以说这次的设计操作简单,内容丰富,而且电路快捷明了。1设计任务1.1设计内容以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、梯形波等),且频率、幅度可变的函数发生器。1.2设计要求设计借口电路,将这些外设构成一个简单的单片机应用系统,画出接口的连接图和仿真图,并编写出控制波形的程序。2芯片功能介绍2.
3、1、DAC0832芯片介绍:DAC0832为一个8位D/A转换器,单电源供电,在+5~+15V范围内均可正常工作。基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。DAC0832的内部结构框图如下图所示。17单片机设计报告图2.1DAC0832的内部结构框图2.2DAC0832的外部引脚及功能介绍图如下:图2.2DAC0832介绍2.3DAC0832的应用:DAC0832一是用作单极性电压输出,二是用作双极性电压输出,最后是用作程控放大器。2.4DAC0832与8031的连接方式:DAC0832的与单片机的连接方式有三种方式:(1)单缓冲;(2)双缓冲、(
4、3)直通方式。本程序采用的是方式一即单缓冲方式,ILE为高电平,CS、WR1、WR2、XFER为低电平。图2.4DAC0832引脚图17单片机设计报告3总体功能图和总原理图函数发生器的设计K2键三角波K3键梯形波K4键方波K5键正弦波K6调频调幅K1键锯齿波图3.1总体功能图图3.2总原理图17单片机设计报告4程序流程图4.1锯齿波程序流程图锯齿波的实现过程是首先定义一个初值然后进行加法操作,加的步数的多少则根据要求的频率来进行。然后加到某个数之后就再重新设置为初值,再重复执行刚刚的操作,如此循环下去。流程图如下所示:设置初值AMOVA,#00HDPT#8000HMOVX@DPTR,
5、A加上设定的步数,ADDA,步数判断A是否已经满了?否重新设置初值A是开始4.2三角波程序流程图三角波的实现是设置一个初值,然后进行加数,同样是加到某个数之后再进行减数,减到初值之后就再返回到先前的操作,这个操作跟锯齿波的实现是相似的。此程序输入的VREF的电压是+5V,因此该波形输出的最大频率是初值为00H和最终值为0FFH,且步数为1,这样输出的波形是最大的。程序流程图如下图所示:17单片机设计报告给A设置初值MOVDPTR,#8000HMOVX@DPTR,AADDA,步数判断A是否已满?否是SUBBA,步数判断是否等于初值?否/是开始4.3梯形波程序流程图梯形波输出跟锯齿波和三
6、角波相似,只不过当加到顶峰后的一段时间内不改变A的值,过了一段时间后再将减少A的值,不过先后的步数可以一样也可以不一样。然后减到初始的值后也要持续一段时间,然后再进行加数,如此循环下去。程序流程图如下图所示:17单片机设计报告开始给A设置初值MOVA,#00H是持续一段时间SUBBA,步数2判断是否等于初值?否是持续一段时间MOVX@DPTR,AADDA,步数1判断A是否已满?否4.4方波程序流程图此波形的实现更加简单,只需开始的时候设置一个初值然后直接输出这个值就行了,输出一段时间后,然后再重新置一个数据,然后再输出这个数据一段时间,但是此时的时间一定要等于前面那段时间。这样才是一
7、个方波,如果两个时间不相同,那就相当于一个脉冲波了。流程图如下图所示:17单片机设计报告开始给A设置初值MOVDPTR,#8000HMOVX@DPTR,A设置输出的时间再设置一个初值放入A中MOVX@DPTR,A输出一段时间4.5正弦波程序流程图正弦波的实现则相对比较复杂,因为正弦波的实现是输出各个点的值就行了,可是各个点值则要通过正弦函数来求出,不过这些值直接去网上下载下来使用就可以了。输出的数据刚好是256个数据,这样则可以直接相加就行了。流程图如下图
此文档下载收益归作者所有