有没有谁知道这种单键学习遥控接器用的是什么芯片,电路如何,谢谢了,卖成品好贵……

6515人阅读
硬件设计(9)
迟迟没写实践篇的教程,是因为操作类的东西,很难用文字来表达。那只能把最关键的口诀写下来,让大家在实践中体会了。
那么,一般缺乏经验的工程师或者学生,拿着一个项目任务书,或者一个成品的电路板的时候,往往会感觉到,根本无从下手。主要原因是,知识储备不足,少实践少动手。
但也不用着急,这是需要慢慢积累的。同样,不用担心东西太多,不知道学到什么时候才能独当一面,因为很多东西都是相通的。
下面介绍硬件设计的实践路线。
一、初级实践篇。
首先看一下。我当年也是看了他的视频才学会焊接的。
关键的地方视频中也会提到,这里大概地说一下(洞洞板的焊接就不说了)。
拖焊的时候,先对齐芯片,再上锡固定一个角,然后在另一侧加满锡,最后整个芯片都加满锡。把板子拿起来,倾斜30度左右,再用烙铁加热,把变成液体的锡吸起来,甩掉,直到把所有锡都吸走为止。烙铁的温度要调好,我一般用350摄氏度。重点要体会,锡变成液体的时候,会像水一样受重力作用向下流,还有,烙铁头表面是有吸力的,所以在整个焊接过程中,都不要用力刮锡的。如果焊的时候,操作起来不顺手,可以转动板子。
关于BGA的焊接,一般是不建议手工操作的,因为成功率不高,推荐用返修台。这里说一下BGA手工植球的操作流程。
先用万能植锡钢网(这是最落后的工具,除此之外还有植锡台,不过挺贵的),跟BGA对齐,再用胶布把BGA和钢网粘住固定好。先加锡膏,再用风枪吹一会(风枪的风速和温度可以调低一点),锡变亮的时候,再用手术刀,把多余的锡刮走。如果锡球不均匀的话,再重复上一步,直接锡球均匀为止。撕掉胶布,用手术刀把BGA撬起来。
2、仪器仪表的使用。
a、万用表。为什么起这个名字?因为对于高手来说,万用表是几乎是万能的。一般也是用它来测电压、电流和电阻。
b、示波器。现在都用数字示波器,一个auto键,可以轻松搞定,而且还带FFT的功能,可以使用频域分析法,是硬件工程师必须掌握的神兵利器。示波器还有个小众的功能,就是李沙育图(测相位差和测频率用的)。此外,还要学会用示波器测开关电源纹波。
c、数字电桥,也叫LCR、LCZ测试仪。用它可以测电感值、电容值、电阻值、Q值、D值等,精度比一般的万用表要高。
d、信号发生器,也叫函数信号发生器。可以输出正弦波、方波、三角波、已调信号。用法比较简单,但是射频信号发生器,就要注意了,在输出信号之前,一定要做好阻抗匹配,不然信号反射的话,有可能会损坏信号发生器。
f、频率计。用法比较简单,不再多说了,有的信号发生器还增加了频率计的功能。
g、矢量网络分析仪,也叫网分仪。用于测量射频电路的S参数矩阵,还可以显示史密斯圆图。每次使用之前都要校正一下频率点。
h、频谱仪。也就看一下频谱,也有示波器的功能。
还有一些小众仪器就不说了,像漏电流测试仪、电表等。
首先肉眼观察一下板子,看有没有虚焊、短路或者缺少元件。有就修,没有就下一步。
然后用万用表测一下各组电源,看有没有短路。有就修,没有就下一步。
给板子上电,看各组电源电压是否正常。有就修,没有就下一步。
到了这一步,你必须对板子的整体设计有一定的认识,或者你得背下前辈们的经验(背经验的往往觉得硬件很神秘,这是我不推荐的做法),不然没法修好。先对板子的各个功能分好模块,从现象判断哪个模块出问题,断开可疑的模块,来排除可疑点(像侦探一样)。有一块好板的话,就很好办,直接对照着测各元件的电压(或者对地的电阻值)就能解决了。用万用表只能解决一些简单的问题,要想彻底修好,手上一定要有示波器,因为像晶振受到干扰之类的,用万用表是测不出来的。
调试,一般是自主设计的电路,没经过验证,需要自己去验证,这是非常需要扎实的理论基础。调试也是硬件工程师最容易累积经验、含金量最高的技能之一。如果前期遇到棘手的问题,可以暂时先放下,等后来水平再高一层,就会解决的了,所以千万不要钻牛角尖,这只会浪费更多的时间。调试的技巧需要长时间的积累,放在前面,是让大家有所重视。
调试方法,多种多样,视情况而定,不能一概而论,笔者总结了以下几个方法:
a、示波器测量。当然,首先你得清楚你设计出来的电路,会出什么样的波形,才知道测出来对不对,也就是说,理论不行的,根本无法调试。
b、对照验证过的电路。如果手上有一块好板,而需要调试的电路里面刚好有好板的电路,可以拿好板来飞几根线验证一下,排除可疑点,这里跟维修的方法一样。
c、仿真。其实在设计电路的时候,能仿真就先仿真了,如果实物做出来,还是有问题,也可以仿真一下。如运放电路的参数、不确定的电阻串并联等等。
d、镊子短路。在你怀疑时钟是不是干扰到其它信号的时候,可以用镊子把时钟引脚跟地短路(只要是弱信号,跟地短接一会都不会烧板子的,放心),以排除可疑点。还有复位的问题,也可以用这个方法。
e、信号发生。比如一个运放电路,输入和输出均受干扰了,那么你就可以用信号发生器或者开发板,来输出一路干净的信号,这样可以排除可疑点。
f、软件调试。如果板子上,有CPU就可以用串口调试,有FPGA就可以用嵌入式逻辑分析仪,这样可以确定是芯片内部还是外部的问题。
g、观察现象。信号都在板子上跑了,直接观察是观察不出来的,这个时候,可以引出信号线,接在可观察的设备上。如:调试音频放大器的时候,就可以接一路信号,到一个现成完好的功放上面,通过听声音来观察现象。当然,你可不要只想到功放,还有其它可观察的设备或者元件,像LED灯、显示器,甚至是收音机,只要能派得上用场的都可以。
二、中级实践篇。
1、仿真软件的使用。
常用的仿真软件也就那几个,proteus、multisim、labview、pspice、ADS、saber等,其中大多数是用spice仿真模型。
a、proteus。这个软件很适合仿真单片机,元件库也挺多的,但是有个致命的缺点,就是太智能了。单片机不接电源、不接晶振也能正常工作,这跟实际有很大出入,所以笔者建议学单片机,还是用开发板吧。
b、multisim。这个软件很适合仿真模拟电路,其实它本质是spice仿真,只是界面做得简单很多,适合初学者使用。虽然有8051的库,但是,不适合仿真单片机,仿真起来很慢。元件库其实并不多,像0805的三极管,它都没有,这时候只能用其它的三极管(2N2222等)代替一下,要不,就自己做这个元件库。multisim还可以跟ultiboard配合使用,实际板级仿真(连同PCB,一起仿真)。
c、labview。这个软件功能非常强大,可以仿真模拟、数字电路、也可以做上位机(如:虚拟仪器等)。最具特色的,就是图形化输入,鼠标施几个东西就 可以仿真了。
d、pspice。这个软件是cadence或者叫SPB开发套件中的一个软件,一般是在capture中调出来的。使用capture就可以不用输入spice的点命令,非常方便。其中,pspice的图表要比multisim的要好看一些,比如,测几个节点的电压,在pspice一张图就看得很清晰了。
e、ADS。这个ADS是指Agilent的Advanced.Design.System,而不是指ARM编译器ADS1.2。ADS可是电路仿真的神器啊,功能非常强大,一般是仿真高频、射频、微波电路用的,当然,集总参数电路也照样可以仿真,但是不太适合初学者。
f、saber。这个软件是专门仿真电源电路用的,笔者暂时没用过,不做评价。
2、电路设计软件的使用。
主流的电路设计软件有三个:altium designer、PADS、Cadence,当然还有些小众的,像eagle。这里只介绍主流的三款软件。
altium designer(简称AD),以前的版本是protel 99se,protel DXP,用法都大同小异,很适合初学者使用,3D渲染效果最好,同时也是学校里教得最多的软件。但是,很多公司反而不用这软件,因为用它画多层板的话,电脑会很卡,而且公司里面用的人多的话,可能会收到altium的律师函。可以用它来做FPGA开发,并进行板级仿真。适用于小规模的PCB。
PADS,以前的版本是power PCB,分成三个组件:logic(原理图)、layout(布局和设置规则)、route(布线),最具特色的功能是:使用极坐标放置元件和自动布线(这个自动布线可没有AD那么烂)。适用于中小规模的PCB,但是logic相当不好用,所以有些人用orcad+PADS来弥补这个缺点。适用于中小规模的PCB。
Cadence(也叫SPB)是个系统级的套件,除了画原理图、PCB之外,还可以画版图、仿真电路、仿真SI/PI等。Cadence公司收购了orcad,目前画原理图的是用capture(也叫),画PCB是用allegro,仿真电路的是pspice(从capture里面调出来的),仿真SI/PI的是Sigrity(需要另外安装)。用capture画原理图是非常爽的,比如,画个芯片的原理图库,你可以用excel写好(引脚号和部分引脚名,像D0~D7,鼠标拖一下就出来了),然后copy到capture里面,再做少量的调整就可以了。但是用allegro画封装就比较烦琐,需要事先画好焊盘,才可以画封装。适用于中大规模的PCB。
3、其它软件的使用。
画板框用的autoCAD、画3D封装的solidworks或者pro-e、科学计算的MATLAB。
autoCAD的基本用法还是比较简单的,在有人教的情况下,半小时可以入门,对于硬件工程师来说就画一下板框,保存为DXF格式,再导入到PCB设计软件。同时,DXF也是硬件工程师与结构工程师交互的文件格式。
相对于pro-e来说,solidworks更加易学易用。用这两个软件都可以画元器件的3D封装,再把PCB导出为stp格式放到solidworks当中,这样,还没打板就可以看到整机的效果图了。学3D软件还有个好处,让你更清楚板子安装的情况,像定位孔、插座、接线等,这样设计出来的PCB不容易因为结构问题而无法安装,这是很多硬件工程师容易忽略的地方。
MATLAB,任何的计算,都可以用它。简单的计算,像电阻分压、滤波器的截止频率等,复杂一点,像定向耦合器的参数计算、复杂运放电路的建模等,用MATLAB都可以轻松解决。这里还推荐一个。
三、进阶中级实践篇。
1、基本电路单元的计算、仿真与验证。
诚然,不管一块电路板有多复杂,都可以按照功能来划分为若干个模块,而这些模块还可以再划分为众多的电路单元。所以,首先要掌握最基本的电路单元的设计。这些电路单元,都可以在数电、模电、电力电子技术、高频电子线路、单片机、电子测量技术当中学到,先搞懂教课书上经典电路的计算、仿真与验证。不要以为书上的公式简单,但是实际操作起来,又是另一回事。比如,书上的反相放大电路,是双电源的,用单电源就要加偏置,还得考虑带宽增益积、摆率等。这里主张先计算,再仿真,后实物的操作流程,同时,这也是一个需要长期累积的过程。
2、掌握单片机。可以参考本博客中的《》。
3、芯片的使用与互连。
在理论篇里面没有写到电子专业英语,在这里就要用到专业英语了,你可以看英语教材,也可以用翻译软件。这里必须提到的一点是:英语不好导致无法阅读的,都无法做电路设计。因为你总得会用到一块陌生的芯片,总会遇到没中文资料的情况。基本上能看懂datasheet的,都能把芯片用起来,其实也是抄datasheet上面的参考电路的,剩下的,就是芯片互连。
芯片互连,就是接口技术,也是单片机里面会讲到的。5V的ADC跟3.3V的单片机互连,这就要看电平、和信号的传输速率了。3.3V单片机跟12V开启电压的MOS管互连,加个三极管,做电平转换就可以了。两块3.3V单片机IO口推挽输出互连,串个100R电阻,防止代码操作不当而烧坏IO口。
此外,还要掌握常用的总线协议。比如RS233、RS485、SPI、IIC、CAN、LIN、zmodem、USB、PCIE、TCP/IP等。
四、高级实践篇。
在这里,相信你已经把一些基本电路,熟捻于心,也会分析一些简单的电路。但是,你总会遇到一些奇葩的现象。没错,你是时候要考虑SI、PI、EMC、EMI了。不要被这些貌似很高端的名词吓倒,分析起来,也是前面学到的电路原理,只是考虑问题的角度不同罢了。
1、SI,信号完整性。这部分的内容对PCB的布局、布线影响较大。
a、使用阻抗匹配减弱过冲、下冲、振铃的影响(某些射频电路也对阻抗有要求,如:天线等)。
b、差分线应该尽量靠近以减少差模干扰。
c、去耦电容要尽量靠近芯片的电源管脚。
d、继电器等大功率器件应该远离晶振等易被干扰的元件。
e、对重要的信号线,包地。
f、尽量远离时钟线(时钟也可能成为干扰源)。
g、信号线的返回路径应该尽量短。
信号完整性要注意的地方,还是挺多的,具体可以参考王剑宇的《高速电路设计实践》。
2、PI,电源完整性。要保证电源的完整,就是防止电源电压的波动,具体可以参考本博客的《》。
3、EMC/EMI,电磁兼容性和电磁干扰。这两个名词看起来有点高大上,其实就是不干扰别人和防止被别人干扰的问题。EMC/EMI的问题可以归结为SI的问题,但是EMC有一套验证的标准,所以还是起了不同的名字。
推荐《Cadence高速电路设计:Allegro Sigrity SI/PI/EMC设计指南》。
五、总结。
1、千万不要以为把某些口诀当秘笈地记下来,就以为练成了神功,这都是不现实的。前期的学习都必须以理论为核心,少量的实践以帮助理解理论,后面就可以逐渐增加实践,理论和实践是相辅相成,缺一不可的。
2、当硬件电路出了问题,工程师每一步的操作,都是以理论作为指导思想的。
3、千万不要害怕出错而不敢做板。硬件工程师都是不断地犯错、改正、总结,才慢慢地成熟起来,减少犯错的概率。不知道错的话,也意味着不能积累经验。
4、本文没有提及生产、测试方面的问题,如:线材、PCBA、、、测试夹具等。
5、因为大多数的电路功能都依靠于芯片来实现,画原理图几乎都是抄datasheet的,所以硬件工程师最具含金量的技能是PCB和调试能力。
6、因为硬件工程师也常常需要和软件工程师交流,所以,为了方便交流,你还得学习ARM、FPGA、DSP等相关知识,只是侧重点有所不同而已,不然会给工作上带来一定的麻烦。单片机红外遥控器设计
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
单片机红外遥控器设计
  红外线遥控是目前使用很广泛的一种通信和遥控技术。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可*而且能有效地隔离电气干扰。
&& 红外线是太阳光线中众多不可见光线中的一种,由德国科学家霍胥尔于1800年发现,又称为红外热辐射,他将太阳光用三棱镜分解开,在各种不同颜色的色带位置上放置了温度计,试图测量各种颜色的光的加热效应。结果发现,位于红光外侧的那支温度计升温最快。因此得到结论:太阳光谱中,红光的外侧必定存在看不见的光线,这就是红外线。也可以当作传输之媒界。 太阳光谱上红外线的波长大于可见光线,波长为0.75~1000&m。红外线可分为三部分,即近红外线,波长为0.75~1.50&m之间;中红外线,波长为1.50~6.0&m之间;远红外线,波长为6.0~l000&m 之间。
真正的红外线夜视仪是光电倍增管成像,与望远镜原理全完不同,白天不能使用,价格昂贵且需电源才能工作。
【红外遥控系统】
   通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
图1a《红外发射原理图》
图1b 《红外接受原理图》
【遥控发射器及其编码】
   红外遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
  采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的&0&;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的&1&,其波形如图2所示。
  上述&0&和&1&组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示,连发波形如图4所示。
  UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。
  当遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制&0&和&1&的个数不同而不同,大约在45~63ms之间,图4为发射波形图。
  当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。
 代码格式(以接收代码为准,接收代码与发射代码反向)
  ① 位定义
  ② 单发代码格式
       
  ③ 连发代码格式
  注:代码宽度算法:
  16位地址码的最短宽度:1.12&16=18ms 16位地址码的最长宽度:2.24ms&16=36ms
  已知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)&8=27ms
  ∴ 32位代码的宽度为(18ms+27ms)~(36ms+27ms)
  1. 解码的关键是如何识别&0&和&1&,从位的定义我们可以发现&0&、&1&均以0.56ms的低电平开始,不同的是高电平的宽度不同,&0&为0.56ms,&1&为1.68ms,所以必须根据高电平的宽度区别&0&和&1&。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为&0&,反之则为&1&,为了可*起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为&0&,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可*,一般取0.84ms左右均可。
  2. 根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。
【红外遥控解码实验硬件】
  一体化红外线接收器是一种集红外线接收和放大整形于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积又很小巧,它适合于各种红外线遥控和红外线数据传输,广泛用于电视机、卫星接收机、VCD、DVD、音响、空调等家用电器中接收红外信号,图5是一体化接收头的引脚排列图,图6是本站产品配套的采用屏蔽线焊接的一体化红外接收头,采用屏蔽线焊接,抗干扰能力强,接收更可*。没有购买实验板配套的一体化红外接收头的网友可以根据图2所示接收头引脚排列图自己焊接一个。
图5:一体化红外接收头
(引脚排列图)
图6:本站产品配套一体化红外接收头(已经用屏蔽线焊接好,抗干扰能力强,插入实验板即可使用)
  下面就是我们将要进行红外遥控解码实验所要用到的硬件设备:S51增强型实验板、ISP编程器、AT89S51实验芯片、豪华型多功能红外线遥控器。
图7:S51增强型单片机实验板及防插反红外遥控接口
图8:豪华型多功能红外遥控器 + 高灵敏度一体化红外接收头(23元)
图9:32键豪华型红外遥控器原理图
图10:ISP编程器烧写实验单片机芯片AT89S51
【红外遥控解码实验】
  我们经过对前面的遥控编解码知识的学习,对红外遥控有了基本的了解,下面我们马上进行解码实验。本红外遥控解码实验的的功能是:程序对遥控器发射的遥控码进行解码,解码成功时蜂鸣器发出&嘀嘀&的解码成功提示音,如果按压的是数字键&0~9&就将按键值在实验板上的5位数码管上显示出按键值,同时将按键的十六进制值用P1口的8位发光二极管指示出来;如果按压的不是数字键&0~9&,就直接从P1口输出键值;下面是遥控解码汇编源程序。
  实验时将先连接好硬件设备,将配套的一体化红外遥控接收头插入实验板上的&红外遥控&接口内,在Keil单片机集成开发环境中新建工程,通过Keil将源程序编译得到HEX格式目标文件yk.hex,最后使用ISP编程器将目标文件烧写到AT89S51单片机中,插到S51增强型实验板上运行,拿出配套的红外遥控器进行解码测试,看看实验结果是否和程序相同。。。
  &&& 点此下载HEX格式目标文件 yk.hex &&&
  &&& 点此下载遥控解码源程序和Keil工程文件 &&&
    ORG   0000H
MAIN:  MOV   SP,#60H
    MOV   P0,#0FFH
    MOV   P1,#0FFH
    MOV   P2,#0FFH
    MOV   P3,#0FFH
    JNB   P3.2,$    ;等待遥控信号出现
    MOV   R6,#10
SB:   ACALL  YS1      ;调用882微秒延时子程序
    JB   P3.2,MAIN   ;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
    DJNZ  R6, SB    ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
               ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
    JNB   P3.2, $    ;等待高电平避开9毫秒低电平引导脉冲
    ACALL  YS2      ;延时4.74毫秒避开4.5毫秒的结果码
    MOV   R1,#1AH    ;设定1AH为起始RAM区
    MOV   R2,#4
PP:   MOV   R3,#8
JJJJ:  JNB   P3.2,$    ;等待地址码第一位的高电平信号
    LCALL  YS1      ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
    MOV   C,P3.2    ;将P3.2引脚此时的电平状态0或1存入C中
    JNC   UUU      ;如果为0就跳转到UUU
    JB   P3.2,$    ;如果为1就等待高电平信号结束
UUU:   MOV   A,@R1     ;将R1中地址的给A
    RRC   A       ;将C中的值0或1移入A中的最低位
    MOV   @R1,A     ;将A中的数暂时存放在R1中
    DJNZ  R3,JJJJ    ;接收地址码的高8位
    INC   R1      ;对R1中的值加1,换成下一个RAM
    DJNZ  R2,PP     ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
               ;以下对代码是否正确和定义进行识别
    MOV   A,1AH     ;比较高8位地址码
    XRL   A,#B ;判断1AH的值是否等于,相等的话A为0
    JNZ   MAIN     ;如果不相等说明解码失败退出解码程序
    MOV   A,1BH     ;比较低8位地址
    XRL   A,#B ;再判断高8位地址是否正确
    JNZ   MAIN     ;如果不相等说明解码失败退出解码程序
    MOV   A,1CH     ;比较数据码和数据反码是否正确?
    CPL   A
    XRL   A,1DH     ;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确
    JNZ   MAIN     ;如果不相等说明解码失败退出解码程序
    LCALL  SOUND     ;解码成功,声音提示
    MOV   A,1AH
    CPL   A
    MOV   P1,A     ;遥控码十六进制值通过P1口LED显示出来
;-------- 下面为0~9键码判断并在实验板的5位数码管中显示键值 --------
JZPD:  MOV   A,1AH
IRD0:  CJNE  A,#00H,IRD1  ;按键&0&判断显示
    MOV   P0,#0C0H
    MOV   P2,#B
    AJMP  MAIN
IRD1:  CJNE  A,#01H,IRD2  ;按键&1&判断显示
    MOV   P0,#0F9H
    MOV   P2,#B
    AJMP  MAIN
IRD2:  CJNE  A,#02H,IRD3  ;按键&2&判断显示
    MOV   P0,#0A4H
    MOV   P2,#B
    AJMP  MAIN
IRD3:  CJNE  A,#03H,IRD4  ;按键&3&判断显示
    MOV   P0,#0B0H
    MOV   P2,#B
    AJMP  MAIN
IRD4:  CJNE  A,#04H,IRD5  ;按键&4&判断显示
    MOV   P0,#99H
    MOV   P2,#B
    AJMP  MAIN
IRD5:  CJNE  A,#05H,IRD6  ;按键&5&判断显示
    MOV   P0,#92H
    MOV   P2,#B
    AJMP  MAIN
IRD6:  CJNE  A,#06H,IRD7  ;按键&6&判断显示
    MOV   P0,#82H
    MOV   P2,#B
    AJMP  MAIN
IRD7:  CJNE  A,#07H,IRD8  ;按键&7&判断显示
    MOV   P0,#0F8H
    MOV   P2,#B
    AJMP  MAIN
IRD8:  CJNE  A,#08H,IRD9  ;按键&8&判断显示
    MOV   P0,#80H
    MOV   P2,#B
    AJMP  MAIN
IRD9:  CJNE  A,#09H,IRDOR  ;按键&9&判断显示
    MOV   P0,#90H
    MOV   P2,#B
    AJMP  MAIN
IRDOR: MOV   P2,#0FFH     ;关闭数码管使能。&0~9&以外的非数字功能按键键值不采用数码管显示,直接从P1口输出键值
    AJMP  MAIN
YS1:   MOV   R4,#19 ;延时子程序1
D1:   MOV   R5,#18
    DJNZ  R5,$
    DJNZ  R4,D1
    RET
YS2:   MOV   R4,#10 ;延时子程序2
D2:   MOV   R5,#216
    DJNZ  R5,$
    DJNZ  R4,D2
    RET
SOUND: MOV   R7,#228 ;音效延时子程序
SDL1:  CPL   P3.7
    MOV   R6,#0FFH
SDL0:  DJNZ  R6,SDL0
    DJNZ  R7,SDL1
    RET
  把上面程序写入at89S51单片机中,一个简单的单片机红外遥控器设计就完成了哈哈,是不是很有兴趣了,通电后,按压遥控器上的0~9按键,则实验板上的数码管上就显示出对应的按键值,同时解码成功后发出声音指示。。。
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网 51hei.com , All Rights Reserved

我要回帖

 

随机推荐