首页 HS0038接收程序

HS0038接收程序

举报
开通vip

HS0038接收程序HS0038接收程序 //红外线HS0038接收并在LCD上显示,可惜是参照别人的程序,不好意思 #include #define c(x) (x*110592/120000) sbit Ir_Pin = P3^3; sbit rs=P1^0; sbit wr=P1^1; //1602控制口 sbit e=P1^5; unsigned char Ir_Buf[4]; //用于保存解码结果 void delay(unsigned int z) { unsigned char i; //1602用到...

HS0038接收程序
HS0038接收程序 //红外线HS0038接收并在LCD上显示,可惜是参照别人的程序,不好意思 #include #define c(x) (x*110592/120000) sbit Ir_Pin = P3^3; sbit rs=P1^0; sbit wr=P1^1; //1602控制口 sbit e=P1^5; unsigned char Ir_Buf[4]; //用于保存解码结果 void delay(unsigned int z) { unsigned char i; //1602用到的延时 while(z--) for(i=110;i>0;i--); } void write_com(unsigned char com) { rs=0; wr=0; //1602写命令子程序 P0=com; delay(5); e=1; delay(5); e=0; } void write_dat(unsigned char dat) { rs=1; wr=0; P0=dat; //1602写数据子程序 delay(5); e=1; delay(5); e=0; } void init_1602() { e=0; write_com(0x38); write_com(0x0e); //1602初始化 write_com(0x06); write_com(0x01); } unsigned int Ir_Get_Low() { TL0 = 0; TH0 = 0; TR0 = 1; //用定制器0接收,获取低电平时间 while (!Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0); } // 获取高电平时间 unsigned int Ir_Get_High() { TL0 = 0; TH0 = 0; TR0 = 1; while (Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0); } void uart_init(void) { unsigned char u; ET1=0; TMOD = 0x21; // 定时器1工作在方式2(自动重装) SCON = 0x50; // 10位uart TH1 = 0xFD; TL1 = 0xFD; u = SBUF; TR1 = 1; } void write_1602shuju() { write_com(0x80); delay(1); write_dat(Ir_Buf[2]/10+0x30); delay(1); //1602xieshuju write_dat(Ir_Buf[2]%10+0x30); delay(1); } void main() { unsigned int temp; char i,j; uart_init(); init_1602(); while(1) { while (Ir_Pin); //等待变低 temp = Ir_Get_Low(); if (temp < c(8500) || temp > c(9500)) //引导脉冲低电平9000 continue; temp = Ir_Get_High(); if (temp < c(4000) || temp > c(5000)) //引导脉冲高电平4500 continue; for (i=0; i<4; i++) //4个字节 { for (j=0; j<8; j++) //每个字节8位 { temp = Ir_Get_Low(); if(temp < c(200) || temp > c(800)) continue; temp = Ir_Get_High(); if(temp < c(200) || temp > c(2000)) continue; Ir_Buf[i] >>= 1; if(temp > c(1120)) Ir_Buf[i]|=0x80; } } write_1602shuju(); SBUF = Ir_Buf[2]; // 返回键码 while (TI == 0); TI = 0; } }
本文档为【HS0038接收程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_833902
暂无简介~
格式:doc
大小:17KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-29
浏览量:34