您的当前位置:首页正文

基于C语言的单片机波形发生器

2024-03-28 来源:易榕旅网
浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

摘 要

系统是由单片机控制的波形发生器。波形发生器作为一种测试设备正在大规模、超大规模集成电路芯片测试和数字系统设计中获得广泛的应用。本设计的系统可以实现标准波形的发生功能、包括幅值、频率功能设定。为了充分实现这些功能,还扩展了键盘输入功能,用于调节输出信号。

本系统对于波形的幅值和频率的调整主要由软件实现,首先用MAX038搭建一个波形发生电路,然后用单片机控制这个波形发生电路,且读入用户根据自己的需要由键盘所输入的数据,由软件实现波形的变化,由DAC083实现D/A转换。该发生器输出有正弦波、三角波、方波三种信号波形,输出信号的频率在范围为1Hz~1KHz范围内通过程控的方法进行调节,最大幅值3V,输出波形稳定,失真度很小。

关键字:单片机,波形发生器,max038

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 I 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

ABSTRACT

The system is the wave generator which controls by the monolithic integrated circuit. The wave generator took one kind of test facility large-scale, the ultra large scale integrated circuit chip test and in the digital system design obtains the widespread application. This design system may realize the standard wave pattern occurrence function, including the peak-to-peak value, the frequency function hypothesis. In order to fully realizes these functions, and expanded the keyboard entry function, uses in to adjust the output signal.

This system mainly realizes regarding the wave peak-to-peak value and the frequency adjustment by software, First uses MAX038 to build a profile to have the electric circuit, Then controls this wave with the monolithic integrated circuit, also the read-in user according to own need the data which inputs by the keyboard, by the software realization wave change, realizes the D/A transformation by DAC0832. This generator output has the sine wave, the triangle wave, the square-wave three kind of waveform, the output signal frequency in the scope is in the 1Hz~1KHz scope, greatest peak-to-peak value 3V carries on the adjustment through the program control method, the output is stable, the degree of distortion is very small.

Key words: mcu wave generator max038

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 II 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

目录

摘 要 ......................................................................... I ABSTRACT ..................................................................... II 第1章 绪论 .................................................................. 1

1.1 课题背景及重要意义 ......................................................... 1 1.1.1 课题的背景 ............................................................. 1 1.1.2 课题的意义 ............................................................. 2 1.2 课题设计的目的及目标 ....................................................... 3

第2章 器件和使用原理 ....................................................... 4

2.1 MAX038简介和使用说明 ...................................................... 4 2.2 DAC0832简介和使用说明 ..................................................... 6 2.3 AT89C51单片机简介 ........................................................ 8

第3章 系统硬件设计 ........................................................ 11

3.1 单片机与按键电路设计 ...................................................... 11 3.2 MAX038外围电路设计 ....................................................... 12 3.3 DAC0832外围电路设计 ...................................................... 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 附录A ....................................................................... 24 附录B ....................................................................... 25

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 III 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

第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年代情况有很大变化,随着现代信息事业的发展,测试对象不断丰富,现代通信系统和电子系统对测试系统提出了越来越高的要求,进而对信号发生器也提出了更高的要求,需要模拟工作现场的情况来对产品进行测试。而工作现场的信号往往是多种多样的,传统的模拟信号发生器显然是不能满足客观的需要的,这时就需要一种能产生用户定义的波形的仪器。

近年来,一种新的电子测量仪器—任意波形发生器出现了,它可视为函数发

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 1 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

生器的换代产品。任意波形发生器的功能远比函数发生器强,在前面讨论的难于产生的或不能产生的波形,都可以使用任意波形发生器。自然它也可以用来产生前面讨论的波形(方波,三角波,脉冲波),但实际中还利用发生器来模拟更复杂的信号,甚至信号中的缺陷(如方波中的过冲和数字信号中的尖脉冲)都可通过控制来模拟,再者,任意波形发生器还可产生瞬变信号如阻尼正弦波等,它对存在的公众波形都可以模拟,只要可用数字形式存储,并送进波形存储器的波形都可以把他们模拟出来。

早期的信号源主要是基于模拟电路来实现,而智能波形发生器是以数字电路和计算机技术为基础的产品,因此可使它成为此时系统通用的好性能,多功能的激励源,因而将有很广阔的发展前景。

1.1.2 课题的意义

[1]波形发生器是一种常用的信号源,在自动控制系统设计、调试和电子实验过程中,经常会遇到需要不同频率的正弦波、矩形波、三角波等信号作为信号源。目前国内生产的波形发生器大部分是利用分立元件组成的,然后根据具体的需要加入积分电路等构成正弦、矩形、三角等波形发生器。这种波形发生器输出频率范围窄且电路设计参数设定比较繁琐,其频率的大小的测量往往需要通过硬件电路的切换来实现不同濒率范围值的测量,电路设计复杂、操作不便。且体积大,可靠性、准确性都比较差,不能满足科研、生产的要求。随着大规模集成电路和弹片机的迅速发展,提供了仪器更新换代的可能性。近来利用大规模集成电路MAX038组成的波形发生器进行一系列调试和实地测试,结果表明,其完全可以替代以往的模拟电路。

利用MAX038芯片和外接少量的元器件,能制成质量技术指标先进,结构轻巧,价格低廉,用途广泛的波形发生器。它既可以用坐一般低频放大器频响测试,失真分析、电路瞬态响应测试、线性分析,也可以做成各种信号源。

在上述的基础上,如利用单片机进行控制,那么仪器的功能和准确度将有一个飞跃,即成为多功能智能波形发生器,该仪器电路结构简单,虽然功能及性能指标赶不上标准信号发生器,但满足一般的实验要求是不成问题的,并且其成本低、体积小,更容易被大家接受,而且还可作为电子产品维修人员的重要随身设备之一。且能程控,利用单片机的运算和存储功能,可以编制一系列以提高准确度,

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 2 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

增强功能的软件,这对波形发生器准确度的提高、体积的缩小和功能的加强有着重大的影响。

1.2 课题设计的目的及目标

该设计电路适用于电专业基础课和技术基础课所涉及到的有关实验,还可用于科研、技术开发等工作。

在整个系统设计中,电流到电压的转化是系统需要解决的核心问题,因为DAC0832输出的是2路电流信号,而对应的MAX038输入信号是电压信号。波形发生器电路包含3个部分的设计:

一、 是如何通过单片机和外围信号发生芯片的组合完成波形发生功能的。 二、 是如何设计外围电路和单片机的接口电路的。

三、 是如何编写控制MAX038器件进行波形发生的单片机程序。 因此,系统可分为3个功能模块:

一、 单片机系统:控制外围的MAX038器件,完成功能函数信号的输出。 二、 外围电路:实现外围的MAX038芯片和单片机之间的接口电路。 三、 C51程序:编写单片机控制MAX038的接口程序,实现单片机的函数信号输出功能。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 3 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

第2章 器件和使用原理

2.1 MAX038简介和使用说明

[2] MAX038是美国MAXIM公司推出的新一代单片函数信号发生器。MAX038内部含有精密带隙电压参考、鉴相器和TTL同步输出,能以最少的外部元件构成一台多波形的高频函数信号发生器,也可以单独用作电压控制振荡器、频率调制器、脉宽调制器、锁相环、频率合成器及FSK信号发生器,是较为理想的信号产生集成芯片。

MAX038具有下列重要技术特点: 工作频率范围:0.1HZ—20MHZ; 频率扫描范围:375:1; 输出电阻:0.1欧姆; 非线形失真:小于0.75%;

输出波形:正弦波,方波、三角波等,占空比可调;

表2—1 MAX038引脚功能 引 脚 1 2,6,9 11,18 3 4 5 7 8 10 12 13 14 A0 A1 COSC DADJ FADJ IIN PD0 PD1 SYNC 输入选择波形 输入选择波形 连接外部电平 输入,调节占空比 输入,调节频率 输入,控制频率的电流 监相器输出。如果不用将其接到地 监相器输出。如果不用将其接到地 TTL/CMOS电平兼容输出,允许内部晶振与外部名 称 RFF GND 2.5V参考电压输出 地 作 用 班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 4 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

信号同步,如果不用让其开路。 15 16 17 19 20 DGND DV+ V+ OUT V— 数字地 数字+5V输入,如果不用SYNC可以让其开路 +5V电平输入 正弦波,方波、三角波输出 -5V输入

表2—2 MAX038波形选择 A0 X 0 1

[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)时,分别选择正弦波、方波或三

A1 1 0 0 波形 正弦波 方波 三角波 班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 5 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

角波输出。三种波形经过缓冲放大器放大后,幅度均为±1V,最大输出电流为20mA。内部设置的鉴相器为锁相环备用单元,为异或门电路结构,输人信号一路来自内部差动矩形波,另一路来自外部端口PDI。鉴相器输出信号为电流,由PDO端口引出,平均值变化范围为0—500uA。当两路输入信号的相位差为90度时,输出电流的占空比为50%,平均值为250毫安。如果构成锁相环路,则PDO与FADJ相连,并且对地连接一个电阻RPD,同时并联一个电容CPDO RpD。决定鉴相器的灵敏度,CPd。则滤除输出电流中的高频成分。当环路锁定时,鉴相器输出的250uA电流全部流人FADJ内的下拉电流源,此时VFADJ= OV。

以MAX038为核心的函数信号发生器结构简单,不需调整,具有很高的性能价格比,体积也可以做得很小。和分离元件的信号发生器相比,优点是显著的,但MAX038也存在两个主要的缺点:

(1)频率漂移较大,特别是刚开机的数10s内,漂移可达1%.频率漂移并非由于FADJ端口的下拉电流源温度系数引起,因为将FADJ端口对地短路,漂移依然存在。估计是振荡器的翻转门坎电压或控制电流发生器的温度系数引起,不易从外部进行校正。

(2)正弦波失真较大。

MAX038的正弦波产生原理和ICL8038相同,由三角波修整而来,其三角波上下峰值处的尖角在修整后依然存在,与文氏电桥选频方式振荡器产生的正弦波相比,主观感觉相差较大。此外,MAX038的正弦波上下半波不对称,上尖下圆,不同批号的产品均如此,估计是正弦波形成网络中运放的失调电压引起。 尽管如此,MAX038作为一个多功能的高速器件.仍具有广泛的用途。随着应用面的扩大,价格也会逐渐下降。

2.2 DAC0832简介和使用说明

DAC0832是8位分辨率D/A转换集成芯片,与处理器完全兼容,其价格低廉,接口简单,转换控制容易等优点,在单片机应用系统中得到了广泛的应用。

其中DAC0832芯片为电流输出方式的转换芯片。所以它的输出必须接有实现从电流到电压的转换的运放电路。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 6 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

CSWR1AGNDDI3DI2DI1DI0VREFRfbDGNDDAC0832VCCILEWR2XFERDI4DI5DI6DI7 MSBIOUT2IOUT1

图2-1 DAC0832 管脚图

表2-3 管脚功能说明 管脚名 ILE -CS VREF -WR1 -WR2 -XFER D0-D7 IOUT1,IOUT2 AGND DGND RFB 操作方法:

当-XFER为低电平,-WR2输入负脉冲时,则在-LE2产生正脉冲;-LE2为高电平时,DAC寄存器的输入与输出寄存器状态一致,-LE2的负跳变,输入寄存器内容存入DAC寄存器。

DAC0832的输出是电流型的。在控制系统中,通常需要电压信号,电流信号可以通过运算放大器转换为电压信号。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 7 页 共 31 页

图22-1功能 数据允许信号,高电平有效。 输入寄存器选择信号,低电平有效。 参考电压输入 输入寄存器写选通信号,低电平有效。 DAC寄存器写选通信号,低电平有效。 数据传送信号,低电平有效。 数据输入 电流输出线 模拟信号地 数字信号地 反馈信号输入 浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0832有如下三种工作方式: (1)单缓冲方式

此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。方法是控制输入寄存器同时接收数据,或者只用输入寄存器而把DAC寄存器接成直通方式。 (2)双缓冲方式

此方式适用于多个DAC0832同时输出的情形。方法是先分别使这些DAC0832的输入寄存器接收数据,再控制这些DAC0832同时传送数据到DAC寄存器以实现多个D/A转换同步输出。 〔3〕直通方式

此方式适用于连续反馈控制线路中。方法是:数据不通过缓冲器,即-WR1,-WR2, -XFER, -CS均接地,ILE接高电平。此时必须通过I/O接口与微处理器连接,以匹配微处理器与D/A的转换。

2.3 AT89C51单片机简介

AT89C51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置用8位中央处理器和Flash存储单元,功能强大的AT89C51单片机可以提供许多高性价比的应用场合,可灵活应用各种控制领域。其引脚如下图。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 8 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

图2-2 AT89C51单片机引脚

主要性能参数:

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编程和

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 9 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

校验时,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:来自反向振荡器的输出。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 10 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

第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口则作为输入。当按键没有按下时,所有的输出端都是高点平,代表无键按下。行线输出是低电平,一旦有键按下时,则输入线就会被拉低,这样,通过读人输入线

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 11 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

的状态就可知道是否有键按下了。

3.2 MAX038外围电路设计

在一般的使用中,MAX038可以单独承担波形输出的功能,通过外部的电阻和电容的调节,完成特定频率和幅值的波形输出。如图所示为一典型的波形输出电路。

图3-2 MAX038外围电路

由单片机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,可单独调节。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 12 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

在本系统中可以用程序控制频率和波形的输出,对A0、A1的控制是通过单片机的P2.1、P2.2引脚实现的,可以通过4X4的行列键盘输入,单片机判断键码并相应的输出P2.1、P2.2的逻辑电平,控制MAX038输出对应的波形。

图 3-3 MAX038外围电路

在控制频率输出方面,频率的调节是在中心频率左右调节,中心频率的具体频率值是有R6,C2根据f=f0(1—0.2915VFADJ)=IIN(1—0.2915VFADJ)/CF来设定的,其调节范围为MAX038的频率输出范围,为了便于应用中的调节,一般中心设为调节频率范围的中间值,输出频率的步频大小可以通过R5来调节。接下去就是细调,用软件来调节具体需要输出的频率。

在控制幅值方面,MAX038输出波形的幅值均为2V,不符合课题要求,示波器检测也不明显。这里就用个放大器且以电位器为反馈电阻,以调节电位器来改变MAX038输出波形的幅值。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 13 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

3.3 DAC0832外围电路设计

系统中DAC0832的工作方式是单缓冲方式, DAC锁存器呈直通状态,只需

将XFER 和WR2 引脚直接接地,ILE端接+VCC,片选信号CS地址选择线相连,WR1接单片机的写信号。

DAC0832输出为电流形式,为了得到电压输出,需要在输出端接上运算放大器。

LM324是四运放集成电路,它采用14脚双列直插塑料封装,外形如图所示。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放,输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。

图3-4 LM324的引脚排列图

由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中

Rfb即为运算放大器的负反馈电阻端,由于V=5V,所以运算放大器输出电压为负电压(0-5V)。通过运算放大器LM324进行转换,可以实现单极性和双极性输出,通过总线方式和单片机相连。由于输出要经运算放大器转换成电压信号,对运算放大器的动态范围要保证在—5V—+5V,要求运算放大器的电源V+=12v,V-=—12V,电路如图所示,图中两个电流输出端的电位应尽可能的靠近地电位,一保证输出电流的线性度。

DAC0832输出为电流输出,要把信号输给MAX038必须把电流转换为电压,第一级LM324作用就是把电流转换为电压。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 14 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

图3-5 DAC0832外围电路

第二级LM324的作用就是使电路产生双极性,第二级LM324电压输出Vout=Vref(DIGITALCODE-128)/128,且f=f0(1—0.2915VFADJ)=IIN(1—0.2915VFADJ)/CF,Vout =VFADJ,1LSB=|Vref|/128,从公式可以简单的看出Vout必须具有双极性。其中有信号返回DAC0832改变其基准电压,这样就可以是F在中心频率上下调节改变符合课题的要求。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 15 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

第4章 系统软件设计

4.1 软件设计概述

波形发生器的波形由MAX038产生,所以单片机的控制程序比较简单,只要根据键盘输入调节输出。整个软件系统包括控制按键程序、控制D/A程序,控制MAX038程序。编写程序的流程图如下:

初始化 Y 波形选择 启动D/A N 有键按下 延时10ms N 确有键按下

N

延时0.2s 返回 释放按键 增加计数 启动D/A 是增量键 减少计数 图4-1 软件设计流程图 班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 16 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

4.2 波形的选择

单片机控制MAX038是通过用户键盘输入,选择希望MAX038输出的信号

波形。本系统中,对用户输入的功能键对应的波形如下规定:

1:得到的输出波形为正弦波。 2:得到的输出波形为方波。 3:得到的输出波形为三角波。

利用单片机控制MAX038实现波形输出的程序流程图如图所示

开始 函数定义 Kbscan() Y 输入键码=1 输出正弦波 Y 输入键码=2 输出方波 Y Y 输入键码=3 输出三角波 返回 图 4-2按键波形选择程序流程图

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 17 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

4.3按键模块

4.3.1按键的识别

常用的键盘识别方法有行扫描法,线翻转法和利用8279键盘接口的中断法。前两种方法需要反复查询按键的状态,会占用很大量的CPU时间,后一种方法平时不需要占用CPU时间。而本波形发生器系统键盘识别所占用的CPU时间不会对系统的正常工作造成影响。因此可以直接利用单片机并行接口完成键盘的接口,采用行扫描法。其按键识别的过程如下:将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线为高电平,则表示键盘中无键按下。

判断闭合键所在的位置。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其线为高电平。在确定某根行线位置为低电平后,在逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。

4.3.2按键消抖问题

目前无论是按键还是键盘大部分都是利用机械触点的合、断作用。机械触点由于弹性作用的影响,在闭合及断开瞬间均有抖动现象,从而使电压信号也出现抖动,抖动时间长短与开关的机械特性有关,一般为5-10ms。按键的稳定闭合时间,由操作人员的按键动作决定,一般为十分之几秒至几秒时间。为了保证CPU对键的一次闭合仅作一次键输入处理,必须消除抖动现象。

通常消抖的方法有硬件和软件两种。在硬件上采取在键的输出端加R-S触发器或单稳态电路构成消抖电路。

在软件上采取的措施是在检测到有键按下时,执行一个10ms左右的延时程序,再确定该键是否保持闭合状态,若仍保持闭合状态,则确认该键处于闭合状态,从而消除了抖动影响。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 18 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

消抖算法的状态机迁变过程如图所示,首先键盘扫描程序检测有无按键按下,若有键按下,则保存键值,间隔20ms再次调用键盘扫描程序,比较当前检测的键值与前次的键值是否相同,若有不同,则存储键值,并等待按键弹起,然后上报键值,并进入下轮检测机制。此状态机在主程序中,周而复始地执行。

键盘识别 N 有键按下 Y 去抖动 确定按键物理位置 计算键值 等待键释放 返回

图4-3 键盘识别流程框图

4.4单片机控制DAC0832模块

本系统使用的是单缓冲器接口电路,当地址线选通DAC0832,只要输出写

控制信号,DAC0832就能一步完成数字量的输入锁存和D/A的转换。单缓冲器方式控制程序如下:

#include #includ #includ

#includ data_OUT XBYTE[0x7FFF] //定义地址

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 19 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

//函数名称:delay //入口参数:N

//函数功能:延时子程序

//系统采用11.0592的时钟时,延时满足要求,其他情况需要改动 Void delay(unsigned int N) {

int i ;

for(i=0;i//函数名称:conversion_once_0832 //入口函数:out_data 8位数据 //函数功能:完成一次转换

Void conversion_once_0832(unsigned char out_data ) {

data_OUT=out_data;//输出数据 delay(10); //延时等待转换 }

//函数名称:main

//函数功能:完成满值点验证、零值点验证

Void main() {

Unsigned char I ;

Conversion_once_0832(0xFF); //满值点验证 Conversion_once_0832(0); //零值点验证 For(i=0;i<255;i++); {

Conversion_once_0832(i); }

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 20 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

第五章总结

通过此次设计,让我感到了AT89C51单片机的方便性和灵活性,通过对AT89C51单片机的使用,可以使编程技能快速提高,并且认识到很多新的算法和设计思想。AT89C51单片机是整个波形发生器的核心部分,它从程序存储器读取程序,控制各个器件。使系统 1)

能产生正弦波、方波、三角波、锯齿波几种周期性波形,并且

可通过调节变形成其它相关波形。

2) 输出波形的频率范围为1Hz~1kHz;可以通过max038外围粗调频率,通过单片机控制DAC0832可进一步调节频率。

MAX038较早期的函数信号发生器在性能上有了很大的提高,其主要优点有:波形失真更小;所需外围器件更少;输出频率更高;所需工作电压更低,不用在专门提供一路电源。用MAX038设计的波形发生器体积与一只数字万用表相当。不过本文没有将频率显示部分加上,如果电路增加频率显示功能模块/组件便成为一台标准的波形发生器,使用将更加方便。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 21 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

致谢

首先,我要感谢我的导师王昕峰先生,在整个毕业设计环节中给了我很多的照顾和帮助,使我能对很多问题迎刃而解,在此提出特别感谢。

我还要谢谢我的朋友章兢、张新海、扬建,由于有他们的帮助和悉心指导我才能顺利完成我的毕业设计。在此表示最诚挚的谢意。

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 22 页共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

参考文献

[1] 张洪润等、单片机应用设计200例 北京:航空航天大学出版社,2006 [2] 魏立峰、单片机原理与应用技术 北京:北京大学出版社,2006

[3] 求是科技、单片机典型模块设计实例导航 北京:人民邮电出版社 2004 [4]Zbigniew Bielewicz,Leszek Debowski.A DSP and FPGA Based Integrated Controller Development Solutions for High Performance Electric Drives.Proceedings of the IEEE International Symposium on Industrial Electronics,Warsaw,Poland,1996,2:679~684

[5]Shih-Liang Jung,Meng-Yueh Chang.Design and Implementation of a FPGA-Based Control IC for AC-Voltage Regulation.IEEE Transactions on Power Electronics,1999,14(3):522~532

[6] Yao,Wangsheng Zhong,Xiaojun Xu,hongquan、Simple Signal Source based Micro Controller

[7] 陈小忠等、单片机接口技术实用子程序 北京:人民邮电出版社 2005 [8]马明建、数据采集与处理技术 西安:西安交通大学出版社 2005

[9]黄智伟等、全国大学生电子设计竟赛训练教程 北京:电子工业出版社 2005 [10] MAXIM公司.MAX038的技术资料

[11] 李华.MCS-51系列单片机实用接口技术.北京:北京航空航天大学出版

1997

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 23 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

附录A

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 24 页 共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

附录B

程序

#include \"reg51.h\" #include \"absacc.h\"

#define uchar unsigned char #define uint unsigned int #define DAC0832 XBYTE [0xfeff]

sbit P1_0 = P1^0; sbit P1_1 = P1^1; sbit P1_2 = P1^2; sbit P1_3 = P1^3; sbit P1_4 = P1^4; sbit P1_5 = P1^5; sbit P1_6 = P1^6; sbit P1_7 = P1^7;

sbit A0 = P3^0; sbit A1 = P3^1;

uint init;

void delay(uint i) {

while (--i) ;

}

uchar scanKey()

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 25 页共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

{

P1=0x7f;

if(P1_1==0) return(1); if(P1_2==0) return(2); if(P1_3==0) return(3);

P1=0xbf;

if(P1_1==0) return(4); if(P1_2==0) return(5); if(P1_3==0) return(6);

P1=0xdf;

if(P1_1==0) return(7); if(P1_2==0) return(8); if(P1_3==0) return(9);

P1=0xef;

if(P1_1==0) return(10); if(P1_2==0) return(11); if(P1_3==0) return(12); }

void main() {

uchar key;

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 26 页共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

P1=0x0f;

init = 0x0080;

while (1) { DAC0832 = init; delay(16);

if((( P1 & 0x0f ) | 0x01 )!=0x0f )

delay(1000); if((( P1 & 0x0f ) | 0x01 )!=0x0f ) {

key = scanKey();

if ( key == 1 ) { //选择方波 A0 = 0; A1 = 1;

}

if ( key == 2 ) { //选择三角波 A0 = 0; A1 = 0;

}

if ( key == 3 )

{

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 27 页共 31 页

浙江科技学院信息与电子工程学院2007届本科毕业设计(论文)

//选择正弦波 A0 = 1; A1 = 0;

}

if ( key == 4 ) { //增大

if ( init < 0x00ff )

init++;

}

if ( key == 5 ) { //减小

if ( init > 0x0000 )

init--; }

if ( key == 6 ) { //选择500Hz init = 0x0080; }

}

P1 = 0x0f;

}

班级:电子信息工程B1 姓名:汪叶青 学号:203023014 第 28 页共 31 页

因篇幅问题不能全部显示,请点此查看更多更全内容