新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 LCD1602

51單片機 LCD1602

作者: 時間:2016-11-25 來源:網絡 收藏
LCD1602算是很簡單的人機交互,有了這家伙,從此學習不再寂寞了,至少有這家伙的陪伴。注釋很詳細的,看代碼。

原理圖:

本文引用地址:http://butianyuan.cn/article/201611/321315.htm



代碼:

#include
#define uint unsigned int
#define uchar unsigned char
//端口聲明
sbit duanxuan=P2^6;
sbit weixuan=P2^7;
sbit lcd1602_E=P3^4;
sbit lcd1602_RS=P3^5;
//顯示數據數組
uchar table1[]="^_^I LOVE MCU^_^"; //第一行顯示數據
uchar table2[]=" --WgChnLn--"; //第二行顯示數據
//變量定義
uint number; //用于依次顯示出所有數據
//相關函數聲明
void delay(uint); //延時函數聲明
void lcd1602_control(uchar); //輸入控制指令函數聲明
void lcd1602_init(); //lcd初始化函數聲明
void lcd1602_data(uchar); //輸入數據函數聲明
//主函數
void main()
{
lcd1602_init(); //初始化
//輸入第一行數據
lcd1602_control(0x80+0x10); //定位到第一行剛好不能顯示的區(qū)域
for(number=0;number<16;number++)
{
lcd1602_data(table1[number]); //顯示出第一行
delay(5);
}
//輸入第二行數據
lcd1602_control(0x80+0x50); //定位到第二行剛好不能顯示的區(qū)域
for(number=0;number<16;number++)
{
lcd1602_data(table2[number]); //顯示出第二行
delay(5);
}
//循環(huán)左移效果
while(1)
{
for(number=0;number<16;number++)
{
lcd1602_control(0x18); //左移
delay(500);
}
delay(1000);
delay(1000);
}
}
//延時函數主體
void delay(uint xs)
{
uint i,j;
for(i=xs;i>0;i--)
{
for(j=110;j>0;j--)
{
}
}
}
//lcd1602寫入控制指令函數主體
void lcd1602_control(uchar control_data)
{
lcd1602_RS=0; //RS=0,處于輸入控制指令狀態(tài)
P0=control_data;
delay(5);
lcd1602_E=1; //使能端高電平有效
delay(5);
lcd1602_E=0;
}
//lcd1602初始化函數主體
void lcd1602_init()
{
duanxuan=0;
weixuan=0;
lcd1602_E=0; //因為引腳默認是高電平
lcd1602_control(0x0c);
lcd1602_control(0x06);
lcd1602_control(0x38);
lcd1602_control(0x01);
}
//lcd1602寫入數據指函數主體
void lcd1602_data(uchar data_data)
{
lcd1602_RS=1; //RS=1.處于輸入數據狀態(tài)
P0=data_data;
delay(5);
lcd1602_E=1; //使能端高電平脈沖有效
delay(5);
lcd1602_E=0;
}

以上,結束。



關鍵詞: 51單片機LCD160

評論


技術專區(qū)

關閉