基于C语言的单片机波形发生器.docx
- 文档编号:9162222
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:26
- 大小:351.08KB
基于C语言的单片机波形发生器.docx
《基于C语言的单片机波形发生器.docx》由会员分享,可在线阅读,更多相关《基于C语言的单片机波形发生器.docx(26页珍藏版)》请在冰豆网上搜索。
基于C语言的单片机波形发生器
摘要
系统是由单片机控制的波形发生器。
波形发生器作为一种测试设备正在大规模、超大规模集成电路芯片测试和数字系统设计中获得广泛的应用。
本设计的系统可以实现标准波形的发生功能、包括幅值、频率功能设定。
为了充分实现这些功能,还扩展了键盘输入功能,用于调节输出信号。
本系统对于波形的幅值和频率的调整主要由软件实现,首先用MAX038搭建一个波形发生电路,然后用单片机控制这个波形发生电路,且读入用户根据自己的需要由键盘所输入的数据,由软件实现波形的变化,由DAC083实现D/A转换。
该发生器输出有正弦波、三角波、方波三种信号波形,输出信号的频率在范围为1Hz~1KHz范围内通过程控的方法进行调节,最大幅值3V,输出波形稳定,失真度很小。
关键字:
单片机,波形发生器,max038
ABSTRACT
Thesystemisthewavegeneratorwhichcontrolsbythemonolithicintegratedcircuit.Thewavegeneratortookonekindoftestfacilitylarge-scale,theultralargescaleintegratedcircuitchiptestandinthedigitalsystemdesignobtainsthewidespreadapplication.Thisdesignsystemmayrealizethestandardwavepatternoccurrencefunction,includingthepeak-to-peakvalue,thefrequencyfunctionhypothesis.Inordertofullyrealizesthesefunctions,andexpandedthekeyboardentryfunction,usesintoadjusttheoutputsignal.
Thissystemmainlyrealizesregardingthewavepeak-to-peakvalueandthefrequencyadjustmentbysoftware,FirstusesMAX038tobuildaprofiletohavetheelectriccircuit,Thencontrolsthiswavewiththemonolithicintegratedcircuit,alsotheread-inuseraccordingtoownneedthedatawhichinputsbythekeyboard,bythesoftwarerealizationwavechange,realizestheD/AtransformationbyDAC0832.Thisgeneratoroutputhasthesinewave,thetrianglewave,thesquare-wavethreekindofwaveform,theoutputsignalfrequencyinthescopeisinthe1Hz~1KHzscope,greatestpeak-to-peakvalue3Vcarriesontheadjustmentthroughtheprogramcontrolmethod,theoutputisstable,thedegreeofdistortionisverysmall.
Keywords:
mcuwavegeneratormax038
目录
摘要I
ABSTRACTII
第1章绪论1
1.1课题背景及重要意义1
1.1.1课题的背景1
1.1.2课题的意义2
1.2课题设计的目的及目标3
第2章器件和使用原理4
2.1MAX038简介和使用说明4
2.2DAC0832简介和使用说明6
2.3AT89C51单片机简介8
第3章系统硬件设计11
3.1单片机与按键电路设计11
3.2MAX038外围电路设计12
3.3DAC0832外围电路设计14
第4章系统软件设计16
4.1软件设计概述16
4.2波形的选择17
4.3按键模块18
4.3.1按键的识别18
4.3.2按键消抖问题18
4.4单片机控制DAC0832模块19
第五章总结21
致谢22
参考文献23
附录A24
附录B25
第1章绪论
1.1课题背景及重要意义
1.1.1课题的背景
在电子测量仪器家族中,信号发生器即波形发生器是一种很重要的仪器,它是电子测试系统的重要部件,是决定电子测试系统性能的关键设备。
在70年代前,信号发生器主要有两大类:
正弦波发生器和脉冲波发生器。
正弦波发生器只是提供正弦波信号,通常使用的技术是一自由振荡器,工作频率即为输出频率,频率范围有限,一般从几HZ到约1MHZ。
脉冲波发生器可产生高质量的方波和脉冲串,其频率范围一般低至1HZ,高至1GHZ,它被用在数字系统中模拟或取代数字信号,如时钟,数据等。
介于两者之间的还有函数发生器,它提供正弦,余弦,方波,三角波,斜波等集中常用的特殊波形。
产生有别于上述波形时,必须采用较复杂的电路或机电结合的方法,甚至采用模拟计算机构成专用设备。
在70年代后,微处理器的出现,利用信号处理器,A/D和D/A以及软件使函数产生器的功能扩大,能够产生更复杂的波形。
衰减震荡波,随机脉冲波,指数形脉冲等。
当时的信号处理器是专门用于信号处理的微处理器,但时钟频率只有1~2MHZ,A/D和D/A一般在8位左右,内部存储器约2K,因此能够产生的正弦波的等效频宽不会超过1MHZ,要获得比较平滑和失真度低的波形,重复频率不能超过10KHZ,当时用模拟方式产生特殊波形,重复频率可以达到1—10MHZ,波形完整性好,用数字电路的函数发生器尚处于并发阶段,正式产品还不多。
80年代情况有很大变化,随着现代信息事业的发展,测试对象不断丰富,现代通信系统和电子系统对测试系统提出了越来越高的要求,进而对信号发生器也提出了更高的要求,需要模拟工作现场的情况来对产品进行测试。
而工作现场的信号往往是多种多样的,传统的模拟信号发生器显然是不能满足客观的需要的,这时就需要一种能产生用户定义的波形的仪器。
近年来,一种新的电子测量仪器—任意波形发生器出现了,它可视为函数发生器的换代产品。
任意波形发生器的功能远比函数发生器强,在前面讨论的难于产生的或不能产生的波形,都可以使用任意波形发生器。
自然它也可以用来产生前面讨论的波形(方波,三角波,脉冲波),但实际中还利用发生器来模拟更复杂的信号,甚至信号中的缺陷(如方波中的过冲和数字信号中的尖脉冲)都可通过控制来模拟,再者,任意波形发生器还可产生瞬变信号如阻尼正弦波等,它对存在的公众波形都可以模拟,只要可用数字形式存储,并送进波形存储器的波形都可以把他们模拟出来。
早期的信号源主要是基于模拟电路来实现,而智能波形发生器是以数字电路和计算机技术为基础的产品,因此可使它成为此时系统通用的好性能,多功能的激励源,因而将有很广阔的发展前景。
1.1.2课题的意义
[1]波形发生器是一种常用的信号源,在自动控制系统设计、调试和电子实验过程中,经常会遇到需要不同频率的正弦波、矩形波、三角波等信号作为信号源。
目前国内生产的波形发生器大部分是利用分立元件组成的,然后根据具体的需要加入积分电路等构成正弦、矩形、三角等波形发生器。
这种波形发生器输出频率范围窄且电路设计参数设定比较繁琐,其频率的大小的测量往往需要通过硬件电路的切换来实现不同濒率范围值的测量,电路设计复杂、操作不便。
且体积大,可靠性、准确性都比较差,不能满足科研、生产的要求。
随着大规模集成电路和弹片机的迅速发展,提供了仪器更新换代的可能性。
近来利用大规模集成电路MAX038组成的波形发生器进行一系列调试和实地测试,结果表明,其完全可以替代以往的模拟电路。
利用MAX038芯片和外接少量的元器件,能制成质量技术指标先进,结构轻巧,价格低廉,用途广泛的波形发生器。
它既可以用坐一般低频放大器频响测试,失真分析、电路瞬态响应测试、线性分析,也可以做成各种信号源。
在上述的基础上,如利用单片机进行控制,那么仪器的功能和准确度将有一个飞跃,即成为多功能智能波形发生器,该仪器电路结构简单,虽然功能及性能指标赶不上标准信号发生器,但满足一般的实验要求是不成问题的,并且其成本低、体积小,更容易被大家接受,而且还可作为电子产品维修人员的重要随身设备之一。
且能程控,利用单片机的运算和存储功能,可以编制一系列以提高准确度,增强功能的软件,这对波形发生器准确度的提高、体积的缩小和功能的加强有着重大的影响。
1.2课题设计的目的及目标
该设计电路适用于电专业基础课和技术基础课所涉及到的有关实验,还可用于科研、技术开发等工作。
在整个系统设计中,电流到电压的转化是系统需要解决的核心问题,因为DAC0832输出的是2路电流信号,而对应的MAX038输入信号是电压信号。
波形发生器电路包含3个部分的设计:
一、是如何通过单片机和外围信号发生芯片的组合完成波形发生功能的。
二、是如何设计外围电路和单片机的接口电路的。
三、是如何编写控制MAX038器件进行波形发生的单片机程序。
因此,系统可分为3个功能模块:
一、单片机系统:
控制外围的MAX038器件,完成功能函数信号的输出。
二、外围电路:
实现外围的MAX038芯片和单片机之间的接口电路。
三、C51程序:
编写单片机控制MAX038的接口程序,实现单片机的函数信号输出功能。
第2章器件和使用原理
2.1MAX038简介和使用说明
[2]MAX038是美国MAXIM公司推出的新一代单片函数信号发生器。
MAX038内部含有精密带隙电压参考、鉴相器和TTL同步输出,能以最少的外部元件构成一台多波形的高频函数信号发生器,也可以单独用作电压控制振荡器、频率调制器、脉宽调制器、锁相环、频率合成器及FSK信号发生器,是较为理想的信号产生集成芯片。
MAX038具有下列重要技术特点:
工作频率范围:
0.1HZ—20MHZ;
频率扫描范围:
375:
1;
输出电阻:
0.1欧姆;
非线形失真:
小于0.75%;
输出波形:
正弦波,方波、三角波等,占空比可调;
表2—1MAX038引脚功能
引脚
名称
作用
1
RFF
2.5V参考电压输出
2,6,9
11,18
GND
地
3
A0
输入选择波形
4
A1
输入选择波形
5
COSC
连接外部电平
7
DADJ
输入,调节占空比
8
FADJ
输入,调节频率
10
IIN
输入,控制频率的电流
12
PD0
监相器输出。
如果不用将其接到地
13
PD1
监相器输出。
如果不用将其接到地
14
SYNC
TTL/CMOS电平兼容输出,允许内部晶振与外部信号同步,如果不用让其开路。
15
DGND
数字地
16
DV+
数字+5V输入,如果不用SYNC可以让其开路
17
V+
+5V电平输入
19
OUT
正弦波,方波、三角波输出
20
V—
-5V输入
表2—2MAX038波形选择
A0
A1
波形
X
1
正弦波
0
0
方波
1
0
三角波
[3]MAX038的核心部分是一个电流的基本振荡器。
由恒定电流对外部电容CF充电和放电,获得三角波和方波信号的输出。
控制电流由外部信号VFADJ、VDADJ和IIN决定。
电路的振荡频率为:
f=f0(1—0.2915VFADJ)=IIN(1—0.2915VFADJ)/CF
波形的占空比为:
ι/T=0.5—0.174VDADJ。
VFADJ=0V时,IIN可设为2-750uA,对应中心频率为350:
1的变化范围,当VFADJ=2.4V时,调制频偏为±70%。
VDADJ控制外部电容CF充,放电电流的比值,当VDADJ=0V时,波形的占空比为50%;当VDADJ=2.3V时,占空比为10%~90%。
在FADJ和DADJ端口的内部,设置了250uA的下拉电流源,可简化外部电路设计,仅用电阻RF和R0就可以对频偏和占空比进行调整。
IIN端口由内部的运放强制为虚地,故仅用电阻Rin就能调整输入电流Iin,实现中心频率的调节。
2.5V的参考电压源主要用于提供IIN电流和VFDJA,VDADJ电压,其温度系数典型值为20ppm/℃,负载电流小于4MA。
基本振荡器输出的三角波分为三路。
一路直接送至多路模拟开关;一路由正弦波形成网络修整为正弦波;最后一路由比较器形成TTL电平信号。
基本振荡器还产生一对内部差动矩形波信号经差动比较器形成双极性矩形波信号。
当三选一多路开关的地址端(A0,A1)为(0,l},(0,0)或(1,0)时,分别选择正弦波、方波或三角波输出。
三种波形经过缓冲放大器放大后,幅度均为±1V,最大输出电流为20mA。
内部设置的鉴相器为锁相环备用单元,为异或门电路结构,输人信号一路来自内部差动矩形波,另一路来自外部端口PDI。
鉴相器输出信号为电流,由PDO端口引出,平均值变化范围为0—500uA。
当两路输入信号的相位差为90度时,输出电流的占空比为50%,平均值为250毫安。
如果构成锁相环路,则PDO与FADJ相连,并且对地连接一个电阻RPD,同时并联一个电容CPDORpD。
决定鉴相器的灵敏度,CPd。
则滤除输出电流中的高频成分。
当环路锁定时,鉴相器输出的250uA电流全部流人FADJ内的下拉电流源,此时VFADJ=OV。
以MAX038为核心的函数信号发生器结构简单,不需调整,具有很高的性能价格比,体积也可以做得很小。
和分离元件的信号发生器相比,优点是显著的,但MAX038也存在两个主要的缺点:
(1)频率漂移较大,特别是刚开机的数10s内,漂移可达1%.频率漂移并非由于FADJ端口的下拉电流源温度系数引起,因为将FADJ端口对地短路,漂移依然存在。
估计是振荡器的翻转门坎电压或控制电流发生器的温度系数引起,不易从外部进行校正。
(2)正弦波失真较大。
MAX038的正弦波产生原理和ICL8038相同,由三角波修整而来,其三角波上下峰值处的尖角在修整后依然存在,与文氏电桥选频方式振荡器产生的正弦波相比,主观感觉相差较大。
此外,MAX038的正弦波上下半波不对称,上尖下圆,不同批号的产品均如此,估计是正弦波形成网络中运放的失调电压引起。
尽管如此,MAX038作为一个多功能的高速器件.仍具有广泛的用途。
随着应用面的扩大,价格也会逐渐下降。
2.2DAC0832简介和使用说明
DAC0832是8位分辨率D/A转换集成芯片,与处理器完全兼容,其价格低廉,接口简单,转换控制容易等优点,在单片机应用系统中得到了广泛的应用。
其中DAC0832芯片为电流输出方式的转换芯片。
所以它的输出必须接有实现从电流到电压的转换的运放电路。
图2-1DAC0832管脚图
表2-3管脚功能说明
管脚名
功能
ILE
数据允许信号,高电平有效。
-CS
输入寄存器选择信号,低电平有效。
VREF
参考电压输入
-WR1
输入寄存器写选通信号,低电平有效。
-WR2
DAC寄存器写选通信号,低电平有效。
-XFER
数据传送信号,低电平有效。
D0-D7
数据输入
IOUT1,IOUT2
电流输出线
AGND
模拟信号地
DGND
数字信号地
RFB
反馈信号输入
操作方法:
当-XFER为低电平,-WR2输入负脉冲时,则在-LE2产生正脉冲;-LE2为高电平时,DAC寄存器的输入与输出寄存器状态一致,-LE2的负跳变,输入寄存器内容存入DAC寄存器。
DAC0832的输出是电流型的。
在控制系统中,通常需要电压信号,电流信号可以通过运算放大器转换为电压信号。
根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0832有如下三种工作方式:
(1)单缓冲方式
此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。
方法是控制输入寄存器同时接收数据,或者只用输入寄存器而把DAC寄存器接成直通方式。
(2)双缓冲方式
此方式适用于多个DAC0832同时输出的情形。
方法是先分别使这些DAC0832的输入寄存器接收数据,再控制这些DAC0832同时传送数据到DAC寄存器以实现多个D/A转换同步输出。
〔3〕直通方式
此方式适用于连续反馈控制线路中。
方法是:
数据不通过缓冲器,即-WR1,-WR2,-XFER,-CS均接地,ILE接高电平。
此时必须通过I/O接口与微处理器连接,以匹配微处理器与D/A的转换。
2.3AT89C51单片机简介
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置用8位中央处理器和Flash存储单元,功能强大的AT89C51单片机可以提供许多高性价比的应用场合,可灵活应用各种控制领域。
其引脚如下图。
图2-2AT89C51单片机引脚
主要性能参数:
1)与MCS-51产品指令系统完全兼容
2)4k字节可反复擦写Flash闪速存储器
3)1000次擦写周期
4)全静态操作:
0Hz~24Hz
5)三级加密程序存储器
6)128×8字节内部RAM
7)32个可编程I/O口线
8)2个16位定时、计数器
9)6个中断源
10)低功耗空闲和掉电模式
引脚功能:
VCC:
供电电压
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
第3章系统硬件设计
3.1单片机与按键电路设计
这里用到的是4x3矩阵式键盘,也就是行列式键盘。
在键盘中按键数量较多时,为了减少I/O口的占用,通常使用这种键盘。
行列式键盘上的键实际上就是一个机械开关,该开关位于行线和列线的交点处,当键按下时,其交点的行线和列线接通,相应行线或列线上的点平就发生变化,从而确定被按下的功能键。
图中从左到右为1,2,3键,依此类推。
1,2,3键分别为方波,三角波,正弦波的波形选择键;4,5键分别为频率增加和减少键;6键为复位键,返回中心频率。
图3-1按键电路
一个4x3的物理键盘阵列。
键盘中共有12个键。
每个键都给予编号,键号按从上到下,从左到右的规律,分别为0,1,2,……,11。
在应用系统中,键盘上的按键可按需要定义其按键的功能。
在不需要外接并行扩展芯片的情况下,代表各个行的4根引出线分别和CPU的通用I/O端口P1的4个引脚连接(这4个引脚是单向输入,芯片内无上拉电阻需外加上拉电阻)。
代表各个列的4根线分别和P2的4个引脚连接。
距阵式键盘工作时首先确定有无按键按下,其次确定键值、键码。
矩阵式结构的键盘比直接法要复杂一些,识别也要更复杂一些。
列线通过电阻接正电源,并将行线所接的单片机I/O口作为输出端,而列线所接的I/O口则作为输入。
当按键没有按下时,所有的输出端都是高点平,代表无键按下。
行线输出是低电平,一旦有键按下时,则输入线就会被拉低,这样,通过读人输入线的状态就可知道是否有键按下了。
3.2MAX038外围电路设计
在一般的使用中,MAX038可以单独承担波形输出的功能,通过外部的电阻和电容的调节,完成特定频率和幅值的波形输出。
如图所示为一典型的波形输出电路。
图3-2MAX038外围电路
由单片机89C51和MAX038构成的波形发生器主要包括波形选择、占空比调整、频率调整和放大电路。
MAX038是波形产生的核心元件,根据芯片的工作原理外接一些器件,即可产生从0.1Hz-20Hz的低失真正弦波、三角波、方波。
波形选择由两个输入引脚的逻辑电平设定,输入引脚A0,A1,当A0=0,A1=0时输出方波;当A0=0或1,A1=1时输出为正弦波;A0=1,A1=0时输出为三角波。
通过调整频率粗调电路中的电位器,改变MAX038输出端IIN的电流大小,从而改变频率值。
调整频率细调电位器可以得到所需要的波形频率值。
调整占空比调节电路中的电位器,改变MAX038输入端DADJ的电压大小,从而改变占空比。
占空比从15%-85%可调,且对频率影响甚小。
MAX038输出的信号电压幅值2V,通过放大电路将MAX038输出的信号放大,调整幅度调节电位器,从而得到电压幅值连续可调的输出波形,其输出电压幅值范围为2-18V,可单独调节。
在本系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 语言 单片机 波形 发生器