红外发射程序键值在LCD1602上显示实例程序.doc
《红外发射程序键值在LCD1602上显示实例程序.doc》由会员分享,可在线阅读,更多相关《红外发射程序键值在LCD1602上显示实例程序.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LCD1602显示键值程序: #include #include #define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_(); void delay(uchar x); /x*0.14MSvoid delay1(int ms);void beep(); sbit IRIN = P33; /紅外接收器數據線sbit BEEP = P15; /蜂鳴器驅動線sbit RELAY= P14; /繼電器驅動線 uchar IRCOM7; sbit LCD_R
2、S = P23; sbit LCD_RW = P24;sbit LCD_EN = P25; uchar code cdis1 = Red Control ;uchar code cdis2 = IR-CODE: -H ; /*/* */*檢查LCD忙狀態 */*lcd_busy爲1時,忙,等待。lcd-busy爲0時,閑,可寫指令與數據。 */* */*/ bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x01); LCD_EN = 0; return(r
3、esult); /*/* */*寫指令數據到LCD */*RS=L,RW=L,E=高脈衝,D0-D7=指令碼。 */* */*/ void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); cmd = (cmd&0x01)7)|(cmd&0x02)5)|(cmd&0x04)3)|(cmd&0x08)1)|(cmd&0x20)3)|(cmd&0x40)5)|(cmd&0x80)7); P0 = cmd; delayNOP(); LCD_EN = 1; delayN
4、OP(); LCD_EN = 0; /*/* */*寫顯示數據到LCD */*RS=H,RW=L,E=高脈衝,D0-D7=數據。 */* */*/ void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0;dat = (dat&0x01)7)|(dat&0x02)5)|(dat&0x04)3)|(dat&0x08)1)|(dat&0x20)3)|(dat&0x40)5)|(dat&0x80)7); P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_
5、EN = 0; /*/* */* LCD初始化設定 */* */*/ void lcd_init() delay1(15); lcd_wcmd(0x38); /16*2顯示,5*7點陣,8位數據 delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x38); delay1(5); lcd_wcmd(0x0c); /顯示開,關光標 delay1(5); lcd_wcmd(0x06); /移動光標 delay1(5); lcd_wcmd(0x01); /清除LCD的顯示內容 delay1(5); /*/* */* 設定顯示位置 */* */*/ void
6、 lcd_pos(uchar pos) lcd_wcmd(pos | 0x80); /數據指針=80+地址變量 /*/main() uchar m; IRIN=1; /I/O口初始化 BEEP=1; RELAY=1; delay1(10); /延時 lcd_init(); /初始化LCD lcd_pos(0); /設置顯示位置爲第一行的第1個字符 m = 0; while(cdis1m != 0) /顯示字符 lcd_wdat(cdis1m); m+; lcd_pos(0x40); /設置顯示位置爲第二行第1個字符 m = 0; while(cdis2m != 0) lcd_wdat(cdis
7、2m); /顯示字符 m+; / IE = 0x81; /允許總中斷中斷,使能 INT0 外部中斷/ TCON = 0x01; /觸發方式爲脈衝負邊沿觸發IT1=1;EX1=1;EA=1; while(1) ; /end main/*/void IR_IN() interrupt 2 using 0 unsigned char j,k,N=0; EX1 = 0; delay(15);if (IRIN=1) EX1 =1; return; /確認IR信號出現 while (!IRIN) /等IR變爲高電平,跳過9ms的前導低電平信號。 delay(1); for (j=0;j4;j+) /收集四
8、組數據 for (k=0;k=30) EX1=1;return; /0.14ms計數過長自動離開。 /高電平計數完畢 IRCOMj=IRCOMj 1; /數據最高位補“0” if (N=8) IRCOMj = IRCOMj | 0x80; /數據最高位補“1” N=0; /end for k /end for j if (IRCOM2!=IRCOM3) EX1=1; return; IRCOM5=IRCOM2 & 0x0F; /取鍵碼的低四位 IRCOM6=IRCOM2 4; /右移4次,高四位變爲低四位 if(IRCOM59) IRCOM5=IRCOM5+0x37; else IRCOM5=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外 发射 程序 键值 LCD1602 显示 实例
限制150内