目录概述..............................................................................................................................................2一、系统设计...........................................................................................................................21.设计要求......................................................................................................................22.设计思想......................................................................................................................23.总体方案分析与选择..............................................................................................3二、硬件设计...........................................................................................................................41.AMPIRE128×64.......................................................................................................42.DAC0832......................................................................................................................43.矩阵键盘......................................................................................................................5三、软件设计...........................................................................................................................61.LCD显示模块............................................................................................................62.按键扫描模块.............................................................................................................83.数模转换器控制模块(输出波形控制)......................................................104.波形生成模块...........................................................................................................105.参数设定模块...........................................................................................................126.LCD波形显示控制模块.......................................................................................157.主函数.........................................................................................................................16四、系统仿真及调试..........................................................................................................161.LCD显示模块..........................................................................................................172.DAC输出模块..........................................................................................................183.按键扫描模块...........................................................................................................204.总体调试....................................................................................................................20五、设计总结.........................................................................................................................23六、参考书目.........................................................................................................................23七、附录..................................................................................................................................251附录一:完整硬件电路图.......................................................................................25附录二:源程序..........................................................................................................262概述本文设计了一个简易函数发生器,可根据要求生成正弦波、方波、三角波和锯齿波,波形的幅值、频率和电流偏置量均可在一定范围内调节。设计的硬件电路以AT89C51为核心,并使用了数模转换器DAC0832,LCDAMPIRE128×64、集成运算放大器等元件。系统软件先在LCD上显示提示和默认参数,此时可使用按键修改各参数,由按键启动波形生成,通过数模转换器输出,并在LCD上显示波形和参数。此设计在有限的软硬件基础上实现了较宽范围的幅值、频率和电流偏置的选择,最终生成的波形分辨率在10至40之间。可在设置参数有误时进行提示,并可在转换开始前对参数进行多次修改。在本设计过程中,主要使用KeiluVision4进行软件设计,使用Proteus7进行硬件电路设计,并通过两者联合调试进行仿真实验。一、系统设计1.设计要求设计一款简易函数发生器。由按键选择所以生成的函数,由128*64LCD显示函数波形并由D/A转换输出模拟量信号。基本要求如下:(1)模拟量输出分辨率在10位以上;(2)可生成正弦波、三角波、锯齿波、方波等信号,由按键选择所要生成的波形;(3)信号幅度、周期(频率)、及垂直位移(直流偏置)可由按键设定。设计以AT89C51为核心的控制电路,并编写相关的系统软件(汇编、C51程序均可)2.设计思想本设计的硬件部分较为简单,只需要将DAC0832、AMPIRE128×64及配套的锁存器、译码器、输出电流调整电路等与AT89C51连接即可;但软件部分较为复杂,需要分别控制数模转换器、LCD显示屏和矩阵键盘并根据要求生成相3应波形。故软件部分采用模块化设计,各模块单独设计并调试成功后再进行合并。3.总体方案分析与选择为实现通过按键选择波形并设置参数的要求,应该在系统开始运行时首先提示用户进行操作,通过矩阵键盘控制模块获取用户按键值,之后据此判断用户要修改某项参数或是选择波形以及要修改的值。在用户按下启动按键后应该先对各参数进行判断,如果有参数超出允许范围应提示用户重新设置,如果所有参数都符合要求则继续后续步骤。参数正确设置并启动后,通过运算生成一个记录一个周期内足够多离散点的数组,用来表示即将生成的波形。考虑到LCD上显示的图形是静态的,而数模转换器需要实时输出动态波形,所以先控制LCD显示对应的静态波形,再控制数模转换器输出波形。LCD和数模转换器的波形由上述数组控制。总体方案的流程图如下:YN初始化,显示提示修改参数参数符合要求?LCD显示波形DAC输出波形4二、硬件设计硬件部分包括LCD模块、数模转换器模块和矩阵键盘模块,各模块独立设计并与对应的软件模块联合调试后再合并调试。1.AMPIRE128×64LCD的硬件接线较为固定,其数据口DB0~DB7连接单片机的P2口,控制引脚E,RS,RW,CS1,CS2连接至单片机的P3.0至P3.4口,VCC和RES接高电平,GND接地,-Vout和V0通过电位器连接,电路图如下:2.DAC0832数模转换器的连接方式较多,本方案使用单缓冲方式连接,其数据口DI0~DI7接单片机P0口,输入寄存器和DAC寄存器写控制信号RW1和RW2接单片机WR引脚,输入寄存器锁存允许信号ILE接高电平,片选信号CS和数据传输控制信号XFER由连接单片机P2口的3-8线译码器74138的输出选择信号Y6控制,从而实现通过地址总线选择DAC0832,通过数据总线向其传送数据。DAC0832与单片机的接线如下图:5由于设计要求输出的波形可能是交流信号,最终的输出信号应该是双极性的,所以本设计中ADC0832采用双极性输出电路,其输出信号范围为-5V~+4.96V,分辨率为0.04V。ADC0832的输出电路如下:3.矩阵键盘矩阵键盘的8个引脚连接单片机的P1口,16个按键中有4个按键做选择波形和选择要调节的参数使用,一个做启动按键,以及一个负号和一个小数点;只6剩9个键做数字键使用,考虑到本设计的实际情况数字键9几乎不会用到,故只设置数字键0~8。矩阵键盘的电路连接如下:三、软件设计软件部分除了与硬件部分对应的三个模块外,还包括波形生成模块和主程序模块。1.LCD显示模块AMPIRE128×64的控制驱动器为两片KS0108,分左右两