LCD1602作為常見的并口數據屏幕,因為驅動簡單,相較數碼管可以顯示更多的內容,所以應用很多,當然了,不及LCD單色液晶屏和彩色LCD屏,可以操控每個像素點。
這里分享的是2個IO口驅動LCD1602,當前市面上是有這樣的方案的,不過用的是IIC芯片擴展IO口,本質上還是增加了IO口數量。當然了,移位寄存器也是擴展IO口,這里擴展的是輸出類型。
回歸正題,原理圖,時序圖如下,具體的原理分析,可以閱讀原文,觀看視頻。
主要函數代碼,此代碼用于STC8單片機,其他單片機可能需要修改部分內容,尤其是延時部分,LCD1602數據處理需要時間,延時不夠,是會出問題的。
底層驅動函數
//LCD1602寫入數據或指令
//0指令,1數據
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++)//傳輸數據高4位
{
HC164_CP=0;
HC164_DI=dat&0x80;//先傳輸最高位;
HC164_CP=1;
dat <=1;//次高位左移到最高位
}
HC164_DI=1;HC164_DI=0;//LCD1602吸收數據
//如果DI=0;那么此時DI=1;DI=0即可
//如果DI=1;那么DI=0即可
//傳輸低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++)//傳輸低4位數據
{
HC164_CP=0;
HC164_DI=dat&0x80;//先傳輸高位;
HC164_CP=1;
dat <=1;//次高位左移到最高位
}
HC164_DI=1;HC164_DI=0;//LCD1602吸收數據
}
延時函數
void Delay100us() //@24.000MHz
{
unsigned char i, j;
i = 4;
j = 27;
do
{
while (--j);
} while (--i);
}
//測試600us延時能用
void LCD1602_Delay()
{
Delay100us();Delay100us();
Delay100us();Delay100us();
Delay100us();Delay100us();
Delay100us();Delay100us();
}
初始化代碼
void LCD1602_Init()//LCD1602初始化
{
LCD1602_Write_Data(0,0x02);//光標復位
LCD1602_Delay();
LCD1602_Write_Data(0,0x28);//四位總線,雙行顯示
LCD1602_Delay();
LCD1602_Write_Data(0,0x01);//清除顯示
LCD1602_Delay();
LCD1602_Write_Data(0,0x06);//光標移動方向
LCD1602_Delay();
LCD1602_Write_Data(0,0x0c);//整體顯示開,無光標
LCD1602_Delay();
LCD1602_Write_Data(0,0x14);//光標隨著字右移
LCD1602_Delay();
}
以上代碼差不多了,工程代碼分享到粉絲群了,公眾號后臺可以加粉絲群下載。
PCB工程分享,此工程本人沒有測試打樣。
總結:使用74HC164+與門,2個IO口就能控制LCD1602了,但是驅動效率低一些。沒有74HC595的3線控制快。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6006文章
44019瀏覽量
622043 -
lcd
+關注
關注
34文章
4289瀏覽量
164484 -
數碼管
+關注
關注
31文章
1831瀏覽量
90041 -
LCD1602
+關注
關注
14文章
606瀏覽量
52054 -
IO口
+關注
關注
3文章
164瀏覽量
23784
發布評論請先 登錄
相關推薦
51單片機僅用SDA,SCL兩個口怎樣控制IIC LCD1602顯示
` 本帖最后由 763439226 于 2013-8-3 12:04 編輯
各位發燒友們,請幫個忙看看啊,手里有一IIC LCD模塊,用的是PCF8574T控制LCD1602,51單片機
發表于 08-03 12:02
51單片機lcd1602程序詳解
51單片機lcd1602程序詳解,LCD1602是我們常用的一種顯示屏,一直想寫一些關于元器件的介紹和使用。今天就來從LCD1602開始。
發表于 07-19 09:20
LCD1602什么意思?
一行可以顯示16個字符,一共有兩行?,F在我們來看看如何使用簡單的IO控制和延時來實現操作LCD1602液晶模塊。既然是用單片機控制LCD1602
發表于 07-21 09:24
熟悉LCD1602與單片機的電路連接
一、實驗目的:(一)熟悉 LCD1602 與單片機的電路連接;(二)熟悉 LCD1602 的引腳功能;(三)掌握 LCD1602 的時序;(四)掌握
發表于 11-18 06:23
基于51單片機的LCD1602四數據線驅動程序,LCD1602單片機驅動程序
基于51單片機的LCD1602四數據線驅動程序,LCD1602單片機驅動程序
單片機:LCD1602 的應用實驗
一、實驗目的:(一)熟悉 LCD1602 與單片機的電路連接;(二)熟悉 LCD1602 的引腳功能;(三)掌握 LCD1602 的時序;(四)掌握
發表于 11-11 15:21
?16次下載
51單片機驅動——LCD1602
51單片機驅動——LCD16021.描述51單片機控制LCD1602屏幕顯示測量數據、固定字符串等,大家復制過去可以直接使用,相關注釋我已標
發表于 11-21 09:06
?22次下載
51單片機 LCD1602驅動顯示(模板)+Proteus
51單片機 LCD1602驅動顯示(模板)+Proteus本項目工程篇,只展示LCD1602驅動顯示,不涉及其他外設
發表于 11-23 17:06
?30次下載
評論