低频信号发生器设计论文(21页).doc
-低频信号发生器设计论文-第 18 页低频信号发生器设计摘要:本文设计低频信号发生器,以AT89C52 单片机为核心,通过键盘输入控制信号类型和频率的选择,采用D/A 转换芯片输出相应的波形,同时以LCD 显示器进行实时显示信号相关信息。软件采用C 语言,可实现正弦波,方波和三角波三种波形的产生,且波形的频率可调。经测试该设计方案线路简单,结构紧凑,性能优越,价格低廉,满足设计要求。关键字:低频信号发生器,单片机,D/A转换Low frequency signal generator designAbstract:Low frequency signal generator is designed, with AT89C52 single-chip computer as the core, through the keyboard input control signal type and frequency of choice, using D/A conversion chip output corresponding waveform, at the same time with LCD real-time display signal information. Software using C language, which can realize sine wave, square wave and triangular wave, three kinds of waveform and waveform frequency is adjustable. The test design of the circuit is simple, compact structure, superior performance, low price, meet the design requirements.The keyword:Low frequency signal generator,Single chip microcomputer,D/A conversion 目录1 绪论11.1 研究的目的及其意义11.2 国内外研究现状11.3 主要内容和目标21.3.1 内容21.3.2 目标22 方案研究32.1 总体方案论证与设计32.1.1 信号发生电路方案论证32.1.2 单片机的选择论证32.1.3 显示方案论证32.1.4键盘方案论证42.2总体系统设计43 硬件电路设计53.1硬件原理框图53.2模块具体设计53.2.1单片机最小系统的设计53.2.2波形产生模块设计83.2.3显示模块的设计113.2.4键盘显示模块的设计114 软件设计134.1软件总体设计134.2软件流程图134.3仿真134.3.1 方波144.3.2 三角波154.3.3 正弦波165 调试175.1 调试过程175.2 调试结果17结论19设计心的及体会19致谢20参考文献21附录一 源程序22附录二 系统电路图291 绪论1.1 研究的目的及其意义随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。尤其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。现在,信号发生器带有微处理器,因而具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其他测量仪器一起方便的构成自动测试系统。当前信号发生器总的趋势是向着宽频率覆盖、低功耗、高频率、精度、多功能、自动化和智能化方向发展。在科学研究、工程教育及生产实践中,如工业过程控制、材料试验、动态分析、机械振动试验、生物医学、教学实验等领域,常常需要用到低频信号发生器。而在我们日常生活中,以及一些科学研究中,正弦波、矩形波和锯齿波信号是常用的基本测试信号。在示波器、电视机等仪器中,为了使电子能够按照我们想要的规律运动,从而在荧光屏上显示图像,就经常用到锯齿波信号发生器作为时基电路。信号发生器作为一种通用的电子仪器,在生产、科研、测控、 通讯等领域都得到了广泛的应用。但市面上能看到的仪器在频率精度、带宽、波形种类及程控方面都已不能满足许多方面实际应用的需求。加之各类功能的半导体集成芯片的快速生产,都使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。便携式和智能化越来越成为仪器的基本要求,对传统仪器的数字化,智能化,集成化也就明显得尤为重要。平时常用信号源产生正弦波,方波,三角波等常见波形作为待测系统的输入,测试系统的性能。单在某些场合,我们需要特殊波形对系统进行测试,这是传统的模拟信号发生器和数字信号发生器很难胜任的。利用单片机,设计合适的人机交互界面,使用户能够通过手动的设定,设置所需波形。该设计课题的研究和制作全面说明对低频信号发生系统要有一个全面的了解、对低频信号的发生原理要理解掌握,以及低频信号发生器工作流程:波形的设定,D/A 转换,显示和各模块的连接通信等各个部分要熟练联接调试,能够正确的了解常规芯片的使用方法、掌握简单信号发生器应用系统软硬件的设计方法,进一步锻炼了我们在信号处理方面的实际工作能力。1.2 国内外研究现状在 70 年代前,信号发生器主要有脉冲波发生器与正弦波发生器两种,函数发生器就介于两类之间,能够提供几种常用标准波形,比如正弦波、余弦波、方波、三角波、上弦波等,然而如果需要产生其它波形,则要使用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模电技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且电路结构非常复杂。同时还有两个比较突出的问题,一是输出频率的调节需要通过电位器来实现,所以使频率很难在一个值固定;二是脉冲的占空比不可调节。在 70 年代后,随着微处理器的出现,可以使用处理器、A/D和 D/A模块,硬件和软件使波形发生器的功能变得越来越全面,继而产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对 DAC 的程序控制,就可以得到各种简单的波形。 二十一世纪,由于集成电路技术的发展极其快速,所以出现了很多工作频率可以超过 GHz的 DDS 芯片,同时也极大的推动了函数波形发生器的发展。1.3 主要内容和目标1.3.1 内容根据设计目标通过调研、查阅相关资料确定以单片机和D/A转换器为核心的低频信号发生器方案。主要包括:1)电源电路设计;2)键盘电路设计;3)D/A数模转换电路设计;4)信号放大及低通滤波电路设计;5)显示电路设计;5)应用软件(主程序及用于改变频率和信号类型的中断服务程序)设计等。1.3.2 目标设计出一款以单片机和D/A数模转换电路为核心的低频信号发生器。信号类型不低于3种。系统能显示信号类型及频率。通过该设计及安装调试,达到掌握小型电子系统设计方法和常用设计软件、调试仪器使用的目的。2 方案研究2.1 总体方案论证与设计2.1.1 信号发生电路方案论证 方案一:通过单片机控制D/A,输出三种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。 方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。 方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。以上三种方案综合考虑,方案一电路简单、成本低;方案二,电路复杂,干扰因素多,不易实现;方案三成本高,程序复杂度高,所以选择方案一。2.1.2 单片机的选择论证 方案一:AT89C52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。但其价格较贵以上两种方案综合考虑,方案一性价比高,价格便宜;方案二虽然执行速度快,但是其价格较贵,所以选择方案一2.1.3 显示方案论证 方案一:采用LED数码管。LED数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。方案二:采用LCD液晶显示器1602。 以上两种方案综合考虑,方案一只能显示数字;方案二功率小,效果明显,显示编程容易控制,能显示字母,所以选择方案二。2.1.4键盘方案论证方案一:矩阵式键盘。该键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。当某一个键闭合时,该键所对应的行线和列线被短路。方案二:独立式键盘。该键盘的程序编制相当简单,但每个按键都会占用一条I/O线,当按键数量较多时,I/O口利用率相当低。所以该键盘适用于按键较少的场合。以上两种方案综合考虑,由于该设计所需按键较少,所以选择方案二。2.2总体系统设计该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。将设计任务分解为按键电路、液晶显示电路等模块。图2-1为系统的总体框图 主控芯片AT89C52D/A0832键盘显示放大输出图2-1 总体方框图3 硬件电路设计硬件原理硬件电路的设计决定一个系统的的功能,是设计的基础所在,而一般设计的目标:可靠,简洁,高效,优化,好的硬件电路可以给程序的编写带来极大的优势,同时使可以很好的提高该信号设计的精度和灵敏度,使整个系统工作协调有序。3.1硬件原理框图对于该低频信号发生器的设计,我们采用了以AT89C52单片机芯片作为核心处理器,编程实现各种不同类型信号的产生,最后通过DA转换输出到示波器。结构简单,思路仅仅有条,而根据设计的基本要求,我们又把其细分为不同的功能模块,各个功能模块相互联系,相互协调,通过单片机程序构成一个统一的整体,其整体电路原理框图如图3-1所示: AT89C52复位电路DA转换按键波形显示功率放大图3-1 硬件电路基本图3.2模块具体设计3.2.1单片机最小系统的设计AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。用80C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3-2所示图3-2 89C52单片机最小系统该单片机最小系统由一个89C52单片机,复位电路以及时钟电路组成的。其中复位电路连接单片机RESET口,其主要功能为上电复位。时钟电路则分别连接单片机的X1和X2口。(1) 功能特性1、兼容MCS51的指令系统2、8kB可反复擦写Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时和计数器中断;6、0-24MHz的时钟频率;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、具有低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式。 图3-3 单片机引图(2) 引脚P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在 flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P2 口:P2 口的功能与P1口基本相同。此外在使用16 位地址读取外部数据存储器(例如执行 MOVX DPTR)或访问外部程序存储器时,P2 口送出高八位地址P3 口:P3 口的功能与P1口基本相同。此外P3 口也可以作为 AT89S52 特殊功能(第二功能)使用,如下表所示。表3-2 AT89S52 P3口第二功能表脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断 0)P3.3INT0(外部中断 0)P3.4T0(定时器 0 外部输入)P3.5T1(定时器 1 外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA 必须接 GND。为了执行内部程序指令,EA 应该接 VCC。在 flash 编程期间,EA 也接收 12 伏 VPP 电压。XTAL1:内部时钟发生电路和振荡器反相放大器的输入端。XTAL2:振荡器反相放大器的输出端。3.2.2波形产生模块设计由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。其电路图如下:(a)(b)图3-4 波形产生电路如上图所示,单片机的P0口经过排阻连接DAC0832的八位数据输入端,DAC0832的输出端链接一个电压跟随器LM358,再由LM358的输出端连接放大器OP07,经过放大后输出所要的波形。(1) 工作原理DAC0832 是8 分辨率的D/A 转换集成芯片,由8 位输入锁存器、8 位DAC 寄存器、8 位D/A 转换器及转换控制电路四部分构成。8 位输入锁存器用于存放主机送来的数字量,使输入数字得到缓冲和锁存,并加以控制;8 位DAC 寄存器用于存放存放待转换的数字量,并加以控制;8 位D/A 转换器输出与数字量成正比的模拟电流,由与门、与非门组成的输入控制的输入电路来控制2 个寄存器的选通或锁存状态。 WR2 和XFER 同时有效时,8 位DAC 寄存器端为高电平“1”,此时DAC 寄存器的输出端Q 跟随输入端D 也就是出入寄存器Q 端得电平变化,反之,当端为低电平“0”时,第一级8 位输入寄存器Q 端得状态则锁存到第二级8 位DAC 寄存器中,以便第三极8 位DAC 转换器进行D/A 转换。 DAC0832的为八位数据并行输入的,其结构图如下:图3-5 DAC0832的内部结构(2) DAC0832的主要特性参数1)单一电源供电(+5V+15V);2)其线性度只需在满量程下调整;3)电流稳定时间1us;4)可以用单缓冲、双缓冲或直接数字输入;5)8位分辨率;6)20mW的低功耗。(3) DAC0832引脚功能简介D0D7:8 位数据输入线,TTL 电平,有效时间应大 图3-6 DAC0832 引脚图 于90ns(否则锁存器的数据会出错); CS:片选信号输入线(选通数据锁存器),低电平有效;ILE:数据锁存允许控制信号输入线,高电平有效;WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE CS、WR1 的逻辑组合产生LE1。当LE1 为高电平时,数据锁存器状态随输入数据线变换,LE1 的负跳变时将输入数据锁存;XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:DAC 寄存器选通输入线,负脉冲(脉宽应大于500ns)有效;IOUT1:电流输出端1,其值随DAC 寄存器的内容线性变化;IOUT2:电流输出端2,其值与IOUT1 值之和为一常数;Rfb:反馈信号输入线,改变Rfb 端外接电阻值可调整转换满量程精度;Vcc:电源输入端,Vcc 的范围为+5V+15V;VREF:基准电压输入线,VREF 的范围为-10V+10V;AGND:模拟信号地;DGND:数字信号地。3.2.3显示模块的设计该设计的液晶显示模块是由LCD1602连接单片机来完成的,LCD1602由16个引脚组成,其中7-14(D0-D7)号引脚连接单片机P1口,6号连接T0口,5号连接单片机INT1口,4号连接INT0口,其电路图如下:图3-7 液晶显示模块(1)LCD1602引脚功能介绍VSS为电源地;VDD接5V电源;VO需要与地短接显示屏工作;RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器;RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作;E端是液晶的使能端;D0D7为8位双向数据端; VCC电源;GND地。 图3-8 LCD引脚图3.2.4键盘显示模块的设计本系统采用独立键盘,其连接电路图如下:图3-9 键盘图中键盘独立键盘引出的线分别接单片机的P2口。如图开关1用来调节频率、开关2用来控制波形的输出、开关3用来切换输出波形。当按开关1时输出波形的频率减小,按下开关2,即确认输出波形,再按一下开关2,则停止波形输出。4 软件设计4.1软件总体设计本系统采用AT89S52单片机,用编程的方法来产生三种波形,并通过编程来切换三种波形以及波形频率的改变。具体功能有:(1)各个波形的切换;(2)频率增减等。4.2软件流程图开始初始化有键按下下S1按下S3按下S2按下Type+输出波形频率减小液晶显示频率液晶显示ON输出方波液晶显示SQREType=0Type=1Type=2输出三角波液晶显示TRIG输出正弦波液晶显示SINENY图4-1 软件流程图首先对程序初始化,再判断是否有按键按下,则计算相关参数,一方面利用中断定时和查询查表输出波形,另一方面发送段选口和位选口数据使LCD显示相关波形类型和频率,最后反馈回去构成循环,判断按键相关信息。4.3仿真当程序经过初始化,液晶屏上第一行会显示 “FREQ:”和频率,当不按开关三,此时输出波形为方波,按一下时输出为三角波,按二下时输出为正弦波。开关二则是确认是否输出波形。另外一个开关可以调节频率,三种波形的频率可调范围不同,分别如下:方 波:13.2KHZ三角波:1312HZ正弦波:1312HZ本次设计通过软件(proteus)仿真。按照设计的电路连接好, 电路接好后,按照预先设定好的调试步骤,逐步对电路进行系统调试,调试结果做如下:4.3.1 方波当液晶屏上第二行显示为“SQRE”时,示波器中显示为方波,此时频率的大小受频率档位选择键的控制。图4-2 方波图形程序如下:if(type=0) write_cmd(0xc0); write_dat('S'); write_dat('Q'); write_dat('R'); write_dat('E'); switch(Dat)/获取方波频率 case 1:Fr=3189;break; case 2:Fr=1718;break; case 3:Fr=1183;break; case 4:Fr=898;break; case 5:Fr=723;break; case 6:Fr=605;break; case 7:Fr=521;break; case 8:Fr=456;break; case 9:Fr=407;break; case 10:Fr=367;break; case 11:Fr=334;break; case 12:Fr=306;break; case 13:Fr=283;break; case 14:Fr=217;break;4.3.2 三角波当液晶屏上第二行显示为“TRIG”时,示波器中显示为三角波,此时频率的大小受频率档位选择键的控制。图4-3 三角波图形程序如下:if(type=1) write_cmd(0xc0); write_dat('T'); write_dat('R'); write_dat('I'); write_dat('G'); Fr=1000000/(256*12.52*Dat);/获取三角波频率4.3.3 正弦波当液晶屏上第二行显示为“SINE”时,示波器中显示为正弦波,此时频率的大小受频率档位选择键的控制。图4-4 正弦波图形程序如下:if(type=2) write_cmd(0xc0); write_dat('S'); write_dat('I'); write_dat('N'); write_dat('E'); Fr=1000000/(256*12.52*Dat);/获取正弦波频率5 调试5.1 调试过程1 在不通电的情况下,用万用表根据电路图检查各线路连接是否正常。 2 调试单片机部分,D/A和运算放大器芯片不接,用STC_ISP_V483软件通过串口下程序,看是否可以正常下程序。 3当可以正常下程序时,给单片机下一个让所有I/0口输入0,延时,再输出1,以此类推。用万用表测量各I/O口得电压是不是一会儿高,一会儿低。4装上D/A和运算放大器芯片,给单片机下一个输出正弦波的测试程序,通过示波器看波形输出是否正常。 5 给单片机下一个完整的程序,分别按下S3,看波形是否改变。按下S1,看频率是否改变。5.2 调试结果经过以上步骤调试,最后得到结果如下图图5-1 未通电的电路板图5-2通电后的电路板 (a) (b) (c)图5-3 通电后液晶显示的不同波形结论及心得体会本作品是以AT89C52单片机和DAC0832为基础从而实现低频信号发生器的硬件电路和软件设计。在本系统中包括单片机系统模块,波形产生模块,显示模块,键盘模块等4个模块组成。此法软硬件结合,硬件成本低,软件起点低,优化型相对比较好,容易实现,具有很高的实用价值通过对低频信号发生器的设计,是我充分的认识到了”理论联系实际”这句话的真实性和重要性。而且通过本次毕业设计,使我对单片机有了进一步的认识和使用,让我深刻地认识到学好专业知识的重要性,并且检验了大学四年的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力。在学习单片机的时候要首先搞懂其工作原理,这样才能更好的对接下去的要求电路进行编程。同时,让我对一些常用的电器元件更加了解,学会了如何正确使用、替换它们。致谢本论文是在老师的悉心指导下完成的,从论文选题到完成论文都渗透着老师的大量心血和精力。值此论文完成之际,特向导师致以诚挚的感谢和无尽的敬意!最后,向所有给予我关心和帮助的领导、老师、亲人、同学和朋友表示衷心的感谢!参考文献1 求是科技.单片机典型模块设计实例导航M (第二版).北京:人民邮电出版社, 2008,72 范风强.兰婵丽.单片机语言C51应用实战集锦M.北京:电子工业出版社,2003,33 黄智伟.全国大学生电子设计竞赛训练教程M.北京:电子工业出版社,2005,14 周立功.单片机实验与实践M.北京:北京航空出版社,2004,85 黄继昌.电子元器件应用手册M.北京:人民邮电出版社,2004,76 张宪、何宇斌.电子电路制作指导M.北京:化学工业出版社,2005,87 Raj Kamal. Embedded Systems: Architecture, Programming and DesignM. McGraw-Hill.2003 8 新概念51单片机C语音教程入门、提高、开发、拓展全攻略M. 北京:电子工业出版社,20099 潭博学、苗江静.集成电路原理及应用M.北京:电子工业出版社。2003.910 谢自美.电子线路设计.实验.测试M(第三版).武汉:华中科技大学出版社.2000年7月11 Tierney. J Rader. C.M. and Gold. B. "A Digital Frequency Synthesizer." IEEE Transactions on Audio and Electroacoustics AU-19:1, March 1971 12 戴仙金.51单片机及其C语言汇编程序开发实例M .北京:清华大学出版社,200813 高吉祥.全国大学生电子设计竞赛培训系列教程M .北京:电子工业出版社,200714 杨素行.模拟电子技术基础简明教程M .北京:高等教育出版社,200715 蒋辉平.单片机原理与应用设计M .北京:北京航空航天大学出版社,200716 周菁菁.刺激信号为图案的人体反应时测试仪的设计D :南昌大学,2009附录一 源程序源程序:#include <reg52.h> #define uchar unsigned char #define uint unsigned int #include <lcd_1602.h>sbit s1=P20;sbit s2=P21;sbit s3=P22;sbit cs=P35;sbit wr=P36;uchar j,count,k,i,Dat=1,type;uint Fr;uchar code Tosin256=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 ;/*正弦波码 */void Init_tm0()/初始化定时器0 TMOD=0X01; TH0=0xff; TL0=0xfe; ET0=1; EA=1; EX0=1; TR0=0;void display()/显示频率 write_cmd(0x80); write_dat('F'); write_dat('R'); write_dat('E'); write_dat('Q'); write_dat(':'); write_dat(tab_lcd_numFr/1000); write_dat(tab_lcd_numFr%1000/100); write_dat(tab_lcd_numFr%100/10); write_dat(tab_lcd_numFr%100%10); write_dat('H'); write_dat('Z');void key_scan()/扫描按键 if(s1=0)&&TR0=0)/S1增加DAT Dat+; if(Dat=15) Dat=1; if(s2=0)&&TR0=0)/S4 Dat-; if(Dat=0) Dat=14; if(s3=0)&&TR0=0)type+;if(type=3)type=0; if(type=0) write_cmd(0xc0); write_dat('S'); write_dat('Q'); write_dat('R'); write_dat('E'); switch(Dat)/获取方波频率 case 1:Fr=3189;break; case 2:Fr=1718;break; case 3:Fr=1183;break; case 4:Fr=898;break; case 5:Fr=723;break; case 6:Fr=605;break; case 7:Fr=521;break; case 8:Fr=456;break; case 9:Fr=407;break; case 10:Fr=367;break; case 11:Fr=334;break; case 12:Fr=306;break; case 13:Fr=283;break; case 14:Fr=217;break;if(type=1) write_cmd(0xc0); write_dat('T'); write_dat('R'); write_dat('I'); write_dat('G'); Fr=1000000/(256*12.52*Dat);/获取锯齿波频率 if(type=2) write_cmd(0xc0); write_dat('S'); write_dat('I'); write_dat('N'); write_dat('E'); Fr=1000000/(256*12.52*Dat);/获取正弦波频率void main()