標題:
單片機LCD顯示溫度日期時間(觸摸DS18B20溫度產生變化)
[打印本頁]
作者:
hsa18508776863
時間:
2025-6-16 17:44
標題:
單片機LCD顯示溫度日期時間(觸摸DS18B20溫度產生變化)
這是在課上要求做的“LCD顯示溫度日期時間(觸摸DS18B20溫度產生變化)”,文件中包含程序源代碼工程文件和DS18B20的詳細介紹
#include "pbdata.h"
#define LCD_DB P0
sbit LCD_EN=P2^7;
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
unsigned char code cg_1602[]={ 0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,
0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00};//"ÄêÔÂÈÕ"
void LCDBusy()
{
unsigned char busy;
LCD_DB=0xff;
LCD_RS=0;
LCD_RW=1;
do
{
LCD_EN=1;
busy=LCD_DB;
LCD_EN=0;
}while(busy & 0x80);
}
void LCDWriteCmd(unsigned char cmd)
{
//LCDBusy();
LCD_RW=0;
LCD_RS=0;
LCD_EN=1;
LCD_DB=cmd;
LCD_EN=0;
delay_1ms(1);
}
void LCDWriteData(unsigned char dat)
{
//LCDBusy();
LCD_RW=0;
LCD_RS=1;
LCD_EN=1;
LCD_DB=dat;
LCD_EN=0;
delay_1ms(1);
}
void LCDInit()
{
LCDWriteCmd(0x38);
delay_1ms(10);
LCDWriteCmd(0x0c);
delay_1ms(10);
LCDWriteCmd(0x06);
delay_1ms(10);
LCDWriteCmd(0x01);
delay_1ms(10);
}
void LCDSetCursor(unsigned char x,unsigned char y)
{
unsigned char addr;
if(y==0)
addr=0x00+x;
else
addr=0x40+x;
LCDWriteCmd(addr | 0x80 );
}
void LCDDisp(unsigned char x,unsigned char y,unsigned char *str)
{
LCDSetCursor(x,y);
while(*str!='\0')
{
LCDWriteData(*str++);
}
}
void LCDDisp_char(unsigned char x,unsigned char y,unsigned char dat)
{
//LCDInit();
LCDSetCursor(x,y);
LCDWriteData(dat);
}
void write_cg()//дÈë¹Ì¶¨ºº×ֺͷûºÅ
{
unsigned char num;
LCDWriteCmd(0x40); //É趨CGRAMµØÖ·
for(num=0;num<24;num++) //½«×Ô¶¨Òå×ÖÐÍÂëдÈëCGRAMÖÐ
{
LCDWriteData(cg_1602[num]);
}
LCDWriteCmd(0x84);//Äê
{
LCDWriteData(0);
}
LCDWriteCmd(0x87);//ÔÂ
{
LCDWriteData(1);
}
LCDWriteCmd(0x8a);//ÈÕ
{
LCDWriteData(2);
}
LCDDisp(2,1,":");
LCDDisp(5,1,":");
}
復制代碼
原理圖: 無
仿真: 無
代碼: Keil程序:
LCD顯示溫度日期時間(自己程序).zip
(130.76 KB, 下載次數(shù): 0)
2025-6-16 17:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1