📄 12864f-ok.c
字号:
#include <reg51.h>#include <intrins.h>#include <string.h>#include <DS18B20.h> #define uchar unsigned char#define uint unsigned int//12864 汉字显示模块 与MCU连接sbit RS = P1^4;// 1:输入数据 ;0:输入命令sbit RW = P1^3;//1:读数据 0:写数据sbit E = P1^2;//sbit PSB = P1^1; //串并口选择 1:并口模式; 0:串口模式;sbit ak = P1^0;sbit be = P3^7;sbit br = P3^5;//sbit key= P1^3;#define LcdData P0//延时子程序void delay(unsigned int t){ unsigned int i,j; for(i=0;i<t;i++) for(j=0;j<10;j++); }//测试LCD忙bit Check_Busy(){ bit busy; RS = 0; RW = 1; E = 1; _nop_(); busy = (bit)(LcdData&0x80); E = 0; return busy;}//等待LCD到空闲void wait(){ while(Check_Busy());}//写数据void Lcd_Writedata(unsigned char dispdata){ wait(); RS=1; RW=0; E=0; _nop_(); _nop_(); LcdData=dispdata; E=1; _nop_(); _nop_(); E=0;}//写指令代码void Lcd_WriteCmd(unsigned char cmdcode){ wait(); RS=0; RW=0; E=0; _nop_(); _nop_(); LcdData=cmdcode; _nop_(); _nop_(); E=1; _nop_(); _nop_(); E=0;}//初始化LCDvoid Lcd_Reset(){ // PSB=1; Lcd_WriteCmd(0x30); //选择基本指令集 delay(5); Lcd_WriteCmd(0x0c); //开显示(无游标、不反白) delay(5); Lcd_WriteCmd(0x01); //清除显示,并且设定地址指针为00H delay(5); Lcd_WriteCmd(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位 }void WriteStr(unsigned char code *s){ while(*s>0) { Lcd_Writedata(*s); s++; }}void hzDisp(){ Lcd_WriteCmd(0x80); WriteStr(" "); Lcd_WriteCmd(0x90); WriteStr("系统初始化"); Lcd_Writedata(0x2e); Lcd_Writedata(0x2e); Lcd_Writedata(0x2e); Lcd_Writedata(0x2e); Lcd_Writedata(0x2e); delay(20000); Lcd_WriteCmd(0x90); WriteStr(" "); be=0; delay(500); be=1; delay(500); be=0; delay(300); be=1; delay(300); be=0; delay(100); be=1; delay(100); delay(100); Lcd_WriteCmd(0x80); WriteStr("欢迎使用"); Lcd_WriteCmd(0x88); WriteStr(" 智能家居系统"); delay(10000);}void Main(){ unsigned int a,b,c,d,tem; bit dd; Lcd_Reset(); // ak=0; hzDisp(); delay(200); Lcd_Reset(); // delay(5); Lcd_WriteCmd(0x80); WriteStr("当前室内温度:"); Lcd_WriteCmd(0x88); WriteStr("当前室内照度:"); Lcd_WriteCmd(0x98); WriteStr("偏暗"); dd=1; d=0; while(1) { tem=ReadTemperature()-48; a=tem/100+48; b=tem%100/10+48; c=tem%10+48; delay(5); Lcd_WriteCmd(0x80); WriteStr("当前室内温度:"); Lcd_WriteCmd(0x90); Lcd_Writedata(a); Lcd_Writedata(b); Lcd_Writedata(0x2e); Lcd_Writedata(c); WriteStr("度"); if(d++==1000) {d=0; ak=1; } if (br!=dd) { dd=br; d=0; ak=0; be=0; delay(500); be=1; if(dd==0) { Lcd_WriteCmd(0x98); WriteStr("标准"); } if(dd==1) { Lcd_WriteCmd(0x98); WriteStr("偏暗"); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -