- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
液晶显示遥控程序.doc
带中文字库12864LCD液晶+红外解码遥控显示程序(调试可用)
#include reg52.h
#include global.h
#include intrins.h
#include Lcd.h
void Inf_Dec();
void Inf_Con(uchar Command);
void Manu_Display();
void Auto_Display(bit eN); //自动显示
//外部中断初始化
void Int0_Init()
{
EX0=1;
IT0=1; //作为按键接收
EX1=1;
IT1=1; //作为红外接收
PX0=1;
EA=1;
}
// 定时器初始化
void Time0_Init() //12M晶振
{
TMOD=0X22; //T1,T2分别为八位自动重装
TH0=256-184; //定时100us
TL0=256-184;
ET0=1;
TR0=0; //等待接收使能
EA=1;
}
// 串口初始化
void Serial_Init()
{
SCON=0X50;
TMOD=0X22;
ES=1;
TH1=0XFA;
TL1=0XFA;
EA=1;
TR1=1;
}
// 串口发送函数
void Serial_Send(uchar ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
// 系统初始化
void Sys_Init()
{
Int0_Init();
Time0_Init();
Serial_Init();
LCD_Init();
}
// 延时函数
void Dlay_1S(uint t)
{
uint i,j;
for(i=0;it*100;i++)
for(j=0;j10000;j++);
}
void main(void)
{
Sys_Init(); // 系统初始化
while(1)
{
if( Irf_En (pCount = 34) ) // 仅在接收完毕执行一次
{
Inf_Dec(); // 红外测试和解调
Inf_Con(Irf_Data); // 红外遥控
Irf_En=0;
Auto_Display(Flag_AutoFlag_State); // 自动显示,界面切换和字幕滚动
} // 自动显示时,按键是失效的,有待于改进
}
}
// 脉宽捕捉计数
void Time0() interrupt 1
{
tCount++;
}
// 红外接收脉宽捕捉
void Int0() interrupt 0
{
TR0=0; //关闭计数
Led1=1;
if( tCount=88 tCount93 ) //计数复位
{
pCount=0;
IC[pCount++]=tCount; //记录引导码 测试结果:引导码90,91 数据码11,22
tCount=0;
Irf_En=1; //启动解调函数jt();
Led1=0;
}
else
{
if(pCount39) //防止溢出
{
IC[pCount++]=tCount;
tCount=0;
}
else
{
IC[pCount]=tCount;
tCount=0;
}
}
TR0=1;
}
/**********************红外解码**********************/
void Inf_Dec()
{
uint Buf=0;
uchar i,D[3];
TR0=0;
for(i=0;i40;i++)
{
if(i=17i33) //测试数据码的正确性i=17i33
{ //测试全部码的正确性i=00i40
Buf=1;
if(IC[i]15) //T2ms:1 T2ms:0
{ //原码*256+反码
Buf=Buf+1;
}
}
IC[i]=0;
}
D[0]=Buf/256; // 原码
D[1]=~(Buf%256); // 反码还原
if(D[0]==D[1]) // 接收码校检
{
Irf_Data=D[1];
}
else
{
Irf_Data=0xff; // 误码
原创力文档


文档评论(0)