欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求一份BS18B20在LM016L上顯示的程序
[打印本頁]
作者:
新年里的老人
時間:
2020-4-23 21:43
標題:
求一份BS18B20在LM016L上顯示的程序
求一份BS18B20在LM016L上顯示的程序
作者:
知庸啦啦啦
時間:
2020-6-13 15:38
#include "lcd.h"
/*******************************************************************************
* 函 數 名 : Lcd1602_Delay1ms
* 函數功能 : 延時函數,延時1ms
該函數是在12MHZ晶振下,12分頻單片機的延時。
*******************************************************************************/
//void Lcd1602_Delay1ms(unsigned int c) //誤差 0us
//{
// unsigned char a,b;
// for (; c>0; c--)
// {
// for (b=199;b>0;b--)
// {
// for(a=1;a>0;a--);
// }
// }
//
//}
/* 忙等待 */
void LcdWaitReady()
{
unsigned char sta;
LCD1602_DATAPINS = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do{
LCD1602_E = 1;
sta = LCD1602_DATAPINS;
LCD1602_E = 0;
}while(sta & 0x80);
// bit7為1,表示液晶正在忙,禁止讀寫操作,當為0時才可進行讀寫操作。
}
/* 設置液晶顯示位置,RAM起始地址,(x,y)為起始坐標*/
void LcdSetCursor(unsigned char x, unsigned char y)
{
unsigned char addr;
if(y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
LcdWriteCom(addr|0x80);
}
/* 液晶顯示字符串,x,y表示起始坐標,str表示輸入內容 */
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)
{
LcdSetCursor(x, y); // 設置起始地址
while(*str != '\0')
{
LcdWriteData(*str++);
}
}
/* 液晶顯示字符串,x,y表示起始坐標,chr表示輸入字符 */
void LcdShowChar(unsigned char x, unsigned char y, unsigned char chr)
{
LcdSetCursor(x, y); // 設置起始地址
LcdWriteData(chr);
}
/*******************************************************************************
* 函 數 名 : LcdWriteCom
* 函數功能 : 向LCD寫入一個字節的命令
*******************************************************************************/
#ifndef LCD1602_4PINS //當沒有定義這個LCD1602_4PINS時
void LcdWriteCom(unsigned char com) //寫入命令
{
LcdWaitReady(); //LCD忙等待
LCD1602_RS = 0; //選擇發送命令
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = com; //放入命令
LCD1602_E = 1; //寫入時序
LCD1602_E = 0;
}
#else
void LcdWriteCom(unsigned char com) //寫入命令
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 0; //選擇寫入命令
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = com; //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
// Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = com << 4; //發送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數 名 : LcdWriteData
* 函數功能 : 向LCD寫入一個字節的數據
* 輸 入 : dat
* 輸 出 : 無
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdWriteData(unsigned char dat) //寫入數據
{
LcdWaitReady(); //LCD忙等待
LCD1602_RS = 1; //選擇輸入數據
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = dat; //寫入數據
LCD1602_E = 1; //寫入時序
LCD1602_E = 0;
}
#else
void LcdWriteData(unsigned char dat) //寫入數據
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //選擇寫入數據
LCD1602_RW = 0; //選擇寫入
LCD1602_DATAPINS = dat; //由于4位的接線是接到P0口的高四位,所以傳送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //寫入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //寫入時序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* 函 數 名 : LcdInit()
* 函數功能 : 初始化LCD屏
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //開顯示
LcdWriteCom(0x0c); //開顯示不顯示光標
LcdWriteCom(0x06); //寫一個指針加1
LcdWriteCom(0x01); //清屏
// LcdWriteCom(0x80); //設置數據指針起點
}
#else
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //將8位總線轉為4位總線
LcdWriteCom(0x28); //在四位線下的初始化
LcdWriteCom(0x0c); //開顯示不顯示光標
LcdWriteCom(0x06); //寫一個指針加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //設置數據指針起點
}
#endif
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1