1课设题目:
波形发生器设计——按键控制波形
2内容摘要:
近年来,波形发生器在各种领域中得到越来越广泛的应用。本系统主要通过研究51单片机的功能,外加D/A转换器等其它器件,进行硬件设计和软件编程,完成锯齿波、梯形波、三角波、方波和正弦波共五种波形的形成。波形频率的变化由程序来控制,即通过改变定时器的初值来改变输出波形相邻两点的时间间隔,从而实现波形频率的改变。
3设计任务和要求:
3.1 课程设计任务:
利用DAC0832产生三角波,锯齿波和方波。在矩形按键中任选三个按键作为按键“1”,“2”,“3”。按“1”键产生三角波;按“2”键产生锯齿波;按“3”键产生方波。波形频率为100Hz。用示波器观察输出。
3.2 课程设计基本要求:
课题分析,查阅资料,方案论证,方案实现,系统联调,撰写实验设计报告
成果要求:
(1)系统方案 (2)硬件电路原理图
(3)软件源程序 (4)设计说明书(课程设计报告)
4设计方案
4.1 总体设计思路
本次设计采用AT89C51及其外围扩展系统,软件方面主要是应用C语言设计程序。系统以AT89C51为核心,配置相应的外设及接口电路,用Keil及C等软件开发,用C语言编程,组成一个多功能信号发生器。用户通过按键选择输出实验室中经常使用到的几种基本波形:方波、锯齿波和三角波。方波由AT89C51单片机将最大值和最小值输出给D/A进行转换,并由用户通过键盘选择波形周期。
可采用单片机程序产生以上3种波形,并通过一片D/A转换器输出。另外可采用一片D/A转换器来控制前一片D/A转换器的参考电压,从而可以改变输出波形幅值。通过外接键盘来设定波形的类型、幅值和频率。
4-1总体方案结构图
实验程序参考实验设计书(xl2000实验指导手册)中的实验6(端口按键判断技术(按键显示数字))和实验12(DA 转换dac0832 的原理与应用)的相应程序,再根据我们小组的课设实际要求,适当改变其程序,改写出适合我们小组的程序。
我们小组利用端口按键判断技术(按键显示数字)中的按键设计。端口按键判断部份由8
个轻触按键组成, 一端接地, 一端由JP48引出, 当按下按键时, 相应端口为低电平。我们需要这个键盘去对应相应的波形, 通过按键盘上的K01,,K02,K03三个按键, 实现相应的波形输出。
然后我们应用实验12 :DA 转换DAC0832 的原理与应用来实现波形的变换。锯齿波我们在实验课上就已经实现了,而三角波我们在考试的时候也实现了,剩下的矩形波比较简单,根据书本上的程序就可以得出相应的结果。
4.2 设计方法——硬件设计
51单片机的最小系统由振荡电路、电源电路、复位电路、EA及应用程序组成。它有三种联接方式。一种是两级缓冲器型,即输入数据经过两级缓冲器型,即输入数据经过两级缓冲器后,送入D/A转换电路。第二种是单级缓冲型,输入数据经输入寄存器直接送入DAC寄存器,然后送D/A转换电路。第三种是两个缓冲器直通,输入数据直接送D/A转换电路进行转换。本电路仿真图如下:DAC0832的引脚及功能:
DAC0832是双列直插式8位D/A转换器,完成数字量输入到模拟量输出的转换。
图3-2 DAC0832引脚图
DAC0832结构:
D0~D7 :8位的数据输入端,D7为最高位,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);
ILE:数据锁存允许控制信号输入线,高电平有效;
CS:片选信号输入线(选通数据锁存器),低电平有效;
WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ms)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;
XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ms)有效。
WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于500ms)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换;
IOUT1:模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当 DAC寄存器中数据全为0时,输出电流为0;
IOUT2:模拟电流输出端2,IOUT2与IOUT1的和为一个常数;
Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;
Vcc:电源输入端,范围为(+5~+ 15)V;
VREF:基准电压输入线,流程图转换为ns图范围为(-10~+10)V;
AGND:模拟信号地;
DGND:数字信号地。
4.3 设计方法——软件设计
系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波形的子程序的编程。通过编程可得到各种波形。频率的改变可采用插入延时子程序的方法来实现。
实验流程图:
4-2 实验流程图
本电路仿真图如下:
图4-3 电路仿真图
图4-4三角波仿真图
图4-5锯齿波仿真图
图4-6方波仿真图
4.4 波形的产生:
锯齿波:
void ju() //锯齿波函数
{
uchar i;
cs=0; //拉低片选位
wr=0; //拉低写数据位
for(i=0;i<255;i++)
{DATA=i;delay();delay();}
}
三角波:
void san() //三角波函数
{
uchar i;
cs=0; //拉低片选位
wr=0; //拉低写数据位
for(i=0;i<255;i++)
{DATA=i;delay();}
for(i=255;i>0;i--)
{DATA=i;delay();}
}
方波:
void fang()
{ cs=0; //拉低片选位
wr=0; //拉低写数据位
DATA=0xff;
delay1(); delay1(); delay2(); //延迟
DATA=0;
delay1(); delay1(); delay2();
}
5 系统调试
5.1 使用的主要仪器和仪表
XL2000 单片机综合仿真试验仪主机一台,USB 通信电缆一根,系统连接数据线若干,装有WINDOWS XP系统的电脑一台,DS5022ME示波器一台
5.2 实验步骤
接线方法:
1 用一个1PIN数据线一端插入CPU 部份JP53(P3 口)的P3.4,另外一端插入DAC0832 部份的输入端JP24的
WR 端。
2 用一个1PIN数据线一端插入CPU 部份JP53(P3 口)的P3.1,另外一端插入DAC0832 部份的输入端JP24的
CS 端。
3 用一根8PIN的数据排线, 一端插入DAC0832 部份的数据输入端JP27, 另一端插入CPU部份JP51(P0口)
4 用一台示波器,在J2 口观察DA 转换后的输出信号。 建议调整到Y 轴0.2V/格 X轴1MS/格.
5 按键接到P1 口。用一条8PIN数据排线,把按键部份的JP48,接到CPU部份的P1 口JP44.
完成接线以后,将实验箱连到电脑上。接着运用Keil生成.hex文件,并通过XLISP程序写入实验箱中的芯片,然后打开示波器,将示波器连接线接到实验箱的J2接口。就可以在示波器上观察到相应波形。按K1产生三角波,按K2产生锯齿波,按K3产生方波。即可以得到实验所求。
5.3 整理性能测试数据和波形,并与设计要求比较分析
对于本波形发生器,其硬件电路的调试可以按如下步骤进行
1)硬件电路的总体检查
2)单元电路调试
3)波形输出电路调试
实验结果图:
图5-1三角波波形图
图5-2锯齿波波形图
图5-3 方波波形图
5.4调试中出现的故障、原因及排除方法
(1)第一次我们编完程序以后,发现按键无法改变波形,一直显示的是锯齿波。但是我们反复检查程序,无法查出有错误之处。后来在老师的指导下,我们换了一个实验箱,就得出了正确的实验结果。这是实验箱的问题,由于按键老化接触不良。
(2)在换完箱子之后,波形一切正常。但是频率不正确,没有达到实验要求的100Hz。我们小组查阅了资料,改动程序之后,三角波和锯齿波的波形频率是正常的,但是方波的频率不太正常。我们通过网上查阅资料,改变延迟函数可以改变频率,但是我们小组成员改变了之后还是不能得到正确结果。后来经过老师的提醒,是keil的晶振频率和实验箱上的频率没有对上。改好以后,波形的频率就正常了。
6 设计结论:
本次的课程设计我是利用AT89C51和DAC0832来完成电路的设计的,用开关来控制各种波形的发生及转换,用单片机输出后,经过模数转换器生成波形,最终可以通过示波器观察。
在这次的软件设计中,程序设计采用的是C语言。因为C语言简洁高效,是最贴近硬件的高级编程语言,并且我又有C语言的基础,所以编译起来比较容易。
由于此次是第一次进行课设,很多东西都没有接触过,因此还不是很得心应手,所以在设计中遇到了很多问题及难点。比如:D/A转换器和锁存器的结构、功能等等,这些都需要自己去查资料了解这些。但是毕竟是的参考书和资料,做到后来发现很多程序都是不完整的,这让我们伤透了脑筋。看着别的小组都弄得有模有样了,可是我们连一个程序都还没有定好。好不容易又到了相关类似的程序,可是结果还是很不尽人意。程序接线什么的都弄好了,调试也没有问题,可是就是无法达到预期想要的结果。课程设计这种东西最后还是要靠大家一起动脑筋。然后我们大家一起齐心协力,从平时做的实验﹑老师上课的举例﹑书本上的知识以及老师的辅导和其他同学的帮助下终于完成了。课程设计的过程中,当我们碰到不明白的问题时,老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。因此非常感谢老师的教导。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。我觉得作为一名大学生,这种程设计是很有意义的。更重要的
是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个多礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论