基于单片机的信号发生器设计.docx
- 文档编号:30353113
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:25
- 大小:125.04KB
基于单片机的信号发生器设计.docx
《基于单片机的信号发生器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的信号发生器设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于单片机的信号发生器设计
基于单片机的信号发生器设计
代劲
(吉首大学物理科学与信息工程学院,湖南吉首416000)
摘要
本文介绍一种用AT89C51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。
文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。
关键词:
单片机;DAC;信号发生器
DesignofSignalGeneratorBasedonMCU
DaiJing
(CollegeofPhysicsScienceandInformationEngineering,JishouUniversity,Jishou,Hunan416000)
Abstract
ThispaperintroducesasignalgeneratorwithMCUAT89C51,whichisusedtogenerateelectro-wave-formssuchassquares、triangles、sinesandteeth-saw.TheperiodsofthesesignalscanbechangedbyprogramsofMCUAT89C51andtheiroutputscanbeselectedtobemonopolarorbipolar.Thispaperprovidestheoriginalcode.Andthetechnicalparameterofthesignalgeneratormeetstherequestofthedesignafterthesimulationtest.
Keywords:
MCU;DAC;signalgenerator
硬件设计
硬件原理框图
硬件原理方框图如图4.1所示。
图4.1硬件原理框图
主控电路
AT89C51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。
在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。
模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。
中断系统是使处理器具有对外界异步事件的处理能力而设置的。
当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。
在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在AT89C51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求,AT89C51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形[6]。
如图4.2所示,AT89C51从P0口接收来自键盘的信号,并通过P2口输出一些控制信号,将其输入到8155的信号控制端,用于控制其信号的输入、输出。
如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。
如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号通过8155的PB口输出,并在数码管上显示出来。
图4.2主控电路图
数/模转换电路
由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。
但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。
DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。
由图4.3可知,DAC0832的片选地址为7FFFH,当P25有效时,若P0口向其送的数据为00H,则U1的输出电压为0V;若P0口向其送的数据为0FFH时,则U1的输出电压为-5V.故当U1输出电压为0V时,由公式得:
Vout=-5V.当输出电压为-5V时,可得:
Vout=+5V,所以输出波形的电压变化范围为-5V~+5V.故可推得,当P0所送数据为80H时,Vout为0V[4]。
图4.3数模转换电路
按键接口电路
图4.4为键盘接口电路的原理图,图中键盘和8155的PA口相连,AT89C51的P0口和8155的D0口相连,AT89C51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。
其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出。
“S3”号键代表锯齿波输出,“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号[3]。
时钟电路
8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和微调电容,从而构成时钟电路,其电路图如图4.5所示。
电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。
由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形[9]。
图4.5时钟电路
显示电路
显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。
而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。
其器件模型如图4.6所示。
图4.6LED显示电路
软件设计
程序流程图
本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。
主程序的流程图如图5.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。
在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。
图5.1主程序流程图
图5.2为各波形子程序的流程图。
如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。
如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换
器将数据转换成模拟信号,形成所需波形信号。
图5.2子程序流程图
波形仿真
通过前面的软、硬件设计,整个电路的设计已基本完成,下面将进行正弦波、方波、三角波、锯齿波等波形的仿真与测试。
本文中波形信号的仿真是以Proteus6.5这一款软件为平台,装入波形发生程序,验证硬件电路和程序的正确性。
正弦波的仿真
如图5.3所示,此波形为幅度为5V,频率为500HZ的正弦波,是通过查表转换的方法来实现的。
而要实现其他如10HZ、100HZ、1KHZ等频率的波形,则需要调用延时子程序,改变波形发生的时间常数。
图5.3正弦波仿真图
三角波的仿真
如图5.4所示,此波形为幅度为5V,频率为500HZ的正弦波,是通过查表转换的方法来实现的。
通过调用延时子程序,改变波形发生的时间常数,实现10HZ、100HZ、1KHZ等频率的波形。
图5.4三角波仿真图
锯齿波的仿真
如图5.5所示,此波形为幅度为5V,频率为500HZ的锯齿波,是通过查表转换的方法来实现的。
而要实现其他如10HZ、100HZ、1KHZ等频率的波形,则需要调用延时子程序,改变波形发生的时间常数。
方波的仿真
如图5.6所示,此波形为幅度为5V,频率为500HZ的方波,是通过查表转换的方法来实现的。
通过调用延时子程序,改变波形发生的时间常数,实现10HZ、100HZ、1KHZ等频率的波形。
图5.6方波仿真图
结束语
这种基于单片机的信号发生器已经展示出很好的性能,而且有着很高的性价比。
此外,它产生的波形与模拟电路的波形相比,波形有着更好的平滑性,其周期性也更加稳定。
已经越来越多的应用到各种电子设备当中,给人们的日常生活带来了方便。
在论文中简单介绍了它的用途和发展趋势,根据它的一些基本知识,按照自己的想法设计了一类低频信号发生器,具体包括了设计方案以及相关参数的选取和计算,根据工作基本原理加入了一些相关的辅助电路,并编写了相关的应用程序。
有些指标还有待于进一步提高。
例如,在精度及其它功能的扩展上还有较大的潜力可以挖掘,这些都有待于我们通过对电路的改进和对元器件的最佳选择来进一步完善。
而且由于本人所学知识有限,很多知识点的学习不够深刻,我会在以后的学习中更加踏实、认真的学好各个知识点。
参考文献
[1]程全.基于AT89C52实现的多种波形发生器的设计[J].周口师范学院学报,2005.22(5):
57~58.
[2]周明德.微型计算机系统原理及应用[M].北京:
清华大学出版社,2002.341~364.
[3]刘乐善.微型计算机接口技术及应用[M].北京:
北京航空航天大学出版社,2001.258~264.
[4]童诗白.模拟电路技术基础[M].北京:
高等教育出版社,2000.171~202.
[5]杜华.任意波形发生器及应用[J].国外电子测量技术,2005.1:
38~40.
[6]张友德.单片微型机原理、应用与实践[M].上海:
复旦大学出版社,2004.40~44.
[7]程朗.基于8051单片机的双通道波形发生器的设计与实现[J].计算机工程与应用,2004.8:
100~103.
[8]张永瑞.电子测量技术基础[M].西安:
西安电子科技大学出版社,2006.61~101.
[9]李叶紫.MCS-51单片机应用教程[M].北京:
清华大学出版社,2004.232~238.
[10]蔡美琴.MCS-51系列单片机系统及其应用[M].北京:
高等教育出版社,1988.56~289.
致谢
本文的研究工作是在杨永东老师指导、帮助和督促下完成的。
杨永东老师在该领域有敏锐的感知力以及对其应用价值的洞察力给我留下了深刻的印象。
在攻读学士学位四年的学习期间,导师勇于探索、敢于创新的科研精神激励我不断努力进取,在今后的人生旅途上取得成功的宝贵的精神财富。
同时,在学习期间导师为我提供了良好的研究环境和实践条件,并对一些创新性的工作给予了大量的指导与支持。
在本文完成之际,谨向为我倾注了大量心血的导师及帮助过我的老师和同学表示最诚挚的感谢和深深的敬意!
附录一
源程序:
ORG0000H
AJMMAIN
ORG000BH
LJMPTC0
ORG0030H
MAIN:
MOVDPTR,#9FFFH指向DAC0832
(1)
MOVA,70H
MOVX@DPTR,ADAC0832
(1)输出
MOVDPTR,#7F00H指向8155命令字端口地址
MOVA,#06H设置A口为输入,B口、C口为输出
MOVX@DPTR,A送命令字
MOVDPTR,#7F01H指向A口地址
MOVXA,@DPTR读入A口的开关数据
JNBACC.4,K10H判断是否“4”号键,若是则转输出10Hz信号
JNBACC.5,K100H判断是否“5”号键,若是则转输出100Hz信号
JNBACC.6,K500H判断是否“6”号键,若是则转输出500Hz信号
JNBACC.7,K1K判断是否“7”号键,若是则转输出1KHz信号
AJMPMAIN
LED1:
MOVR3,#06H设置6个LED显示
MOVR2,#01H选通第一位LED数据
MOVR1,#30H送显示缓冲区首址
GN1:
MOVDPTR,#7F03H指向C口地址
MOVA,R2位选通数据送A
MOVX@DPTR,A位选通数据送C口
RLA选通下一位
MOVR2,A位选通数据送R2中保存
MOVA,@R1取键值
MOVDPTR,#TAB送LED显示软件译码表首址
MOVCA,@A+DPTR查表求出键值显示的段码
MOVDPTR,#7F02H指向B口地址
MOV@DPTR,A段码送显示
LCALLLOOP1调延时子程序
INCR1指向下一位显示缓冲区地址
DJNZR3,GN1循环显示6个LED
RET
LOOP1:
MOVR4,#08H延时子程序
LOOP:
MOVR5,#0A0H
DJNZR5,$
DJNZR4,LOOP
RET
K10H:
MOV30H,#00H显示10Hz
MOV31H,#00H
MOV32H,#00H
MOV33H,#00H
MOV34H,#01H
MOV35H,#00H
LCALLLED1调显示子程序
MOVTMOD,#00H
MOVTL0,#15H
MOVTH0,#9EH
AJMPPD
K100H:
MOV30H,#00H显示100Hz
MOV31H,#00H
MOV32H,#00H
MOV33H,#01H
MOV34H,#00H
MOV35H,#00H
LCALLLED1调显示子程序
MOVTMOD,#00H
MOVTL0,#08H
MOVTH0,#0F6H
AJMPPD
K500H:
MOV30H,#00H显示500Hz
MOV31H,#00H
MOV32H,#00H
MOV33H,#05H
MOV34H,#00H
MOV35H,#00H
LCALLLED1调显示子程序
MOVTMOD,#00H
MOVTL0,#01H
MOVTH0,#0FEH
AJMPPD
K1K:
MOV30H,#00H显示1KHz
MOV31H,#00H
MOV32H,#01H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
LCALLLED1调显示子程序
MOVTMOD,#00H
MOVTL0,#01H
MOVTH0,#0FFH
PD:
JNBACC.0,KE0判断是否“0”号键按下,若是则转方波输出
JNBACC.1,KE1判断是否“1”号键按下,若是则转正弦方波输出
JNBACC.2,KE2判断是否“2”号键按下,若是则转三角波输出
JNBACC.3,KE3判断是否“3”号键按下,若是则转锯齿波输出
LJMPPD
KE0:
MOVR7,#00H
LCALLLED1调显示子程序
MOVR6,#00H
AJMPGN
KE1:
MOVR7,#02H
LCALLLED1调显示子程序
MOVR6,#00H
AJMPGN
KE2:
MOVR7,#02H
LCALLLED1调显示子程序
MOVR6,#00H
AJMPGN
KE3:
MOVR7,#02H
LCALLLED1调显示子程序
MOVR6,#00H
GN:
SETBTR0
SETBET0
SETBEA
LOP1:
JNBACC.4,K10H判断是否“4”号键,若是则转输出10Hz信号
JNBACC.5,K100H判断是否“5”号键,若是则转输出100Hz信号
JNBACC.6,K500H判断是否“6”号键,若是则转输出500Hz信号
JNBACC.7,K1K判断是否“7”号键,若是则转输出1KHz信号
AJMPLOP1
TC0:
CJNER7,#00H,TC1发送方波程序
MOVDPTR,#TAB1送方波数据表首址
MOVA,R6发送数据寄存器
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH指向DAC0832
(2)
MOVX@DPTR,ADAC0832
(2)输出
MOVA,R6
INCA
MOVR6,A
CJNEA,#32,QL1
MOVR6,#00H
AJMPQL1
TC1:
CJNER7,#01H,TC2发送正弦波程序
MOVDPTR,#TAB2送正弦波数据表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH指向DAC0832
(2)
MOVX@DPTR,ADAC0832
(2)输出
MOVA,R6
INCA
MOVR6,A
CJNEA,#32,QL1
MOVR6,#00H
AJMPQL1
TC2:
CJNER7,#02H,QL1发送三角波程序
MOVDPTR,#TAB3送三角波数据表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH指向DAC0832
(2)
MOVX@DPTR,ADAC0832
(2)输出
MOVA,R6
INCA
MOVR6,A
CJNEA,#32,QL1
MOVR6,#00H
AJMPQL1
TC3:
:
CJNER7,#03H,QL1发送锯齿波程序
MOVDPTR,#TAB4送锯齿波数据表首址
MOVA,R6
MOVCA,@A+DPTR
MOVDPTR,#0AFFFH指向DAC0832
(2)
MOVX@DPTR,ADAC0832
(2)输出
MOVA,R6
INCA
MOVR6,A
CJNEA,#32,QL1
MOVR6,#00H
QL1:
RETI
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,82H,0F8H,80H
TAB1:
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
TAB2:
DB80H,83H,86H,89H,8DH,90H,93H,96H
DB99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH
DB0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H
DB0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H
DB0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H
DB0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H
DB0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH
DB0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH
DB0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H
DB0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH
DB0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH
DB0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H
DB0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H
DB0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H
DB96H,93H,90H,8DH,89H,86H,83H,80H
DB80H,7CH,79H,78H,72H,6FH,6CH,69H
DB66H,63H,60H,5DH,5AH,57H,55H,51H
DB4EH,4CH,48
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 信号发生器 设计