《单片机的信号发生器设计 .docx》由会员分享,可在线阅读,更多相关《单片机的信号发生器设计 .docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机课程设计报告题 目基于单片机的信号发生器设计1、系统设计经过考虑,我们确定方案如下:利用AT89s52单片机采用程序设计方法产 生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转 换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的 类型选择、频率变化,最终输出显示其各自的类型以及数值。L 1、设计要求1)、利用单片机采用软件设计方法产生三种波形2)、三种波形可通过键盘选择3)、波形频率可调4)、需显示波形的种类及其频率1. 2方案设计与论证1.2.1信号发生电路方案论证方案一:通过单片机控制D/A,输出三种波形。此方案输出的波形不够稳定,
2、抗干扰能力弱,不易调节。但此方案电路简单、成本低。方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器 搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积 分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形 产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。但此方案成 本高,程序复杂度高。考虑到配合本学期所学的知识,选择方案一。 uchar code sinl28 = 128, 134, 140, 147, 153, 159, 165, 171, 177, 18
3、2, 188,193, 199, 204, 209, 213, 218, 222, 226, 230, 234, 237,240, 243,245, 248,250, 251, 253,254, 254, 255,255,255, 254,254, 253,251, 250, 248,245, 243,240,237,234, 230,226, 222,218, 213, 209,204, 199,193,188,182, 177,171, 165,159, 153, 147,140, 134,128,122,116, 109, 103, 97, 91, 85, 79, 74, 68, 63,
4、 57, 52, 47, 43,38, 34, 30, 26, 22, 19, 16, 13, 11, 8, 6, 5, 3, 2, 2, 1, 1, 1,2, 2, 3, 5, 6, 8, 11, 13, 16, 19, 22, 26, 30, 34, 38, 43, 47, 52, 57, 63, 68, 74, 79, 85, 91, 97, 103, 109, 116, 122, 128);uchar code sinl00 = 128, 136, 144, 152, 160, 167, 175, 182, 189, 196, 203,209, 215, 221, 226, 231,
5、235, 239, 243, 246, 249, 251,253, 254, 255,255, 255,254, 253, 251,249,246, 243,239, 235, 231,226, 221,215, 209, 203,196,189, 182,175, 167, 160,152, 144,136, 128, 120,112,104, 96, 89,81, 74, 67, 60,53, 47, 41, 35, 30, 25, 21, 17,13, 10, 7,5,3, 2, 1, 1, 1, 2, 3, 5, 7, 10, 13, 17, 21, 25, 30, 35, 41, 4
6、7, 53,60, 67, 74, 81, 89, 96, 104, 112, 120, 128);uchar code sin33 = 128, 153, 177, 199, 218, 234, 245, 253, 255, 253, 245,234, 218, 199, 177, 153, 128, 103, 79, 57, 38, 22, 11, 3,1,3, 11,22,38, 57, 79, 103, 128;ucharcodesinl7 = 128, 177, 218, 245, 255, 245, 218, 177, 128, 79, 38, 11, 1, 11, 38, 79,
7、 128);/方波低频数据ucharcodejuxing256 = 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255,
8、255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
9、 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,0, 0, 0,0, 0, 0,0,0,0,0, 0, 0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0, 0, 0,0,0,0,0, 0, 0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0, 0, 0,0,0,0,0, 0, 0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0, 0,0,0,0, 0, 0,0,0,0,0, 0, 0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,
10、 0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);/方波高频数据uchar code juxingl28 = 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 25
11、5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
12、0, 0, 0;uchar code juxingl00 = 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,0, 0, 0, 0, 0, 0, 0, 0
13、, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;uchar code juxing32 = 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;ucharcodejuxingl6 = 255, 2
14、55, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0;三角波数据/uchar code sanjiao256256=;/uchar code sanjiaol28128=;uchar code sanjiaol00 = 128, 133, 138, 143, 148, 153, 158, 164, 169, 174, 179,184, 189, 194, 199, 204, 209, 214, 219, 225, 230, 235,240, 245, 250,255,250, 245,240, 235, 230,225, 219
15、,214, 209, 204,199,194, 189,184, 179, 174,169, 164,158, 153, 148,143,138, 133,128, 127, 122,117, 112,107, 102, 97, 91, 86, 81, 76, 71, 66, 61, 56, 51, 46, 41,36, 30, 25, 20, 15, 10, 5, 0, 5, 10, 15, 20, 25, 30, 36, 41,46, 51, 56, 61, 66, 71, 76, 81, 86, 91, 97, 102, 107, 112,117, 122, 127, 128;uchar
16、 code sanjiao32 = 128, 144, 160, 176, 192, 207, 223, 239, 255, 239,223, 207, 191, 176, 160, 144, 128, 112, 96, 80, 64,49, 33, 17,1, 17, 33, 49, 65, 80, 96, 112, 128;uchar code sanjiao29 = 128, 146, 164, 182, 200, 218, 236, 255, 236, 218,200, 182, 164, 146, 128, 110, 92, 74, 56, 37, 18, 0, 19,37, 55,
17、 73,91,110,128;uchar code sanjiao17 = 128, 153, 178, 204, 229, 255, 229,204, 178, 153, 128, 102, 78, 52, 26,0, 26, 52, 78, 102, 128;延时程序void delayl ()int a, b;for (a=l;a0;a一)for(b=122;b0;b);void intO() interrupt 0 采用TO中断 改变频率TRO=O;EXO=O;delaylO;延时,判断S2是否真的键被按下if(sl=O) 若真的被按下,为消除按键抖动影响P+; if (p=6)p=o
18、;输出波形的每一点设定延时时间长短,以便选择频率switch(p) case 1 : pinglv=10;displaylKHz ();break; case 2 :pinglv=100;displaylOOHz ();break; case 3 :pinglv=1000;displaylOHz ();break;case 4:pinglv=10000;displaylHz (); break; case 5 : pinglv=l;displaylOKHz();break;default :pinglv=l;break;)delayl ();while(Isl);)while (!si);EX
19、O=1;TRO=1;void inti () interrupt 2采用T1中断改变波形TRO=O;EX0;delayl ();if (s2=0) bxxz+;if (bxxz-3)bxxz=0;switch(bxxz)(case 0 :默认为正弦波a=l;displayzhengxianO ; 在液晶的第一行显示正弦波break;case 1 :a=2;displayfangbo ();break;case 2 :a=3;displaysanjiaoO ;break;)delayl ();while (!s2);while (!s2);EX1=1;TRO=1;)void timerO()in
20、terrupt 1 if(pinglv!=l & pinglv!=10)(if (a-1)选择方波在液晶的第一行显示方波三角波在液晶的第一行显示三角波延时,判断键按S1是否真的被按下若真的被按下,为消除按键抖动影响等待按键松开定时器0中断服务程序默认为正弦波;频率最高P2=sinl00k;k+;if (k=100)k=0;if (a=2)方波P2=juxingl00k;k+;if (k=100)k=0;)if (a=3)P2=sanjiaol00k;k+;if (k=100)k=0;if (pinglv=100)THO=(65536-92)/256;TLO= (65536-92)%256;if
21、 (pinglv=1000)THO= (65536-990)/256;TL0= (65536-990)%256;if (pinglv=10000)(TH0= (65536-10000)/256;TL0= (65536-10000)%256;再次装定时器初值再次装定时器初值再次装定时器初值void main()主程序init ();液晶初始化wr=O;/AUXR =0x80;/定时器 0 时钟为 Fosc,即 ITEA=1;IT0=l;/低电平触发方式EX0=l; / 打开外部中断0m=i;低电平触发方式EX1=1;/打开外部中断1TM0D=0x01;设置定时器0工作模式1TH0=(65536-
22、1)/256;定时器装初值10/12微秒TL0=(65536-1)%256;ETO=1;TRO=1;while (1)if(pinglv二二1)TR0=0;if (a=l)P2=sinl7k;k+;if (k=16)k=0;)if (a=2)开定时器0中断/启动定时器0 */默认为正弦波;频率最高/方波P2=juxingl6k;k+;if (k-16)k= 0;if (a=3)P2=sanjiaol7k;k+;if (k=16)k=0;/_nop_ ();)if (pinglv=10) delay=3;TR0=0;if(a=l)默认为正弦波;频率最高P2=sinl00k;k+;if (k=10
23、0)k=0;while (delay)delay一;if(a=2)方波P2=juxingl00k;k+;if (k=100)1.2.2单片机的选择论证AT89S52单片机是一种高性能8位单片微型计算机。它把构成计算机的中 央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构 成较为完整的计算机、而且其价格便宜。故而采取此种方案。1. 2. 3显示方案论证方案一:采用LED数码管。LED数码管由8个发光二极管组成,每只数码 管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间 间隔小于l/16s时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显 示编
24、程较易,但要显示内容多,而且数码管不能显示字母。方案二:采用LCD液晶显示器1602。其功率小,效果明显,显示编程容易 控制,可以显示字母。以上两种方案综合考虑,选择方案二。1.2.4键盘方案论证方案一:矩阵式键盘。矩阵式键盘的按键触点接于由行、列母线构成的矩 阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高 电平。当某一个键闭合时,该键所对应的行线和列线被短路。方案二:编码式键盘。编码式键盘的按键触点接于74LS148芯片。当键盘 上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由74LS148 输出。以上两种方案综合考虑,选择方案一。k=0;while (d
25、elay)delay-; if (a=3)P2=sanjiaol00k;k+;if (k=100)k=0;while (delay)delay一-;TRO=1;液晶显不程序:ttinclude lcd.hucharnum;ucharcodetable2 口二 sin(x)ucharcodetable3=sanjiao(x)ucharcodetable4=/fangbo (x):“ucharcodetablel 口=sin(x);定义初始上电时液晶默认显示状态ucharcodetable6=/10KHzucharcodetable7=/z1000Hzucharcodetable8 UlOOHzu
26、charcodetable9 二 1Hzucharcodetablel0=/10Hzuint x, y;for(x=z;x0;x一一)for(y=110;y0;y一);void write_(uchar )液晶写命令函数rw=0;rs=0;lcden=0;P0=;dela(5);lcden=l;dela(5);lcden=0;)void write date (uchar date) /液晶写数据函数 rw=0;rs=l;lcden=0;PO二date;dela(5);lcden=l;dela(5);lcden=0;)void init ()初始化函数uchar num;write_(0x38
27、);dela(5);write_(0x08);dela(5);write_(0x01);dela(5);write_(0x06);write(OxOc);dela(5);write_(0x80);设置显示初始值for (num=0; tabi el num !=0 ; num+)(writedate(tablelnum);dela(5);write_(0x80+0x40);for (num=0;table6num!=0 ;num+)(write_date(table6num);dela(5);)void displayzhengxian()write_(0x80);在液晶的第一行显示正弦波fo
28、r(num=0;table2num!=0? ;num+)(write date(table2num);dela(5);void displayfangboOwrite_(0x80);在液晶的第一行显示方波for (num=0;table4num!=0 ;num+) (write_date(table4num);dela(5);)void displaysanjiao()(write_(0x80);在液晶的第一行显示三角波for(num=0;table3num!=0 ;num+) (write_date(table3num);dela(5);)void displaylOKHz()(write_
29、(0x80+0x40);在液晶的第二行显示 lOKHzfor(num=0;table6num!=0 ;num+)(writedate(table6num);dela(5);void displaylKHz()write_(0x80+0x40);在液晶的第二行显示IKHzfor (num=0;table?num!=0 ;num+) write date(table?num);dela(5);)void displaylOOIIz ()(write_(0x80+0x40);在液晶的第二行显示 100Hzfor (num=0;table8num!=0 ;num+)(write date(table8
30、num);dela(5);)void displaylOHz()(write_(0x80+0x40) ;/在液晶的第二行显示 100Hzfor (num=0;tablelOnum!=,0 ;num+)(write_date(tablelOnum);dela(5);)void displaylHz()write_(0x80+0x40);在液晶的第二行显示1Hzfor (num=0;table9num!=0 ;num+)write_date(table9num);dela(5);1.3总体系统设计该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统 控制、信号的采集分析以及信号的处理
31、和变换,采用按键输入,利用液晶显示电 路输出数字显示的方案。将设计任务分解为按键电路、液晶显示电路等模块。图 (1)为系统的总体框图图(1)总体方框图2、硬件实现及单元电路设计2.1单片机最小系统的设计89c51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统 简单、可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电 路和复位电路即可,如图(2) 89c51单片机最小系统所示。由于集成度的限制, 最小应用系统只能用作一些小型的控制单元。其应用特点:(1)有可供用户使用的大量I/O 口线。(2)内部存储器容量有限。(3)应用系统开发具有特殊性。-t-C8mcu51
32、1_P1.0Pl.lRS3Dl ?RW4XT 1.4LPl.3EN5Pl.407Pl.5JQP1.60m 7RESET 9RESETRXD 10RXDP3.0TXDTXDP3.1KEY112INT0,P3.2KE213INT1P3.31414T0P3.41JTLP3.510pa 1 7P3.7XTAL2 18XTAL2XTAL1 19VT AT 120GvnMCU 51图(2) 89c51单片机最小系统2. 2波形产生模块设计GNDPO.O P0.1 P0.2 ?0.3P0.4P0.5P0.6 ?0.7EAALEPN ?2.7 P2.6P2 5P2.4P2.3P2.2P2.1P2.0VCE39
33、POO38?0137P0236P0335P0434P0533?C632?0731302928D7x /D626D525D424D323D2XXDI21DO由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。其电路图如下:K27OTJT-n* e 二A, 一?UT:R.-KT1OUTvccUN-2OX7T1IN-GXDLXI22JVKK?IX-=.cu图(3)波形产生电路如上图所示,单片机的P0 口连接DAC0832的八位数据输入端,DAC0832的输出 端接放大器,经过放大后输出所要的波形。DAC0832的为八位数据并行输入的, 其结构图如下:图(4) DA
34、C0832的内部结构W区舒森逗黑方2. 3显示模块的设计VSS VDDVL R2 RW EN D0D1 D2D3 D4D1 D6D- 5LA zLK通过液晶1602显示其电路图如右图:图(5)液晶显示如上图所示,1602的八位数据端接单片机的P0 口,其三个使能端RS、RW、EN分别接单片机的Pl. 2-P1. 4O通过软件控制液晶屏可以显示波形的种类以及波形的频率。2. 4键盘模块的设计本系统采用独立键盘,其连接电路图如下:GNDS3KEY2SW-DPSTS2R610KT_KEYlVCESW-DPST图(6)键盘如图开关S2用来调节输出信号的频率、默认输出频率为lOKHz,其次按照 IKHz
35、. 100Hz. 10Hz、1Hz递减输出。开关S3用来切换输出信号的波形。3、软件设计流程本系统采用AT89s52单片机,用编程的方法来产生三种波形,并通过编程来切换三种波形以及波形频率的改变。具体功能有:(1)各个波形的切换;(2)各种参数的设定;(3)频率增 减等。软件调通后,通过编程器下载到AT89s52芯片中,然后插到系统中即可独立完成所有的控制。4、总结通过这次,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实 际的含义,并且检验了大学三年的学习成果,进一步加深了我对专业知识的了解 和认识以及动手的能力。虽然在这次设计中对于所学知识的运用和衔接还不够熟 练,作品完成的还不是
36、很出色。但是我将在以后的工作和学习中继续努力、不断 完善。这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展 打下了良好的基础。参考文献1戴仙金主编51单片机及其C语言汇编程序开发实例清华大学出版 社,20XX2高吉祥主编全国大学生电子设计竞赛培训系列教程电子工业出版社, 20XX3杨素行主编模拟电子技术基础简明教程高等教育出版社,20XX4蒋辉平主编单片机原理与应用设计北京航空航天大学出版社 20XX附件一:电路原理图-12V tI ;HM2X:-12V tI ;HM2X:GNDSW-DPSTLCD1:(Tji2JJ5i21 ix40XT.U: XfAliYIXT.O2JCT.
37、UGXD筌T 远 至 KIY? kzyF交史T KXMM DiDP:-) 而P3; 而P TOP” T1P3: P3.6P3.7 XT.U: XT.U1JX5f5?RP0VT1OUT:二X1I2 -g向 :向-灯示丽VI口一向附件二:程序清单include led. h#include /sbit csda=Pr3;DAC0832的片选信号,低电平有效 uchar k=0, p=0, delay=0;sbit wr=Pl 1;sbit wr=Pl 1;输入寄存器的写选通输入端,负脉冲有效sbit sl=P3 2;/波形选择中断入口sbit s2=P3 3;/频率选择中断入口uchar bxxz
38、=O;pinglv=l, count=0;uchar a=l;/正弦波低频数据uchar code sin256 = 128, 131, 134, 137, 140, 144, 147, 150, 153, 156, 159, 162,165, 168, 171, 174, 177, 179, 182, 185, 188, 191, 193, 196, 199,201, 204, 206, 209, 211, 213, 216, 218, 220, 222, 224, 226, 228,230, 232,234, 235, 237,239,240, 241, 243,244,245, 246,
39、248,249, 250,250, 251, 252,253,253, 254, 254,254,255, 255,255,255, 255,255, 255, 254,254,254, 253, 253,252,251, 250,250,249, 248,246, 245, 244,243,241, 240, 239,237,235, 234,232,230, 228,226, 224, 222,220,218, 216, 213,211,209, 206,204,201, 199,196, 193, 191,188,185, 182, 179,177,174, 171,168,165, 1
40、62,159, 156, 153,150,147, 144, 140,137,134, 131,128,125, 122, 119, 116, 112, 109, 106, 103, 100, 97, 94, 91, 88, 85, 82,79, 77, 74,71, 68,65, 63,60,57, 55,52, 50,47, 45,43, 40,38, 36,34, 32, 30,28, 26,24, 22,21,19, 17,16, 15,13, 12,11, 10,8, 7, 6,6, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 8, 10,11, 12, 13,15, 16,17, 19,21,22, 24,26, 28,30, 32,34, 36,38, 40, 43,45, 47, 50,52, 55,57, 60,63,65, 68,71, 74,77, 79,82, 85,88, 91, 94,97, 100, 103, 106, 109, 112, 116, 119, 122, 125, 128;/正弦波高频数据