⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864f-ok.c

📁 51单片机控制LCD(12864F)和DS18B20
💻 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 + -