下面的一個例子是使用P1口的高4位連接到LCD1602的高4位元資料線。
功能說明:讓1602顯示“51Start:” “the best one!”
程式:
#include
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P3^2; //資料/命令選擇端, 低電平為指令, 高電平為資料
sbit lcdrw=P3^3; //讀寫控制端, 低電平為寫
sbit lcden=P3^4; //使能端
uchar code table1[]=" 51Start: ";
uchar code table2[]=" the best one! ";
void delay(uint x) //延時 x 毫秒
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/*==========================================================
*函數名稱:Lcd_1602_write(uchar com,date)
*功 能:向1602寫資料/指令
*入口參數:com(com=0 寫命令 com=1 寫資料)
*出口參數:
*說 明:四線用的是1602的高四位DB4-DB7, 單片機的數據口為P1口的高四位P1.4-P1.7
*==========================================================*/
void Lcd_1602_write(uchar com,date)
{
uchar i;
lcdrw=0; //設置為寫
lcdrs=com; //將形參傳給lcdrs
for(i=0;i
{
lcden=1;
P1=(P1&0x0f)|(date&0xf0); //將date的高四位送入P1, 同時保持P1的低四位不變
//如果使用P1的低四位的話, 則該處應該改為:P1=(P1&0xf0)|((date>>4)&0x0f);
delay(3); //適當延時, 資料穩定
lcden=0; //送入資料
date
}
}
/*==========================================================
*函數名稱:void Lcd_1602_init()
*功 能:對1602進行初始化
*入口參數:
*出口參數:
*說 明:用四線時, 1602的初始化只需要高四位元資料就可以完成, 在初始化完成之後必須再傳入四位元資料, 需注意。
* 執行完write_1602(0,0x28);之後液晶已經初始化, 其實在執行了一半的時候就已經初始化完成, 此時又傳入了
四位元資料(一個寫語句會傳入8位元資料), 這時候如果直接寫資料的話, 就會形成亂碼
*==========================================================*/
void Lcd_1602_init()
{
Lcd_1602_write(0,0x28);//0x28=0010 1000, 將液晶設置為16*2顯示, 5*7點陣, 4位元資料口
delay(5);//
lcden=1; //
lcden=0;
Lcd_1602_write(0,0x28); //顯示方式設置
Lcd_1602_write(0,0x0e); //設置開顯示, 不顯示游標
Lcd_1602_write(0,0x06); //預設(0x06)寫入新資料後游標右移 螢幕不移動
Lcd_1602_write(0,0x01); //顯示清0, 資料指標清0
}
//主函數
void main()
{
uchar num;
Lcd_1602_init();
Lcd_1602_write(0,0x80); //第一行
for(num=0;num
{
Lcd_1602_write(1,table1[num]);//寫數據
delay(3);
}
Lcd_1602_write(0,0xc0); //第二行
for(num=0;num
{
Lcd_1602_write(1,table2[num]);
delay(3);
}
while(1);
}
本文素材來自網路。 以上資訊僅供參考, 希望對大家有幫助。