问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

51单片机红外遥控程序是什么?

发布网友 发布时间:2022-03-18 01:34

我来回答

1个回答

热心网友 时间:2022-03-18 03:03

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden = P2^7;
sbit lcdrs = P2^6;
sbit lcdwr = P2^5;
sbit IR = P3^2;
uchar IRCOM[6];//数组,用于存储红外编码
uchar code table1[] = "remote control";
uchar code table2[] = "CODE:";
void delayms(uchar x)// 延时x*0.14ms
{
uchar i;
while(x--)
for(i=0;i<13;i++){}
}
void delay(uchar x)//延时xms
{
uchar i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/****************************LCD部分***********************************************/
void write_com(uchar com)
{
lcden = 0;
lcdrs = 0;
lcdwr = 0;
P0 = com;
delay(5);
lcden = 1;
delay(5);
lcden = 0;//别忘了lcden拉低
}
void write_date(uchar date)
{
lcden = 0;
lcdrs = 1;
lcdwr = 0;
P0 = date;
delay(5);
lcden = 1;
delay(5);
lcden = 0;
}
void lcd_init(void)
{
lcden = 0;
lcdrs = 0;
lcdwr = 0;
delay(5);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
/*****************main()************************/
void main(void)
{
uchar count=0;
IR = 1;
lcd_init();
write_com(0x80);
while(table1[count]!='\0')
{
write_date(table1[count]);
count++;
delay(5);
}
count = 0;
write_com(0x80+0x40);
while(table2[count]!='\0')
{
write_date(table2[count]);
count++;
delay(5);
}

IE = 0x81; //开中断
TCON = 0x01;//脉冲负边沿触发
while(1);

}
/*********************红外中断**************************/
void IR_time() interrupt 0
{
uchar i,j,TimeNum=0;//TimeNum用来计IR高电平次数 从而判断是0还是1
EX0 = 0; //关闭中断
delayms(5);
if(1 == IR)
{
EX0 = 1;
return;
}
while(!IR) //跳过9ms前导低电平
delayms(1);
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
while(IR) //跳过4.5ms的前导高电平
delayms(1);
while(!IR) //跳过0.56ms的低电平
delayms(1);

while(IR)
{
TimeNum++; //计时高电平时间从而判断读取的是0还是1
delayms(1);
}
if(TimeNum>=30)//按键按下时间过长 跳过
{
EX0 = 1;
return;
}
IRCOM[i] = IRCOM[i]>>1;
if(TimeNum >= 8) //8*0.14ms 这时读取的是1;
{
IRCOM[i] = IRCOM[i]|0x80;
}
TimeNum = 0;
}
}
if(IRCOM[2]!=~IRCOM[3])//判断八位数据和八位数据反码是否相等
{
EX0 = 1;
return;
}
IRCOM[4] = IRCOM[2]&0x0f;//取低四位
IRCOM[5] = IRCOM[2]>>4; //IRCOM[5]取IRCOM[2]高四位
if(IRCOM[4] > 9) //转换成字符
{
IRCOM[4] = IRCOM[4] + 0x37;
}
else
IRCOM[4] = IRCOM[4] + 0x30;
if(IRCOM[5] > 9)
{
IRCOM[5] = IRCOM[5] + 0x37;
}
else
IRCOM[5] = IRCOM[5] + 0x30;
delay(5);
write_com(0x80 + 0x40 + 5);
write_date(IRCOM[5]);
write_date(IRCOM[4]);
EX0 = 1; //重新开启外部中断
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 手机上的红外遥控功能是什么?应该怎么使用?必给高分! 遥控器的工作原理是什么? 日常使用的无线遥控器和红外遥控器有什么区别呢 射频遥控和红外遥控怎么区别,有什么特点,哪个好,价格分别多少钱一个? 哪些手机有红外遥控功能? 红外遥控,射频,有啥区别,哪个更好? 红外线遥控怎么使用? 海尔即将上市的智能音箱据说是采用了红外遥控技术,红外遥控到底是什么? 红外遥控开关介绍 红外遥控开关特点 红外遥控的工作原理是什么? 红外线遥控是怎么实现的? 手机远红外遥控器是干什么的 小米手机的红外遥控 是干啥呢? 遥控飞机的红外线遥控是什么意思 红外遥控器的原理是什么? 什么是红外遥控,怎么区分辨别是红外遥控? 红外线遥控器的原理是什么? 红外遥控是什么功能? iPhone是什么意思? iphone所有型号上市顺序分别是? 手机后盖换原装和不原装的有区别吗? vivo手机后盖原装和仿的区别在哪里? 苹果手机的后盖玻璃原装的和不是原装的有什么区别 手机外壳的原装与非原装有什么区别?为什么价钱会有那么大的差距? 换苹果4S手机后壳原装跟不是原装有什么区别? 华为后盖玻璃原厂和高仿的区别? p40后壳原装和不原装的有什么区别 mate30保时捷后盖原装和副厂的区别 iphone11promax后盖不换原装有什么区别 如何分辨手机外壳是原装还是高仿 原装手机外壳和非原装手机外壳有什么区别吗? 原装和非原装有什么区别吗 原装手机壳和非原装手机壳有什么区别? 组装手机和原装的区别 手机外壳原装的好还是重新换的好 配的苹果手机后盖原装和组装有什么区别? vivoX27原装玻璃盖和非原装有 什么区别?厚度会有增加吗? 手机零件买原装原配的和不是原装的会怎么样? iphone连公共wifi不跳出如何登录? 苹果手机wifi弹不出登陆页面怎么办?