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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。