单片解码红外遥控器lcd显示.doc_第1页
单片解码红外遥控器lcd显示.doc_第2页
单片解码红外遥控器lcd显示.doc_第3页
单片解码红外遥控器lcd显示.doc_第4页
单片解码红外遥控器lcd显示.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理课程设计与调试课题名称:遥控器红外解码数液晶显示专业班级:电子信息科学与技术(2)班 学生学号: 1114040218 学生姓名: 刘家玲 设计时间:2013年6月17日 遥控器红外解码数液晶显示一.红外遥控器编码遥控器编码分好几种,常见的32位编码码和42位编码码,目前我手中遥控器就是42位编码,如图1所示,当有按键时就会产一个9.12ms低电平和4.5ms高电平的起始码,紧接着是26位系统码,此系统码能区别不同的电器设备,防止不同机种遥控码互相干扰,接下来是8位数据码和8位数据反码,间隔23ms的高电平后,再发一个与启始码完全一样的结束码:控制整个电路的运行。其外围电路主要有两部分:复位电路和晶体振荡器。二、电路图 三、调试4、 解码 就对其进行解码,所谓解码就是能用单片机把以不同宽度的脉冲区别开来,一种比较好思路就是计算两次下降沿间隔时间,当单片机外部中断1口有下降沿时中断一次,并启动定时器,定时器定50us,当下次下降沿到来时我们计算定时器中断的次数,这样我们就能很好的区分不同宽度的脉冲了。实际上,我们红外接收头收到的信号的是有毛刺的,放大后就如下图,所以在下降沿中断触发后,要做延时去抖处理:五、完整解码程序 ORG 0000H AJMP MAIN;转入主程序 ORG 0003H ;外部中断P3.2 脚INT0 入口地址 AJMP INT MAIN: SETB EA ;打开CPU 总中断请求 SETB IT0 ;设定INT0 的触发方式为脉冲负边沿触发 SETB EX0 LJMP STARTUP1(C:01FD) LJMP EX0_ISR(C:00A2) INC irtime(0x22) RETI NOP NOP INTO: LJMP tim0_isr(C:0006) MOV A,IRcord(0x33) /处理客户码 十六进制高位 SWAP A ANL A,#0x0F MOV DPTR,#Tab(0x0145) MOVC A,A+DPTR MOV TempData(0x23),A MOV A,IRcord(0x33) ANL A,#0x0F MOVC A,A+DPTR MOV 0x24,A MOV 0x25,#0x2D /处理客户码 MOV A,0x34 SWAP A ANL A,#0x0F MOVC A,A+DPTR MOV 0x26,A MOV A,0x34 MOVC A,A+DPTR MOV 0x27,A MOV 0x28,#0x2D /处理数据码 MOV A,0x35 SWAP A ANL A,#0x0F MOVC A,A+DPTR MOV 0x29,A MOV A,0x35 ANL A,#0x0F MOVC A,A+DPTR MOV 0x2A,A MOV 0x2B,#0x2D /处理数据反码 MOV A,0x36 SWAP A ANL A,#0x0F MOVC A,A+DPTR MOV 0x2C,A MOV A,0x36 ANL A,#0x0F MOVC A,A+DPTR MOV 0x2D,A MOV R3,#0x00 MOV R2,#0x00TempData: MOV R1,#TempData(0x23) MOV R5,#0x01 MOV R7,#0x05 LCALL LCD_Write_String(C:0155)/处理完成标志 CLR irpro_ok(0x20.1) /初始化外部中断 RET LCALL EX0init(C:0215) /初始化定时器 LCALL TIM0init(C:01F0) /初始化液晶 LCALL LCD_Init(C:0109) MOV R7,#0x14 /延时有助于稳定 MOV R6,#0x00 LCALL DelayMs(C:0198) LCALL LCD_Clear(C:0209) /清屏 MOV R3,#0xFF MOV R2,#0x01 MOV R1,#0x30LCALL : LCD_Write_String(C:0155) MOV R3,#0xFF MOV R2,#0x01 MOV R1,#0x3F MOV R5,#0x01 CLR A MOV R7,A LCALL LCD_Write_String(C:0155)/如果接收好了进行红外处理 JNB irok(0x20.0),C:009A /红外码处理 LCALL Ircordpro(C:00D8) CLR irok(0x20.0)/如果处理好后进行工作处理,如按 对应的按键后显示对应的数字等 JNB irpro_ok(0x20.1),C:0092 LCALL Ir_work(C:000E) SJMP C:0092/外部中断0服务函数 PUSH : PUSH ACC(0xE0)/接收红外信号处理 PUSH PSW(0xD0) MOV PSW(0xD0),#0x00 PUSH 0x00 MOV A,irtime(0x22) CLR C SUBB A,#0x21 JC C:00BBIrtime : MOV A,irtime(0x22) SUBB A,#0x3F JNC C:00BB MOV 0x21,#0x00 /存储每个电平的持续时间,用于以 后判断是0还是1 ADD A,0x21 MOV R0,A MOV R0,irtime(0x22) MOV irtime(0x22),#0x00 INC 0x21 MOV A,0x21 CJNE A,#0x21,C:00D1 SETB irok(0x20.0) MOV 0x21,#0x00 POP 0x00 POP PSW(0xD0) POP ACC(0xE0) RETI /红外码值处理函数 MOV R6,#0x01 CLR A MOV R5,A MOV R4,#0x01 MOV A,#irdata(0x37) ADD A,R6 MOV R0,A MOV A,R /大于某值为1,这个和晶振有绝 对关系,这里使用12M计算,此值可以有一定误差 SETB C SUBB A,#0x07 JC C:00EB ORL 0x07,#P0(0x80) MOV A,R4 CLR C MOV R7,A INC R6 INC R4 CJNE R4,#0x09,C:00DE MOV A,#IRcord(0x33) ADD A,R5 CJNE R5,#0x04,C:00DC/处理完毕标志位置1 SETB irpro_ok(0x20.1)/*显示模式设置*/ LCALL C:0179 MOV R7,#0x05 MOV R6,#0x00 LCALL DelayMs(C:0198) LCALL C:0179 /*显示关闭*/ MOV R7,#0x08LCD_Write_Com: LCALL LCD_Write_Com(C:0187) /显示清屏 MOV R7,#0x01 LCALL LCD_Write_Com(C:0187)/显示光标移动设置 MOV R7,#0x06 LCALL LCD_Write_Com(C:0187) LCALL DelayMs(C:0198) MOV R7,#0x0C LJMP LCD_Write_Com(C:0187) MOV R1,#0x77 MOV R1,#0x2E JNB 0x26.1,C:017A ADDC A,#0x35 ORL A,R0 MOV R6,0x07 MOV A,R5 JNZ C:015F /表示第一行 ADD A,#P0(0x80) SJMP C:0162 /表示第二行 MOV A,R6 ADD A,#0xC0 LCALL LCD_Write_Com(C:0187) LCALL C?CLDPTR(C:01B6) MOV R7,A JZ C:0178LCD_Write_Data: LCALL LCD_Write_Data(C:01CF) MOV A,#0x01 SJMP C:0166 MOV R7,#0x38 LCALL LCD_Write_Com(C:0187) MOV R7,#0x05 MOV R6,#0x00 LCALL DelayMs(C:0198) MOV R7,#0x38 LCD_Check_Busy(C:01E0) LCD_Write_Com(C:0187) CLR RS(0x90.0) CLR RW(0x90.1) JNZ DelayMs(C:0198) DEC R6 SJMP DelayMs(C:0198) CJNE R3,#0x01,C:01BF MOV DPL(0x82),R1 MOV DPH(0x83),R2 CJNE R3,#0xFE,C:01C8 MOVX A,R1 MOV DPL(0x82),R1 MOV DPH(0x83),R2 MOVC A,A+DPTRBUSY: LCALL LCD_Check_Busy(C:01E0) /忙则等待 JC LCD_Write_Data(C:01CF) SETB RS(0x90.0) CLR RW(0x90.1) SETB EN(0x90.2) MOV P0(0x80),R7 CLR EN(0x90.2) MOV P0(0x80),#0xFF CLR RS(0x90.0) SETB RW(0x90.1) CLR EN(0x90.2) SETB EN(0x90.2) MOV A,P0(0x80) MOV TMOD(0x89),#0x02 /定时器0初始化 CLR A/重载值 MOV TH0(0x8C),A/定时器0工作方式2,TH0是重装值,TL0是初值 MOV TL0(0x8A),A /初始化值 SETB ET0(0xA8.1) /开中断 SETB TR0(0x88.4)/计时开始 MOV R0,#IDATALEN - 1 MOV R0,#0x7F MOV R0,A MOV R0,A DJNZ R0,IDATALOOP DJNZ R0,IDATALOOP(C:0200) MOV SP(0x81),#0x57 LJMP main(C:0066) MOV R7,#0x01 LCALL LCD_Write_Com(C:0187) MOV R7,#0x05 MOV R6,#0x00 LJMP Del

温馨提示

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

评论

0/150

提交评论