基于51单片机的波形发生器设计报告(共26页)_第1页
基于51单片机的波形发生器设计报告(共26页)_第2页
基于51单片机的波形发生器设计报告(共26页)_第3页
基于51单片机的波形发生器设计报告(共26页)_第4页
基于51单片机的波形发生器设计报告(共26页)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上目录摘要:本系统采用单片机C8051为控制核心,输出数字量,然后由DAC0832把数字量转换成模拟量;但是输出的是电流,需要用运放(OP07),把电流转换成电压量。显示利用的是LCD1602的液晶,显示其波形,幅值。按键应用的是独立按键,用来波形的切换,幅值,频率的调解。其运算核心,我们通过MATLAB对正弦波,三角板,正弦波进行采样,得到一组组数据,然后同过数组存储;利用中断对数组进行扫描。其频率的调解就是调节其中断间隔的时间,幅值就是调节其数字的大小(同时乘以某个小于1的数)。为了波形的合成,我们采用的点的个数都是20个。AT-89C51 DAC0832 独立按键

2、 OP07一、题目要求及分析设计任务:设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。示意图如下:图1 设计要求图设计要求:1.具有产生正弦波、方波、三角波三种周期性波形的功能;2.用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波(5次以下)线性组合的波形。3.具有波形存储功能。4.输出波形的频率范围为100Hz20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔100Hz。5.输出波形幅度范围O5V(峰峰值),可按步进0.1V(峰峰值)调整。6.具有显示输出波形的类型、重复频率(周期)和幅度的功能。7.增加

3、红外配置功能(串口配置程序或其他方式)二、总体系统方案设计题目要求实现的任务是设计并制作一个函数信号发生器,能够产生正弦波、方波、三角波,要求不用DDS和专用的波形产生芯片,频率范围在1Hz1MHZ可调,在频率范围为1HZ10KHz时,步进不大于10Hz在频率范围为10KHz1MHz时,步进不大于100Hz,并且电压范围在05V可调,步进为0.1V,能够实时的显示波形的类型及其频率和幅值。现在对以下方案进论证和验证。2.1总体设计思路根据题目的要求,经过仔细的考虑各种要素,制定了整体方案:以AT89C51单片机为控制核心,P0口接DAC0832信号输入并进行数模转换,P1口接矩阵键盘,P2口接

4、液晶显示器LCD1602,由程序控制P0口产生波形(分别是正弦波、方波、三角波),再由按键及按键次数控制产生波形的种类及频率和幅值在一定范围内可调,并且能够按任意键实现波形频率和幅值的设定(不通过步进按键设定来控制)。由运放OP07实现DAC0832输出电流到电压的转换,即实现数字信号到模拟信号的转换。在LCD上实时的显示波形的频率和幅值,波形在示波器上产生。其波形的存储方式,我们通过按键确定,一旦按键按下后,就把当时的波形对应的参数存储起来,例如幅度值,频率值等参数。波形的合成:为了波形的合成,我们在采样的时候,对正弦波,三角波,方波都只取乐20个点;因为点越少,其频率达到的值就会越大;合成

5、时就是对幅值点进行一个叠加后赋给DAC0832输出一组波形。红外,通过外部中断高低电平的延时的时间来进行解码。2.2总体框图本系统总体框图如图2所示:图2系统总体框图2.3信号发生部分方案一:采用模拟分立元件或单片压控函数发生器,可以产生正弦波、方波、三角波,通过调整外部元件可以改变输出频率,但采用模拟元器件由于元件分散性太大,因而产生频率稳定性较差,精度低,地抗干扰能力低,成本高,而且灵活心性较差,不能实现任意波形以及波形运算输出等智能化的功能。方案二:采用锁相式频率合成方案,锁相式频率合成一个高稳定度和精确度的大量离散技术,他在一定程度上解决了既要频率稳定精确又要频率在较大的范围内可调的矛

6、盾,但是频率受VCO可便频率范围的影响,高低频率比不可能做的很高,而且只能产生正弦波或方波,不能满足任意波形的要求。方案三:采用单片机和数模转换DAC0832实现波形的产生。波形的产生是通过AT89C51执行方波波形程序,向D/A转换器的输入端按一定的规律发生数据,从而在DA转换电路输出端得到相应的电压波形。在AT89C51的P1口接矩阵按键,通过软件编程来选择波形、幅值、频率,每种波形对应一个按键,此方案原理简单,实现起来比较容易。经比较,方案三能够更好的实现题目的要求,三种波形的产生可有程序控制,并通过按键选择波形的输出,在示波器上显示波形。波形的周期与频率步进也可以用程序控制,具有线路简

7、单、结构紧凑等优点。在本设计的基础上,加上LCD显示器,则可以通过按键设定波形频率,并在LCD显示频率、幅值电压。输出的波形稳定,精度高,滤波好,抗干扰效果好,连接简单,性价比高。综上所述,我们选择第三种方案。2.4显示部分方案一:数码管显示,由于本题要求实时的显示输出信号的幅度、频率,而数字不能显示字符。方案二:LED点阵显示,LED点阵显示虽然能够显示数字和字符,但是显示的效果不好,而且不易编程。方案三:LCD液晶显示,LCD液晶显示不但能显示字符和数字,而且效果较好,且容易实现。2.5按键部分方案一:采用独立按键,他的按键的数目比少,但是它的结构简单,方便操作,执行效率高等优势。方案二:

8、采用矩阵键盘,它以较少得IO口实现了按键的功能,随之其操作比较复杂。经对比,由于我们需求的按键比较少,但是对执行的效率比较高,所以采用独立按键。三、硬件电路本系统由单片机、波形转换(D/A)电路、显示接口电路、键盘电路、电源电路、串口电路等六部分组成。电路图如图3.1所示:图3硬件电路原理图3.1功能与基本原理功能:形成扫描码、键值识别、案件处理、参数设置、字符设置等形成液晶显示波形的类型及频率和幅值;通过定时器0产生定时中断,形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。AT89C51外接12M晶振作为时钟频率,并采用电源复位设计。复位电路采用上电复位,其工作原理是,当通电时,电

9、容两端相当于短路,于是TST引脚为高电平,然后对电容充电。RST端电压慢慢下降,降到一定程度,即为低电平,单片机开始工作。产生方波程序思路:对于小于100Hz的频率,根据定时器溢出时间1us,将频率值换算为定时器溢出次数,当达到规定的次数时,将输出管脚的状态取反达到方波的产生;对于大于100HZ的频率,直接根据频率值设置其定时溢出的时间,当溢出时间达到时,将输出管脚取反达到方波的产生。产生三角波程序思路:要产生峰值电压为5V的三角波,一个周期需要定时510次,由此便可以计算出每次定时溢出的时间,再将每次定时的电压加权便可以达到三角波的波形;产生正弦波程序思路:给正弦波的一个周期设定table表

10、,由20个数据,相当于每个周期定时255次,则每次定时溢出的时间便可计算出,每个点的电压加权便可得到正弦波的电压,即,形成正弦波。3.2资源分配软、硬件设计是比不可少的,为了满足功能和指标的要求,资源分配为:单片机用12MHz晶振,P0口与DAC0832相连;P1口接矩阵按键,实现频率、幅值以及波形的选择;P2口接LCD1602液晶显示器,实时显示波形的频率、幅值、类型。3.2显示接口电路功能:驱动LCd液晶显示、扫描按钮。由LCD1602液晶显示器和矩阵按键组成。当某一按键按下时,扫描程序扫描到之后,通过P2口将数字信号发送到LCD1602,LCD1602液晶专门用于显示字母、数字、符号等点

11、阵式LCD,其外接电压时5V。扫描利用软件程序实现,当某一按键按下时,扫描立即检测到,随即调用子程序,执行相应的功能。其与单片机连接如图4所示:图4显示部分电路图3.3波形转换(D/A)电路功能:将波形样值得编码转换成模拟值,完成波形的输出。由一片DAC0832和LF356运放组成。DAC0832是一个具有两个输入数据寄存器的8位DAC。目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内没有数据寄存器,输出信号随数据输入线的状态的变化而变化,因此不能直接与微型计算机接口,必须通过并行口与微型计算机接口。DAC0832是具有20条引

12、线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,股不需要外加电路。DAC0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以用运算放大器LF356实现。单片机想DAC0832发送数字编码,产生不同的输出。先利用采样定理对各种波形进行抽样,然后把各种采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表的方法依次取出,经过D/A转换后输出就可以得到波形。假如N个点构成波形的一个周期,则DAC0832输出N个样点值后,样值点形成运动轨迹,即,一个周期。重复输出N个点后,成为第二个周期。利用单片机的晶振控制输出周期的速度,也就是

13、控制输出的波形的频率。这样就控制了输出波形的及其幅值和频率,例如:正弦波,取20个样值点。具体连接的电路图如图5所示:图5D/A转换的电路连接图3.4红外电路图6红外电路红外的工作原理:51单片机对遥控的解码和我们前面所讲的串口并口通信不同,他不是单纯的用高电平代表1,低电平代表0。这一点大家要从思想上面转变过来。他是发送一连串的数据帧,这个数据帧就是一连串的二进制代码,单片机通过区分高电平的持续时间来区别红外编码的。我们就以HC6800单片机上的红外接头为例来说明,当高电平的脉冲宽度为1.12ms的时候单片机认为它为0,当高电平的脉冲宽度为2.25的时候单片机认为它为1。单片机是通过判断脉冲

14、的宽度来得到信息位为0还是为1的。当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时均是低位在前。高位在后。由图2分析可以得到引导码高电平为45ms,低电平为45ms。当接收到此码时表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种图中地址码重发了一次。主要是加强遥控器的可靠性如果两次地址码不相同则说明本帧数据有错应丢弃。不同的设备可以拥有不同的地址码因此。同种编码的遥控器只要设置地址码不同,也不会相互干扰。在同一个遥控器中所有

15、按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系则本次遥控接收有误数据应丢弃。在同一个遥控器上所有按键的数据码均不相同。在图2中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前)两者之和应为0FFH。3.5复位电路这种复位电路的工作原理是:单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电通过电阻给电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒)

16、,RC构成的微分电路在上电瞬间产生一个微分脉冲,其宽度大于两个机器周期,89C51将复位。正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,RST端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正常工作(这是单片机的上电复位,也叫初始化复位);当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作(这是手动复位原理)。图7复位电路3.6外部时钟电路图3采用11.0592MHz的晶振和两个22pf的电容组成时钟电路部分图8外部时钟电路3.7 LCD显示部分电路为了节约成本,采用1602来作为显示器,用独立按键来控制不同的显示,能完成基本的显示功能。图

17、9LCD液晶显示电路3.8电源部分本电源设计了两个接口,方便不同接口的电源接入,并且在电源部分加上滤波电容,起过滤接入电源的杂波的作用,为了电路中得到+12V、-12V和+5V的直流工作电压,用变压器变压后再通过芯片和电容设计出所需要的电路。图10电源电路3.9独立按键部分图八为用独立按键来控制不同的输出波形图11独立按键3.10串口通信模块图中通过MAX232进行TTL电平和232电平转换,从而单片机和上位机之间通信提供通道。图12串口通信电路通信电路的目的就是让通信双发的电平匹配,单片机用的是TTL电平,上位机的串口用的是232电平。TTL电平的逻辑1的电压范围是+3.3V到+5V,逻辑0

18、的电压范围是0到+3.3V;232电平的逻辑1的电压范围是-15V到-5V,逻辑0的电压范围是+5V到+15V。因此设计串口通信电路就是让这两种电平统一。四、软件设计主程序和子程序都存放在AT89C51单片机中。主程序的功能是:开机以后负责查键,即做出键盘扫描及显示工作,然后根据用户所按的键转到相应的子程序进行处理。子程序的功能有:延时子程序、中断程序、显示子程序、按键子程序,按键子程序中有任意频率的设置的数字键(09)及确定键、幅值和频率的加和减键、幅值频率的转换键、波形的转换键等共15个键。主程序的流程图如图4.1所示:完成全部硬件和软件过后,将程序下载到单片机中进行测试,通过反复测试,反

19、复的修改函数的功能,同时完善硬件的功能,使系统达到最优控制。4.1程序流程图图13程序流程图4.2 LCD显示流程图图14 LCD显示框图五、系统仿真5.1仿真电路图通过Proteus软件和电路原理图绘制出如下仿真电路图,对程序和电路功能进行测试图15 proteus仿真电路图5.2输出波形图将编写好的程序下载到单片机中进行仿真,通过反复测试,反复的修改函数的功能,使系统输出如下波形:图16正弦波图17方波图18三角波图19正弦波、方波、三角波三种波形叠加后的波形六、硬件和软件测试6.1硬件调试整个硬件调试过程基本顺利,由于采用了分单元模块制作,各个单元电路工作稳定,给调试工作带来很大的方便。

20、放大模块部分在实物模拟时,出现发送信号不稳定、跳变的问题,经过仔细的检查,电路连线路劲和线路连接问题,最终发现电路连接是出现连接未牢固的问题,从而得以解决。6.2软件调试虽然对于单片机的变成较熟悉,但是还存在一些问题,主要有以下问题:(1)在写调幅值的程序时,按照自己的想法写好,下载带单片机中,发现,每按一次键,幅值一次性增大到5V或者一次性减为0V,经过对程序的分析得知,当按下键时,程序循环很多次,为次添加一条键按下时死循环的语句使每次按下键幅值加一次后的只保持住,从而解决了问题。(2)当幅值和显示调试成功后,写调频程序时,在硬件电路中调试时发现,三种波形融合到一起出现,在经过添加定时器中断

21、的方法,结果使P0口不能够输出模拟信号,经过努力,最后终于解决了这个问题。(3)由于AT89C51本身性能的问题,而且硬件方面又没有用倍频电路,产生的三角波和方波的频率没有达到1MHz,只达到2KHz,但是方波达到了1MHz。七、设计心得本次课程设计,我系统电路的主要设计,在做课程设计的时间了我学到了很多东西,总的来说有如下收获:(1)通过对电路的设计,对51系列单片机的原理和功能有了进一步的了解,学到了更多的电路知识,如复位电路的原理,晶振电路的作用,旁路电容的作用,上拉电阻的功能,串口通信电路,熟悉了ULN2003芯片的原理和功能,认识了温湿度传感器DHT21,并且能对其进行应用。(2)通

22、过原理图和PCB图的绘制,学会了AltumDesigner软件的使用,并且能用它完成一些简单的电路设计,并且对元器件的封装有了一定的了解和认识。(3)通过元器件的购买和电路板的焊接,增强了自身的实践动手能力,对电路原理的应用有了更深刻的认识。(4)在测试阶段,尤其是在硬件电路的检查阶段,有很深的体会,有时候一个简单的错误就有可能造成电路无法正常工作,通过找错排错,更加熟悉了电路的原理和51单片机的工作原理。(5)通过本次课程设计,我更加深刻的认识到团队合作的重要性,小组成员分工合作,是设计成功的关键,只有大家团结一致,才能更快更好的完成任务,但是从本课程设计中,我也看到了自身还存在许多不足,在

23、实践动手能力方面比较弱,对一些电路知识掌握得不是很好。八、参考文献1童诗白,华成英.模拟电子技术基础M.北京:高等教育出版社,2003.345-3622潘永雄,沙河,刘向阳.电子线路CAD实用教程M.西安:西安电子科技大学出版社,2001.13-118.3张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计M.哈尔滨:哈尔滨工业大学出版社,1997.53-61九、附件程序如下:波形的发生,产生正弦波方波,方波,三角波,产生的频率要求为100HZ到20KHZ,峰峰值为5v,步进为1.1v,为了准确的确定产生频率,利用定时器1来做,用了波形的设定采用红外,波形产生是用DAC0832来产生,同

24、时采用直通的方式,数据发生过去就发生转换专心-专注-专业#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineDAC0832P2#defineLCD_DATAP0/液晶的数据端口sbitDAC0832_K1=P33;/DAC0832的控制端口sbitDAC0832_K2=P34;/为低电平时候表示导通sbitIRIN=P35;sbitLCD_RS=P30;/寄存器选择输入sbitLCD_RW=P31;/液晶读/写控制sbitLCD_EN=P32;/

25、液晶使能控制sbitK1=P13;/波形:正弦波,方波,三角波之间的转变sbitK2=P14;/频率和幅值之间转变sbitK3=P15;/缩小sbitK4=P16;/波形的存储增大sbitK5=P17;/uintTIME=0;/定时的时间uintSIN_TIME=500,SIN_VALUE=50;/输出波形的频率和周期,电压的值uintFAN_TIME=500,FAN_VALUE=50;/方波的参数uintTRIG_TIME=500,TRIG_VALUE=50;/三角波的参数uintTRIG_FRENCE=100,FAN_FRENCE=100,SIN_FRENCE=100;ucharnext=

26、0,boxing_chose=1,count=0;/用于正弦波的采样数组的移动;boxing_chose为0是正弦波,当为1时为方波,当为2是三角波ucharvaluefrenc_chose=0;ucharY0=0;/红外接收的数据ucharcodeLcd_table10='0','1','2','3','4','5','6','7','8','9'/数值表用于液晶的显示ucharIRCOM7;ucharcodeSin_table20=

27、0x80,0xa7,0xcb,0xe7,0xf9,0xff,0xf9,0xe7,0xcb,0xa7,0x80,0x58,0x34,0x18,0x6,0x0,0x6,0x18,0x34,0x58;/正弦波数据表采用的是72个点voidDelay_ms(ucharms)/延时为1msuchari=0;for(i=110;i>0;i-)for(ms;ms>0;ms-);/*/红外线高低电平的延时voiddelay(unsignedcharx)/x*0.14MSunsignedchari;while(x-)for(i=0;i<13;i+)voiddelay1(intms)unsign

28、edchary;while(ms-)for(y=0;y<250;y+)_nop_();_nop_();_nop_();_nop_();/=/液晶的显示程序/=/voidLCD_WCOM(ucharcmd)LCD_RS=0;LCD_RW=0;LCD_EN=0;P0=cmd;Delay_ms(1);LCD_EN=1;Delay_ms(1);LCD_EN=0;voidLCD_WDAT(uchardat)LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;Delay_ms(1);LCD_EN=1;Delay_ms(1);LCD_EN=0;voidLCD_INIT()LCD_WCO

29、M(0x38);/扩充指令操作Delay_ms(1);LCD_WCOM(0x0c);/基本指令操作Delay_ms(1);LCD_WCOM(0x06);/显示开,关光标Delay_ms(1);LCD_WCOM(0x01);/清除LCD的显示内容Delay_ms(1);voidDisplay()uchari,dis_table6;if(boxing_chose=0)LCD_WCOM(0x80);/显示正弦波形三个英文字母LCD_WDAT('s');Delay_ms(1);LCD_WCOM(0x80+1);LCD_WDAT('i');Delay_ms(1);LCD_

30、WCOM(0x80+2);LCD_WDAT('n');LCD_WCOM(0x80+4);/显示频率的英文LCD_WDAT('F');Delay_ms(1);LCD_WCOM(0x80+5);LCD_WDAT('R');Delay_ms(1);LCD_WCOM(0x80+6);LCD_WDAT('E');SIN_FRENCE=SIN_FRENCE;dis_table0=SIN_FRENCE/;/频率转换,方便后面的显示dis_table1=SIN_FRENCE%/10000;dis_table2=SIN_FRENCE%10000/1

31、000;dis_table3=SIN_FRENCE%1000/100;dis_table4=SIN_FRENCE%100/10;dis_table5=SIN_FRENCE%10;LCD_WCOM(0x80+7);LCD_WDAT(':');for(i=0;i<6;i+)LCD_WCOM(0x80+8+i);/显示频率LCD_WDAT(Lcd_tabledis_tablei);Delay_ms(1);LCD_WCOM(0x80+0x40+4);LCD_WDAT('V');LCD_WCOM(0x80+0x40+5);LCD_WDAT('A');

32、LCD_WCOM(0x80+0x40+6);LCD_WDAT('L');LCD_WCOM(0x80+0x40+7);LCD_WDAT(':');LCD_WCOM(0x80+0x40+8);LCD_WDAT(Lcd_tableSIN_VALUE/10);LCD_WCOM(0x80+0x40+9);LCD_WDAT(Lcd_tableSIN_VALUE%10);if(boxing_chose=1)LCD_WCOM(0x80);/显示方波形三个英文字母LCD_WDAT('s');LCD_WCOM(0x80+1);LCD_WDAT('q'

33、);LCD_WCOM(0x80+2);LCD_WDAT('u');LCD_WCOM(0x80+4);/显示频率的英文LCD_WDAT('F');LCD_WCOM(0x80+5);LCD_WDAT('R');LCD_WCOM(0x80+6);LCD_WDAT('E');dis_table0=FAN_FRENCE/;/频率转换,方便后面的显示dis_table1=FAN_FRENCE%/10000;dis_table2=FAN_FRENCE%10000/1000;dis_table3=FAN_FRENCE%1000/100;dis_t

34、able4=FAN_FRENCE%100/10;dis_table5=FAN_FRENCE%10;LCD_WCOM(0x80+7);LCD_WDAT(':');for(i=0;i<6;i+)LCD_WCOM(0x80+8+i);/显示频率LCD_WDAT(Lcd_tabledis_tablei);Delay_ms(1);LCD_WCOM(0x80+0x40+4);LCD_WDAT('V');LCD_WCOM(0x80+0x40+5);LCD_WDAT('A');LCD_WCOM(0x80+0x40+6);LCD_WDAT('L

35、9;);LCD_WCOM(0x80+0x40+7);LCD_WDAT(':');LCD_WCOM(0x80+0x40+8);LCD_WDAT(Lcd_tableFAN_VALUE/10);LCD_WCOM(0x80+0x40+9);LCD_WDAT(Lcd_tableFAN_VALUE%10);if(boxing_chose=2)LCD_WCOM(0x80);/显示三角波形三个英文字母LCD_WDAT('T');LCD_WCOM(0x80+1);LCD_WDAT('R');LCD_WCOM(0x80+2);LCD_WDAT('I'

36、);LCD_WCOM(0x80+3);LCD_WDAT(':');LCD_WCOM(0x80+4);/显示频率的英文LCD_WDAT('F');LCD_WCOM(0x80+5);LCD_WDAT('R');LCD_WCOM(0x80+6);LCD_WDAT('E');dis_table0=TRIG_FRENCE/;/频率转换,方便后面的显示dis_table1=TRIG_FRENCE%/10000;dis_table2=TRIG_FRENCE%10000/1000;dis_table3=TRIG_FRENCE%1000/100;d

37、is_table4=TRIG_FRENCE%100/10;dis_table5=TRIG_FRENCE%10;LCD_WCOM(0x80+7);LCD_WDAT(':');for(i=0;i<6;i+)LCD_WCOM(0x80+8+i);/显示频率LCD_WDAT(Lcd_tabledis_tablei);Delay_ms(1);LCD_WCOM(0x80+0x40+4);LCD_WDAT('V');LCD_WCOM(0x80+0x40+5);LCD_WDAT('A');LCD_WCOM(0x80+0x40+6);LCD_WDAT(

38、9;L');LCD_WCOM(0x80+0x40+7);LCD_WDAT(':');LCD_WCOM(0x80+0x40+8);LCD_WDAT(Lcd_tableTRIG_VALUE/10);LCD_WCOM(0x80+0x40+9);LCD_WDAT(Lcd_tableTRIG_VALUE%10);/=/按键的程序/=/voidKey()if(K1=0|Y0=1)Delay_ms(5);if(K1=0|Y0=1)boxing_chose+;/0是正弦波,当为1时为方波,当为2是三角波if(boxing_chose=3)boxing_chose=0;Y0=0;whil

39、e(K1=0);/等待按键过程的结束if(K2=0|Y0=2)Delay_ms(5);if(K2=0|Y0=2)valuefrenc_chose+;if(valuefrenc_chose=2)boxing_chose=0;/当为0时刻为幅值调节,当为1时刻为频率调节Y0=0;while(K2=0);/等待按键过程的结束if(K3=0|Y0=3)Delay_ms(5);if(K3=0|Y0=3)if(valuefrenc_chose=0)/对幅值进行调节if(boxing_chose=0)/对正弦波的幅值进行调节SIN_VALUE+;if(SIN_VALUE>=50)SIN_VALUE=5

40、0;if(boxing_chose=1)/方波的增大,步进为0.1FAN_VALUE+;if(FAN_VALUE>=50)FAN_VALUE=50;/增大到最大侯就不在增大if(boxing_chose=2)/三角波放大TRIG_VALUE+;if(TRIG_VALUE>=50)TRIG_VALUE=50;if(valuefrenc_chose=1)if(boxing_chose=0)/对正弦波的频率进行调节SIN_FRENCE=SIN_FRENCE+100;/步进100if(SIN_FRENCE>=20000)SIN_FRENCE=20000;if(boxing_chose

41、=1)/方波的频率增大,步进为100FAN_FRENCE=FAN_FRENCE+100;if(FAN_FRENCE>=20000)FAN_FRENCE=20000;/增大到最大侯就不在增大if(boxing_chose=2)/三角波频率放大步进100TRIG_FRENCE=TRIG_FRENCE+100;if(TRIG_FRENCE>=20000)TRIG_FRENCE=20000;Y0=0;while(K3=0);if(K4=0|Y0=4)Delay_ms(5);if(K4=0|Y0=4)Y0=0;if(valuefrenc_chose=0)/正弦波对幅值进行调节,缩小if(bo

42、xing_chose=0)/对正弦波的幅值进行调节SIN_VALUE-;if(SIN_VALUE<=0)SIN_VALUE=0;if(boxing_chose=1)/方波缩小FAN_VALUE-;if(FAN_VALUE<=0)/减小到FAN_VALUE=0;if(boxing_chose=2)/三角波缩小TRIG_VALUE-;if(TRIG_VALUE<=0)TRIG_VALUE=0;/减小到为0,就停在0上if(valuefrenc_chose=1)if(boxing_chose=0)/对正弦波的频率进行调节,缩小SIN_FRENCE=SIN_FRENCE-100;/步

43、进100if(SIN_FRENCE<=100)SIN_FRENCE=100;if(boxing_chose=1)/方波的频率减小,步进为100FAN_FRENCE=FAN_FRENCE-100;if(FAN_FRENCE<=100)FAN_FRENCE=100;/减小到最小侯就不在增大if(boxing_chose=2)/三角波频率缩小,步进100TRIG_FRENCE=TRIG_FRENCE-100;if(TRIG_FRENCE<=100)TRIG_FRENCE=100;while(K4=0);while(K4=0);/等待按键过程的结束voidHand_frence()i

44、f(boxing_chose=0)SIN_TIME=/SIN_FRENCE;/由于采用了34个点,每个点之间的时间就为定时时间TIME=SIN_TIME*40;if(boxing_chose=1)FAN_TIME=/FAN_FRENCE;TIME=FAN_TIME*40;if(boxing_chose=2)TRIG_TIME=/TRIG_FRENCE;TIME=TRIG_TIME*40;/TH0=(65536-TIME)/256;/时间的设定/TL0=(65536-TIME)%256;voidmain()TMOD=0x01;/采用的时定时器0TR0=1;/启用方式0TH0=(65536-TIME)/256;/时间的设定TL0=(65536-TIME)%256;ET0=1;/中断的启动,当申请的时候就发生中断IE=0x81;/允许总中断中断,使能INT0外部中断TCON=0x01;/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论