lcd1602只亮不顯示
LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊,通常跟單片機一起使用,由單片機控制顯示的內容,那么當遇到lcd1602只亮不顯示怎么辦?下面教大家幾個檢查方法。
1、檢查硬件是否短路/短路,用數字萬用表的紅黑表筆分別點到LCD1602的電源和地引腳,也就是如圖所示的VCC和GND引腳。
2、上電測量供電電壓是否正常,上電后用數字萬用表紅黑表筆分別點到LCD1602的VCC和GND兩個引腳,觀察數字萬用表的讀數是否為5V(常用5V電壓供電)測量如圖所示兩點位置。
3、檢查單片機最小系統是否正常工作,用示波器測量單片機的晶振電路是否起振,單片機、晶振等元件是否焊接良好。
4、檢查LCD1602連接的排線是否有斷開的線或者接觸不良的接口,也有可能是排線損壞引起的原因,用數字萬用表的導通測量檔位測量排線以及接線是否正常導通.
5、以上硬件都檢查正常沒有問題的就檢查下驅動程序,檢查驅動程序是否正確,如圖所示。
lcd1602簡單顯示程序
lcd1602液晶手冊提供了一個初始化過程,由于不檢測“忙”位,所以程序比較復雜,而我們總結了一個更加簡易方便的過程提供給大家,手冊上描述的那個,大家僅僅作為了解就可以了,下面我把程序寫出來大家看下,我們的初始化只用了 4 條語句,沒有像手冊介紹的那么繁瑣。
#include 《reg52.h》
#define LCD1602_DB P0
sbit LCD1602_RS = P1^0;
sbit LCD1602_RW = P1^1;
sbit LCD1602_E = P1^5;
void InitLcd1602();
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
void main(){
unsigned char str[] = “Kingst Studio”;
InitLcd1602();
LcdShowStr(2, 0, str);
LcdShowStr(0, 1, “Welcome to KST51”);
while (1);
}
/* 等待液晶準備好 */
unsigned char sta;
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do {
LCD1602_E = 1;
sta = LCD1602_DB; //讀取狀態字
LCD1602_E = 0;
}while (sta & 0x80); //bit7 等于 1 表示液晶正忙,重復檢測直到其等于 0 為止
}
/* 向 LCD1602 液晶寫入一字節命令,cmd-待寫入命令值 */
void LcdWriteCmd(unsigned char cmd){
LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
/* 向 LCD1602 液晶寫入一字節數據,dat-待寫入數據值 */
void LcdWriteDat(unsigned char dat){
LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
/* 設置顯示 RAM 起始地址,亦即光標位置,(x,y)-對應屏幕上的字符坐標 */
void LcdSetCursor(unsigned char x, unsigned char y){
unsigned char addr;
if (y == 0){ //由輸入的屏幕坐標計算顯示 RAM 的地址
addr = 0x00 + x; //第一行字符地址從 0x00 起始
}else{
addr = 0x40 + x; //第二行字符地址從 0x40 起始
}
LcdWriteCmd(addr | 0x80); //設置 RAM 地址
}
/* 在液晶上顯示字符串,(x,y)-對應屏幕上的起始坐標,str-字符串指針 */
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){
LcdSetCursor(x, y); //設置起始地址
while (*str != ‘