资源简介
格力空调遥控码接收的单片机程序,很好用,用中断方式,在1602液晶上显示,呵呵,试试吧
代码片段和文件信息
#include
#include
#include
#include
#include
#define LCM_Data P0
#define Busy 0x80 //用于检测LCM状态字中的Busy标识
sbit LCM_RS=P2^0;
sbit LCM_RW=P2^1; //定义引脚
sbit LCM_E=P2^2;
sbit P32=P3^2;
sbit P33=P3^3;
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCMBuysC);
unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
void LCMInit(void);
void DisplayOneChar(unsigned char X unsigned char Y unsigned char DData);
void DisplayListChar(unsigned char X unsigned char Y unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
unsigned char code net[] = {“c p u“};
unsigned char code uctech[] = {“ “};
void main(void)
{unsigned char X;
X=0;
Delay400Ms(); //启动等待,等LCM讲入工作状态
LCMInit(); //LCM初始化
Delay5Ms(); //延时片刻(可不要)
DisplayListChar(0 5 uctech);
DisplayListChar(0 0 net);
Delay400Ms();
Delay400Ms();
WriteCommandLCM(0x011);
Delay400Ms(); //启动等待,等LCM讲入工作状态
LCMInit(); //LCM初始化
Delay5Ms(); //延时片刻(可不要)
DisplayListChar(0 5 uctech);
DisplayListChar(0 0 net);
Delay400Ms();
Delay400Ms();
WriteCommandLCM(0x011);
while(1)
{
if(P32==0)
{ DisplayOneChar(X 0 ‘0‘);
Delay400Ms();
X++;}
if(P33==0)
{ DisplayOneChar(X 0 ‘1‘);
Delay400Ms();
X++;}
}
}
//写数据
void WriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM(); //检测忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //若晶振速度太高可以在这后加小的延时
LCM_E = 0; //延时
LCM_E = 1;
}
//写指令
void WriteCommandLCM(unsigned char WCLCMBuysC) //BuysC为0时忽略忙检测
{
if (BuysC) ReadStatusLCM(); //根据需要检测忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}
//读数据
unsigned char ReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
return(LCM_Data);
}
//读状态
unsigned char ReadStatusLCM(void)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data & Busy); //检测忙信号
return(LCM_Data);
}
void LCMInit(void) //LCM初始化
{
LCM_Data = 0;
WriteCommandLCM(0x380); //三次显示模式设置,不检测忙信号
Delay5Ms();
WriteCommandLCM(0x380);
Delay5Ms();
WriteCommandLCM(0x380);
Delay5Ms();
WriteCommandLCM(0x381); //显示模式设置开始要求每次检测忙信号
WriteCommandLCM(0x081); //关闭显示
WriteCommandLCM(0x011); //显示清屏
WriteCommandLCM(0x061); // 显示光标移动设置
WriteCommandLCM(0x0C1); // 显示开及光标设置
}
//按指定位置显示一个字符
void DisplayOneChar(unsigned char X unsigned char Y unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; // 算出指令码
WriteCommandLCM(X 0); //这里不检测忙信号,发送地址码
WriteDataLCM(DData);
}
//按指定位置显示一串字符
void DisplayListChar(unsigned char X unsigned char Y unsigned char code *DData)
{
unsigned char ListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while (DData[ListLength]>=0x20) //若到达字串尾则退出
{
if (X
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
I.A.... 31744 2010-08-18 09:34 格力_老\格力遥控码分析.doc
I.A.... 15722 2010-09-01 14:52 格力_老\遥控器解码\06ke3
I.A.... 3093 2010-09-01 14:52 格力_老\遥控器解码\06ke3.hex
I.A.... 26 2010-09-01 14:52 格力_老\遥控器解码\06ke3.lnp
I.A.... 17312 2010-09-01 14:52 格力_老\遥控器解码\06ke3.M51
I.A.... 1735 2010-09-01 14:53 格力_老\遥控器解码\06ke3.Opt
I.A.... 13424 2010-09-01 14:53 格力_老\遥控器解码\06ke3.plg
I.A.... 2358 2010-08-04 18:10 格力_老\遥控器解码\06ke3.Uv2
....... 1735 2010-09-01 11:05 格力_老\遥控器解码\06ke3_Opt.Bak
I.A.... 2358 2010-08-04 18:10 格力_老\遥控器解码\06ke3_Uv2.Bak
I.A.... 24792 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\06ke3
I.A.... 9500 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\06ke3.hex
I.A.... 35 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\06ke3.lnp
I.A.... 35915 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\06ke3.M51
I.A.... 1407 2005-02-17 09:13 格力_老\遥控器解码\13-1602-液晶-改\06ke3.Opt
I.A.... 4512 2005-02-17 09:13 格力_老\遥控器解码\13-1602-液晶-改\06ke3.plg
I.A.... 2376 2007-11-16 18:24 格力_老\遥控器解码\13-1602-液晶-改\06ke3.Uv2
I.A.... 1415 2008-03-13 21:21 格力_老\遥控器解码\13-1602-液晶-改\06ke3_Opt.Bak
I.A.... 2324 2007-08-12 11:45 格力_老\遥控器解码\13-1602-液晶-改\06ke3_Uv2.Bak
I.A.... 7554 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\1602-key-KEIL.c
I.A.... 13498 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\1602-key-KEIL.LST
I.A.... 32257 2005-02-17 00:16 格力_老\遥控器解码\13-1602-液晶-改\1602-key-KEIL.OBJ
I.A.... 15272 2006-11-13 21:19 格力_老\遥控器解码\13-1602-液晶-改\1602-key-lcd-data.LST
I.A.... 25233 2006-11-13 21:19 格力_老\遥控器解码\13-1602-液晶-改\1602-key-lcd-data.OBJ
I.A.... 3234 2007-08-12 11:45 格力_老\遥控器解码\13-1602-液晶-改\1602.c
I.A.... 6323 2007-11-16 18:12 格力_老\遥控器解码\13-1602-液晶-改\1602.LST
I.A.... 7715 2007-11-16 18:12 格力_老\遥控器解码\13-1602-液晶-改\1602.OBJ
I.A.... 7450 2006-11-25 22:54 格力_老\遥控器解码\13-1602-液晶-改\key.h
I.A.... 3650 2007-11-16 20:43 格力_老\遥控器解码\1602-55.c
I.A.... 7300 2007-11-25 10:17 格力_老\遥控器解码\1602-55.LST
............此处省略33个文件信息
- 上一篇:LC1160 DATASHEET
- 下一篇:编译原理词法分析语法分析
评论
共有 条评论