《單片機原理及應用 》課件-第7章_第1頁
《單片機原理及應用 》課件-第7章_第2頁
《單片機原理及應用 》課件-第7章_第3頁
《單片機原理及應用 》課件-第7章_第4頁
《單片機原理及應用 》課件-第7章_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章單片機接口技術7.1LED數(shù)碼管接口技術

任務7-1用LED數(shù)碼管顯示數(shù)字“5”

任務7-24位共陽極數(shù)碼管的動態(tài)掃描顯示7.2點陣LED接口技術

任務7-3使用LED點陣顯示“1”7.3鍵盤接口技術

任務7-4無軟件消抖的獨立式鍵盤輸入

任務7-5采用軟件消抖的獨立式鍵盤輸入第7章單片機接口技術7.4字符型LCD液晶接口技術

任務7-6用LCD顯示字符“MCU”本章小結習題

在工業(yè)控制、智能儀表、家用電器等領域,單片機應用系統(tǒng)需要配接數(shù)碼管、液晶屏、鍵盤等外接器件。接口技術用于解決單片機與外接器件的信息傳輸問題,以完成初始設

置、數(shù)據(jù)輸入,以及控制量輸出、結果存儲和顯示等功能。本章主要介紹MCS51單片機與LED數(shù)碼管、鍵盤、LCD液晶等接口技術及其應用的實例。

7.1LED數(shù)碼管接口技術

7.1.1LED數(shù)碼管的原理LED數(shù)碼管顯示數(shù)字和符號的原理與用火柴棒拼寫數(shù)字非常類似,用幾個發(fā)光二極管也可以拼成各種各樣的數(shù)字和圖形,LED數(shù)碼管就是通過控制對應的發(fā)光二極管來顯示數(shù)字的。圖7-1所示為常見數(shù)碼管的實物圖,其結構如圖7-2所示。

數(shù)碼管實際上是由7個發(fā)光二極管組成的一個8字形,還有另外一個發(fā)光二極管做成圓點形,主要作為顯示數(shù)據(jù)的小數(shù)點使用,這樣一共使用了8個發(fā)光二極管,所以叫8段LED數(shù)碼管。這些段分別由字母a、b、c、d、e、f、g和

dp來表示。當給這些數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,以顯示出各種數(shù)字和圖形。

圖7-1常見數(shù)碼管的實物圖圖7-2常見數(shù)碼管結構

在引腳分布中,COM腳為8個發(fā)光二極管的公共引腳,a~g和dp腳為7個條形發(fā)光二極管和圓點發(fā)光二極管的另一端引腳。按照公共端的形成方式,數(shù)碼管分共陽極數(shù)碼管和共陰極數(shù)碼管兩種,它們的內部結構如圖7-3、圖7-4所示。圖7-4共陰極數(shù)碼管內部結構圖

共陽極數(shù)碼管中,各發(fā)光二極管的陰極引出,分別為數(shù)碼管的a~dp腳,發(fā)光二極管的陽極接在一起,由COM引腳引出。

共陰極數(shù)碼管中,各發(fā)光二極管的陽極引出,分別為數(shù)碼管的a~dp腳,發(fā)光二極管的陰極接在一起,由COM引腳引出。

所謂共陽極數(shù)碼管,就是它們的公共端(也叫做COM端)接正極;反之,公共端接地,則為共陰極數(shù)碼管。

7.1.2接口電路與段碼控制

共陽極數(shù)碼管和單片機的接口電路原理圖如圖7-5所示。三極管的導通狀態(tài)受P2.0引腳的輸出電平控制,其集電極為數(shù)碼管的共陽極端。P0.0~P0.7引腳的輸出電平可以控制數(shù)碼管各字段的亮滅狀態(tài),只要讓P0口輸出規(guī)定的控制信號,就可以使這些字段按照要求亮滅,顯示出不同的數(shù)字。圖7-5共陽極數(shù)碼管和單片機的接口電路原理圖

下面以數(shù)字“5”的顯示為例,介紹數(shù)碼管顯示數(shù)字的方法。要顯示數(shù)字“5”,數(shù)碼管中亮的字段應當是a、f、g、c和d,即數(shù)碼管的輸入端a、f、g、c和d需要通低電平;而字段b、e和dp不亮,即數(shù)碼管的輸入端b、e和dp

通高電平。如果將字段a、b、c、d、e、f、g和dp分別接在P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6和P0.7這8個單片機引腳上,則各引腳輸出的電平信號見表7-1。根據(jù)表7-1,可得P0=l00l0010B=92H,即只要讓單片機P0口輸出“0x92”,就可以讓數(shù)碼管顯示數(shù)字“5”。同樣,可得出所有數(shù)字的段碼,結果見表7-2。

任務7-1用LED數(shù)碼管顯示數(shù)字“5”

任務目的用LED數(shù)碼管顯示數(shù)字“5”,接口電路及運行效果如圖71所示(采用7SEGCOMANGRN型數(shù)碼管)。任務準備設備及軟件:萬用表、計算機、KeilμVision4軟件、Proteus軟件。

任務實施

1.任務分析

圖7-6中數(shù)碼管的電源由三極管Q1提供,當P2.0引腳輸出低電平“0”時,Q1導通,數(shù)碼管通電。然后只要讓P0口輸出數(shù)字“5”的段碼,并將該段碼送到數(shù)碼管相應接口,即可顯示出數(shù)字“5”。整個過程可分兩個步驟來完成。圖7-6

(1)由P2.0引腳輸出低電平點亮數(shù)碼管。

P2=0xfe;//P2=11111110B,P2.0引腳輸出低電平,點亮數(shù)碼管

(2)P0口輸出數(shù)字的段碼。

P0=0x92;//0x92是數(shù)字″5″的段碼

2.程序設計

先建立一個文件夾,然后建立“

LEDSegmentDisplays”工程項目,最后建立源程序文

件“LEDSegmentDisplays.c”。輸入如下源程序:

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的hex文件載入AT89C51。啟動仿真,即可看到圖7-6中的數(shù)碼管顯示出數(shù)字“5”。

任務7-24位共陽極數(shù)碼管的動態(tài)掃描顯示

任務目的使用4位數(shù)碼管動態(tài)掃描顯示數(shù)字“1234”,接口電路及運行效果如圖7-7所示。任務準備設備及軟件:萬用表、計算機、KeilμVision4軟件、Proteus軟件。

任務實施

1.任務分析

要用數(shù)碼管顯示多位數(shù)字,可采用如圖7-7所示的接口電路。圖中電壓表不能去掉,否則仿真結果不正確,這是由于仿真軟件某些特性與實物不一致所致,因此仿真軟件的仿真結果僅作學習參考。圖中數(shù)碼管的字段控制端口都接在P0口,而位選(電源)控制端口則分別接在P2口的不同引腳。圖7-74位共陽極數(shù)碼管的動態(tài)掃描顯示

2.程序設計

先建立一個文件夾,然后建立“DigitalTubeDynamicScanning”工程項目,最后建立

源程序文件“DigitalTubeDynamicScanning.c”。

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的hex文件載入AT89C51。啟動仿真,即可看到圖7-7中的數(shù)碼管顯示出數(shù)字“1234”。

7.2點陣LED接口技術

7.2.1點陣的初步認識點陣LED顯示屏作為一種現(xiàn)代電子媒體,具有靈活的顯示面積(可任意分割和拼裝)、高亮度、長壽命、數(shù)字化、實時性等特點,應用非常廣泛。一個8×8的點陣LED如圖7-8所示,它由64個LED組成,它的內部結構原理圖如圖7-9所示。圖7-88×8的點陣LED實物圖圖7-98×8點陣結構原理圖

7.2.2點陣的圖形顯示概述

在顯示數(shù)字、字母或圖形的時候,需要由單片機送出數(shù)據(jù)給LED點陣的各共陽極,這些數(shù)據(jù)通過專用取模軟件來提取,非常方便。下面介紹一款簡單的字模提取軟件“字模精

靈V1.0”。其他取模軟件原理類同,讀者可以上網(wǎng)搜索。

如圖7-10所示,首先設置字體,字體設置為“宋體”、字形設置為“常規(guī)”、大小設置為“小五”。在輸入字符中輸入要提取字模的字符“1”,在參數(shù)中分別選擇“C51格式”、“字節(jié)正序”、“橫向取?!?然后單擊“取模”按鈕,即可生成如圖7-10所示的顯示數(shù)據(jù)。在生成的12個字節(jié)數(shù)據(jù)中,我們選取中間的8個字節(jié)數(shù)據(jù)。圖7-10“字模精靈”軟件界面

對于8×8的點陣來說,我們可以顯示一些簡單的圖形、字符等。但大部分漢字通常要用到16×16個點,8×8的點陣只能顯示一些簡單筆畫的漢字,讀者可以自己取模做出來

試試看。使用大屏顯示漢字的方法和小屏的方法是類似的,所需要做的只是按照相同的原理來擴展行數(shù)和列數(shù)而已。

任務7-3使用LED點陣顯示“1”

任務目的使用8×8的LED點陣顯示數(shù)字“1”,接口電路及運行效果如圖7-11所示。任務準備設備及軟件:萬用表、計算機、KeilμVision4軟件、Proteus軟件。圖7-11使用8×8的LED點陣顯示“1”

任務實施

1.任務分析

在Proteus中,8×8的LED點陣取出后,上、下的8個引腳究竟哪個是行線,哪個是列線,并無標示,需要通過測試來確定。方法很簡單,陽極加高電平,陰極加低電平。如果行列判斷正確,總會有二極管被點亮,如果不正確,則交換高、低電平的位置即可。元件取出后,先不對元件進行旋轉或鏡像操作,按圖7-12接線,即假定上面引腳為陰極,下面引腳為陽極。運行仿真,如果出現(xiàn)如圖7-12所示的仿真結果,說明元件在初始狀態(tài)時,上面8個引腳為陰極,下面8個引腳為陽極。

圖7-12

2.程序設計

先建立一個文件夾,然后建立“LEDMatrixModule”工程項目,最后建立源程序文件“LEDMatrixModule.c”。

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的hex文件載入AT89C51。啟動仿真,即可看到圖7-11中的

LED點陣顯示出數(shù)字“1”。

7.3鍵盤接口技術

在單片機應用系統(tǒng)中,需要通過輸入裝置對系統(tǒng)進行初始設置和輸入數(shù)據(jù)等操作,這些任務通常采用鍵盤來完成。鍵盤是單片機應用系統(tǒng)中最常用的輸入設備之一,它是由若干按鍵按照一定規(guī)則組成的。每一個按鍵實際上是一個開關元件,按構造可分為有觸點開關按鈕和無觸點開關按鍵兩類。有觸點開關按鍵有機械開關、彈片式微動開關、導電橡膠等;無觸點開關按鍵有電容式按鍵、光電式按鍵和磁感應按鍵等。目前單片機應用系統(tǒng)中使用最多的鍵盤可分為編碼鍵盤和非編碼鍵盤。

編碼鍵盤能夠由硬件邏輯自動提供與被按鍵對應的編碼,通常還有去抖動、多鍵識別等功能。這種鍵盤使用方便,但價格較貴,一般的單片機應用系統(tǒng)很少采用。非編碼鍵盤只提供簡單的行和列的矩陣,應用時由軟件來識別鍵盤上的閉合鍵。它具有結構簡單,使用靈活等特點,因此被廣泛應用于單片機控制系統(tǒng)。在應用中,非編碼鍵盤常用的類型有獨立式(線性)鍵盤和矩陣(行列式)鍵盤。獨立式鍵盤通常用于按鍵數(shù)目較少的場合,而后者適用于按鍵數(shù)目較多的場合。

7.3.1獨立式鍵盤的工作原理

1.接口電路

所謂的獨立式鍵盤,是指每一個I/O端口上只接一個按鍵,按鍵的另一端接電源或接地(通常接地),其實現(xiàn)原理是利用I/O端口讀取端口的電平高低來判斷是否有鍵按下。

獨立式鍵盤接口電路如圖7-13所示,每一個按鍵對應P1口的一根線,各鍵是相互獨立的。應用時,由軟件來識別鍵盤上的鍵是否被按下。當某個鍵被按下時,該鍵對應的端口將由高電平變?yōu)榈碗娖?。反過來,如果檢測到某端口為低電平,則可判斷出該端口對應的按鍵被按下。所以,通過軟件可判斷出各按鍵是否被按下。圖7-13獨立式鍵盤接口電路

2.按鍵抖動的消除

單片機中應用的鍵盤一般是由機械觸點構成的。在圖7-13中,當開關S1未被按下時,P1.4引腳輸入信號為高電平;

S1閉合后,Pl.4引腳輸入信號為低電平。由于按鍵是機械觸點,當機械觸點斷開、閉合時,觸點將有抖動,Pl.4引腳輸入端的波形如圖7-14所示。這種抖動對于人來說是感覺不到的,但對于單片機來說,則是完全可以感應到的。因為單片機處理的速度為微秒級,而機械抖動的時間至少是毫秒級,對單片機而言,這已是一個“漫長”的時間了。所以雖然只按了一次按鍵,但是單片機卻檢測到按了多次鍵,因而往往產(chǎn)生非預期的結果。圖7-14按鍵抖動產(chǎn)生的輸入波形

為使單片機能夠正確地讀出鍵盤所接I/O口的狀態(tài),就必須考慮如何消抖。通常去除抖動影響的方法有硬件、軟件兩種,單片機中常用的消抖方法為軟件消抖法。當單片機第

一次檢測到某口線為低電平時,不是立即認定其對應按鍵被按下,而是延時幾十毫秒后再次檢測該口線電平。如果仍為低電平,說明該按鍵確實被按下,這實際上是避開了按鍵按下時的抖動時間。而在檢測到按鍵釋放后再延時幾十毫秒,消除后沿的抖動,然后再執(zhí)行相應任務。不過一般情況下,即使不對按鍵釋放的后沿進行處理,也能滿足絕大多數(shù)場合的要求。

3.鍵盤的工作方式

對鍵盤的響應取決于鍵盤的工作方式,鍵盤的工作方式應根據(jù)實際應用系統(tǒng)中CPU的工作狀況而定,其選取的原則是既要保證CPU能及時響應按鍵操作,又不要過多占用CPU的工作時間。通常,鍵盤的工作方式有三種,即編程掃描、定時掃描和中斷掃描。

1)編程掃描工作方式

編程掃描工作方式是利用CPU在完成其他工作的空余時間,調用鍵盤掃描子程序來響應鍵輸入要求。在執(zhí)行鍵功能程序時,CPU不再響應鍵輸入要求。

鍵盤掃描子程序一般應具備下述幾個功能:

(1)判別有無鍵按下。

(2)消除鍵的機械抖動。

(3)判斷閉合鍵的鍵號。

(4)判斷閉合鍵是否釋放,若沒有釋放則繼續(xù)等待。

(5)將閉合鍵鍵號保存,同時轉去執(zhí)行該閉合鍵的功能。

2)定時掃描工作方式

定時掃描方式就是每隔一段時間對鍵盤掃描一次,它利用單片機內部的定時器產(chǎn)生一定時間(如10ms)的定時,定時時間到時就產(chǎn)生定時器溢出中斷。CPU響應中斷后對鍵盤

進行掃描,并在有鍵按下時識別出該鍵,再執(zhí)行該鍵的功能程序。定時掃描工作方式的硬件電路與編程掃描工作方式的硬件電路相同。

3)中斷掃描工作方式

采用上述兩種鍵盤掃描方式時,無論是否按鍵,CPU都要定時掃描鍵盤,而單片機應用系統(tǒng)工作時,并非經(jīng)常需要鍵盤輸入,因此,CPU經(jīng)常處于空掃描狀態(tài)。

為了提高CPU的工作效率,可采用中斷掃描工作方式。即無鍵按下時,CPU處理自己的工作,當有鍵按下時,產(chǎn)生中斷請求,CPU轉去執(zhí)行鍵盤掃描子程序,并識別鍵號。

中斷掃描工作方式的一種簡易鍵盤接口如圖7-15所示。圖中接有一個四輸入端與門,其輸入端分別與各列線相連,輸出端接單片機外部中斷輸入INT0。初始化時,使鍵盤行輸出口全部置零。當有鍵按下時,INT0端為低電平,向CPU發(fā)出中斷申請,若CPU開放外部中斷,則響應中斷請求,進入中斷服務程序。在中斷服務程序中先保護現(xiàn)場,然后執(zhí)行前面討論的掃描式鍵盤輸入子程序,最后恢復現(xiàn)場并返回。圖7-15中斷掃描工作方式鍵盤接口

7.3.2矩陣鍵盤的工作原理

利用MCS-51單片機的I/O端口連接獨立式鍵盤,在按鍵個數(shù)較少的時候能夠達到一定效果,但如果系統(tǒng)需要的按鍵個數(shù)比較多,則這種方式需要占用大量的I/O端口,如16個按鍵就要占用16個I/O端口,非常浪費系統(tǒng)資源。當系統(tǒng)需要按鍵的個數(shù)較多時,采用矩陣式鍵盤更合理,即利用MCS51單片機的I/O端口相互交叉構成鍵盤,這種方式不僅節(jié)省I/O端口,而且按鍵掃描和按鍵識別程序也比較簡單。

1.接口電路

在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。例如,對于l6個按鍵的鍵盤,可以按照圖7-16所示的4×4矩陣方式連接,即4根行線和4根列線,每個行線和列線交叉點處即為一個鍵位。4根行線接Pl口的低4位I/O口線,4根列線接P1口的高4位I/O口線,共需8根I/O口線。

2.工作原理

使用矩陣鍵盤的關鍵是如何判斷按鍵值。根據(jù)圖7-16所示,如果已知Pl.0引腳被置為低電平“0”,那么當按鍵S1被按下時,可以肯定Pl.4引腳的信號必定變成低電平“0”;

反之,如果已知P1.0引腳被置為低電平“O”,P1.1引腳、P1.2引腳和P1.3引腳被置為高電平,而單片機掃描到P1.4引腳為低電平“0”,則可以肯定S1鍵被按下。圖7-16矩陣鍵盤的接口電路

識別按鍵的基本過程如下:

(1)首先判斷是否有鍵被按下。將全部行線(P1.0引腳、P1.1引腳、P1.2引腳和P1.3引腳)置低電平“0”,全部列線置高電平“1”,然后檢測列線的狀態(tài)。只要有一列的電

平為低,則表示鍵盤中有鍵被按下;若檢測到所有列線均為高電平,則鍵盤中無鍵被按下。

(2)按鍵消抖。當判別到有鍵被按下后,調用延時子程序,執(zhí)行后再次進行判別。若確認有鍵被按下,則開始第(3)步的按鍵識別,否則重新開始。

(3)按鍵識別。當有鍵被按下時,轉入逐行掃描的方法來確定是哪一個鍵被按下。先掃描第一行,即先將第一行輸出低電平“0”,然后讀入列值,哪一列出現(xiàn)低電平“0”,則說明該列與第一行跨接的鍵被按下。若讀入的列值全為“1”,則說明與第一行跨接的按鍵(S1~S4)均沒有被按下。接著開始掃描第二行,依次類推,逐行掃描,直到找到被按下的鍵。

任務7-4無軟件消抖的獨立式鍵盤輸入

任務目的用按鍵S1控制發(fā)光二極管D1的工作狀態(tài)(亮、滅)。每按下一次按鍵S1后,發(fā)光二極管D1的工作狀態(tài)發(fā)生翻轉,電路原理圖如圖7-17所示。任務準備設備及軟件:萬用表、計算機、KeilμVision4軟件、Proteus軟件。圖7-17獨立式鍵盤輸入實驗電路

任務實施

1.實現(xiàn)方法

將P1.0引腳電平初始化為低電平(D1點亮),將P3.5引腳電平初始化為高電平,以后每按下一次按鍵S1,讓P1.0引腳輸出電平翻轉即可。

2.程序設計

先建立一個文件夾,然后新建一個名稱為“KEY1”的工程項目,最后建立源程序文件“KEY1.c”。

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的“KEY1.hex”文件載入AT89C51。啟動仿真,可以看到,當

用鼠標按下S1鍵時,發(fā)光二極管D1亮滅狀態(tài)的控制不能達到預期效果,常常需按多次按鍵,才能實現(xiàn)D1最終的工作狀態(tài)發(fā)生翻轉。

出現(xiàn)這種現(xiàn)象的原因是:程序沒有進行按鍵消抖,從而使單片機實際檢測到的按鍵次數(shù)不確定。

任務7-5采用軟件消抖的獨立式鍵盤輸入

任務目的用按鍵S1控制發(fā)光二極管D1的工作狀態(tài)(亮、滅)。每按下一次按鍵S1后,發(fā)光二極管D1的工作狀態(tài)發(fā)生翻轉,電路原理圖如圖7-17所示。設計一段采用軟件消抖的按鍵識別程序實現(xiàn)上述功能。任務準備設備及軟件:萬用表、計算機、KeilμVision4軟件、Proteus軟件。

任務實施

1.實現(xiàn)方法

將P1.0引腳電平初始化為低電平(D1點亮),將P3.5引腳電平初始化為高電平,之后檢測按鍵S1是否閉合,若閉合則延時20ms左右后再次檢測按鍵的狀態(tài),若仍為閉合狀態(tài),則說明按鍵為有效閉合狀態(tài),讓P1.0引腳輸出電平翻轉即可;否則說明為按鍵抖動引起的干擾,應不做處理,這樣便有效消除了按鍵的抖動帶來的誤操作。

2.程序設計

先建立一個文件夾,然后新建一個名稱為“KEY2”的工程項目,最后建立源程序文件“KEY2.c”。

3.用Proteus軟件仿真

經(jīng)Keil軟件編譯通過后,可利用Proteus軟件進行仿真。在ProteusISIS編輯環(huán)境中繪制仿真電路圖,將編譯好的“KEY2.hex”文件載入AT89C51。啟動仿真,可以看到,當

用鼠標點動按下S1鍵時,發(fā)光二極管D1亮滅狀態(tài)的控制較好地達到了預期效果。

當長時間按下S1鍵時,發(fā)光二極管D1的工作狀態(tài)不斷翻轉,若想避免這樣的現(xiàn)象,可在程序中按鍵檢測的部分,增加等待按鍵釋放的語句。

7.4字符型LCD液晶接口技術

普通的LED數(shù)碼管只能用來顯示數(shù)字,如果要顯示英文、漢字或圖像,則需要使用液晶顯示器。液晶顯示器的英文名稱是LiquidCrystalDisplay,簡稱LCD。液晶顯示器作為顯示器件具有體積小、重量輕、功耗低等優(yōu)點,所以LCD日漸成為各種便攜式電子產(chǎn)品的理想顯示器,如電子表、計算器上的顯示器等。

目前常用的有16字×1行、16字×2行、20字×2行和40字×2行等字符模塊。這些LCD雖然顯示的字數(shù)各不相同,但都具有相同的輸入/輸出界面。型號通常用XXX1602、XXX1604、XXX2002、XXX2004等表示。對于XXX1602,XXX為商標名稱;16代表液晶每行可顯示16個字符;02表示共有2行,即這種顯示器一共可顯示32個字符。圖7-18所示是某1602字符型LCD的外形圖。圖7-18某1602字符型LCD的正反面照片

1.LCD顯示的原理

液晶顯示的原理是利用液晶的物理特性,通過電壓對顯示區(qū)域進行控制,只要輸入所需的控制電壓,就可以顯示出字符。LCD能夠顯示字符的關鍵在于其控制器,目前大部分點陣型LCD都使用日立公司的HD44780集成電路作為控制器。

2.1602型LCD的特性

(1)5V電壓,反視度(明暗對比度)可調整。

(2)內含振蕩電路,系統(tǒng)內含重置電路。

(3)提供各種控制命令,如清除顯示器、字符閃爍、光標閃爍、顯示移位等多種功能。

(4)顯示用數(shù)據(jù)DDRAM共用80B。

(5)字符發(fā)生器CGROM有160個5×7點陣字符。

(6)字符發(fā)生器CGRAM可由使用者自行定義8個5×7的點陣字符。

3.1602型LCD的引腳及功能

1腳(VDD/VSS):電源5V或接地。

2腳(VSS/VDD):接地或電源5V。

3腳(VEE):對比度調整。使用可變電阻調整,通常接地。

4腳(RS):寄存器選擇。高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。

5腳(R/W):讀/寫選擇。高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址;當RS為低電平、R/W為高電平時可以讀忙信號;當RS為高電平、R/W為低電平時可以寫入數(shù)據(jù)。

6腳(E):使能操作。高電平時LCM可做讀寫操作;低電平時LCM不能做讀寫操作。

7腳(DB0):雙向數(shù)據(jù)總線的第0位。

8腳(DB1):雙向數(shù)據(jù)總線的第1位。

9腳(DB2):雙向數(shù)據(jù)總線的第2位。

10腳(DB3):雙向數(shù)據(jù)總線的第3位。

11腳(DB4):雙向數(shù)據(jù)總線的第4位。

12腳(DB5):雙向數(shù)據(jù)總線的第5位。

13腳(DB6):雙向數(shù)據(jù)總線的第6位。

14腳(DB7):雙向數(shù)據(jù)總線的第7位。

15腳(VDD):背光顯示器電源+5V。

16腳(VSS):背光顯示器接地。

說明:由于生產(chǎn)LCD的廠商眾多,使用時應注意電源引腳1、2的不同。LCD數(shù)據(jù)讀寫方式可以分為8位及4位兩種,以8位數(shù)據(jù)進行讀寫則DB7~DB0都有效,若以4位方

式進行讀寫則只用到DB7~DB4。

4.LCD的控制器HD44780的特點

HD44780的內部組成結構如圖7-19所示。HD44780的特點總結如下:

(1)HD44780不僅可作為控制器,而且還具有驅動40×16點陣液晶像素的能力,并且HD44780的驅動能力可通過外接驅動器擴展360列驅動。

(2)HD44780的顯示緩沖區(qū)及用戶自定義的字符發(fā)生器CGRAM全部內藏在芯片內。

(3)HD44780具有適用于M6800系列MCU的接口,并且接口數(shù)據(jù)傳輸可為8位數(shù)據(jù)傳輸和4位數(shù)據(jù)傳輸兩種方式。

(4)HD44780具有簡單而功能較強的指令集,可實現(xiàn)字符移動、閃爍等顯示功能。

由于HD44780的DDRAM容量有限,HD44780可控制的字符為每行80個字,也就是5×80=400點。HD44780內藏有16路行驅動器和40路列驅動器,所以HD44780本身

就具有驅動16×40點陣LCD的能力(即單行16個字符或兩行8個字符)。

圖7-19HD44780的內部組成結構

5.LCD的控制器HD44780的工作原理

1)DDRAM———數(shù)據(jù)顯示用RAM

DDRAM是數(shù)據(jù)顯示用RAM(DataDisplayRAM)。DDRAM用來存放我們要LCD顯示的數(shù)據(jù),只要將標準的ASCII碼送入DDRAM,內部控制電路就會自動將數(shù)據(jù)傳送到顯示器上,如要LCD顯示字符A,則我們只需將ASCII碼41H存入DDRAM即可。DDRAM有80B(字節(jié))空間,共可顯示80個字(每個字為1個字節(jié)),其存儲器地址與實際

顯示位置的排列順序與LCD的型號有關。1602液晶屏的RAM地址映射圖如圖7-20所示。圖7-201602液晶屏的RAM地址映射圖

2)CGROM———字符產(chǎn)生器ROM

CGROM是字符產(chǎn)生器ROM(CharacterGeneratorROM)。CGROM儲存了192個

5×7的點陣字符。CGROM的字符要經(jīng)過內部電路的轉換才會傳到顯示器上,僅能讀出不可寫入。字符的排列方式與標準的ASCII碼相同,如字符碼31H為1字符,字符碼41H

為A字符。如我們要在LCD中顯示A,就是將A的ASCII代碼41H寫入DDRAM中,同時電路到CGROM中將A的字符點陣數(shù)據(jù)找出來顯示在LCD上。字符與字符碼對照表

如表7-3所示。

3)CGRAM———字符產(chǎn)生器RAM

CGRAM即字符產(chǎn)生器RAMCharacterGeneratorRAM)。CGRAM是供使用者儲存自行設計的特殊造型的造型碼RAM的。CGRAM共有512b(64字節(jié))。一個5×7點陣字

符占用8×8b,所以CGRAM最多可存8個造型。

4)IR———指令寄存器

IR是指令寄存器(InstructionRegister)。IR負責儲存MCU要寫給LCD的指令碼。當MCU要發(fā)送一個命令到IR時,必須要控制LCD的RS、R/W及E這三個引腳,當

RS及R/W引腳信號為0,E引腳信號由1變?yōu)?時,就會把在DB0~DB7引腳上的數(shù)據(jù)送入IR。

5)DR———數(shù)據(jù)寄存器

DR是數(shù)據(jù)寄存器(DataRegister)。DR負責儲存MCU要寫到CGRAM或DDRAM的數(shù)據(jù),或儲存MCU要從CGRAM或DDRAM讀出的數(shù)據(jù),因此DR可視為一個數(shù)據(jù)緩沖區(qū),它也是由LCD的RS、R/W及E等三個引腳來控制的。當RS及R/W引腳信號為1,E接腳信號由1變?yōu)?時,LCD會將DR內的數(shù)據(jù)由DB0~DB7輸出以供MCU讀取;當RS引腳信號為1,R/W引腳信號為0,E引腳信號由1變?yōu)?時,就會把在DB0~DB7引腳上的數(shù)據(jù)存入DR。

6)BF———忙碌標志信號

BF是忙碌標志信號(BusyFlag)。BF的功能是告訴MCU,LCD內部是否正忙著處理數(shù)據(jù)。當BF=1時,表示LCD內部正在處理數(shù)據(jù),不能接受MCU送來的指令或數(shù)據(jù)。

LCD設置BF的原因為:MCU處理一個指令的時間很短,只需幾微秒左右,而LCD得花上40μs~1.64ms的時間,所以MCU要寫數(shù)據(jù)或指令到LCD之前,必須先查看BF是否為0。

7)AC———地址計數(shù)器

AC是地址計數(shù)器(AddressCounter)。AC的工作是負責計數(shù)寫到CGRAM、DDRAM數(shù)據(jù)的地址,或從DDRAM、CGRAM讀出數(shù)據(jù)的地址。使用地址設定指令寫到IR后,則地址數(shù)據(jù)會經(jīng)過指令解碼器ID(InstructionDecoder)再存入AC。當MCU從DDRAM或CGRAM存取資料時,AC依照MCU對LCD的操作而自動地修改它的地址計數(shù)值。

6.LCD控制器的指令

用MCU來控制LCD模塊,方式十分簡單。LCD模塊其內部可以看成兩組寄存器:一組為指令寄存器;一組為數(shù)據(jù)寄存器,由RS引腳來控制。所有對指令寄存器或數(shù)據(jù)寄存器的存取均需檢查LCD內部的忙碌標志BF,此標志用來告知LCD目前的工作情況,以及是否允許接收控制命令。而此位的檢查可以令RS=0,用讀取DB7來加以判斷,當此DB7為0時,才可以寫入指令或數(shù)據(jù)寄存器。LCD控制器的指令共有11組,分別如下:

(1)清除顯示器,如表7-4所示。

指令代碼為01H,將DDRAM數(shù)據(jù)全部填入“空白”的ASCII代碼為20H,執(zhí)行此指令將清除顯示器的內容,同時光標移到左上角。

(2)光標歸位設定,如表7-5所示。

指令代碼為02H,地址計數(shù)器被清0,DDRAM數(shù)據(jù)不變,光標移到左上角。*表示可以為0或1。

(3)設定字符進入模式,如表7-6所示。

(4)顯示屏開關,如表7-8所示。

(5)顯示光標移位,如表7-9所示。

S/C與R/L值對應的工作情形如表7-10所示。

(6)功能設定,如表7-11所示。

(7)CGRAM地址設定,如表7-12所示。

該指令用于設定下一個要讀寫數(shù)據(jù)的CGRAM地址(A5~A0)。

(8)DDRAM地址設定,如表7-13所示。

該指令用于設定下一個要讀寫數(shù)據(jù)的DDRAM地址(A6~A0)。

(9)忙碌標志BF或AC地址讀取,如表7-14所示。

LCD的忙碌標志BF用以指示LCD目前的工作情況。當BF=1時,表示正在做內部數(shù)據(jù)的處理,不接受MCU送來的指令或數(shù)據(jù);當BF=0時,表示已準備接收命令或數(shù)據(jù)。當程序讀取此數(shù)據(jù)的內容時,DB7表示忙碌標志,而DB6~DB0的值表示CGRAM或DDRAM中的地址,至于是指向哪一地址,則根據(jù)最后寫入的地址設定指令而定。

(10)寫數(shù)據(jù)到CGRAM或DDRAM中,如表7-15所示。

先設定CGRAM或DDRAM的地址,再將數(shù)據(jù)寫入DB7~DB0中,以使LCD顯示出字形。也可將使用者自創(chuàng)的圖形存入CGRAM。

(11)從CGRAM或DDRAM中讀取數(shù)據(jù),如表7-16所示。

先設定CGRAM或DDRAM地址,再讀取其中的數(shù)據(jù)。

7.控制器接口時序說明(HD44780及兼容芯片)

控制LCD所使用的芯片HD44780的讀寫周期約為1μs左右,這與8051MCU的讀寫周期相當,所以很容易與MCU相互配合使用。讀操作時序如圖7-21所示。圖7-21控制器接口讀操作時序

寫操作時序如圖7-22所示。圖7-22控制器接口寫操作時序

時序參數(shù)如表7-17所示。

8.1602型LCD的讀寫操作

LCD是一個慢顯示器件,所以在寫每條指令前一定要先讀LCD的忙碌狀態(tài)。如果LCD正忙于處理其他指令,就等待;如果不忙,則執(zhí)行寫指令。為此,1602型LCD專門設了一個忙碌標志位BF,該位連接在8位雙向數(shù)據(jù)線的DB7位上。如果BF為低電平“O”,則表示LCD不忙;如果BF為高電平“1”,則表示LCD處于忙碌狀態(tài),需要等待。假定1602型LCD的8位雙向數(shù)據(jù)線(DB0~DB7)是通過單片機的P0口進行數(shù)據(jù)傳遞的,那么只要檢測P0口的P0.7引腳電平(DB7連P0.7)就可以知道忙碌標志位BF的狀態(tài)。

1)讀狀態(tài)(忙碌檢測)

要將待顯示的字符(實際上是其標準ASCII碼)寫入液晶模塊,首先就要檢測LCD是否忙碌,這要通過讀1602型LCD的狀態(tài)來實現(xiàn),即“欲寫先讀”。

2)寫指令

3)寫數(shù)據(jù)

寫數(shù)據(jù)實際是將待顯字符的標準ASCII碼寫入LCD的數(shù)據(jù)顯示用存儲器(DDRAM)。

4)自動顯示

數(shù)據(jù)寫入液晶模塊后,字符產(chǎn)生器(CGROM)將自動讀出字符的字形點陣數(shù)據(jù),并將字符顯示在液晶屏上。這個過程由LCD自動完成,無需人工干預。

9.通常推薦的初始化過程

任務7-6用LCD顯示字符“MCU

任務目的使用1602字符型LCD顯示字符“MCU”,采用的接口電路原理圖如圖7-23所示,要求在1602字符型LCD的第1行顯示大寫英文字母“MCU”。

顯示模式設置如下:

(1)16

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論