问答文章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
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 手机上的红外遥控功能是什么?应该怎么使用?必给高分! 遥控器的工作原理是什么? 日常使用的无线遥控器和红外遥控器有什么区别呢 射频遥控和红外遥控怎么区别,有什么特点,哪个好,价格分别多少钱一个? 哪些手机有红外遥控功能? 红外遥控,射频,有啥区别,哪个更好? 红外线遥控怎么使用? 海尔即将上市的智能音箱据说是采用了红外遥控技术,红外遥控到底是什么? 红外遥控开关介绍 红外遥控开关特点 红外遥控的工作原理是什么? 红外线遥控是怎么实现的? 手机远红外遥控器是干什么的 小米手机的红外遥控 是干啥呢? 遥控飞机的红外线遥控是什么意思 红外遥控器的原理是什么? 什么是红外遥控,怎么区分辨别是红外遥控? 红外线遥控器的原理是什么? 红外遥控是什么功能? iPhone是什么意思? iphone所有型号上市顺序分别是? 手机后盖换原装和不原装的有区别吗? vivo手机后盖原装和仿的区别在哪里? 苹果手机的后盖玻璃原装的和不是原装的有什么区别 手机外壳的原装与非原装有什么区别?为什么价钱会有那么大的差距? 换苹果4S手机后壳原装跟不是原装有什么区别? 华为后盖玻璃原厂和高仿的区别? p40后壳原装和不原装的有什么区别 mate30保时捷后盖原装和副厂的区别 iphone11promax后盖不换原装有什么区别 如何分辨手机外壳是原装还是高仿 原装手机外壳和非原装手机外壳有什么区别吗? 原装和非原装有什么区别吗 原装手机壳和非原装手机壳有什么区别? 组装手机和原装的区别 手机外壳原装的好还是重新换的好 配的苹果手机后盖原装和组装有什么区别? vivoX27原装玻璃盖和非原装有 什么区别?厚度会有增加吗? 手机零件买原装原配的和不是原装的会怎么样? iphone连公共wifi不跳出如何登录? 苹果手机wifi弹不出登陆页面怎么办?