红外线遥控c语言程序,红外线遥控码单片机测试程序
转自:http://www.51hei.com/mcu/1488.html
以前在仕创时,总是奇怪 周工为什么可以编出一个能测试任何遥控的遥控码 和用户码的单片机程序!周工还将此程序视为宝贝,每次测试完都将那只已经烧录好的单片机拿回去!!在这几年 本人也接触单片机,尝试写出测试遥控码的程序!!但只是能测试出遥控码 并未能测试出用户码!!!所以当时周工还是相当厉害的!!
下面放出刚刚编录完成的程序,暂时只能测试遥控码!!
下载地址:http://www.51hei.com/f/hw51d.rar
下载软件界面,用于烧录单片机!!
USB下载器
刚烧录好程序,单片机加电时显示“00”
测试遥控码(家里电视机待机按键遥控码)
程序是由C语言编写,单片机使用AT89C52 下面是程序:
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#defineNop(){_nop_(); _nop_(); _nop_(); _nop_(); _nop_();}
volatile ulong IRcode=0x00000000;
volatile ulong Irdcode=0x00000000;
volatile uint customcode=0x0000;
volatile uint time_us=0x0000;
volatile uchar timeH,timeL;
uchar Lcustomcode;
uchar Hcustomcode;
uchar datacode;
uchar mycode;
uchar Rdatacode;
uchar uc1ms;
uchar uc10ms;
uchar uc3ms;
uchar ucDispTime;
uchar ucDispOrder;
uchar ucDispCon;
uchar ucSpeakerTime;
unsigned char code LedData[16] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned char code LedCon[2] = {0x8f,0x4f};
unsigned char ucDispData[2];
sbit led1 = P3^7;
sbit led2 = P3^6;
sbit power=P1^0;
sbit BEEP= P2^1;
bit NewIRcode=0;
bit DataRight=0;
bit bSampleOk;
bit bSampling;
bit b10msInt;
bit b1msInt;
bit bKeySound;
bit b1msMain;
bit IR_E;
bit b3msint;
void SendDataToDispDevice();
void Ir_process();
void display();
void beeping();
void init()
{
IP=0x09;
TMOD=0x11;
TCON=0x01;
TH0=0xff;
TL0=0x47;
TH1=0x00;
TL1=0x00;
EA=1;
ET0=1;
ET1=1;
EX0=1;
TR1=0;
TR0=1;
}
void TimeProg(void)
{
b1msMain = b1msInt;
b1msMain=0;
b10msInt = 0;
if(b1msInt == 1)
{
b1msMain=1;
if(++uc10ms == 10)
{
uc10ms = 0;
b10msInt = 1;
if(bKeySound==1)
{beeping();
bKeySound=0;
}
}
}
}//void TimeProg(void)
void IR_ISR() interrupt 0 using 1
{
static uchar cn;
TR1=0;
timeH=TH1;
timeL=TL1;
TH1=0;
TL1=0;
TR1=1;
time_us=(unsigned int)timeH;
time_us=time_us<<8;
time_us=time_us|timeL;
if(time_us>12200&&time_us<13000) {cn=1;IRcode=0;}
if(cn<34)
{
if(time_us>950&&time_us<1120) //0
{
IRcode=IRcode|0x00000000;
if(cn<33) IRcode=IRcode>>1;
}
else if(time_us>1920&&time_us<2120) //1t > 1950 && t < 2150
{
IRcode=IRcode|0x80000000;
if(cn<33) IRcode=IRcode>>1;
}
//else if(time_us>10000&&time_us<11000) {Irdcode=IRcode;cn=34; }
}
cn++;
if(cn==34)
{ NewIRcode=1;
TR1=0;
Irdcode= IRcode; cn=0;
}
}
void Timer0_ISR() interrupt 1 using 2
{
TR0=0;
TH0=0xff;
TL0=0x47;
TR0=1;
if(++uc1ms == 5)
{
uc1ms = 0;
b1msInt=1;
if(++uc3ms==8)
{
uc3ms=0;
b3msint=1;
SendDataToDispDevice();
}
}
}//void Timer0IntProg() interrupt 1 using 1
void Timer1_ISR() interrupt 3 using 3
{
TR1=0;
TH1=0x00;
TL1=0x00;
TR1=1;
}
void SendDataToDispDevice()
{
unsigned char n;
//watchdog();
if(++ucDispOrder >= 2) ucDispOrder = 0;
if(ucDispOrder==0)
{led1=0;
led2=1;
Nop();
Nop();
}
if(b3msint==1)
{if(ucDispOrder==1)
{led2=0;
led1=1;
Nop();
Nop();
}
}
n = LedData[ucDispData[ucDispOrder]];
P0=n;
} //void SendDataToDispDevice()
void main()
{
init();
beeping();
while(1)
{
TimeProg();
Ir_process();
display();
}
}
void Ir_process()
{
if(NewIRcode==1)
{
NewIRcode=0;
customcode=(Irdcode>>16);
Lcustomcode=customcode>>8;
datacode=(unsigned char)(customcode&0x00ff);
Rdatacode=Lcustomcode;
if(~Rdatacode!=datacode)
{ DataRight=0;
Irdcode=0;
datacode=Rdatacode=0;
}
else
{ DataRight=1;
IR_E=1;
mycode=datacode;}
if(DataRight==1) { bKeySound = 1;DataRight=0; }
}
}
void display()
{
/* unsigned char a[2];
a[0] = mycode & 0x0f;
mycode = mycode >> 4;
a[1] = mycode & 0x0f;
ET0 = 0;
ucDispData[0] = a[0];
ucDispData[1] = a[1];
ET0 = 1;*/
if(IR_E==1)
{
ET0 = 0;
ucDispData[0] = mycode & 0x0f;
mycode = mycode >> 4;
ucDispData[1] = mycode & 0x0f;
IR_E=0;
ET0 = 1;
}
}
void delay(unsigned char x) //x*0.14MS
{
unsigned char a;
while(x--)
{
for (a = 0; a<13; a++) {;}
}
}
/**********************************************************/
void beeping()
{
unsigned char i;
for (i=0;i<100;i++)
{
delay(4);
BEEP=!BEEP;
}
BEEP=1;
}
红外线遥控c语言程序,红外线遥控码单片机测试程序相关推荐
- 红外线遥控c语言程序,红外线遥控解码接收程序-c语言讲解学习.pdf
红外线遥控解码接收程序 -C 语言 .txt 铁饭碗的真实含义不是在一个地方吃一辈子饭, 而是一 辈子到哪儿都有饭吃.就算是一坨屎,也有遇见屎壳郎的那天.所以你大可不必为今天的自 己有太多担忧.红外线 ...
- 红外线遥控c语言程序,红外遥控的C程序
红外遥控在生产和生活中应用越来越广泛,不同的红外遥控芯片有不同的发码协议,但一般都是由引导码,系统码,键码三部分组成. 引导码是告诉接收机准备接收红外遥控码.系统码是识别码,不同的遥控芯片有不同的误别 ...
- 红外线遥控c语言程序,红外线遥控解码接收程序-C语言.doc
>里的评论有很好的诠释. 以上程序段可以应用在51/52单片机里.下面的程序可以应用在STC12C5410/STC12C2052型号的单片机里面. //在STC12C5410上运用红外线解码程序 ...
- mfrc522 c语言程序,MF RC522 51单片机测试程序
/**********************RC522实验开发板例程************************ * CPU:STC89C52RC * 晶振:11.0592MHZ ----- ...
- at89c52串口通信c语言程序,AT89C52DEMO 基于51单片机的(89C51/52)C语言源码例程 - 下载 - 搜珍网...
例程与源码/12864带字库测试程序/12864 例程与源码/12864带字库测试程序/12864.hex 例程与源码/12864带字库测试程序/12864.lnp 例程与源码/12864带字库测试程 ...
- adc0809 c语言程序,ADC0809 模数转换 89C52单片机C语言程序(电压表)
很不错的程序哦! ADC0809 模数转换 89C52单片机C语言程序 阅读108 评论0 字号:大中小 /**********[数字电压温度表]***********/ #include #defi ...
- 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析
这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去.很显然这是一个循环,那么RO的值是多少呢,在以 ...
- 单片机流水灯全亮c语言程序,终极流水灯单片机C语言程序.doc
终极流水灯单片机C语言程序 #include #include #define uint unsigned int sbit beep=P2^3; void ji_ou(); void sx(); v ...
- 步进电机红外遥控C语言程序,单片机红外遥控+步进电机+1602液晶显示c语言源程序...
这是我做的红外遥控控制的1602显示转速和转向的步进电机c语言原程序,已经调试成功!有些模块是以前做其他实验时做的,现在是直接调用的,包括1602液晶显示技术,TC9012红外解码,然后就是四相步进电 ...
最新文章
- 原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)
- php hash pbkdf2,PHP hash_pbkdf2 哈希(Hash)函数
- Endnote生成的中英文混排参考文献中“等”与“et al”的处理
- Eclipse for android 中设置java和xml代码提示功能(转)
- 浅谈进程间的消息传递
- 程序型语言VS.编译型语言
- mysql隔离级别和mvcc_数据库MVCC和隔离级别的关系是什么?
- 提示cannot instantiate abstract class due to following members?
- 解决了MovieClip缩略图问题
- 浅析RTB和RTA(三)
- [object%20HTMLInputElement] 是什么意思?
- jquery的DOM节点操作(复制元素节点)
- asp.NET导出Gridview到excel 带模板列显示
- 台达b3伺服modbus通讯_台达PLC与伺服Modbus通讯PLC编程服务程序代写程序设计专业专注...
- layui prompt弹窗验证码操作
- 判断三角形顺时针/逆时针
- 塞拉利昂一公司计划投资10亿美元用于建设光伏农业项目
- 第19章 项目收尾管理
- 汉诺塔在VC控制台的图形演示
- 微信小程序 - 图像加载时渐隐淡入效果(image)