基于单片机的函数信号发生器完整版汇编__键盘显示 摘要
本文介绍一种用ATC51单片机构成的波形发生器,可产生方波、三角波、正弦波、锯齿波等多种波形,波形的周期可用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等特点。文章给出了源代码,通过仿真测试,其性能指标达到了设计要求。
关键词:单片机;DAC;信号发生器 目录 摘录
要
...............................................................
第
一
章
目绪
...............................................................
论..........................................................
1.1单片机概述...................................................... 1.2信号发生器的分类................................................
1.3研究内容........................................................ 第二章方案的设计与选择..............................................
2.1方案的比较...................................................... 2.2设计原理........................................................ 2.3设计思想........................................................
2.4设计功能........................................................ 第三章硬件设计......................................................
3.1硬件原理框图.................................................... 3.2主控电路........................................................ 3.3数、模转换电路.................................................. 3.4按键接口电路.................................................... 3.5时钟电路........................................................
3.6显示电路........................................................ 第四章软件设计......................................................
4.1程序流程图...................................................... 第五章总结与展望.................................................... 致谢............................................................... 参考文献............................................................. 附录1电路原理图序
..................................................... ......................................................... 第一章绪论 1.1单片机概述
随着大规模集成电路技术的发展,处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体积小、成本低,性能稳定、使用寿命长等特点。其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到
1.2信号发生器的分类
信号发生器应用广泛,种类繁多,性能各异,分类也不尽一致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。
1.3 研究内容
本文是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、锯齿波、矩形波、正弦波的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的
附附
录录
2 3
器源件
程清
单......................................................
程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。
第二章 方案的设计与选择 2.1 方案的比较
方案一:采用单片函数发生器(如8038),8038可同时产生正弦波、方波等,而且方法简单易行,用D/A 转换器的输出来改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。
方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO )的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。
方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。
鉴于方案一的信号频率不够稳定和方案二的电路复杂,频率覆盖系数难以达标等缺点,所以决定采用方案三的设计方法。它不仅采用软硬件结合,软件控制硬件的方法来实现,使得信号频率的稳定性和精度的准确性得以保证,而且它使用的几种元器件都是常用的元器件,容易得到,且价格便宜,使得硬件的开销达到最省。
2.2 设计原理
数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:处理器CPU 、随机存取存储器RAM 、只读存储器ROM 、I/O 接口电路、定时器/计数器以及串行通讯接口等,只要将C51再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图2.1所示。
图2.1 信号发生器原理框图
C51是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。
C51 单片机
接口 电路 D/A 转换器 滤波放大 输出 2.3 设计思想
(1)利用单片机产生方波、正弦波、三角波和锯齿波等信号波形,信号的频率和幅度可变。
(2)将一个周期的信号分离成256个点(按X 轴等分),每两点之间的时间间隔为?T ,用单片机的定时器产生,其表示式为:?T=T/256。 如果单片机的晶振为12MHz ,采用定时器方式0,则定时器的初值为: X=213—?T/T mec (2.1)
定时时间常数为:
TL =(8192—?T )/MOD256 (2.2) TH=(8192 T)/256 (2.3)
MOD32表示除32取余数
(3)正弦波的模拟信号是D/A 转换器的模拟量输出,其计算公式为:
Y=(A/2sin ?t )+A/2 (其中A=VREF) (2.4)
t=N ?T (N=1~256) (2.5)
那么对应着存放在计算机里的这一点的数据为:
(2.6) (4)一个周期被分离成256个点,对应的四种波形的256个数据
存放在以TA 2.4 设计功能
(1)本方案利用8155扩展8个式按键,6个LED 显示器。其中“S 0”号键代表方波输出,“S 1”号键代表正弦波输出,“S 2”号键代表三角波输出,“S3” 号键代表锯齿波输出。
(2)“S 4”号键为10Hz 的频率信号,“S 5”号键为100Hz 的频率信号,“S 6”号键为500Hz 的频率信号,“S 7”号键为1KHz 的频率信号,6个LED 显示器输出信号的频率值,选用共阳极LED 。
(3)利用两片DAC0832实现幅度可调的信号源,(其中一片用来调节幅度,
(sin 1)255 (255)/2
t Di Y A ?+?=?=
另外一片用来实现信号源的输出)。
(4)频率范围:10~1000Hz 。 (5)输出波形幅度为0~5V 第三章 硬件设计 3.1 硬件原理框图
硬件原理方框图如图3.1所示。 图3.1 硬件原理框 .2 主控电路
ATC51单处机内部设置两个16位可编程的定时器/计数器T0和T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。在波形发生器中,将其作定时器使用,用它来精确地确定波形的两个采样点输出之间的延迟时间。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU 请求中断。
中断系统是使处理器具有对外界异步事件的处理能力而设置的。当处理器CPU 正在处理某件事的时候外界发生了紧急事件,要求CPU 暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器/计数器溢出时产生的中断请求,即是在ATC51输出一个波形采样点信号后,接着启动定时器,在定时器未产生中断
之前,ATC51等待,直到定时器计时结束,产生中断请求,ATC51响应中断,接着输出下一个采样点信号,如此循环产生所需要的信号波形[6]。
如图3.2所示,ATC51从P0口接收来自键盘的信号,并通过P2口输出一些控制信号,将其输入到8155的信号控制端,用于控制其信号的输入、输出。如果有键按下,则在读控制端会产生一个读信号,使单片机读入信号。如果有信号输出,则在写控制端产生一个写信号,并将所要输出的信号通过8155的PB 口输出,并在数码管上显示出来。
单 片 机 键盘 电路 显示 电路
复位 电路 数/模转 换电路 放大 电路 波形 输出
图3.2 主控电路图 3.3 数/模转换电路
由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC0832主要由8位输入寄存器、8位DAC 寄存器、8位D/A 转换器以及输入控制电路四部分组成。但实际上,DAC0832输出的电量也不是真正能连续
可调,而是以其绝对分辨率为单位增减,是准模拟量的输出。DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。
由图3.3可知,DAC0832的片选地址为7FFFH ,当P25有效时,若P0口向其送的数据为00H , 则U1 的输出电压为0V ;若P0口向其送的数据为0FFH 时, 则U1的输出电压为-5V . 故当U1 输出电压为0V 时,由公式
得:V out = - 5V .当输出电压为- 5V 时,可得:V out = +5V ,所以输出波形的电压变化范围为- 5V ~+ 5V . 故可推得,当P0所送数据为80H 时,V out 为0V [4]。
图3.3 数模转换电路 3.4 按键接口电路 1230123U U U R R R ++ =
图3.4为键盘接口电路的原理图,图中键盘和8155的PA口相连,ATC51的P0口和8155的D0口相连,ATC51不断的扫描键盘,看是否有键按下,如有,则根据相应按键作出反应。其中“S0”号键代表方波输出,“S1”号键代表正弦波输出,“S2”号键代表三角波输出。“S3”号键代表锯齿波输出,“S4”号键为10Hz的频率信号,“S5”号键为100Hz的频率信号,“S6”号键为500Hz的频率信号,“S7”号键为1KHz的频率信号[3]。
图3.4按键接口 3.5 时钟电路
8051单片机有两个引脚(XTAL1,XTAL2)用于外接石英晶体和
微调电容,从而构成时钟电路,其电路图如图3.5所示。
电容C1、C2对振荡频率有稳定作用,其容量的选择为30pf,振荡器选择频率为12MHz的石英晶体。由于频率较大时,三角波、正弦波、锯齿波中每一点的延时时间为几微秒,故延时时间还要加上指令时间才能获得较大的频率波形[9]。
图3.5时钟电路 3.6 显示电路
显示电路是用来显示波形信号的频率,使得整个系统更加合理,从经济的角度出发,所以显示器件采用LED数码管显示器。而且LED数码管是采用共阳极接法,当主控端口输出一个低电平后,与其相对应的数码管即变亮,显示所需数据。其器件模型如图3.6所示。
图3.6LED显示电路 第四章软件设计 4.1 程序流程图
本文中子程序的调用是通过按键的选择来实现,在取得按键相应的键值后,启动计时器和相应的中断服务程序,再直接查询程序中预先设置的数据值,通过转换输出相应的电压,从而形成所需的各种波形。
主程序的流程图如图4.1所示,在程序开始运行之后,首先是对8155进行初始化,之后判断信号频率值,如符合所需的频率,则重置时间常数,并通过显示器显示出来,不符则返回。在中断结束后,还要来判断波形是否符合,如符合,则显示其频率,不符则返回,重新判断。
图4.1主程序流程图
图4.2为各波形子程序的流程图。如图所示,在中断服务子程序开始后,通过判断来确定各种波形的输出,当判断选择的不是方波后,则转向对正弦波的判断,如此反复。如果选择的是方波,则用查表的方法求出相应的数据,并通过D/A转换
器将数据转换成模拟信号,形成所需波形信号。 图4.2子程序流程图 12
综合实验总结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随
着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在好几个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在宋阳老师的辛勤指导下,终于游逆而解。同时,在宋阳老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助
的所有同学和各位指导老师再次表示忠心的感谢!
13 参考文献
[1] 程全.基于ATC52实现的多种波形发生器的设计[J].周口师范学院学报,
2005.22(5):57~58.
[2] 周明德.微型计算机系统原理及应用[M].北京:清华大学出版社,2002.341~3.
[3] 刘乐善.微型计算机接口技术及应用[M].北京:北京航空航天大学出版社,2001.258~2.
[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.
附录1 电路原理图
附录2 源程序 源程序: ORG 0000H AJM MAIN ORG 000BH
LJMP TC0 ORG 0030H
MAIN:MOV DPTR,#9FFFH 指向DAC0832(1) MOV A,70H
MOVX @DPTR,A DAC0832(1)输出
MOV DPTR,#7F00H 指向8155命令字端口地址MOV A,#06H 设置A口为输入,B口、C口为输出
MOVX @DPTR,A 送命令字 MOV DPTR,#7F01H 指向A口地址 MOVX A,@DPTR 读入A口的开关数据
JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号
JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号
JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号
JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号 AJMP MAIN
LED1:MOV R3,#06H 设置6个LED显示 MOV R2,#01H 选通第一位LED数据 MOV R1,#30H 送显示缓冲区首址 GN1:MOV DPTR,#7F03H 指向C口地址 MOV A,R2 位选通数据送A
MOVX @DPTR,A 位选通数据送C口 RL A 选通下一位
MOV R2,A 位选通数据送R2中保存MOV A,@R1 取键值 MOV DPTR,#TAB 送LED显示软件译码表首址MOVC A,@A+DPTR 查表求出键值显示的段码MOV DPTR,#7F02H 指向B口地址
MOV @DPTR,A 段码送显示
LCALL LOOP1 调延时子程序
INC R1 指向下一位显示缓冲区地址DJNZ R3,GN1 循环显示6个LED
RET
LOOP1:MOV R4,#08H 延时子程序 LOOP:MOV R5,#0A0H DJNZ R5,$ DJNZ R4,LOOP RET
K10H:MOV 30H,#00H 显示10Hz MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#01H MOV 35H,#00H LCALL LED1 调显示子程序 MOV TMOD,#00H MOV TL0,#15H MOV TH0,#9EH AJMP PD
K100H:MOV 30H,#00H 显示100Hz MOV 31H,#00H MOV 32H,#00H MOV 33H,#01H MOV 34H,#00H MOV 35H,#00H LCALL LED1 调显示子程序 MOV TMOD,#00H MOV TL0,#08H MOV TH0,#0F6H
AJMP PD
K500H:MOV 30H,#00H 显示500Hz MOV 31H,#00H MOV 32H,#00H MOV 33H,#05H MOV 34H,#00H MOV 35H,#00H LCALL LED1 调显示子程序 MOV TMOD,#00H MOV TL0,#01H MOV TH0,#0FEH AJMP PD
K1K:MOV 30H,#00H 显示1KHz MOV 31H,#00H MOV 32H,#01H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H LCALL LED1 调显示子程序 MOV TMOD,#00H MOV TL0,#01H MOV TH0,#0FFH
PD:JNB ACC.0,KE0 判断是否“0”号键按下,若是则转方波输出JNB ACC.1,KE1 判断是否“1”号键按下,若是则转正弦方波
输出
JNB ACC.2,KE2 判断是否“2”号键按下,若是则转三角波输出 JNB ACC.3,KE3 判断是否“3”号键按下,若是则转锯齿波输出 LJMP PD
KE0:MOV R7,#00H LCALL LED1 调显示子程序
MOV R6,#00H AJMP GN
KE1:MOV R7,#02H LCALL LED1 调显示子程序 MOV R6,#00H AJMP GN
KE2:MOV R7,#02H LCALL LED1 调显示子程序 MOV R6,#00H AJMP GN
KE3:MOV R7,#02H LCALL LED1 调显示子程序 MOV R6,#00H GN:SETB TR0 SETB ET0 SETB EA
LOP1:JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号
JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号
JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号 AJMP LOP1
TC0:CJNE R7,#00H,TC1 发送方波程序
MOV DPTR,#TAB1 送方波数据表首址MOV A,R6 发送数据寄存器MOVC A,@A+DPTR
MOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6
INC A MOV R6,A
CJNE A,#32,QL1 MOV R6,#00H AJMP QL1
TC1:CJNE R7,#01H,TC2 发送正弦波程序MOV DPTR,#TAB2 送正弦波数据表首址MOV A,R6
MOVC A,@A+DPTR
MOV DPTR,#0AFFFH 指向DAC0832(2)MOVX @DPTR,A DAC0832(2)输出MOV A,R6
INC A MOV R6,A CJNE A,#32,QL1 MOV R6,#00H AJMP QL1
TC2:CJNE R7,#02H,QL1 发送三角波程序MOV DPTR,#TAB3 送三角波数据表首址MOV A,R6
MOVC A,@A+DPTR
MOV DPTR,#0AFFFH 指向DAC0832(2)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务