51單片機--LCD1602編程入門
這次我來分享一下我的LCD1602的編程經(jīng)驗:
先說明一下,我下面要說的LCD1602的芯片驅動是HD44780,如果你們的LCD1602驅動芯片不是HD44780,那么下面的內容是不適用的。
我對LCD1602的整體理解
這里說一下我對LCD1602的整體理解哈,LCD1602是一個可以顯示兩行字符的LCD顯示器,每一行可以都寫入40個字符,但是每行都只有前16個字符可以顯示,每行后面的24個字符無法立即顯示,只說不容易明白,下面看一下示意圖:
另外LCD1602只能顯示字符,數(shù)字和一些簡單的符號,是無法顯示漢字的,切記。
LCD1602引腳:
然后再說一下引腳,每當學習一個芯片或者模塊,最先要了解的就是引腳:
由于我們現(xiàn)在只是學習怎么編程,所以電路的連接我就不講了,下面說一下與編程有關的引腳:
1.RS引腳:數(shù)據(jù)/命令選擇端(H/L)
當你要給LCD發(fā)送指令的時候,就給這個引腳低電平;
當你要與LCD交互數(shù)據(jù)的時候,就給這個引腳高電平。
2.R/W引腳:讀/寫選擇端(H/L)
當你要向LCD寫入數(shù)據(jù)的時候,就給這個引腳低電平;
當你要讀LCD中的數(shù)據(jù)的時候,就給這個引腳高電平。
3.E引腳:使能端(這里照顧一下愛鉆牛角尖的人:E為什么叫“使能”啊?另外“使能”啥意思,我怎么從來沒聽說過啊?)
答1:E引腳英文全稱:Enable引腳,En是英語中的一個前綴,譯為“使...”,而后面的able是譯為“能夠”,所以合起來就叫“使能”引腳了。
答2:使能啥意思呢,這里不說專業(yè)術語哈,你可以理解為使能端就是一個開關,當這個引腳是高/低電平時這個器件是可以用的,當它為相反電平時這個器件就是沒用的,你無論怎么做它也是不工作的。當然到底是低電平器件有效呢,還是高電平器件有效呢?這個就要看具體器件的數(shù)據(jù)手冊或者有的引腳上也會直接標出來,比如E就是高電平有效,E(——)就是低電平有效。
4.D0~D7引腳:這個就沒什么好說的了,就是傳輸數(shù)據(jù)或者命令的引腳。
5.其他的電源引腳,背光電源什么的就不說了,表格里面已經(jīng)說得非常清楚了,而且我們現(xiàn)在僅僅是學習編程,電路連接不講。
引腳說完了,那么下面我們就可以說LCD1602的編程部分了:
按照慣例,分割線:
出自《刀劍神域》克萊因
我認為對于LCD1602需要記住的就兩部分,時序和指令(并不是非要完全記住,學完后自己寫一個函數(shù)庫,以后開發(fā)用到的時候直接調用就行了)
先說一下時序和初始化過程:
LCD1602讀時序:
讀函數(shù)的源碼我沒寫,畢竟這個幾乎用不到。
用圖中可以看出:
RS引腳按照你的讀取什么而定,讀取數(shù)據(jù)就高電平,讀取命令就是低電平;
RW引腳自然就是高電平了,因為我們要讀嘛;
然后再往后就是E引腳了,我們在讀取命令或者數(shù)據(jù)的時候,必須要先使能這個器件,所以E引腳要置為高電平;
最后D0到D7就是讀取的數(shù)據(jù)了,我們找個變量數(shù)組保存起來就行了。
雖然讀時序講完了,但是在實際開發(fā)中我們幾乎不需要進行讀操作,我想這時有人就會說了:不是要讀取忙標志嗎,那不就要進行讀操作了嗎?的確是那樣,但是LCD1602的速度是納秒級別的,而51單片機是毫秒級別的,所以基本不需要讀取忙標志,只要微延時就行了。
如圖:
LCD1602寫時序:
這個函數(shù)我寫了,下面是代碼:
【注】在函數(shù)里面我用了兩種方式,并4口和并8口;
下面說一下最重要的寫操作時序,從圖中可以看出:
RS引腳按照你的讀取什么而定,讀取數(shù)據(jù)就高電平,讀取命令就是低電平;
RW引腳自然就是低電平了,因為這次我們要寫嘛;
然后再往后就是E引腳了,我們在讀取命令或者數(shù)據(jù)的時候,必須要先使能這個器件,所以E引腳要置為高電平;
最后D0到D7就是寫入的數(shù)據(jù)或者命令了。
LCD1602初始化過程:
這個我也寫了,下面是代碼:
LCD1602的初始化,也就是HD44780芯片的初始化過程,這個初始化過程的版本太多了,大多數(shù)初始化過程都可以成功初始化,但是我這里是在寫文章嘛,自然就不能講一個亂七八糟的初始化過程啦,所以我就查了一下HD44780芯片的英文原版數(shù)據(jù)手冊,下面上圖:
大家如果想看懂的話就從上往下一步一步地看,然后就明白為什么初始化要像上面那樣寫了。
【注】很多初始化的版本都可以成功初始化,我說的那個僅僅是最正規(guī)的而已,個人喜好,只要可以初始化成功就可以了。
最后寫好LCD1602的頭文件,然后LCD1602的函數(shù)庫就做好了,當然我們沒寫讀函數(shù),這些你想寫的話自己加上去就行了。有了這個函數(shù)庫,以后用LCD1602的時候直接調用就行了,很方便。
編輯:admin 最后修改時間:2018-05-22