




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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_RS = 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(result); /*/* */*寫指令數據到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; delayNOP(); 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_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 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(cdis2m); /顯示字符 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+) /收集四組數據 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=IRCOM5+0x30; if(IRCOM69) IRCOM6=IRCOM6+0x37; else IRCOM6=IRCOM6+0x30; lcd_pos(0x4b); lcd_wdat(IRCOM6); /第一位數顯示 lcd_pos(0x4c); lcd_wdat(IRCOM5); /第二位數顯示 beep(); EX1 = 1; /*/void beep() unsigned char i; for (i=0;i100;i+) delay(4); BEEP=!BEEP; /BEEP取反 BEEP=1; /關閉蜂鳴器/*/void delay(unsigned char x) /x*0.14MS unsigned char i; while(x-) for (i = 0; i13; i+) /*/void delay1(int ms) unsigned char y; while(ms-) for(y = 0; y250; y+) _nop_(); _nop_(); _nop_(); _nop_(); 将遥控器发过来的代码解释后用lcd1602显示:#include#include#define uchar unsigned char #define uint unsigned int sbit rs=P35;sbit rw=P25;sbit e=P34;sbit ir=P32;Init_t0();Init_ex0();Init_lcd();Wr_lcd_cmd(uchar cmd);Wr_lcd_dat(uchar dat);Delay(uint time);Ircode();Ir_work();code uchar Display=xiewanchen kaifa;code uchar hex=0123456789ABCDEF;uchar table1=Code ;uchar irdata33;uchar rdata4;uchar irtime,irok,irdisp_ok;main() uchar i; Init_t0(); Init_ex0(); Init_lcd(); Wr_lcd_cmd(0x80); for(i=0;i16;i+) Wr_lcd_dat(Displayi); Wr_lcd_cmd(0xc0); for(i=0;i16;i+) Wr_lcd_dat(table1i); while(1) if(irok) irok=0; Ircode(); if(irdisp_ok) irdisp_ok=0; Ir_work(); P1=rdata3; Init_t0() TMOD|=0X02; TMOD&=0XFe; TL0=0X00; TH0=0X00; EA=1; ET0=1; TR0=1;Init_ex0() IT0=1; EA=1; EX0=1;Wr_lcd_cmd(uchar cmd) Delay(400); rs=0; rw=0; e=1; P0=cmd; _nop_(); _nop_(); e=0; Wr_lcd_dat(uchar dat) Delay(400); rs=1; rw=0; e=1; P0=dat; _nop_(); _nop_(); e=0;Delay(uint time) uint t; t=time/2; while(t-);Init_lcd() Wr_lcd_cmd(0x38); Delay(200); Wr_lcd_cmd(0x38); Delay(200); Wr_lcd_cmd(0x38); Delay(200); Wr_lcd_cmd(0x0c); Wr_lcd_cmd(0x06); Wr_lcd_cmd(0x02); Wr_lcd_cmd(0x01);Inter_t0() interrupt 2 irtime+;Inter_ex0() interrupt 0 static uchar i; static uchar irflag=0; if(irflag) if(irtime33) i=0; irdatai=irtime; irtime=0; i+; if(i=33) i=0; irflag=0; irok=1; else irflag=1; irtime=0; Ircode() uchar i,j,k=1,dat=0; for(i=0;i4;i+) for(j=0;j7) dat=dat|0x80; if(j1; k+; rdatai=dat; irdisp_ok=1; Ir_work() uchar i; table15=hexrdata0/16; table16=hexrdata0%16; table18=hexrdata1/16; table19=hexrdata1%16; table111=hexrdata2/16; table112=hexrdata2%16; table114=hexrdata3/16; table115=hexrdata3%16; Wr_lcd_cmd(0xc5); for(i=5;i16;i+) Wr_lcd_dat(table1i); 步进电机控制程序:#inclu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 节能量审核管理制度
- 英语教研组管理制度
- 荆州培训班管理制度
- 小学语文《端午粽》课件
- 财务会计管理制度模板3篇
- 从对称美学角度分析苹果手机的外观设计
- 大学生恋爱调查报告
- 蓝色卡通风眼保健操培训班
- 2024-2025学年浙教版七年级下学期数学期末考试调研检测卷(含答案)
- 幼儿园安全煤气开关不乱动教案
- 针刺伤预防与处理-2024中华护理学会团体标准
- 四年级校本课程教材-全册(自编教材)
- 酒店与代理合作协议书范文模板
- 天然气的高压物性课件
- 多模态数据融合方法
- JT∕T 791-2010 公路涵洞通道用波纹钢管(板)
- JB∕T 11864-2014 长期堵转力矩电动机式电缆卷筒
- 点亮小红书:获客增长实战指南
- 上海市实验学校西校语文新初一均衡分班试卷含答案
- 小儿氨酚黄那敏颗粒的药动学研究
- 2024钓场租赁合同范本
评论
0/150
提交评论