LCD1602作為常見的并口數(shù)據(jù)屏幕,因?yàn)轵?qū)動(dòng)簡單,相較數(shù)碼管可以顯示更多的內(nèi)容,所以應(yīng)用很多,當(dāng)然了,不及LCD單色液晶屏和彩色LCD屏,可以操控每個(gè)像素點(diǎn)。
這里分享的是2個(gè)IO口驅(qū)動(dòng)LCD1602,當(dāng)前市面上是有這樣的方案的,不過用的是IIC芯片擴(kuò)展IO口,本質(zhì)上還是增加了IO口數(shù)量。當(dāng)然了,移位寄存器也是擴(kuò)展IO口,這里擴(kuò)展的是輸出類型。
回歸正題,原理圖,時(shí)序圖如下,具體的原理分析,可以閱讀原文,觀看視頻。
主要函數(shù)代碼,此代碼用于STC8單片機(jī),其他單片機(jī)可能需要修改部分內(nèi)容,尤其是延時(shí)部分,LCD1602數(shù)據(jù)處理需要時(shí)間,延時(shí)不夠,是會(huì)出問題的。
底層驅(qū)動(dòng)函數(shù)
//LCD1602寫入數(shù)據(jù)或指令
//0指令,1數(shù)據(jù)
void LCD1602_Write_Data(bit CD,u8 dat)
{
u8 i;
//先傳輸高4位
//第一步,低電平
for(i=0;i< 6;i++)
{
HC164_CP=0;
HC164_DI=0;//先傳輸最高位;
HC164_CP=1;
}
HC164_CP=0;
HC164_DI=1;//E高電平
HC164_CP=1;
HC164_CP=0;
HC164_DI=CD;//傳輸命令位
HC164_CP=1;
for(i=0;i< 4;i++)//傳輸數(shù)據(jù)高4位
{
HC164_CP=0;
HC164_DI=dat&0x80;//先傳輸最高位;
HC164_CP=1;
dat <=1;//次高位左移到最高位
}
HC164_DI=1;HC164_DI=0;//LCD1602吸收數(shù)據(jù)
//如果DI=0;那么此時(shí)DI=1;DI=0即可
//如果DI=1;那么DI=0即可
//傳輸?shù)?位數(shù)據(jù),操作同上
for(i=0;i< 6;i++)
{
HC164_CP=0;
HC164_DI=0;
HC164_CP=1;
}
HC164_CP=0;
HC164_DI=1;//E高電平
HC164_CP=1;
HC164_CP=0;
HC164_DI=CD;//傳輸命令位
HC164_CP=1;
//這里的移位可以接著傳輸
for(i=0;i< 4;i++)//傳輸?shù)?位數(shù)據(jù)
{
HC164_CP=0;
HC164_DI=dat&0x80;//先傳輸高位;
HC164_CP=1;
dat <=1;//次高位左移到最高位
}
HC164_DI=1;HC164_DI=0;//LCD1602吸收數(shù)據(jù)
}
延時(shí)函數(shù)
void Delay100us() //@24.000MHz
{
unsigned char i, j;
i = 4;
j = 27;
do
{
while (--j);
} while (--i);
}
//測試600us延時(shí)能用
void LCD1602_Delay()
{
Delay100us();Delay100us();
Delay100us();Delay100us();
Delay100us();Delay100us();
Delay100us();Delay100us();
}
初始化代碼
void LCD1602_Init()//LCD1602初始化
{
LCD1602_Write_Data(0,0x02);//光標(biāo)復(fù)位
LCD1602_Delay();
LCD1602_Write_Data(0,0x28);//四位總線,雙行顯示
LCD1602_Delay();
LCD1602_Write_Data(0,0x01);//清除顯示
LCD1602_Delay();
LCD1602_Write_Data(0,0x06);//光標(biāo)移動(dòng)方向
LCD1602_Delay();
LCD1602_Write_Data(0,0x0c);//整體顯示開,無光標(biāo)
LCD1602_Delay();
LCD1602_Write_Data(0,0x14);//光標(biāo)隨著字右移
LCD1602_Delay();
}
以上代碼差不多了,工程代碼分享到粉絲群了,公眾號(hào)后臺(tái)可以加粉絲群下載。
PCB工程分享,此工程本人沒有測試打樣。
總結(jié):使用74HC164+與門,2個(gè)IO口就能控制LCD1602了,但是驅(qū)動(dòng)效率低一些。沒有74HC595的3線控制快。
-
單片機(jī)
+關(guān)注
關(guān)注
6058文章
44821瀏覽量
644714 -
lcd
+關(guān)注
關(guān)注
34文章
4480瀏覽量
170135 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1888瀏覽量
92072 -
LCD1602
+關(guān)注
關(guān)注
14文章
607瀏覽量
53204 -
IO口
+關(guān)注
關(guān)注
3文章
170瀏覽量
24656
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
51單片機(jī)是怎樣驅(qū)動(dòng)LCD1602的
基于單片機(jī)虛擬串口驅(qū)動(dòng)LCD1602的電路仿真
LCD1602驅(qū)動(dòng)程序
單片機(jī)原理及應(yīng)用LCD1602顯示原理
基于51單片機(jī)的LCD1602四數(shù)據(jù)線驅(qū)動(dòng)程序,LCD1602單片機(jī)驅(qū)動(dòng)程序
使用單片機(jī)進(jìn)行LCD1602讀寫驅(qū)動(dòng)函數(shù)的例程免費(fèi)下載

STM32單片機(jī)驅(qū)動(dòng)LCD1602的源代碼免費(fèi)下載

基于51單片機(jī)的LCD1602顯示proteus實(shí)驗(yàn)
51單片機(jī)驅(qū)動(dòng)LCD1602顯示原理及例程

單片機(jī):LCD1602 的應(yīng)用實(shí)驗(yàn)

51單片機(jī)驅(qū)動(dòng)——LCD1602

單片機(jī)學(xué)習(xí)(五)LCD1602和矩陣鍵盤的使用

LCD1602液晶顯示屏驅(qū)動(dòng)文件

評(píng)論