《单片机课程设计单片机多功能信号发生器设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计单片机多功能信号发生器设计.doc(18页珍藏版)》请在三一办公上搜索。
1、单片机课程设计题 目:多功能信号发生器设计班 级: 姓 名: 学 号: 指导教师: 设计时间: 评语:成绩 目 录目 录I1. 问题分析及解决方案- 1 -1.1 题目要求- 1 -1.2 题目分析- 1 -1.2.1 信号的产生- 1 -1.2.2 信号幅度控制- 1 -1.2.3 信号频率控制- 1 -1.2.4 波形切换- 2 -1.3 程序设计流程- 2 -1.4 解决方案- 2 -2. 单片机选型及硬件配置- 3 -2.1 单片机及元件选择- 3 -2.2 I/O地址分配- 3 -2.3 系统硬件原理图- 4 -3. DAC0832简介- 4 -4. 软件实现- 6 -4.1 软件代
2、码- 6 -4.2 程序调试- 9 -5. 心得体会- 14 -参考书目- 16 -1. 问题分析及解决方案1.1 题目要求多功能信号发生器设计 (1)信号发生器能产生50-200Hz的正弦波、方波、三角波、锯齿波,数码管显示信号频率; (2)输出哪一种波形由四个按键控制;(3)波形的极性、幅度、周期、占空比可由按键操作设置和修改。1.2 题目分析1.2.1 信号的产生利用8位D/A转换器DAC0832,可以将8位数字量转换成模拟量输出。数字量输入的范围是0255之间,对应的模拟量输出范围在正负参考电压之间。由此,可以利用单片机的并行口输出的数字量,产生波形。1.2.2 信号幅度控制因DAC0
3、832的模拟量输出范围在正负参考电压之间,也就是说,当数字量输入为00H时,DAC0832的输出是Vref-,当数字量输入为FFH时,DAC0832的输出是Vref+。所以,为了调节输出波形的幅度,只要调节VREF即可,可在Vref+端接一电位器,调节VREF的电压,即可达到调节波形电压的目的。1.2.3 信号频率控制在单片机的P2口接8位的拨码开关,将其开关状态转换为8位二进制数,作为延时常数,即可调节输入信号的频率。1.2.4波形切换利用4位DIP开关来选择波形,并通过4个LED进行指示。1.3 程序设计流程图1 程序设计流程1.4 解决方案由于输出信号的频率较低,可选用AT89C51作为
4、控制器,其中方波,锯齿波,三角波只通过一定的延时完成波形的输出,正弦波还需用查表法来,单片机输出的为数字量而生活中用到的为模拟量,故需经过D/A转换器DAC0832把数字量变为模拟量输出。而DAC0832输出的为电流信号,而我们需要的是电压信号,故采用了一个集成运放将电流信号转换为电压信号,再通过一级集成运放将单极性的电压信号转换为双极性的电压信号。输出波形的类型以及频率均是通过拨码开关来控制的,由于单片机输出四种波形故用了4个拨码开关,这样每一位能够控制一中波形的输出。波形频率的控制通过8位拨码开关来控制,这样控制精度可以达到1Hz,范围为1Hz-255Hz。输出波形的幅值是通过一个调节DA
5、C0832的参考电压来实现的。2. 单片机选型及硬件配置2.1 单片机及元件选择表1 单片机及元件选择元件名称型号元件名称型号单片机AT89C51集成块DAC0832晶振12MHZ拨码开关DIPSW_8电容22u拨码开关DIPSW_42.2 I/O地址分配P0口用于输出波形,P0口输出的数字量通过DAC0832转换为模拟量,也就是电压信号,然后通过示波器就可以观察单片机输出的波形。P1.0P1.3用于点亮不同的LED指示灯,从而指示单片机输出波形的类型。当P1.0=0时第一个LED等被点亮表示单片机输出的为方波,当P1.1=0时第二个LED等被点亮表示单片机输出的为锯齿波,当P1.2=0时第三
6、个LED等被点亮表示单片机输出的为三角波,当P1.3=0时第四个LED等被点亮表示单片机输出的为三角波。P2口输入8位拨码开关状态控制波形频率,这样输出波得频率可以在1-255Hz之间任意选择。P3.0P3.3. 用于输出波形类型的控制,主要通过四位拨码开关的输入量的不同让单片机输出相应的波形,拨码开关的四种状态如下:P3.0=0,P3.1=1,P3.2=1,P3.3=1时输出方波;P3.0=1,P3.1=0,P3.2=1,P3.3=1时输出锯齿波;P3.0=1,P3.1=1,P3.2=0,P3.3=1时输出三角波;P3.0=1,P3.1=1,P3.2=1,P3.3=0时输出正弦波。P3.6用
7、于给DAC0832给写数据信号。2.3 系统硬件原理图图2 信号发生计硬件原理电路3.DAC0832简介DAC0832是一个8位D/A转换器。单电源供电,从+5+15V均可正常工作。基准电压的范围为-10V+10V;电流建立时间为1us;COMS工艺,低功耗20Mw。DAC0832转换芯片为20引脚,双列直插式封装。其引脚图如下图:图3 DAC0832引脚图D/A转换电路是一个R-2R T型电阻网络,实现8为数据的转换。其引脚信号说明如下:DI0DI7:转换数据输入。:片选信号输入,低电平有效。ILE:数据锁存允许信号输入,高电平有效。:第1写入信号输入,低电平有效。:第2写入信号输入,低电平
8、有效。:数据传送控制信号输入,低电平有效。:电流输出1;:电流输出2;:反馈电阻端。:基准电压,其电压可正可负,范围为-10V+10V。DGND:数字地。AGND:模拟地。VCC:芯片工作电源,从+5+15V均可正常工作。4.软件实现4.1 软件代码 #include #include #define uchar unsigned char #define uint unsigned int #define dac0832 XBYTE0xffff sbit SQU_K =P30;/P30-P33为拨码开关输入,用来控制输出波形 sbit SAW_K =P31; sbit TRI_K =P32;
9、 sbit SIN_K =P33; sbit SQU_L =P10;/P10-P13点亮LED灯,用来指示拨码开关的状态 sbit SAW_L =P11; sbit TRI_L =P12; sbit SIN_L =P13; sbit INTad =P33; uchar code sin_tab=0,0,0,0,1,2,3,4,5,6,8, /输出正弦波时用查表的方法 9,11,13,15,17,19,22,24, 27,30,33,36,39,42,46,49, 53,56,60,64,68,72,76,80, 84,88,92,97,101,105,110,114, 119,123,128,
10、132,136,141,145,150, 154,158,163,167,171,175,179,183, 187,191,195,199,202,206,209,213, 216,219,222,225,228,231,233,236, 238,240,242,244,246,247,249,250, 251,252,253,254,254,255,255,255;/*/方波发生函数/*void square() uchar a,b; for(a=0;a127;a+) dac0832=0xff; P2=0xff; b=P2; while(b-); for(a=0;a127;a+) dac08
11、32=0; P2=0xff; b=P2; while(b-); /*/锯齿波发生函数/*void sawtooth() uchar a,b; for(a=0;a255;a+) dac0832=a; P2=0xff; b=P2; while(b-); /*/三角波发生函数/*void triang() uchar a,b; for(a=0;a1;a=a-2) dac0832=a; P2=0xff; b=P2; while(b-); /*/正弦波发生函数/*void sinwave() uchar a,b; for(a=0;a0;a-) dac0832=sin_taba; P2=0xff; b=P
12、2; while(b-); /*/主函数/*void main() P1=0xff; P2=0xff; P3=0xff; while(1) dac0832=0; if(SQU_K=0)/输出方波LED灯和波形同频率闪烁 SQU_L=0; square(); SQU_L=1; if(SAW_K=0) /输出锯齿波LED灯和波形同频率闪烁 SAW_L=0; sawtooth(); SAW_L=1; if(TRI_K=0) /输出三角波LED灯和波形同频率闪烁 TRI_L=0; triang(); TRI_L=1; if(SIN_K=0) /输出正弦波LED灯和波形同频率闪烁 SIN_L=0; si
13、nwave(); SIN_L=1; 4.2 程序调试(1)首先点击图4中呈蓝色的小图标在出现的对话框中单击output在Create HEX Fi选项前打上“”,其它选项为默认设置,单击确定,这样在编译程序时就可生成用于下载到单片机中的.hex文件。图4 生成.hex文件对话框(2)在Proteus下对搭建好的电路进行仿真时,首先需给单片机下载程序,将鼠标放到单片机上双击,弹出如图5所示的对话框,在“Program File”一栏中点击右面的“”按钮,找到在Keil C下生成的.HEX文件将其选中,点击“确定”按钮即可将程序下载到单片机中。图5 添加.hex文件对话框(3) 程序下载好后,点击
14、运行按钮,进行仿真,仿真界面如图6所示。图6 仿真界面显示(4)拨动拨码开关使P1.0=0,P2=50,此时单片机输出频率为50Hz的方波,如图7所示。图7 50hz时方波波形(5)改变单片机输出频率为200Hz,波形如图8所示。图8 200hz方波波形显示(6)拨动拨码开关使P1.1=0,P2=50,此时单片机输出频率为50Hz的锯齿波,如图9所示。图9 50hz时锯齿波波形(7)改变单片机输出频率为200Hz,波形如图10所示。图10 200hz锯齿波波形显示(8)拨动拨码开关使P1.2=0,P2=50,此时单片机输出频率为50Hz的三角波,如图11所示。图11 50hz时三角波波形(9)
15、改变单片机输出频率为200Hz,波形如图12所示。图12 200hz三角波波形显示(10)拨动拨码开关使P1.3=0,P2=50,此时单片机输出频率为50Hz的正弦波,如图13所示。图13 50hz时正弦波波形(11)改变单片机输出频率为200Hz,波形如图14所示。图14 200hz正弦波波形显示5.心得体会通过这次课程设计,使我对单片机以及D/A转换器有了更加深入的理解,其中包括各自的原理、结构、各引脚的含义作用以及在电路中的连接方式等。并且更为深入的了解了电路的分析与搭建方法和过程。其次,通过电路的搭建,使我对PROTEUS软件的使用更加熟练、自如,而且深刻体会到了仿真的便捷和优势。此外,在报告的完成过程中,也使我更加熟悉了排版的方法和技巧,并且可以灵活应用。参考书目1 杨居义,杨尧,杨晓琴,王益斌.单片机课程设计指导M.北京:清华大学出版社,2009.2 周润景,徐宏伟,丁莉.单片机电路设计、分析与制作M.北京:机械工业出版社,2010.3 李华,王思明,张金敏.单片机原理及应用M.兰州:兰州大学出版社,2001.