2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc

上传人:文库蛋蛋多 文档编号:2384305 上传时间:2023-02-17 格式:DOC 页数:5 大小:30.50KB
返回 下载 相关 举报
2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc_第1页
第1页 / 共5页
2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc_第2页
第2页 / 共5页
2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc_第3页
第3页 / 共5页
2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc_第4页
第4页 / 共5页
2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc》由会员分享,可在线阅读,更多相关《2831.CX2多功能家居控制系统及应用设计 LCD1602 C语言.doc(5页珍藏版)》请在三一办公上搜索。

1、 1602LCD 键盘控制显示(C语言编写) /* 显示内容: Device1 choose /* 1S later chose menu /* 显示方式: /* 1、LCD第一行显示: Device1 choose /* LCD第二行显示:1S later chose menu /* 2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示. /* 3、在指定位置停留1.6秒后,闪烁8次,在闪烁时等待按键按下. /* 4、在按键按下后确认,显示菜单(举例:设备为空调机)./* 5、LCD第一行菜单显示: 1 TEP 2 HUM 3 WIND/* 6、LCD第二行菜单显示: 8 Sub 9

2、Drop/* 在按键输入确认后继续显示(1)-(6)。 /*sbit LCD_RS = P20 ; sbit LCD_RW = P21 ;sbit LCD_EN = P22 ;uchar code dis140 =; /存储从AT24C08中读取到的显示数据uchar code dis240 =; /*/* 延时子程序 /*void delay1(int mt) int i ; while(mt-) for(i = 0 ; i 25 ; i+) /0.1 ms廷时,用于产生脉冲 _nop_() ; _nop_() ; _nop_() ; _nop_() ; void delay0(int ms

3、) int i ; while(ms-) for(i = 0 ; i 250 ; i+) /1 ms廷时 _nop_() ; _nop_() ; _nop_() ; _nop_() ; /* /*检查LCD忙状态 /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 /*bit lcd_busy() bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; /RS、RW、EN组成读状态指令 _nop_() ; _nop_() ; _nop_() ; _nop_() ; result = (bit)(P0&0x80) ;

4、 LCD_EN = 0 ; return result ; /返回检测结果 /* /*写指令数据到LCD /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 /*void lcd_wcmd(uchar cmd) while(lcd_busy() ; /检查LCD忙状态 LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; _nop_() ; _nop_() ; _nop_() ; _nop_() ; LCD_EN = 1 ; _nop_() ; _nop_() ; _nop_() ; _nop_() ;

5、 LCD_EN = 0 ; /RS、RW、EN组成写状态指令 /*/*写显示数据到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 ; /RS、RW、EN组成显示状态指令 P0 = dat ; _nop_() ; _nop_() ; _nop_() ; _nop_() ; LCD_EN = 1 ; _nop_() ; _nop_() ; _nop_() ; _nop_() ; LCD_EN = 0 ; /* /* 设

6、定显示位置 /*void lcd_pos(uchar pos) lcd_wcmd(pos|0x80) ; /数据指针=80+地址变量/*/* /* LCD初始化设定 /* /*void lcd_init() delay(15) ; /等待LCD电源稳定 lcd_wcmd(0x38) ; /16*2显示,5*7点阵,8位数据 delay(5) ; lcd_wcmd(0x38) ; delay(5) ; lcd_wcmd(0x38) ; delay(5) ; lcd_wcmd(0x0c) ; /显示开,关光标 delay(5) ; lcd_wcmd(0x06) ; /移动光标 delay(5) ;

7、 lcd_wcmd(0x01) ; /清除LCD的显示内容 delay(5) ;/* /* 清屏子程序 /*void lcd_clr() lcd_wcmd(0x01) ; /清除LCD的显示内容 delay(5) ;/* /* 闪动子程序 /*void flash() delay(600) ; /控制停留时间 lcd_wcmd(0x08) ; /关闭显示 delay(200) ; /延时 lcd_wcmd(0x0c) ; /开显示 delay(200) ; lcd_wcmd(0x08) ; /关闭显示 delay(200) ; /延时 lcd_wcmd(0x0c) ; /开显示 delay(2

8、00) ;/*/* 主程序 要放到主程序中去 /*main() uchar I,j ,t; delay(10) ; lcd_init() ; /初始化LCD while(1) lcd_clr() ; lcd_pos(0x10) ; /设置显示位置为第一行第17列 i = 0 ; while(dis1 i != 0) /显示从AT24C08中读取的字符 lcd_wdat(dis1 i ) ; i+ ; lcd_pos(0x50) ; /设置显示位置为第二行第17列 i = 0 ; while(dis2 i != 0) lcd_wdat(dis2 i ) ; i+ ; for(j=0 ; j16 ; j+) /向左移动16格 lcd_wcmd(0x18) ; /字符同时左移一格 delay(100) ; /控制移动时间 for(t=0;t4;t+) flash() ; /闪动2*4次

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号