摘要本文设计低频信号发生器,以AT89C52 单片机为核心,通过键盘输入控制信号类型和频率的的选择,采用DA 转换芯片输出相应的波形,同时以LCD 显示器进行实时显示信号相关信息。
我们采用C 语言进行编程,可实现方波,三角波,和正弦波三种波形的产生,且波形的频率可调。
经测试该设计方案线路优化,结构紧凑,性能优越,满足设计要求。
关键字:单片机,DA 转换,信号发生器第一章绪论1.1 选题背景及其意义信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。
各种波形曲线均可以用三角函数方程式来表示。
能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。
在通信、广播、电视系统,在工业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。
1.2 单片机概述单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 随机存储器RAM、只读存储器ROM、多种I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
单片机具有集成度高、系统结构简单、使用方便、实现模块化、可靠性高、处理功能强、速度快等特点,因为被广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
1.3 信号发生器分类信号发生器是指产生所需参数的电测试信号的仪器。
因其应用广泛,种类繁多,特性各异,分类也不尽一致。
按信号波形可分为正弦信号、函数信号、脉冲信号和随机信号发生器等四大类;按频率覆盖范围分为低频信号发生器、高频信号发生器和微波信号发生器;按输出电平可调节范围和稳定度分为简易信号发生器、标准信号发生器和功率信号发生器;按频率改变的方式分为调谐式信号发生器、扫频式信号发生器、程控式信号发生器和频率合成式信号发生器等。
信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。
1.4 研究题目及其意义信号发生器是一种经常使用的设备,由纯粹物理器件构成的传统的设计方法存在许多弊端,如:体积较大、重量较沉、移动不方便、信号失真较大、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等要求,研究设计出一种具有频率稳定、准确、波形质量好、输出频率范围宽、便携性好等特点的波形发生器具有较好的市场前景。
以满足工业领域对信号源的要求。
本次试验实现利用单片机AT89S52 和8 位D/A 转换芯片DAC0832 共同实现方波、锯齿波、三角波、正弦波这四种常用波形的发生。
根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。
在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。
并且可以通过数码管和键盘显示模块,键盘可以实现对几种波形的切换。
第二章信号发生器方案设计与选择信号发生器是指产生所需参数的电测试信号的仪器。
按信号波形可分为正弦信号、波形信号、脉冲信号和随机信号发生器等四大类。
本文利用单片机构造低频信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,再通过D/A 转换器DAC0832 把数字信号转变为模拟信号,经OP07 放大输出到示波器,与此同时外接LCD显示输出信号的类型和频率。
2.1 方案的设计与选择方案一:采用单片函数发生器可产生正弦波、方波等,操作简单易行,用D/A 转换器的输出来改变调节电压,可以实现数控调整频率,但产生信号的频率稳定度不高。
方案二:利用芯片组成的电路输出波形,MAX038 是MAXIM 公司生产的一个只需要很少外部元件的精密高频波形产生器,他能产生准确的高频正弦波、三角波、方波。
输出频率和占空比可以通过调整电流、电压或电阻来分别地控制。
所需的输出波形可由在A0和A1 输入端设置适当的代码来选择,且具有输出频率范围宽、波形稳定、失真小、使用方便等特点。
方案三:采用Atmel 公司的AT89C51 单片机编程方法实现,该方法的可以通过编程的方法控制信号波形的频率和幅度,而在硬件电路不便的情况下,通过程序实现频率的变化和输出波形的选择,并同时在显示器显示相应的结果。
方案一输出信号频率不够稳定;方案二成本高,程序复杂度高;方案三,软硬件结合,硬件成本低,软件起点低,优化型相对比较好,容易实现,且满足设计要求。
综合考虑,我们采用了方案三,用AT89C51 单片机设计低频信号发生器,能够满足信号的频率稳定性和精度的准确行。
2.2 设计原理简介该设计设计一个低频信号发生器,我们采用的是AT89C51 单片机用软件实现信号的输出。
该单片机是一个微型计算机,包括中央处理器CPU,RAM,ROM、I/O 接口电路、定时计数器、串行通讯等,是波形设计的核心。
该信号发生器原理框图如图2.1,总体原理为:利用AT89C51 单片机构造低频信号发生器,可产生正弦波,方波,三角波,锯齿波四种波形,通过C 语言对单片机的编程即可产生相应的波形信号,并可以通过键盘进行各种功能的转换和信号频率的控制,当输出的数字信号通过数模转换成模拟信号也就得到所需要的信号波形,通过运算放大器的放大输出波形,同时让显示器显示输出的波形信息。
图2.1 信号发生器原理框图本方案其主要模块包括复位电路、时钟信号、键盘控制、D/A 转化及LED 显示。
其各个模块的工作原理如下:(1)复位电路是为单片机复位使用,使单片机接口初始化;89C51 等CMOS51系列单片机的复位引脚RET 是施密特触发输入脚,内部有一个上拉低电阻,当振荡器起振以后,在RST 引脚上输出2 个机械周期以上的高电平,器件变进入复位状态开始,此时ALE、PSEN、P0、P1、P2、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。
该方案采用的是人工开关复位,在系统运行时,按一下开关,就在RST 断出现一段高电平,使器件复位。
(2)时钟信号是产生单片机工作的时钟信号,控制着计算机的工作节奏,可以通过提高时钟频率来提高CPU 的速度。
89C51 内部有一个可控的反相放大器,引脚XTAL1、XTAL2 为反相放大器输入端和输出端,在XTAL1、XTAL2 上外接12MHZ 晶振和30pF 电容便组成振荡器。
时钟信号常用于CPU 定时和计数。
(3)键盘模块是是用于控制信号输入的类型,当按键按下时,可以通过单片机编程读取闭合的键号,实现相应的信号输出。
其步骤主要是a、判断是否有键按下;b、去抖动,延时20ms 左右;c、识别被按下的键号;d、处理,实现功能。
(4)D/A 转换也称为数模转换,是把数字量变换成模拟量的线性电路。
单片机产生的数字信号通过DAC0832 转化成模拟信号,输出相应的电流值,通过OP07 集成运算放大器可以取出模拟量得电压值,最后利用示波器获得输出的模拟信号的波形;衡量数模转换的性能指标有分辨率、转换时间、精度、线性度等。
LED 显示器用由若干个发光二极管按一定的规律排列而成,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光用于是显示相关输出波形的信息,包括信号的类型和频率。
2.3 设计功能当程序下进去时经过初始化,液晶屏的上只显示“wave:”和“f:“,当开关三按一下是此时输出波形为正弦波,按两下时输出为方波,按三下时输出为三角波。
另外两个开关可以调节频率,三种波形的频率可调范围不同,分别如下:正弦波:1——280HZ方波:1——3.3KHZ三角波:1——280HZ根据示波器的波形频率的显示计算出三种波形的频率计算公式如下:正弦波:f=(1000/(9+3*ys))方波:f=(100000/(3*ys))三角波:f=(1000/(15+3*ys)其中ys为延时的变量。
第三章主要电路元器件介绍3.1 AT89C51 单片机简介3.1.1 单片机简介AT89C51 是一种带4K 字节FLASH 存储器的低电压、高性能CMOS 8 位微处理器,俗称单片机。
该芯片具有优异的性价比,集成度高,体积小,可靠性强,控制功能强等优点。
其外形及引脚排列如图3.1所示。
3.1.2 主要特性➢兼容性能强➢4K 字节可编程FLASH 存储器➢全静态工作:0Hz-24MHz➢128×8 位内部RAM➢32 可编程I/O 线➢两个16 位定时器/计数器➢ 5 个中断源图3.1 AT89C51 引脚图➢可编程串行通道➢低功耗的闲置和掉电模式➢片内振荡器和时钟电路3.1.3管脚功能说明➢VCC:供电电压4~6V (典型值5V);➢GND:接地;➢REST :复位引脚输入高电平使89C51 复位,返回低电平退出复位;➢EA/Vpp:运行方式时,EA 为程序存储器选择信号,EA 接地时CPU 总是从外部存储器中取指令,EA 接高电平时CPU 可以从内部或外部取指令;FLASH 编程方式时,该引脚为编程电源输入端Vpp(=5V 或12V);PSEN :外部程序存储器读选通信号,CPU 从外部储存器取指令时,从PSEN 引脚输出读选通信号(负脉冲)ALE /PROG :运行方式时,ALE 为外部储存器低8 位地址锁存信号,FLASH 编程方式时,该引脚为负脉冲输入端;➢XTAL1,XTAL2 为内部振荡器电路(反相放大器)的输入端和输出端,外接晶振电路;➢P0 口:P0 口为一个8 位漏级开路双向I/O 口,每脚可吸收8TTL 门电流。
当P0 口的管脚第一次写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 口输出其特殊功能寄存器的内容。