双通道波形发生器3_第1页
双通道波形发生器3_第2页
双通道波形发生器3_第3页
双通道波形发生器3_第4页
双通道波形发生器3_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2016年海南省大学生电子设计竞赛双通道波形发生器(C题)2016年10月25日摘 要 波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度,高稳定性,可重复性和易操作性的电子仪器。本系统是基于AT89C51单片机的数字式低频信号发生器,采用AT89C51单片机作为控制中心,外围采用数字/模拟转换电路(DAC0832),运放电路(LM358),波形按键应用的是独立按键,应用于波形的选择,幅值,频率的调解,通过按键控制可产生方波,三角波,正弦波等。其频率的调解就是调节其中断间隔的时间,幅值就是调节数字的大小。电源电路采用稳压芯片7805和7905得到稳定的直流电压。为了波形的合成,我们

2、采用的点都是65个。 Abstract The system adopts single chip microcomputer AT89C51 as the control center, digital output, and then by the DAC convert digital to analog; But output know is current, it is necessary to using op-amp (LM358), turning point flow into voltage. Display using the LCD1602 LCD, display t

3、he frequency, amplitude, at the same time use the oscilloscope display various waveform. Key application is independent, application form, the choice of wavelengths, amplitude and frequency of mediation. The frequency of mediation is to adjust one interval time, amplitude is adjust the size of figur

4、es.Power circuit USES the voltage regulator chip get steady dc voltage for 7805 and 7905 For the sake of waveform synthesis, we adopt points are 65.关键词:单片机AT89C51 DAC0832 独立按键 LM358芯片 74LS20芯片 7805芯片 7905芯片目 录一、系统方案11、 显示接口模块的论证与选择12、 信号发生部分的论证与选择13、 按键控制模块的论证与选择2二、系统理论分析与计算21、控制系统的分析2(1)单片机AT89C51的

5、功能和基本原理分析2(2)显示接口电路的分析2(3) 电源部分的分析3三、电路与程序设计31、电路的设计3(1)系统总体框图3(2)显示部分子系统框图与电路原理图3(3)波形转换模块子系统框图与电路原理图4(4)电源42、程序的设计5(1)程序功能描述与设计思路5(2) 程序流程图5四、测试方案与测试结果81、测试方案82、测试条件与仪器83、测试结果及分析9(1)测试结果(数据)9(2)测试分析与结论9五、结论与心得:9六、参考文献:10附录1:电路原理图:11附录2:源程序:12双通道波形发生器(C题)【本科组】一、系统方案本系统主要由单片机模块、波形转换(D/A)模块、显示接口模块、键盘

6、模块,运放模块,电源模块组成,下面分别论证这几个模块的选择。1、 显示接口模块的论证与选择方案一:数码管显示,由于本题要求实时的显示输出信号的幅度,频率,而数字不能显示字符。方案二:LED点阵显示,LED点阵显示虽然能够显示数字和字符,但是显示的效果不好,而且不易编程。方案三:LCD液晶显示,LCD液晶显示不但能显示字符和数字,而且效果较好,且容易实现。经比较,方案三能够更好的实现题目的要求,效果较好,且容易实现,所以选择方案三。2、 信号发生部分的论证与选择方案一:采用模拟分立元件或单片机压控函数发生器,可以产生正弦波,方波,三角波,通过调整外部元件可以改变输出频率,但采用模拟元器件由于元件

7、分散太大,因而产生频率稳定性较差,精度低,抵抗干扰能力低,成本高,而且灵活性较差,不能实现任意波形运算输出等智能化的功能。方案二:采用锁相式频率合成一个高稳定度和精确度的大量离散技术,它在一定程度上解决了概要稳定精确度又要频率在较大的范围内可调的矛盾,但是频率受VCO可变频率范围的影响,高低频率比不可能做的很高,而且只能产生正弦波或方波,不能满足任意波形的要求。方案三:采用单片机和数模转换DAC0832实现波形的产生,波形的产生是通过AT89C51执行方波波形程序,向D/A转换器的输入端按一定的规律发生数据,从而在DA转换电路输出端得到相应的电压波形。在AT89C51的P1口接矩阵按键,通过软

8、件编程来选择波形,幅值,频率,每种波形对应一个按键,此方案原理简单,实现起来比较容易。综上所述,我们选择第三种方案。3、 按键控制模块的论证与选择方案一:采用独立按键,它的按键的数目比较少,但是它的结构简单,方便操作,执行效率高等优势。方案二:采用矩阵键盘,它以较少的IO口实现了按键的功能,随之其操作比较复杂。综合考虑采用方案一。二、系统理论分析与计算1、控制系统的分析(1)单片机AT89C51的功能和基本原理分析原理:AT89C51外接11.0592MHz晶振作为时钟频率,并采用电源复位设计。复位电路采用上电复位,其工作原理是,当通电时,电容两端相当于短路,于是TST引脚为高电平,然后对电容

9、充电。产生方波程序思路:对于小于100Hz的频率,根据定时器溢出时间1us,将频率值换算为定时器溢出次数,当达到规定的次数时,将输出管脚的状态取反达到方波的产生;对于大于100Hz的频率,直接根据频率值设置其定时溢出的时间,当溢出时间达到时,将输出管脚的状态取反达到方波的产生。产生三角波程序思路:要产生峰值电压为5V的三角波,由此便可以计算出每次定时溢出的时间,再将每次定时的电压加权便可以达到三角波的波形。产生正弦波程序思路:给正弦波的一个周期设定tabke表,由65个数据,则每次定时溢出的时间便可计算,每个点的电压加权便可得到正弦波的波形。(2)显示接口电路的分析原理:由LCD1602液晶显

10、示器和独立按键组成。当某一按键按下时,扫描程序扫描到之后,通过P2口将数字信号发送到LCD1602,LCD1602液晶专门用于显示字母,数字,符号等点阵式LCD,外接电压是5V。扫描利用软件程序实现,当某一按键按下时,扫描立即检测到,随即调用子程序,执行相应的功能。(3) 电源部分的分析 原理:本电源设计了两个接口,方便不同接口的电源接入,并且在电源部分加上滤波电容,起过滤接入电源的杂波的作用,为了电路中得到+12V,-12V和+5V的直流工作电压,用变压器变压后再通过芯片和电容设计出所需要的电路。三、电路与程序设计1、电路的设计(1)系统总体框图系统总体框图如图1所示: AT89C51输出波

11、形运放电路DAC0832(1)LCLCD液晶显示模块P1 P0P3 P0键盘模块DAC0832(2)系统复位系统复位系统复位系统复位系统复位系统时钟 图1 系统总体框图 (2)显示部分子系统框图与电路原理图1、LCD液晶显示模块子系统框图AT89C51 P1初始化1602液晶显示器1602液晶显示数字和字符 图2 LCD液晶显示模块子系统框图2、 LCD液晶显示模块子系统电路 图3 LCD液晶显示模块子系统电路(3)波形转换模块子系统框图与电路原理图1、波形转换模块子系统框图AT89C51 P0示波器显示波形LM358运放模块DA数模转换 图4 波形转换模块子系统框图2、 波形转换模块子系统电

12、路 图5 波形转换模块子系统电路(4)电源电源由变压部分、整流部分、稳压部分组成。为整个系统提供+5V12V电压,确保电路的正常稳定工作。这部分电路比较简单,都采用三端稳压管实现。 图6 电源电路2、程序的设计(1)程序功能描述与设计思路1、程序功能描述根据题目要求软件部分主要实现键盘的设置和显示。1)键盘实现功能:设置频率值、频段、电压值以及设置输出信号类型。2)显示部分:显示电压值、频段、步进值、信号类型、频率。2、程序设计思路:主程序和子程序都存放在AT89C51单片机中,1)主程序的功能是:开机以后负责查键工作,然后根据用户所按的键转到相应的 程序进行处理。 2)子程序的功能有:按键子

13、程序,按键子程序中有任意波形的设置键幅值,频率的加减键等。(2) 程序流程图 开始1、主程序流程图设定波形的类型扫描按键是否选择波形波形 N Y扫描按键输入数据并 显示 输出 产生波形 结束2、 LCD液晶显示子程序流程图 开始初始化LCD设置显示位置显示字符和数字 结束3. 键盘模块子程序流程图 开始 扫描键盘键盘的选择输出频率和波形 结束3、 DA转换模块子程序流程图 开始DAC0832C初始化数模转换 结束四、测试方案与测试结果1、测试方案(1)硬件测试(2) 软件仿真测试(3)硬件软件联调2、测试条件与仪器测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬

14、件电路保证无虚焊。测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。3、测试结果及分析(1)测试结果(数据)5V档信号测试结果好下表所示: (单位/V)信号值0.41500.42100.40910.80602.0153.0833.3404.003显示0.41490.42100.40900.80602.0143.0833.3404.003(2)测试分析与结论根据上述测试数据,可知信号值与显示值误差很小,甚至无误差,由此可以得出以下结论:1、 在5V档信号测试中,信号值和显示值无误差小,甚至无误差。 2、频率调节可以实现从200Hz到20000Hz ;综上所述,本设计

15、达到设计要求。五、结论与心得:经过四天时间的课程设计,对于我们设计的项目,我学到了很多关于系统电路的功能,总的来说有如下收获:(1) 通过对电路的设计,对单片机C51系列的原理和功能有了进一步的了解,学到了更多的电路知识,如复位电路的原理,晶振的作用,熟悉了DAC0832芯片的功能。(2) 同时在本次设计中对运放电路有更深入的了解,如LM358芯片的引脚作用与功能,还有对74LS20芯片的与非门作用也有所认识。(3) 通过元器件的购买和电路板的焊接,增强了自身的实践动手能力,对电路原理的应用有了更深的认识。(4) 在测试阶段,尤其是在硬件电路的检查阶段,有很深的体会,有时候一个简单错误就有可能

16、导致电路无法正常工作,每个模块都要进行检查,排除错误,更加熟悉了电路的原理和C51单片机的工作原理。(5) 通过本次课程设计,我更加深刻的认识到团队合作的重要性,小组成员分工合作,是设计成功的关键,只有大家团结一致,才能更快更好的完成任务,虽然最后还有些设计要求没有达到,不过我对于本次设计还是挺满意的,我们队的团体精神可加。六、参考文献:【1】童诗白,华成英,模拟电子技术基础(M),北京:高等教育出版社.2003.345-362【2】潘永雄,沙河,刘向阳,电子线路CAD实用教程(M),西安:西安电子科技大学出版社,2001.13-118【3】张毅刚,彭喜源,谭晓昀,曲春波.AT89C51单片机

17、应用设计(M).哈尔滨;哈尔滨工业大学出版社,1997.53-61【4】胡汉才.单片机原理及其接口,清华大学出版社,2004:27-46【5】李群芳.单片机微型计算机与接口技术.电子工业出版社.2012.1215附录1:电路原理图:附录2:源程序:#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define DAdata P0/DA数据端口sbit DA_S1= P20; / 控制DAC0832的8位输入寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存sbit DA_S

18、2= P21; / 控制DAC0832的8位DAC寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存 sbit DA_S3= P25; / 控制DAC0832的8位输入寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存sbit key= P32;uchar wavecount; /'抽点'计数uchar THtemp,TLtemp;/传递频率的中间变量uchar judge=1; /在方波输出函数中用于简单判别作用uchar waveform; /当其为0、1、2时,分别代表三种波uchar code freq_unit3=200,200

19、,200; /三种波的频率单位uchar idata wavefreq3=100,100,100; /给每种波定义一个数组单元,用于存放单位频率的个数uchar code lcd_hang1="Sine Wave " "Triangle Wave " "Square Wave " "Select Wave: " "press No.1 key! "uchar idata lcd_hang216="f= Hz "uchar code waveTH= 0xfd,0xfe,0xff

20、,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe;uchar code waveTL= 0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, /正弦波频率调整中间值0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde,/三角波频率调整中间值0x88,0x50,0x90,0x32,0x

21、34,0xbe,0x4a,0xa3,0xe5,0x2c; /*/uchar code triangle_tab= /每隔数字8,采取一次0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x

22、90,0x88,0x80,0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00;uchar code sine_tab256=/输出电压从0到最大值(正弦波1/4部分)0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xd

23、a,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,/输出电压从最大值到0(正弦波1/4部分)0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0x

24、e9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,/输出电压从0到最小值(正弦波1/4部分)0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,

25、0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,/输出电压从最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0

26、2 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; void delay(uch

27、ar z) uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void triangle_out()/三角波输出 DAdata=triangle_tabwavecount+;if(wavecount>64) wavecount=0;DA_S1=0; /打开8位输入寄存器DA_S1=1; /关闭8位输入寄存器void sine_out() /正弦波输出 DAdata=sine_tabwavecount+;DA_S1=0; /打开8位输入寄存器DA_S1=1; /关闭8位输入寄存器void square_out() /方波输出 judge=jud

28、ge; if(judge=1) DAdata=0xff;else DAdata=0x00;DA_S1=0; /打开8位输入寄存器DA_S1=1; /关闭8位输入寄存器/*1602液晶的相关函数*/#define lcd_ports P1sbit rs=P22;sbit rw=P23;sbit lcden=P24;void write_com(uchar com)rs=0;/置零,表示写指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;/置1,表示写数据(在指令所指的

29、地方写数据)lcden=0;lcd_ports=date;delay(5);lcden=1;delay(5);lcden=0;void disp_lcd(uchar addr,uchar *temp1)uchar num;write_com(addr);delay(1); /延时一会儿?for(num=0;num<16;num+)write_date(temp1num);/或者这样写write_date(*(temp1+num);delay(1);void init_lcd()/uchar num;lcden=0; /可有可无?rw=0; /初始化一定要设置为零,表示写数据write_c

30、om(0x38); /使液晶显示点阵,为下面做准备write_com(0x0c); /初始设置write_com(0x06); /初始设置write_com(0x01); /清零write_com(0x80); /使指针指向第一行第一格disp_lcd(0x80,&lcd_hang13*16); /在第一行显示disp_lcd(0xc0,&lcd_hang14*16); /在第二行显示/*1602液晶函数声明结束*/void main() uchar i=0;DA_S2=0; /使DAC寄存器处于直通状态DAdata=0;DA_S1=1; /关闭8位输入寄存器init_lcd(

31、); waveform=0;TMOD=0x01; /设置定时器0为16位工作方式IT0=1; /设置外部中断0为下降沿触发ET0=1; /开定时器中断EX0=1; EA=1;while(1)/DAout(0xff); /可输出TTL波形/DAout(0x80);/T_temp=32; void timer0() interrupt 1TH0=THtemp;TL0=TLtemp;if(waveform=0) sine_out();else if(waveform=1) triangle_out();else if(waveform=2) square_out();void key_int0() interrupt 0 uchar keytemp;uint total_freq; /总频率EA=0; TR0=0; /关总中断与定时器delay(5); /延时够吗?if(key=0) /确实有按键按下而引发中断keytemp=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论