单片机课程设计---波形发生器_第1页
单片机课程设计---波形发生器_第2页
单片机课程设计---波形发生器_第3页
单片机课程设计---波形发生器_第4页
单片机课程设计---波形发生器_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、目录一、前言2二、设计要求2三、方案设计与论证33.1信号发生电路方案论证33.3显示方案论证33.4键盘方案论证4四、总体系统设计5五、单元电路设计65.1功能与基本原理65.2主板:mcs-51单片机65.3波形转换(d/a)电路75.4复位电路95.5外部时钟电路105.6 数码管显示部分电路105.7 键盘电路原理11六、系统软件136.1输出的各个波形程序146.2延时程序216.3键盘扫描程序216.4数码管显示246.5波形频率调节25七、调试结果与调试说明267.1硬件调试267.2软件调试267.3 调试结果27八、实验成果28九、总结与感想31十、参考文献32十一、附件材料

2、3311.1元器件清单3311.2实物图片3511.3程序3649一、前言波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。目前使用波形发生器大部分是利用分立元件组成的起体积大,可靠性差,准确度低。本次课程设计使用的 8051 单片机构成的发生器可产生方波、三角波、锯齿波、等多种波形,波形的周期可以用程序改变,具有线路简单、结构紧凑、价格低廉、性能优越等优点。在本设计的基础上,加上键盘控制,则可通过键盘设定所需要的波形频率。二、设计要求利用51系列单片机、数码管或点阵lcd、d/a转换器dac832等器件,设计一个简易波形发生器。该简易波形发生器具体设计要求如下

3、:(1)可以输出单极性和双极性波形。(2)输出波形形状可选。波形包括正弦波、脉冲波、方波,锯齿波等。可以通过按键选择。(3)输出频率可调,可以通过两个按键(+、-)调整。三、方案设计与论证3.1信号发生电路方案论证 方案一:通过单片机控制d/a,输出四种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。  方案二:使用传统的锁相频率合成方法。通过芯片ic145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。  方案三:利用m

4、ax038芯片组成的电路输出波形。max038是精密高频波形产生电路,能够产生准确的三角波、方波、正弦波三种周期性波形。但此方案成本高,程序复杂度高。 以上三种方案综合考虑,选择方案一。3.2单片机的选择论证 方案一:at89s52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器cpu、存储器、寄存器、i/o接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。方案二:c8051f005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与mcs-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的

5、模拟部件和其他数字外设及功能部件,而且执行速度快。但其价格较贵  以上两种方案综合考虑,选择方案一。3.3显示方案论证方案一:采用led数码管。led数码管由8个发光二极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。方案二:采用lcd液晶显示器1602。其功率小,效果明显,显示编程容易控制,可以显示字母,但价格较贵。以上两种方案综合考虑,选择方案一。3.4键盘方案论证方案一:采用独立按键,他的按键的数目比少,但是它的结构简单,方便操作,执行效率高等优势。方案二:采用矩阵键盘

6、,它以较少得io口实现了按键的功能,随之其操作比较复杂。经对比,由于我们需求的按键比较多,对执行的效率比较高,所以采用矩阵按键。四、总体系统设计该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用数码管显示电路输出数字显示的方案。将设计任务分解为按键电路、数码显示电路等模块。 总体方框图五、单元电路设计 本系统由单片机、波形转换(d/a)电路、显示接口电路、键盘电路、电源电路等五部分组。原理图如下图所示5.1功能与基本原理功能:形成扫描码、键值识别、案件处理、参数设置、字符设置等形成液晶显示波形的类型及频率和幅值;通过定

7、时器0产生定时中断,形成波形的数字编码,并输出到d/a接口电路和显示驱动电路。5.2主板:mcs-51单片机如果按功能划分,它由8个部件组成,即微处理器(cpu)、数据存储器(ram)、程序存储器(rom/eprom)、i/o口(p0口、p1口、p2口、p3口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(sfr)的集中控制方式。 软、硬件设计是必不可少的,为了满足功能和指标的要求,资源分配为:单片机用12mhz晶振,p0口与dac0832相连;p2口接矩阵按键,实现频率、幅值以及波形的选择;p0口同时接74ls374,控制数码管的显示。5.3波形转换(d/a)电路功能:将波形样值得编码

8、转换成模拟值,完成波形的输出。由一片dac0832和lm324运放组成。dac0832是一个具有两个输入数据寄存器的8位dac。目前生产的dac芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。另一类芯片内没有数据寄存器,输出信号随数据输入线的状态的变化而变化,因此不能直接与微型计算机接口,必须通过并行口与微型计算机接口。dac0832是具有20条引线的双列直插式cmos器件,它内部具有两级数据寄存器,完成8位电流d/a转换,股不需要外加电路。dac0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以用运算放大器lf356实

9、现。 单片机想dac0832发送数字编码,产生不同的输出。先利用采样定理对各种波形进行抽样,然后把各种采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表的方法依次取出,经过d/a转换后输出就可以得到波形。假如n个点构成波形的一个周期,则dac0832输出n个样点值后,样值点形成运动轨迹,即,一个周期。重复输出n个点后,成为第二个周期。5.4复位电路这种复位电路的工作原理是:单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5v的电通过电阻给电容进行充电,电容两端的电会由0v慢慢的升到4v左右(此时间很短一般小于0.3秒),rc构成的微分电路在上电瞬间产生

10、一个微分脉冲,其宽度大于两个机器周期,89c51将复位。正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,rst端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正常工作(这是单片机的上电复位,也叫初始化复位);当按下复位键时,电容两端放电,电容又回到0v了,于是又进行了一次复位工作(这是手动复位原理)。 5.5外部时钟电路 采用11.0592mhz的晶振和两个22pf的电容组成时钟电路部分 5.6 数码管显示部分电路 两个 74ls374锁存单片机p0口的信息,一个发送给数码管,控制显示数码管的位显示,另一个发送给mc1413,mc1413控制数码管的段显示。5.7

11、 键盘电路原理 在单片机应用系统中为了控制系统的工作状态,以及向系统输入数据,应用系统应设有按键或键盘,实现简单的人机会话。键盘是一组按键的组合,按键通常是一种常开型按钮开关,平时按键的两个触点处于断开状态,按下键时它们才闭合。 六、系统软件 软件设计上,根据功能分了几个模块编程。模块主要有:主程序模块、三角波模块、正弦波模块、方波模块、延时子程序模块等。显示波形模块是利用dac0832的8位特点,把波形的数据以8位数据的形势送进cpu中,只要一按键就能显示波形。void main()uint num=0; uchar state,key_rd = 0xff;led_init();tmod =

12、 0x01;/led_show(tab3,0x02);led_show(tab3,0x01);while(key_rd!=1) && (key_rd!=2) && (key_rd!=3) && (key_rd!=5) && (key_rd!=6) && (key_rd!=7)key_rd = test();state = key_rd;while(1)led_show(tab3,0x01);switch(state)case 1:dan_fb(timer);break;case 2:dan_zx(timer);br

13、eak;case 3:dan_sanj(timer);break;case 5:shuang_fb(timer);break;case 6:shuang_zx(timer);break;case 7:shuang_sanj(timer);break;6.1输出的各个波形程序void dan_fb(uchar xms) /单极性方波int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=

14、0) timer=2; else timer=timer-1;th0 = tab1xms / 256;tl0 = tab1xms % 256;shuchu(0x80);tr0 = 1;while(!tf0)tf0 = 0;led_show(tabtimer,0x02);th0 = tab1xms / 256;tl0 = tab1xms % 256;shuchu(0xff);tr0 = 1;while(!tf0)tf0 = 0;void dan_zx(uchar xms) /单极性正弦波uint i;int num; uchar key_rd = 0xff; key_rd = test();nu

15、m = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;for(i=1;i<90;i+)th0 = 0xff;tl0 = tab2xms;shuchu(total1i);tr0 = 1;while(!tf0)tf0 = 0;led_show(tabtimer,0x02);for(i=90;i>0;i-)th0 = 0xff;tl0 = tab2xms;shuchu(total1i);tr0 = 1;whil

16、e(!tf0)tf0 = 0;void dan_sanj(uchar xms) /单极性三角波uchar i;int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;for(i=0x80;(i<0xff) && (i>=0x80);i+)th0 = 0xff;tl0 = tab3xms;shuch

17、u(i);tr0 = 1;while(!tf0)tf0 = 0;led_show(tabtimer,0x02);for(i=0xff;i>0x80;i-)th0 = 0xff;tl0 = tab3xms;shuchu(i);tr0 = 1;while(!tf0)tf0 = 0;void shuang_fb(uchar xms) /双极性方波int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if

18、 (timer=0) timer=2; else timer=timer-1;th0 = tab1xms / 256;tl0 = tab1xms % 256;shuchu(0x01);tr0 = 1;while(!tf0)tf0 = 0;led_show(tabtimer,0x02);th0 = tab1xms / 256;tl0 = tab1xms % 256;shuchu(0xff);tr0 = 1;while(!tf0)tf0 = 0;void shuang_zx(uchar xms) /双极性正弦波uint i;int num; uchar key_rd = 0xff; key_rd

19、= test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;for(i=0;i<90;i+)th0 = 0xff;tl0 = tab4xms;shuchu(total1i);tr0 = 1;while(!tf0)tf0 = 0;led_show(tabtimer,0x02);for(i=90;i>0;i-)th0 = 0xff;tl0 = tab4xms;shuchu(total1i);t

20、r0 = 1;while(!tf0)tf0 = 0;/led_show(tabc,0x01);for(i=0;i<90;i+)th0 = 0xff;tl0 = tab4xms;shuchu(256 - total1i);tr0 = 1;while(!tf0)tf0 = 0;led_show(tabtimer,0x02);for(i=90;i>0;i-)th0 = 0xff;tl0 = tab4xms;shuchu(256 - total1i);tr0 = 1;while(!tf0)tf0 = 0;void shuang_sanj(uchar xms) /双极性三角波uchar i;

21、int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;for(i=0x00;i<0xff;i+)th0 = 0xff;tl0 = tab5xms;shuchu(i);tr0 = 1;while(!tf0)tf0 = 0; led_show(tabtimer,0x02);for(i=0xff;i>=0x01;i-

22、)th0 = 0xff;tl0 = tab5xms;shuchu(i);tr0 = 1;while(!tf0)tf0 = 0;6.2延时程序void delay(uint xms)uint i,j;for(i=xms;i>0;i-)for(j=50;j>0;j-)6.3键盘扫描程序uchar test()uchar temp,key=0xff;p2 = 0xfe;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)tem

23、p = p2;switch(temp)case 0xee:key = 0;break;case 0xde:key = 1;break;case 0xbe:key = 2;break;case 0x7e:key = 3;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;p2 = 0xfd;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switc

24、h(temp)case 0xed:key = 4;break;case 0xdd:key = 5;break;case 0xbd:key = 6;break;case 0x7d:key = 7;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;p2 = 0xfb;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switch(temp)case

25、0xeb:key = 8;break;case 0xdb:key = 9;break;case 0xbb:key = 10;break;case 0x7b:key = 11;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;p2 = 0xf7;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switch(temp)case 0xe7:key =

26、 12;break;case 0xd7:key = 13;break;case 0xb7:key = 14;break;case 0x77:key = 15;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;return key;6.4数码管显示void led_init()wrseg = 0;delay(1);p0 = 0x00;wrseg = 1;delay(1);wrseg = 0;wrbit = 0;delay(1);p0 = 0x00;wrbit = 1;delay(1);wrbit = 0;void led_show

27、(uchar led_tab, uchar led_num)wrbit = 0;p0 = 0x00;wrbit = 0;wrseg = 0;p0 = 0x00;p0 = led_tab;wrseg = 1;wrseg = 0;wrbit = 0;p0 = led_num;wrbit = 1;wrbit = 0;6.5波形频率调节int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0

28、) timer=2; else timer=timer-1;七、调试结果与调试说明7.1硬件调试 在把所有的器件焊接到电路板上之后,先用万用表对电路板进行检查,检查无误后再进行通电测试,经测试电路板没有问题,各个器件都能正常工作。7.2软件调试1. 输入源程序输入源程序时,应以西文方式输入字母和符号,且中文注释前要加分号。2.对源程序进行汇编和纠错 根据自动汇编提供的错误信息逐条纠正错误,直至汇编信息提示无误。 3.确定调试方案在调试程序前认真分析源程序,确定各功能程序运行的预期结果。然后结合源程序应达到的结果,通过某些关键参数和实验现象检验程序运行结果正确与否。并针对具体的分析和观察对象选择

29、较合适的调试方法。如单步运行、跟踪运行、连续运行、快速运行至光标处、设置断点等调试方法。 4.调试程序1) 调试子程序。由于程序比较多,整体调试不容易发现和改正错误,故采取子程序调试的方法,但要明确子程序的具体功能。例如:调试显示子程序时,只将显示子程序进行汇编,确认无误后单步执行,观察cpu窗口和data窗口以及code窗口相应单元的变化是否跟预期的一样。如果有问题找出问题所在。采取各个击破的方法调试好各个子程序。2)确定各子程序无误后,再调试完整的程序,要注意各子程序之间的衔接以及和主程序之间的调用和返回。运行后,观察有无显示,显示的变化过程是否正确。若运行结果不正确,首先应根据程序运行的

30、实际现象分析判断哪些因素可引起相关故障,再通过调试方法逐一认证和排除。通过反复调试,发现并排除软件与硬件存在的各类问题,以满足系统设计的预期目的。 7.3 调试结果在最后综合调试的时候,出现了一个问题,在高频率的时候,数码管能正常显示输出波的频率,但是在当调低波形的频率时,数码管开始闪烁,且频率越低闪烁的越厉害。经过思考和检查程序,发现原来是延时时间设的太长,数码管刷新时间太长,没达到人眼视觉暂留效果。后来把延时时间改短之后这个问题就解决了。 八、实验成果 单极性方波 单极性正弦波 单极性三角波 双极性方波 双极性正弦波 双极性三角波九、总结与感想经过将近一周的课程设计,终于完成了我们的简易波

31、形发生器的设计,基本达到设计要求,从心底里来说,还是很高兴的。但高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。通过这次的课程设计,让我真正的认识到课程设计的重要性,

32、不但可以通过具体课题的设计工作学习到相关的新知识,而且可以课堂上所学习的知识用于实践。当在实际运用单片机的时候,才发现原来自己所学的知识并不熟悉,运用起来更是生疏,没有实现学以致用的目的,而且还发现了原来很多存在的疏忽,如简单的指令一直都用错了。这次波形发生器的课程设计基本运用了单片机学习中的很多知识,如单片机的结构及基本原理,指令系统和c语言程序设计,d/a转换接口技术等等。电路设计和程序设计都 参考了教材上的实例,但是在实际仿真的过程中却发现有些不妥只处,不能实现预期的结果,这样也提醒了自己书本不一定都是对的,所学的知识必须要充分理解再加以灵活的运用,更要注意具体问题具体分析解决。此外,通

33、过实际的仿真操作,更加熟悉了proteus 、keil和protel dxp软件的操作流程,为以后的更好地学习和运用创造了条件。要设计一个成功的电路,必须要有耐心,在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。同时在本次设计过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求我们应更加注重实践环节。十、参考文献单片

34、机原理与接口技术,李升主编,北京大学出版社,2011年单片机原理及应用实验指导书,屈波等编,2012年微处理器综合实训系统模块化设计戴建 编 2012年单片机原理及应用,赵德安等编,机械工业出版社,2009年十一、附件材料11.1元器件清单波形发生器电路(数码管)元件清单序号名称规格封装数量1插座双排针idc1012插头座4脚*5mmmkds15_4rmi13插头座2.54mm*4(4针)sip414按键12*12key12175跳线插针,短路棒sip216晶振11.0592mhzxtal-117发光二极管红色(3mm)led0.118二极管in4148diode-0.319电阻1kaxial

35、0.3110电阻10kaxial0.3111电阻20kaxial0.3112排阻4k7-8sip9113排阻2k2-8sip9114排阻4k7-4sip5115电容30p(22p)cap0.2216电容104cap0.2517电容10ufrb-.1/.2118电容100ufrb-.1/.2119集成电路at89s52dip40120集成电路74ls374dip20221集成电路dac0832dip20122集成电路lm324dip14123集成电路mc1413dip16124数码管红色0.5英寸sm4205625集成插座14pdip14126集成插座16pdip16127集成插座20pdip2

36、0328集成插座28pdip28129集成插座40pdip40211.2实物图片11.3程序#include<reg52.h>#include<math.h>#define uchar unsigned char#define uint unsigned intsbit wrseg = p35;sbit wrbit = p34;sbit sl0832 = p32;sbit wr0832 = p33;uchar timer = 0;uchar a,b,c;uchar code tab = 0x6d,0x4f,0x5b,0x3f,0x06,0x66,0x7d,0x07,0x

37、7f,0x6f;uchar code total1 = 128,130,132,135,137,139,141,143,146,148, 150,152,154,156,159,161,163,165,167,169, 171,173,175,178,180,182,184,186,188,189, 191,193,195,197,199,201,203,204,206,208, 210,211,213,215,216,218,219,221,222,224, 225,227,228,229,231,232,233,234,236,237, 238,239,240,241,242,243,24

38、4,245,246,247, 247,248,249,249,250,251,251,252,252,253, 253,253,254,254,254,254,255,255,255,255, 255;uint tab1 = 55536,50384,40536; /定时器初值uchar tab2 = 0xa5,0x6a,0x03; /单正弦波定时器初值uchar tab3 = 0xbc,0x96,0x4f; /单三角波定时器初值uchar tab4 = 0xdb,0xc0,0x8a; /双正弦波定时器初值uchar tab5 = 0xe2,0xce,0xa7; /双三角波定时器初值void d

39、elay(uint xms); /延时函数申明void shuchu(uchar v) sl0832 = 0;wr0832 = 0;p0 = v;sl0832 = 1;wr0832 = 1;void led_init()wrseg = 0;delay(1);p0 = 0x00;wrseg = 1;delay(1);wrseg = 0;wrbit = 0;delay(1);p0 = 0x00;wrbit = 1;delay(1);wrbit = 0;void led_show(uchar led_tab, uchar led_num)wrbit = 0;p0 = 0x00;wrbit = 0;w

40、rseg = 0;p0 = 0x00;p0 = led_tab;wrseg = 1;wrseg = 0;wrbit = 0;p0 = led_num;wrbit = 1;wrbit = 0;uchar test()uchar temp,key=0xff;p2 = 0xfe;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switch(temp)case 0xee:key = 0;break;case 0xde

41、:key = 1;break;case 0xbe:key = 2;break;case 0x7e:key = 3;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;p2 = 0xfd;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switch(temp)case 0xed:key = 4;break;case 0xdd:key = 5;bre

42、ak;case 0xbd:key = 6;break;case 0x7d:key = 7;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;p2 = 0xfb;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switch(temp)case 0xeb:key = 8;break;case 0xdb:key = 9;break;case 0xbb

43、:key = 10;break;case 0x7b:key = 11;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;p2 = 0xf7;temp = p2;temp = temp & 0xf0;if(temp != 0xf0)delay(10);temp = p2;temp = temp & 0xf0;if(temp != 0xf0)temp = p2;switch(temp)case 0xe7:key = 12;break;case 0xd7:key = 13;break;case 0xb7:key = 1

44、4;break;case 0x77:key = 15;break;while(temp != 0xf0)temp = p2;temp = temp & 0xf0;return key;void delay(uint xms)uint i,j;for(i=xms;i>0;i-)for(j=110;j>0;j-)void dan_fb(uchar xms) /单极性方波int num; uchar key_rd = 0xff; key_rd = test();num = key_rd;if (num=11) if (timer=2) timer=0; else timer=timer+1;if (num=15) if (timer=0) timer=2; else timer=timer-1;th0 = tab1xms / 256;tl0 = tab1xms % 256;shuchu(0x80);tr0 = 1;while(!tf0)tf0 = 0;led_

温馨提示

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

评论

0/150

提交评论