数字波形发生器毕业设计.doc

上传人:仙人指路1688 文档编号:4149147 上传时间:2023-04-07 格式:DOC 页数:37 大小:986.50KB
返回 下载 相关 举报
数字波形发生器毕业设计.doc_第1页
第1页 / 共37页
数字波形发生器毕业设计.doc_第2页
第2页 / 共37页
数字波形发生器毕业设计.doc_第3页
第3页 / 共37页
数字波形发生器毕业设计.doc_第4页
第4页 / 共37页
数字波形发生器毕业设计.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《数字波形发生器毕业设计.doc》由会员分享,可在线阅读,更多相关《数字波形发生器毕业设计.doc(37页珍藏版)》请在三一办公上搜索。

1、数字波形发生器的设计摘 要 波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。本函数发生器采用89C52单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和液晶显示电路等。电路采用89C52单片机与一片DAC0832数模转换器组成低频信号发生器。通过按键控制可分别控制选择输出的幅值和频率,同时用1602显示器显示幅值和频率.本系统设计简单、性能优良,具有一定的实用性。关键词 AT89C52 DACO832 波形发生器1 序言波形发生器是一种常用的信号源,广泛的应用于电子电路、自动控制系统和教学实验等领域,是现代测试领域

2、内应用最为广泛的通用仪器之一。在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源。由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察。测量被测仪器的输出响应,以分析确定它们的性能参数。信号发生器是电子测量领域中最基本、应用最为广泛的一类电子仪器。它可以产生多种波形信号,如锯齿波、三角波、梯形波等,因而广泛应用于通信、雷达、导航、宇航等领域3。自单片机广泛应用以来,各种器件日益智能化,而智能的实现需要各种信号。可以预见,波形发生器已成为重要的产品,发展前景十分看好。市场上精度高的波形发生器十分昂贵,结构复杂,如何降低成本普及产品是目前波形发生器的

3、重要课题。2. 系统总体设计思路概述2.1数字波形发生器的方案论证总体方案设计方案一:利用D/A转换器输出的模拟量与输入数字量成正比关系这一特点,将D/A转换器作为微机输出接口,CPU通过程序向D/A转换器输出随时间呈现不同变化规律的数字量,则D/A转换器就可输出各种各样的模拟量,如方波、三角波、锯齿波、正弦波等。此方案可满足题目的要求,产生波形程序控制,并通过按键选择幅值电压和频率,并在LCD1602液晶屏中显示相应幅值电压和选择的频率,按键选择频率、幅值、波形。优点是结构简单,满足此次设计条件,,实际发现此方案的优点是电路原实现比较容易,缺点是程序较长,单片机速度低不能持续调节频率和幅值。

4、 方案二:由晶体管,运放IC通用器件组成,用8038函数发生器件功能少产生波形。缺点是精度不高,频率上限较低,缺点是频率和占空比不能独立调节,相互影响1。 方案三:运用模拟电路输出波形,通过单片机控制输出,但实际上设计条件要求很高,结构复杂,不具可行性1。 综上,方案一较符合实际条件,具有可操作性。2.2功能与基本原理设计要求:产生数字可控信号,要求波形、频率和幅值可调,范围尽可能大。根据题目要求,经过仔细考虑各种因素,制定整体设计方案:本次设计波形的产生采用单片机实现,在89C52的P2口接4个按钮,通过软件编程来选择幅值、电压和频率,一个总的控制按键,一个按键控制幅值电压,一个控制频率,一

5、个控制波形的选择。在LCD1602上实时显示频率和幅值。波形的产生是通过STC89C52执行波形发生程序,产生波形的数字编码,向数模转换芯片DAC0832输入波形的数字编码,从而在DAC0832输出端得到相应的电流波形,再通过电路得到电压波形。本系统的总体框图如图所示:按键控制单片机LM324运放电路输出DAC0832转换1602显示 图2-13 硬件系统设计总的硬件电路由单片机、波形转换(D/A)电路、显示接口电路、键盘接口电路等部分组成。下面对各部分分别介绍。3.1.STC89C52单片机模块STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Fl

6、ash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有

7、效地降低开发成本2。 模块功能:通过运行程序产生符合要求的数字编码。本次设计采用的是内部时钟方式,晶振的振荡频率12MHz,机器周期为1us。 实际可用到部分包扩时钟电路、复位电路如图3.1.1所示采用40个引脚,双列直插式封装,用HMOS工艺制造,其外部引脚排列如图3.1.1所示。图3.1.1.89C52单片机引脚图应用引脚功能如下:P0口与DAC0832的D0-D7数据输入端相连,P1口接入液晶显示器LCD1602。P2口用来连接切换按钮VCC接5V电源正端,GND接电源地端。3.2.波形转换(D/A)电路模块模块功能:单片机向0832发送输出波形的数字编码,产生不同的输出。将波形样值的编

8、码转换成模拟值,完成波形输出。单片机向0832 发送数字编码,产生不同的输出。DAC0832完成8为电流D/A转换,向 LM324输入电流信号,运算放大器LM324将电流信号转换成电压信号,输出电压模拟信号。两个15k电阻并联的阻值与7.5k的电阻阻值相等,电压输出值与DAC0832电流输出值相等。即V(out)=I(out).波形转换(D/A)电路图如下3.2.1所示:3.2.1波形转换(D/A)电路图3.2.1.DAC0832芯片DAC0832完成8为电流D/A转换,输出为电流模拟信号,0x7f,0x90,0xa1 0xb2,0xc3,0xd4,0xe5分别对应D/A输出的0V,2V,4V

9、,6V,8V,10V,12V3。DAC0832芯片应用引脚功能如下DI0DI7: 数据输入线,接入89C52P1口。IOUT1、IOUT2 : 电流输出引脚,将转换的信号接入LM324。/WR1:输入寄存器的写选通信号。ILE : 数据允许锁存信号,高电平有效;/XFER: 数据传送信号,低电平有效。/WR2为DAC寄存器的写选通信号。VREF : 基准电源输入引脚 。RFB : 反馈信号输入引脚,反馈电阻在芯片内部。VCC: 电源输入引脚。AGND: 模拟信号地DGND: 数字地。3.2.2. LM324芯片LM324为四运放集成电路,可用正电源330V,或正负双电源1.5V15V工作4。L

10、M324引脚排列见图3.2.1.1。3.2.1.1LM324引脚3.3.显示接口电路模块由LCD1602液晶显示器和三个按钮组成。当第一个按键按下一次后,程序开始扫描,再由第二个按键控制显示幅值,第三个按键控制显示频率。有单片机的P0口和P2口将数字信号发送到LCD1602。LCD1602是专门用于显示字母、数字、符号等点阵式LCD,它的外接电压也是5V扫描利用软件程序实现,其与单片机的连接如图3.3.1所示2。 模块功能:驱动LCD1602液晶显示频率,显示幅值 。3.3.1.LCD1602引脚1602引脚功能:LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口如下所

11、示。VS:电源地VDD:电源正极。VL:液晶显示偏压。RS:数据/命令选择。R/W:读/写选择。E:使能信号。D0:数据。1.3. 按键模块本设计中有四个按键,分别为总控制按键、频率转换按键、幅值转换按键、波形选择按键。其与单片机的连接如图所示。4.系统软件设计4.1.显示子程序频率显示:建立频率要显示的数组6行,复位后1602显示数组第0行,keytemp=0,Key1按一次, keytemp+1,1602显示数组第keytemp+1行幅值显示:建立幅值7行,Key2按一次,keytemp2+1,1602显示keytemp2*2(+-012v)。流程图如下:开始开始N判断key2是否按下判断

12、key1是否按下N YY1602显示程序Keytemp2+1keytemp+11602显示程序 显示第0行1602显示程序1602显示程序显示0v显示第keytemp+1行显示keytemp2*2行4.2.波形选择子程序建立方波、三角波、正弦波的数组:初始p=0,p=1、2、3;Key3按下一次,p+1,P=1,选择方波,P=2,选择三角波,P=3,选择正弦波流程图如下:开始判断key4是否按下 YP+1P=1P=3P=2输出正弦波输出三角波输出方波4.3.频率调节子程序 Key1按一次, keytemp+1 ,keytemp对应不同freq值,延时freq次查表输出一个值,得到不同频率的波形

13、流程图如下:开始初始化程序Key1键是否按下 Ykeytemp+1输出不同频率值波形延时freq次对应不同freq值4.4.幅度调节子程序每个波形建立7个数组,对应各种不同幅值的波形,Key2按一次, keytemp2+1,每个keytemp2值对应一个特定幅值波形,keytemp2=0、1、2、3、4、5、6。流程图如下:开始Key2键是否按下 Ykeytemp2+1主程序输出特定幅值波形4.5. 总控制子程序key3键按下,开启主程序,执行计数器计数,开启液晶LM1602程序流程图如下:开始YY开启频率调节程序开启幅度调节程序Key3键是否按下Y开启计数器每125ms溢出4.6.主程序控制

14、子程序,使软件能产生不同型号的波形。流程图如下:开始初始化程序频率、幅值显示有变化Key3键是否按下Y扫描幅度调节子程序扫描频率调节子程序无变化执行下一步6.调试与测试结果 6.1. 硬件调试整个硬件调试过程基本顺利,由于采用了分单元模块制作,各单元电路工作稳定,给调试工作带来很大的方便。各单元调试通过以后,进行整机调试,调试结果显示,整个系统能够正常工作。6.2. 软件调试由于对51系列单片机编程不是很熟悉,在对波形频率上没能成功,没有得到预期的结果。 调试结果6.3液晶显示结果图方波波形图频率:f=1000/freq,freq可设置,freq与频率无线性关系,f不能持续可调。附录 实验结果

15、与实际要求对比1. 多波形中其他波形不好控制,无法得到频率幅度持续变化2. 具有输出频率设定与显示功能,显示位数为9位;输出波形的占空比应在47%53%之间;输出幅度为012V,分级可调,且能显示波形,幅度,幅度与频率显示交替进行;这三点要求均基本达到。3设计和调试遇到的主要问题设计时的主要问题是软件方案上,涉及到51单片机编程,对单片机不熟悉,所以编程时很迷茫,这一大模块设计不是很好。参考文献11 戚作钧.无线电技术基础M.第一版北京:人民教育出版社,1959:165-18312余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社,200013雷丽文 等.微机原理与接口技术M

16、.北京:电子工业出版社,199714 戚作钧.无线电技术基础M.第一版北京:人民教育出版社,1959:165-18315冯建华,赵亮.单片机应用系统设计与产品开发M.北京:人民邮电出版社,20046电子制作.北京:电子制作编辑部, 2006,8:67-68.7 郑阿奇计算机网络原理与应用M第一版北京:电子工业出版社,2003:34-457Donald A. Neaman. Electronic Circuit Analysis and Design,Second Edition M.北京清华大学出版社,2000致 谢我所设计的数字波形发生器的设计在指导老师帮助下成功结束了,指导老师杨俊锋老师给

17、了我悉心的指导,也给我的设计提出了宝贵的意见和建议。本设计中包括了单片机、电路理论等多领域知识。回顾次设计的深入学习与设计过程,我在专业知识和专业技能方面都取得了很大的进步,这次设计使我熟悉了分析问题、处理问题的方法,为以后工作、学习都打下了坚实的基础。设计过程中得到了导教师和同学的大量帮助,感谢我的指导教师和同学们对我的关心、指导和教诲。The design of Waveform generatorShiKangliang Directed By YangJunfengAbstract Waveform generator is a kind of common source, widel

18、y used in electronic circuit, automatic control system and teaching experiment, etc. This function generator used STC89C52 single chip microcomputer as control core and periphery the digital/simulation of transform circuit (DAC0832), amplifier (TL082), keys and LCD display circuit, etc. STC89C52 cir

19、cuit adopts microcontroller and a DAC0832 digital-to-analog converters low frequency signal generator of. Through the button control which can control the selection of output amplitude and frequency, at the same time use the LCD1602 display shows amplitude and frequency. The system is simple in desi

20、gn, good performance, and has practical valueKeywords AT89C52 DAC0832 Waveform generator程序设计#include#include#includeLCD_1602_H.h#define uchar unsigned char#define uint unsigned int#define DAdata P1/1.显示程序uchar code a67=1000.00, /频率显示 0100.00, 0010.00,0001.00,0000.10,0000.05 ;uchar code Squaretab72=

21、/输出的幅度数组0x7f,0x7f, /0V 0x90,0x6e, /正负2V0xa1,0x5d, /正负4V0xb2,0x4c, /正负6V0xc3,0x3b, /正负8V0xd4,0x2a, /正负10V0xe5,0x19;/正负12Vuchar code Squaretab182= /输出的幅度数组0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f, /0V0x7f,0x7f; /0V uchar code Squaretab

22、282= /输出的幅度数组0x90,0x90, /正负2V0x90,0x90, /正负2V0x90,0x90, /正负2V0x90,0x90, /正负2V0x6e,0x6e, /正负2V0x6e,0x6e, /正负2V0x6e,0x6e, /正负2V0x6e,0x6e /正负2Vuchar code Squaretab382= /输出的幅度数组0xa1,0xa1, /正负4V0xa1,0xa1, /正负4V0xa1,0xa1, /正负4V0xa1,0xa1, /正负4V0x5d,0x5d, /正负4V0x5d,0x5d, /正负4V0x5d,0x5d, /正负4V0x5d,0x5d;uchar

23、 code Squaretab482= /输出的幅度数组0xb2,0xb2, /正负6V0xb2,0xb2, /正负6V0xb2,0xb2, /正负6V0xb2,0xb2, /正负6V0x4c,0x4c, /正负6V0x4c,0x4c, /正负6V0x4c,0x4c, /正负6V0x4c,0x4c, /正负6V0x4c,0x4c;uchar code Squaretab582= /输出的幅度数组0xc3,0x3b, /正负8V0xc3,0x3b, /正负8V0xc3,0x3b, /正负8V0xc3,0x3b, /正负8V0xc3,0x3b, /正负8V0xc3,0x3b, /正负8V0xc3,

24、0x3b, /正负8V0xc3,0x3b;uchar code Squaretab682= /输出的幅度数组0xd4,0x2a, /正负10V0xd4,0x2a, /正负10V0xd4,0x2a, /正负10V0xd4,0x2a, /正负10V0xd4,0x2a, /正负10V0xd4,0x2a, /正负10V0xd4,0x2a, /正负10V0xd4,0x2a;uchar code Squaretab682= /输出的幅度数组0xe5,0xe5;/正负12V0xe5,0xe5;/正负12V0xe5,0xe5;/正负12V0xe5,0xe5;/正负12V0x19,0x19;/正负12V0x19

25、,0x19;/正负12V0x19,0x19;/正负12V0x19,0x19;uchar code sanjiaotab182= /输出的幅度数组127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,;uchar code sanjiaotab282= /输出的幅度数组127,129,131,133,135,137,139,141,143,141,139,137,135,133,131,129,;uchar code sanjiaotab382= /输出的幅度数组127,132,137,142,147,152,157,16

26、2,167,162,157,152,147,142,137,132,;uchar code sanjiaotab482= /输出的幅度数组127,135,143,151,159,167,175,183,191,183,175,167,159,151,143,135,;uchar code sanjiaotab582= /输出的幅度数组127,137,147,157,167,177,187,197,207,197,187,177,167,157,147,137,;uchar code sanjiaotab682= /输出的幅度数组127,140,153,166,179,193,205,118,2

27、21,118,205,193,179,166,153,140,;uchar code sanjiaotab782= /输出的幅度数组127,142,157,172,187,202,217,232,255,232,217,202,187,172,157,142,;uchar code sintab182= /输出的幅度数组127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,;uchar code sintab282= /输出的幅度数组135,143,146,148,146,143,135,127,119,112,108,

28、106,108,112,119,127,;uchar code sintab382= /输出的幅度数组143,157,166,169,166,157,143,127,111,97,88,85,88,97,111,127,;uchar code sintab482= /输出的幅度数组151,172,185,190,185,172,151,127,103,82,69,64,69,82,103,127,;uchar code sintab582= /输出的幅度数组159,186,204,211,204,186,159,127,95,68,50,43,50,68,95,127,;uchar code

29、sintab682= /输出的幅度数组167,201,224,232,224,201,167,127,87,53,30,22,30,53,87,127,;uchar code sintab782= /输出的幅度数组175,215,243,256,243,215,175,127,79,39,11,0,11,39,79,127,;.uchar code disp1=Voltage: 000V ;uchar code disp2=Frq:0000000.00Hz;/2.按键控制程序uint i,num,p,q,k,freq=0;uchar count,s;uchar keytemp=0,keytem

30、p2=0,keytemp3=0;sbit DA=P23;sbit WR1=P24;sbit key1=P25;sbit key2=P26;sbit key3=P27;sbit key4=P22; void delay(uint z)uint i,j;for(i=z;i0;i-)for(j=110;j0;j-);void T0_time()interrupt 1TH0=(65536-125)/256; /定时器装初值 精确到0.125mSTL0=(65536-125)%256;num+;/波形选择程序 void key4_ctr_wave() /波形选择控制按键if(key4=0) TR0=0;

31、_nop_();if(key4=0)Keytemp3+;while(!Key4)TR0=1; if(keytemp3=1) /通过按键按下的次数控制波形q=1; /选择波形一 /whileif(keytemp3=2)/选择波形2q=2;if(keytemp3=3)/选择波形3 q=3; /频率调节程序 void key1_ctr_frq() /调频控制按键if(key1=0) TR0=0;_nop_();if(key1=0)keytemp+;while(!key1)TR0=1; if(keytemp=1) /通过按键按下的次数控制频率freq=1; /选择频率1KHz /whileif(key

32、temp=2)/选择频率100Hzfreq=10;if(keytemp=3)/选择频率10Hzfreq=100;if(keytemp=4) /选择频率1HZfreq=1000;if(keytemp=5) /选择频率0.1Hzfreq=10000;if(keytemp=6) /选择频率0.05HZfreq=20000;if(keytemp=6)keytemp=1;write_1602_com(0xc0+7);for(k=0;k=7)keytemp2=0;/中断程序void key3_ctr() /总控制按键if(key3=0) /功能按键TR0=0;_nop_();/精确延时1uSif(key3

33、=0)delay(2);while(!key3)s+;/if(s=2)DA=1;if(s=2)s=1;void init()TMOD=0X01; /设定定时器0为工作方式1TH0=(65536-125)/256; /进行1ms的精确定时 TL0=(65536-125)%256; /定时器装初值EA=1; /开总中断ET0=1; /开定时器0中断TR0=1;init_1602();void main()DAdata=0x00;DA=0; WR1=0;init();display_1602(0x80, disp1);_nop_();display_1602(0x80+0x40,disp2);_no

34、p_();while(1) For(q=0,q16,q+)key3_ctr();/if(count=2)count=0;if(s=1) /总控制按键key1_ctr_frq();key2_ctr_vol();_nop_(); if(num=freq) /选频num=0;count+;if(count=2)count=0; If(keytemp2=0) If(p=1) switch(q)case 0:DAdata=Squaretab10count;break;case 1:DAdata=Squaretab10count;break;case 2:DAdata=Squaretab11count;b

35、reak;case 3:DAdata=Squaretab11count;break;case 4:DAdata=Squaretab12count;break;case 5:DAdata=Squaretab12count;break;case 6:DAdata=Squaretab13count;break;case 7:DAdata=Squaretab13count;break;case 8:DAdata=Squaretab14count;break;case 9:DAdata=Squaretab14count;break;case 10: DAdata=Squaretab15count;bre

36、ak;case 11: DAdata=Squaretab15count;break;case 12: DAdata=Squaretab16count;break;case 13: DAdata=Squaretab16count;break;case 14: DAdata=Squaretab17count;break;case 15: DAdata=Squaretab17count;break; / end SWITCH/end if If(p=2)switch(q)If(keytemp2=0) If(p=1) switch(q)case 0:DAdata=Squaretab10count;br

37、eak;case 1:DAdata=Squaretab10count;break;case 2:DAdata=Squaretab11count;break;case 3:DAdata=Squaretab11count;break;case 4:DAdata=Squaretab12count;break;case 5:DAdata=Squaretab12count;break;case 6:DAdata=Squaretab13count;break;case 7:DAdata=Squaretab13count;break;case 8:DAdata=Squaretab14count;break;

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号