单片机课程设计学习型红外遥控器的设计.doc

上传人:土8路 文档编号:10498720 上传时间:2021-05-20 格式:DOC 页数:19 大小:506KB
返回 下载 相关 举报
单片机课程设计学习型红外遥控器的设计.doc_第1页
第1页 / 共19页
单片机课程设计学习型红外遥控器的设计.doc_第2页
第2页 / 共19页
单片机课程设计学习型红外遥控器的设计.doc_第3页
第3页 / 共19页
单片机课程设计学习型红外遥控器的设计.doc_第4页
第4页 / 共19页
单片机课程设计学习型红外遥控器的设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《单片机课程设计学习型红外遥控器的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计学习型红外遥控器的设计.doc(19页珍藏版)》请在三一文库上搜索。

1、河南大学物理与电子学院学习型红外遥控器的设计河南大学物理与电子学院电子开放实验室目 录1 设计要求及原理12 方案论证与对比22.1 方案一 简易红外遥控电路22.2 方案二 利用STC68C52单片机控制电路22.3 方案对比与选择33 遥控器硬件与程序设计33.1 遥控器硬件结构组成33.2 系统硬件电路设计43.3 初始化程序43.4遥控器读入程序处理53.5 遥控码发送处理程序63.6主程序63.7 程序延时64 系统功能调试及整体指标分析64.1程序调试64.2整体指标分析75 详细仪器清单96总结、思考与致谢9附录1:单键学习型红外遥控器原理图(proteus仿真):11附录2:单

2、片机C源程序:12学习型红外遥控器设计1 设计要求及原理利用单片机作为控制核心,要求可以学习不同遥控器的某个按件功能。使用时先用原遥控器对着学习器按一下某操作键,学习器就可实现原遥控器中该键的遥控功能。具体要求如下:基本部分:(1)最大学习码长:206位。(2) 学习码识别范围:起始位为15us983ms,编码位为15us3.825ms。(3) 读码误差:15us。扩展部分:学习型红外遥控器在按下K键待绿色指示灯亮后,用遥控器对着红外接收头按下某个功能键,当绿灯灭说明学习完毕,再按发射键就可以进行遥控操作。当红外遥控器的某个按键按下时,发射出一组串行二进制遥控编码脉冲。该脉冲由引导码、系统码、

3、功能码和反码组成,通过设置这些编码以及码长便可区分不同的红外遥控器。红外接收器负责红外信号的接收和放大并解调出TTL电平信号送至微处理器进行处理,微处理器通过比较和识别接收来的红外遥控编码便可执行相应的遥控功能1。本系统的设计思想是不考虑红外编码方式,仅利用单片机AT89C52对多个红外遥控编码的脉冲宽度进行测量,并原封不动地把发射信号中高、低电平的时间宽度记忆至扩展存储区的指定地址。当要发射红外信号时,从扩展存储区中还原出相应的红外遥控编码,并调制到40KHz的载波信号上,最后,通过三极管放大电路驱动红外发光二极管发射红外信号,达到学习和发射的目的,从而实现一个遥控器控制多种红外遥控设备。2

4、 方案论证与对比2.1 方案一 简易红外遥控电路在不需要多路控制的应用场合下,可以使用由常规电路组成的单通道红外遥控电路1。这中遥控电路不需要使用较贵的专用便译码器,因此成本较低。产生震荡频率红外发射红外接收解调控制受控电器 图 1方案一系统方框图考虑到本方案电路是简单的单通道控制器,可直接产生一个控制功能的震荡频率,再通过红外发光二极管发射出去。当红外接收头接收到控制频率时,由一个电路对其进行产生相应的控制功能。2.2 方案二 利用STC89C52单片机控制电路用单片机制作一个红外遥控器,并可通过程序控制记忆按键功能,达到学习记忆功能。控制器STC89C52红外线发射电路红外线接收解码器学习

5、指示灯遥控指示灯操作键图 2 方案二系统方框图当按下遥控器按钮时,单片机产生相应的控制脉冲,由红外发光二极管发射出去。当红外就收器接收到控制脉冲时,经单片机处理由显示设备显示出当前受控电器的序号,并判断是否对某一功能进行的操作。2.3 方案对比与选择以上方案:方案一未采用单片机,功能过于单一,仅能对一路电器进行简单遥控;方案二不仅可以用控制按键实现对电器的控制,而且可记忆学习按键功能,达到复制的功能,方便使用,且成本设计用STC89C52也比较便宜实用。显然本设计采用方案二作为设计蓝本。3 遥控器硬件与程序设计3.1遥控器硬件结构组成为了实现遥控码的记录还原功能,系统应具有红外线的接收解码、红

6、外线的调制发射、操作按键和功能控制单元。由于功能定位学习一个遥控按键的遥控的功能,因此决定采用STC89C52RC单片机作为控制器。STC89C52RC单片机中具有256字节的内存单元,可存储遥控码脉宽的数据。遥控码的脉宽数据可以用红外线接收解码后送单片机读入,发射时由单片机产生40kHz红外调制信号送红外线发管发射。学习型红外遥控器由红外接收电路、单片机控制器、红外发送电路、EPROM存储器、操作键盘及LED遥控指示灯构成,如图2所示。单片机STC89C52构成红外遥控的处理器,其数据存储器RAM(258B)用来存储学习过程中编码信号的脉冲宽度和编码。 (1)红外发射电路5:40 kHz方波

7、直接由单片机模拟产生,经过三极管放大后,驱动红外发光二极管(注意:40 kHz载波不能用STC89C52定时器产生,因为40 kHz载波信号的周期只有26 s,考虑到有载波时的占空比为1/3,即定时器的最小中断时间间隔只有8 s,在执行中断时中断处理过程(如保护现场等)实际运行时间根据中断点的不同需要的时间也不同,有时会大于8 s,这样不能保证40 kHz信号的稳定性),在软件处理过程中应用延时程序模仿40 kHz的红外载波信号。(2)红外接收头:在与单片机连接时,将接收来的红外遥控信号反相,其正向信号接外部中断0,反相信号接外部中断1。通过记录2个中断间的间隔时间来测量红外遥控信号的高低电平

8、的脉宽值。(3)外接E PROM存储器:用于存放学习到的控制命令的编码和高低电平信号的 脉宽值。(4)按键盘:启动一个学习过程。(5)LED指示灯:用于显示遥控器的工作状态。3.2 系统硬件电路设计【附录1】为该学习型遥控器的原理图,其中:P1.0口接遥控码发射按键;P1.6口用作状态指示,绿灯亮代表学习状态,绿灯灭代表码已读入。P1.7口用于指示控制键的操作,闪烁时代表遥控码正在发射之中,在学习状态,绿灯灭代表码已读入。第9脚为单片机的复位脚,采用简单的RC上电复位电路,第12脚为中断输入口,用于工作方式的转换控制,当脚为低电平时,系统进入学习状态。第14脚用于红外线接收头的输出信号输入,第

9、15脚作为遥控码的输出口,用于输出40KHz的遥控码。第18、19脚接12MHZ晶振。由于采用最小化应用系统,控制线(片外取指控制)、ALE(地址锁存控制)不用,(片外存储器选择)接高电平,使低8K的E2PROM地址(0000H1FFFH)指向片内。3.3初始化程序内容包括P0、P1、P3端口置位,P2口清零,清08H6EH共103个工作寄存器,设置堆栈基址(70H),设置计数器计数模式、控制字,开外中断允许等等。3.4遥控器读入程序处理完成遥控码起始位的识别、脉宽计数功能,完成遥控码编码位的宽度计数功能,完成结束位的认别功能(流程图见图3)。本程序模块在编程设计中非常重要,通过大量的不同种类

10、的遥控码波形实验测试分析,遥控码的帧间歇位宽度均在10 ms以上,起始位码宽度在100s20ms之间,编码位在100s5ms之间,为确保所有遥控器学习的成功,采用以下设计方法:寻找起始位方法:用16位DPTR计数器对高电平进行宽度计数,计数采样周期为21s,当高电平结束时,如高8位计数器为非零,则说明高电平宽度超过5.35ms(25521s),紧接来的低电平码就是起始位,否则重新开始。图3 遥控码读入处理程序流程图起始位?NYYN存编码位读码准备存起始位学习状态结束位?中断退出中断开始Y键按下?N初始化键盘扫描编码发送图4 主程序流程图开始读起始位方法3:采用16位DPTR对低电平进行宽度计数

11、(最大可读宽度为1.376s),当高电平跳变时结束计数,并将DPTR的高8位、低8分别存入R4,R5寄存器。读遥控编码的方法:采用DPTR低8位计数器对码(高电平或低电平)进行宽度计数,电平跳变时结束计数,并将值存入规定的地址,在高电平码计数时,如DPTR高8位计数器为非零(宽度大于5.35ms),则判定为结束帧间隔位,在相应存储单元写入数据#OOH作为结束标志。3.5遥控码发送处理程序利用计数器计数中断功能,实现40KHz载波的发送,利用接收时接收的低电平位时间控制载波的发送时间。3.6主程序主程序在上电初始化后进行端口按键扫描,当确认有键按下时将编码发出去(见图3流程图)。3.7程序延时主

12、要用于读键时消抖。时间约为1ms。4 系统功能调试及整体指标分析4.1 程序调试调试学习状态和发射状态下计数器的循环间隙时间是C程序中较为重要的内容,在汇编语言下可以精确地算出循环时间,这样在C编程时能在E磁盘目录下产生1个REMOTE.ASM的汇编源程序4,在汇编程序清单中可以精确地算出循环时间,这样才能保证读入时的脉宽与发射时的脉宽一样,另外,也可以通过示波器观察比对原遥控器解码波形及学习器产生的波形,结合调试循环延时的间隔达到精确还原脉宽的目的。4.2 整体指标分析学习型遥控器的设计性能及实现与其软件设计编写具有密切的关系,在设计中采用内部定时器对信号高低电平计时的方法来采集数据并保存。

13、当系统识别到起始码的低电平时,系统启动内部定时器对输入低电平计时,当起始码的低电平结束时保存定时器此时的值,记录下起始码的低电平信号脉冲宽度值;然后依次保存采集到的编码信号脉冲宽度值,如果采集到编码信号位数大于设定值M(程序中设定值),就认为编码采集已经结束,即学习子程序结束。 在软件设计过程中,使用了2个外部中断和2个内部定时器,外部中断0启动定时器0停止定时器1计数并保存定时器1的数据,外部中断1启动定时器1停止定时器0计数并保存定时器0的数据,用定时器0记录红外解调信号的高电平时长。用定时器1记录红外解调信号的低电平时长,本文采用12 MHz晶振,1个机器周期是1 s,计数器采用16位计

14、数器。如果在外部中断0和外部中断1之间不发生内部定时器中断,可以记录的最大时间间隔为65.5 ms;如果在外部中断0和外部中断1之间发生内部定时器中断则可以记录的最大时间间隔是n65.5 ms,其中n为中断次数。其值保存在设定的数据存储器中,然后写入到外部EPROM存储器中。发射过程再从外部的EPROM存储器读出,通过用软件模仿40 kHz载波信号发送编码信息。 在设计过程中研究发现:尽管遥控器存在帧格式多样、码型多样、编码长短不同、发送方式不同等问题,但对于某一个独立的遥控器还是有规律可依的。在系统设计方案时,选择通用性好的就能解决这个问题。例如测得一款遥控器的1个命令码如下: 低电平(有红

15、外发送载波)信号码时长数据是: 0x7368 0x0578 0x0577 0x0563 0x0555 0x0584 0x0564 0x0545 0x0572 0x0554 高电平(无红外发送载波)信号码时长数据是:0x0578 0x1377 0x0563 0x0555 0x1384 0x0564 0x0545 0x1382 0x0554 0x01345 尽管码型有帧头、系统码、操作码、同步码、帧间隔码、帧尾,但不论是低电平(有红外发送载波)信号码时长或是高电平(无红外发送载波)信号码时长其结构都相对简单。但是1个帧如此多的数据占据了大量的内存空间,增加了硬件成本和程序运行时间,有必要在数据分析

16、的基础上采取数据压缩。 数据压缩根据使用场合和要求的不同分有损和无损压缩。为了在数据发送时准确再现接收到的红外数据,本文采用无损压缩的方法,使用的编码方式是改进型的游程编码,根据游程编码的原理,游程长度(游程或游长)RL(Run-Length)指的是由信号采样值构成的数据流中各个数据重复重现的长度,只要给出重复的数据、数据长度和位置就可以恢复原来的数据流2-3。其具体实现过程如下: (1)在接收红外信号时分别按高电平和低电平不同的时间长度编号(时间长度规定一定的误差范围) 2,每1次测得的数据根据电平持续时间记录其编号,再将同编号的数据相加求平均值作为标准时间长度,根据红外信号格式的不同,可以

17、选择4 bit压缩方式和2 bit压缩方式,即压缩比达到1/4和1/8。在接收红外数据时采用的是中断方式,不占用过多的CPU时间,还可以一边学习一边存入EPROM以达到节省内存空间的目的。 将上述遥控器的1个命令码(其中红外编码长度为150 bit,压缩比为1/8)的数据存储在EPROM中的数据格式如下: 01100101(共10个字节低电平数据);11010101(共10个字节高电平数据);0x96(字节总长度);0x1377 0x0560 0x0572 0x370(4个不同的时长); (2)发送红外数据时,先从EPROM中读出字节总长度、4个不同的时长及部分高低电平数据,在发送高电平时(即

18、不发送红外载波信号)且时长大于1 ms,再读EPROM数据,这样更可以节省内存空间。单键学习型遥控器可以学习任何遥控器的某个按键功能,采用最小化应用模式设计,电路简单,可靠性高,尤其是通过大量不同遥控码的特征分析,在遥控码的读入时选择了最佳采样频率,使遥控码的学习成功率大大提高,其技术可应用于多媒体教室、家庭集中控制器等设备。使用时先按一下K,待绿色指示灯亮后,用遥控器对着红外接收头,按一下某个功能按键 ,当绿灯灭且红灯亮时说明学习完成,按发射键就可以进行遥控了。5详细仪器清单表格仪器清单仪器名称数量STC89C521电阻(1k)6电阻(10R)1发光二极管(红)1发光二极管(绿)1红外接收头

19、1红外发射二极管1电容(33pf)2电容(104pf)1三极管(9015)3晶振(12Mhz)1按钮开关3Lcd160216总结、思考与致谢本系统是以单片机STC89C52芯片为核心部件,实现遥控器学习并记忆按钮遥控功能。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于学习型遥控器这方面的知识。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步。通过本次毕业设计,我们获得了丰富的理论知识,极大地提高了实践能力,单片机领

20、域这对我们今后进一步学习计算机方面的知识有极大的帮助。同时,因为学习知识的能力和时间有限,因此在本次的课程设计过程中,难免存在错误,恳请老师给以批评和指正,在此,衷心感谢老师以及许多同学的指导和支持。参考文献1 沈红卫编著.单片机应用系统设计实例与分析M.北京:北京航空航天大学出版社,20022 朱定华,戴汝平编著.单片微机原理与应用M.北京:清华大学出版社,20033 胡汉才编著.单片机原理及接口技术M.北京:清华大学出版社,20044 谭浩强编著.C程序设计(第三版)M.北京:清华大学出版社,20055 楼然苗,李光飞编著.单片机课程设计指导M.北京:北京航空航天大学出版社,2007附录1

21、:单键学习型红外遥控器原理图(proteus仿真):另:在单键遥控的基础上,添加了lcd1602液晶显示的拓展。给元器件上电后,lcd1602会显示预设的字幕(字幕根据需要可自行设计),按下学习键后,等候学习遥控器发射的红外编码,学习成功后,字幕自动变换成另外的字幕(也是预设的字幕)。其中lcd1602引脚连线如下proteus仿真图所示:附录2:单片机汇编程序:/*学习型红外遥控器汇编程序(包括lcd1602显示)*/LCDINIT1:MOV A,#01H ;清屏 LCALL BUSY LCALL WRTCLCALL DELAY0MOV A,#01H ;清屏 LCALL BUSY LCALL

22、 WRTC LCALL DELAY0 ;延时15ms LCALL DELAY0 LCALL DELAY0 MOV A,#38H ;显示模式设置(8位数据线,16*2 5*7点阵) LCALL WRTC LCALL DELAY0 ;延时5ms MOV A,#38H LCALL BUSY LCALL WRTC MOV A,#08H LCALL BUSY LCALL WRTC MOV A,#01H ;清屏 LCALL BUSY LCALL WRTC MOV A,#06H ;显示光标移动设置 LCALL BUSY LCALL WRTC MOV A,#0CH ;示开关控制,显示开,无光标,不闪烁。 LC

23、ALL BUSY LCALL WRTC MOV A,#0EH ;写CGRAM地址. LCALL BUSY LCALL WRTCMOV R2,#0FH MOV DPTR,#TAB5;写CGRAM字模. LCALL BUSY LCALL WRTDRETDELAY4:MOV R3,#20 ; 延时0.2秒LCDMAIN1:MOV A,#0C0H ;显示开及光标设置 LCALL BUSY LCALL WRTC MOV R2,#08H MOV DPTR,#TAB6 LCALL DELAY0 LCALL WRTD LCALL DELAY01 LCALL DELAY01 LCALL FLASH MOV A,

24、#80H ;显示开及光标设置 LCALL BUSY LCALL WRTC MOV R2,#0FH MOV DPTR,#TAB5 LCALL DELAY0 LCALL WRTD LCALL DELAY01 LCALL DELAY01RET LCDINIT: LCALL DELAY0 ;延时15ms LCALL DELAY0 LCALL DELAY0 MOV A,#38H ;显示模式设置(8位数据线,16*2 5*7点阵) LCALL WRTC LCALL DELAY0 ;延时5ms MOV A,#38H LCALL BUSY LCALL WRTC MOV A,#08H LCALL BUSY LC

25、ALL WRTC MOV A,#01H ;清屏 LCALL BUSY LCALL WRTC MOV A,#06H ;显示光标移动设置 LCALL BUSY LCALL WRTC MOV A,#0CH ;示开关控制,显示开,无光标,不闪烁。 LCALL BUSY LCALL WRTC MOV A,#40H ;写CGRAM地址. LCALL BUSY LCALL WRTC MOV R2,#40H MOV DPTR,#TAB3;写CGRAM字模. LCALL BUSY LCALL WRTD ;*初始化* LCDMAIN: MOV A,#80H ;显示开及光标设置 LCALL BUSY LCALL W

26、RTC MOV R2,#04H MOV DPTR,#TAB1 LCALL DELAY0 LCALL WRTD MOV A,#0C0H ;显示开及光标设置 LCALL BUSY LCALL WRTC MOV R2,#04H MOV DPTR,#TAB2 LCALL DELAY0 LCALL WRTD LCALL DELAY01 LCALL DELAY01 MOV A,#01H ;清屏 LCALL BUSY LCALL WRTC MOV A,#80H ;显示开及光标设置 LCALL BUSY LCALL WRTC MOV R2,#0CH MOV DPTR,#TAB4 LCALL DELAY0 LC

27、ALL WRTD LCALL DELAY01 LCALL DELAY01 MOV A,#0c4H ;显示开及光标设置 LCALL BUSY LCALL WRTC MOV R2,#08H MOV DPTR,#TAB7 LCALL DELAY0 LCALL WRTD LCALL DELAY01 LCALL DELAY01 RET ;*写命令子程序* WRTC: CLR RS CLR RW CLR E MOV P0,A LCALL DELAY0 ;延时5ms SETB E LCALL DELAY0 ;延时5ms CLR E RET ;*写数据子程序* WRTD: MOV R1,#00H AGAIN:

28、 MOV A,R1 MOVC A,A+DPTR SETB RS CLR RW CLR E MOV P0,A LCALL DELAY0 SETB E LCALL DELAY0 CLR E INC R1 MOV A,R1 MOV B,R2 ;数据写完没有. CJNE A,B,AGAIN RET ;*判忙子程序* BUSY: PUSH ACC CLR RS SETB RW TT0: SETB E MOV A,P0 CLR E ANL A,#80H JNZ TT0 POP ACC RET TAB1: DB 00H,01H,02H,03H TAB2: DB 04H,05H,06H,07H TAB3: D

29、B 03H,07H,0fH,1FH,1FH,1FH,1FH,1FH DB 18H,1EH,1FH,1FH,1FH,1FH,1FH,1FH DB 07H,1FH,1FH,1FH,1FH,1FH,1FH,1FH DB 10H,18H,1cH,1EH,1EH,1EH,1EH,1EH DB 0FH,07H,03H,01H,00H,00H,00H,00H DB 1fH,1FH,1FH,1FH,1FH,0FH,07H,01H DB 1fH,1FH,1FH,1FH,1FH,1CH,18H,00H DB 1CH,18H,10H,00H,00H,00H,00H,00H TAB4: DB DESIGNED BY:

30、TAB5:DB FLASHLED SHOWS!TAB6:DB ITS OK! TAB7: DB LIU & FU! DELAY0: MOV R6,#10 D1: MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RET DELAY01: MOV R3,#255 D2: MOV R4,#255 DJNZ R4,$ DJNZ R3,D2 RET FLASH: SETB P20 LCALL DELAY01 LCALL DELAY01 CLR P20 SETB P21 LCALL DELAY01 LCALL DELAY01 CLR P21 SETB P22 LCALL DELAY01

31、LCALL DELAY01 CLR P22 SETB P23 LCALL DELAY01 LCALL DELAY01 CLR P23 LCALL FLASH RET FLASH1: SETB P20 LCALL DELAY01 LCALL DELAY01 SETB P21 LCALL DELAY01 LCALL DELAY01 SETB P22 LCALL DELAY01 LCALL DELAY01 SETB P23 LCALL DELAY01 LCALL DELAY01 LCALL FLASH RET BUTTON: JNB P33,s1ok JB P35,s2ok RET s1ok: LCALL FLASH s2ok: LCALL FLASH1 END老师评:本文格式不好,作品没有拍照,另外没有写作品验证方法,下次做这个题目的同学请来问老师。本文扩展思路不对,扩展显示屏LCD1602意义不大,不过练习编程也很好。因为是单键学习器,扩展方向是:多键学习器,扩展存储功能以便存更多按键的值,选单功能(用LED指示灯提示即可),比如学习电视、空调等不同家电的按键值。 以后同学注意,另外,老师可以提供C语言程序,修改更方便些

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1