資源簡介
格力空調遙控碼接收的單片機程序,很好用,用中斷方式,在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
- 下一篇:編譯原理詞法分析語法分析
評論
共有 條評論