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線控制快。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6050文章
44687瀏覽量
641174 -
lcd
+關注
關注
34文章
4466瀏覽量
169042 -
數碼管
+關注
關注
32文章
1887瀏覽量
91673 -
LCD1602
+關注
關注
14文章
607瀏覽量
52888 -
IO口
+關注
關注
3文章
170瀏覽量
24394
發布評論請先 登錄
相關推薦
基于單片機虛擬串口驅動LCD1602的電路仿真
基于M ult isim 10 仿真軟件, 設計單片機的虛擬串口驅動LCD1602 液晶電路。實現了虛擬串口擴展并行輸出的功能。該設計適用單片機UART 串口被占用時, 以最少的
發表于 08-16 17:28
?116次下載
基于51單片機的LCD1602四數據線驅動程序,LCD1602單片機驅動程序
基于51單片機的LCD1602四數據線驅動程序,LCD1602單片機驅動程序
單片機:LCD1602 的應用實驗
一、實驗目的:(一)熟悉 LCD1602 與單片機的電路連接;(二)熟悉 LCD1602 的引腳功能;(三)掌握 LCD1602 的時序;(四)掌握
發表于 11-11 15:21
?17次下載

51單片機驅動——LCD1602
51單片機驅動——LCD16021.描述51單片機控制LCD1602屏幕顯示測量數據、固定字符串等,大家復制過去可以直接使用,相關注釋我已標
發表于 11-21 09:06
?22次下載

LCD1602液晶顯示屏驅動文件
1、LCD1602.h文件,進行管腳定義和函數聲明#ifndef _LCD1602_H_#define _LCD1602_H_#include /* 定義單片機的管腳
發表于 01-13 16:41
?10次下載

評論