1 引言信号发生器又称信号源或者振荡器,它是根据用户对其波形的命令来产生信号的电子仪器,在生产实践和科技领域有着广泛的应用。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。
信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其他仪表测量感兴趣的参数。
信号发生器在通信、广播、电视系统,在工业、农业、生物医学领域内,在实验室和设备检测中具有十分广泛的用途。
信号发生器是一种悠久的测量仪器,早在20年代电子设备刚出现时它就产生了。
随着通信和雷达技术的发展,40年代出现了主要用于测试各种接收机的标准信号发生器,使信号发生器从定性分析的测试仪器发展成定量分析的测量仪器。
自60年代以来信号发生器有了迅速的发展,出现了函数发生器,这个时期的信号发生器多采用模拟电子技术,由分立元件或模拟集成电路构成,其电路结构复杂,且仅能产生正弦波、方波、锯齿波和三角波等几种简单波形。
到70年代处理器出现以后,利用微处理器、模数转换器和数模转换器,硬件和软件使信号发生器的功能扩大,产生比较复杂的波形。
这时期的信号发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。
随着现代电子、计算机和信号处理等技术的发展,极大地促进了数字化技术在电子测量仪器中的应用,使原有的模拟信号处理逐步被数字信号处理所代替,从而扩充了仪器信号的处理能力,提高了信号测量的准确度、精度和变换速度,克服了模拟信号处理的诸多缺点,数字信号发生器随之发展起来。
信号发生器作为电子领域不可缺少的测量工具,它必然将向更高性能,更高精确度,更高智能化方向发展,就象现在在数字化信号发生器的崛起一样。
但作为一种仪器,我们必然要考虑其所用领域,也就是说要因地制宜,综合考虑性价比,用低成本制作的集成芯片信号发生器短期内还不会被完全取代,还会比较广泛的用于理论实验以及精确度要求不是太高的实验。
因此完整的函数信号发生器的设计具有非常重要的实践意义和广阔的应用前景。
2 数字信号发生器的系统总述2.1 系统简介信号发生器广泛应用于电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域。
本设计以AT89C52[1]单片机为核心设计了一个低频函数信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率和幅度在一定范围内可任意改变。
波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
介绍了波形的生成原理、硬件电路和软件部分的设计原理。
本系统主要包括CPU模块、显示模块、键盘输入模块、数模转换模块、波形输出模块。
系统电路原理图见附录A,PCB (印制电路板)图见附录B。
其中CPU模块负责控制信号的产生、变化及频率的改变;模数转换模块采用DAC0832实现不同波形的输出;显示模块采用1602液晶显示,实现波型和频率显示;键盘输入模块实现信号的选择和频率的输入。
该信号发生器具有体积小、价格低、性能稳定、功能齐全的优点。
2.2 系统总体框图本设计拟采用单片机作为程序的主控芯片,利用DA转换技术,实现数据的实时转换,利用键盘控制信号类型的选择和频率的改变,最后通过1602液晶屏显示结果。
系统总体框图如图所示:图2.1 系统总体框图3 硬件设计3.1 CPU模块3.1.1 89C52单片机的基本组成设计采用89C52[2]作为系统的主控芯片,芯片结构框图如下:外部时钟源外部事件计数内中断图3.1 89C52单片机结构框图89C52单片机包含:(1)一个8位的80C52微处理器[3](2)片内256字节数据存储器RAMSFR,用以存放可以读写的数据,如运算的中间结果,最终结果以及欲显示的数据等(3)片内8KB程序存储器FLASH ROM,用以存放程序、一些原始数据和表格(4)4个8位并行IO端口P0~P3,每个端口既可用作输入也可用作输出(5)3个16位的定时器计数器,每个定时器计数器都可设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式(6)具有8个中断源、两个中断优先级和中断控制系统(7)全双工UART的串行IO口,用于实现单片机之间或单片机与PC 机之间的串行通信(8)片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许振荡频率为24MHz(9)片内振荡器和时钟电路(10)具有节电工作方式,即空闲方式及掉电方式[1]3.1.2 单片机的最小系统设计单片机要能正常的工作,必要的条件是供电及晶振。
以下是单片机的晶振及复位电路:图3.2 AT89C52单片机最小系统设计图3.2 显示模块3.2.1 液晶概述液晶[4](Liquid Crystal)是一种高分子材料,因为其特殊的物理、化学、光学特性,20世纪中叶开始广泛应用在轻薄型显示器上。
液晶显示器的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。
各种型号的液晶通常是按照显示字符的行数或液晶点阵的行、列数来命名的。
比如1602[5]的意思是每行显示16个字符,一共可以显示两行。
根据客户的要求,厂家可以设计出任意组合的点阵液晶。
液晶体积小、功耗低、显示操作简单,但它有一个致命的弱点,其使用的温度范围很窄。
通用型液晶正常工作的温度范围为0o C~+55o C,存储温度范围为-20o C~+60o C,因此在设计产品时,务必要考虑周全,选择合适的的液晶。
本设计采用1602液晶屏作为系统的显示芯片,一般1602字符型液晶显示器实物如图:图3.3 1602实物图-正面图3.4 1602实物图-背面3.2.2 1602LCD管脚及其说明图3.5 1602管脚图1602字符型[6]LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线,下面是1602的管脚说明表:表3.3 1602液晶管脚说明表第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
3.2.3 1602LCD主要技术参数◆显示容量:16×2个字符◆芯片工作电压:4.5~5.5V◆工作电流:2.0mA(5.0V)◆模块最佳工作电压:5.0V◆字符尺寸:2.95×4.35(W×H)mm3.2.4 1602LCD的指令说明及时序[7]1602液晶模块内部的控制器共有11条控制指令。
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:1为高电平、0为低电平)表3.4 1602液晶控制命令表指令1:清显示,指令码01H,光标复位到地址00H位置。
指令2:光标复位,光标返回到地址00H。
指令3:光标和显示模式设置 ID:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:显示开关控制。
D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 SC:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
3.2.5 1602LCD的基本操作时序[8]◆读状态输入:RS=L,R=H,E=H 输出:D0~D7=状态字。
◆读数据输入:RS=H,R=H,E=H ;输出:无。
◆写指令输入:RS=L,R=L,D0~D7=指令码,E=高脉冲输出:D0~D7=数据。
◆写数据输入:RS=H,R=L,D0~D7=数据,E=高脉冲输出:无。
读写操作时序如图3.6和3.7所示:图3.6 读操作时序图3.7 写操作时序3.2.6 1602LCD的接口设计下面是1602液晶接口原理图:3.8 1602液晶接口图3.3 键盘输入模块3.3.1 键盘简介键盘是一组按键的集合,它是最常用的单片机输入设备。
操作人员可以通过键盘输入数据或者命令,实现简单的人—机通信。
按键是一种常开型按钮开关。
平常(常态时),按键的二个触点处于断开状态,按下键时它们才闭合(短路)。
键盘分编码和非编码键盘。
键盘上闭合键的是别有专门的硬件译码器实现,并产生键编号或键值的称为编码键盘,如BCD码键盘、ASCII码键盘等;靠软件识别的称为非编码键盘。
在单片机组成的测控系统及智能化仪表中,用得最多是非编码键盘。
3.3.2 键盘接口的工作原理[9]键盘中每个按键都是一个常开开关电路,如图5.1所示:图3.9 按键电路我们把按键的一端接地,另一端与单片机的某个IO口相连,开始时先给该IO口赋一高电平,然后让单片机不断检测该IO口是否变成低电平,当按键闭合时,即相当于该IO口通过按键与地相连,变成低电平,程序一旦检测到IO口变为低电平则说明按键被按下,然后执行相应的指令。
图3.10 按键被按下时电压的变化[10]从图5.2可以看出,理想波形与实际波形之间是有区别的,实机波形在按下和释放的瞬间都有抖动现象,抖动时间的长短和按键的机械特性有关,一般为5~10ms。
通常我们手动按下键然后立即释放,这个动作中稳定闭合时间超过20ms。
因此单片机在检测键盘是否按下时都要加上去抖操作,有专用的去抖电路,也有专用的去抖动芯片,但通常我们用软件延时的方法就能够很容易解决抖动问题,而没必要再添加多余的硬件电路。
软件来消除按键抖动的基本思想:检测到有键按下,键对应的行线为低,软件延时10ms后,行线如仍为低,则确认该行有键按下。