第八章-顯示鍵盤接口_第1頁
第八章-顯示鍵盤接口_第2頁
第八章-顯示鍵盤接口_第3頁
第八章-顯示鍵盤接口_第4頁
第八章-顯示鍵盤接口_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章MCS-51與LED顯示器和鍵盤的接口

一、MCS-51與LED顯示器接口

常見的顯示器有CRT顯示器、LED顯示器、LCD顯示器

等。而LED顯示器是單片機應用產(chǎn)品中最常用的廉價的

輸出設備,其可靠性很高。

1、顯示器的結(jié)構

常用的顯示器結(jié)構如圖所示:

A、共陽極顯示器

B、共陰極顯示器

2、顯示器的工作方式:

A、靜態(tài)顯示方式所謂靜態(tài)顯示,是指顯示器顯示一字符時,相應的發(fā)光二極管恒定地導通或截止。這種顯示方式的每一個數(shù)碼顯示器,需要一個8位輸出口控制。所以硬件較多,但字符較亮。

a、采用8位鎖存器74LS273作為靜態(tài)顯示器接口

(1)接口電路:

b、采用移位寄存器74LS164作為靜態(tài)顯示器接口

(1)、使用串口TXD、RXD與74LS164連接

接口電路:

顯示程序:

顯示子程序:

MCS-51串行口工作于方式0輸出

顯示段碼:F9H顯‘1’

DIR:MOVR7,#08H

MOVR0,#5FH

DL0:MOVA,@R0

ADDA,#0BH

MOVCA,@A+PC

MOVSBUF,A2 DL1:JNBT1,DL13

CLRT12

DECR01

DJNZR7,DL02

RET1

TAB:DBC0H,F9H,A4H,B0H,99H

D7D6D5D4D3D2D1D0Dpgfedcba1100000011111001

…….

(2)、使用P口線與74LS164連接接口電路:顯示程序(作為練習)

B、動態(tài)顯示方式

所謂動態(tài)顯示是指一位一位地輪流點亮各位顯示

器。對于每一位顯示器來說,每隔一段時間點亮一次,

通常點亮時間為1mS左右,相隔時間為20mS

a、6位共陰顯示器和8255的接口電路:

設8255的CS接P2.7

b、顯示程序的設計思路:(1)8255的端口地址與初始化:

8255的I/O端口地址為:7F00H-7F03H8255的控制字為:80H

注:A口作為位數(shù)據(jù)口,其輸出只能有一位為高。(2)顯示緩沖區(qū):設顯示緩沖區(qū)為40H-45H,它用來存放顯示數(shù)據(jù)。

(3)字形表:

TABDB3FH,06H,5BH,…

c、顯示子程序

顯示子程序流程圖:

c、顯示子程序:

DIR:MOVR0,#40HRLA

MOVR3,#01HMOVR3,A

MOVA,R3SJMPL0

L0:MOVDPTR,#7F00HL1:RET

MOVX@DPTR,ATABDB3FH,06H…

INCDPTR

MOVA,@R0

ADDA,#0DHDY1:MOVR7,#02H

MOVCA,@A+PCL2:MOVR6,#FFH

DIR1:MOVX@DPTR,AL3:DJNZR6,L3

ACALLDY1DJNZR7,L2

INCR0RET

MOVA,R3

JBACC.5,L1

d、時鐘顯示將30H(時)31H(分)32H(秒)單元中的時鐘數(shù)據(jù)顯示出來。顯示格式為:χχ.χχ.χχ

時分秒

將時鐘數(shù)據(jù)(30H-32H)送顯示緩沖區(qū)(40H-45H)

ST:MOVR0,#40HAHX:MOVR2,A

MOVA,30HSWAPA

ACALLAHXANLA,#0FH

INCR0MOV@R0,A

MOVA,31HINCR0

ACALLAHXMOVA,R2

INCR0ANLA,#0FH

MOVA,32HMOV@R0,A

ACALLAHXRET

RET

注:小數(shù)點顯示二、鍵盤接口

鍵盤是由若干個按鍵組成的開關矩陣,它是單

片機最簡單的輸入設備,操作員可以通過鍵盤輸入

數(shù)據(jù)或命令,實現(xiàn)人機通信。

1、鍵盤工作原理及鍵盤掃描程序設計思路:

一個4X4的鍵盤結(jié)構如圖所示:

A、按鍵與否的判別

我們使所有行為低自列線讀入數(shù)據(jù),若列線中有一

位為低,則可判為有鍵按下,否則全為高為無鍵按下。

B、按鍵的識別

由于矩陣網(wǎng)絡上每一個鍵都可以由它所在的行與列

來定位。所以,我們可使第0行至第3行逐行為低,通過

讀入列數(shù)據(jù)來識別是何鍵按下。

例如:當使行2為低,讀入列值時,其列1值為低,

則可判是鍵5按下。

C、鍵抖動及消除

鍵按下和釋放時存在著機械抖動,其對應的列線電

壓波形如圖示,通常抖動時間為5-10mS。

為了保證CPU對鍵的閉合只作一次處理,必須消除抖動,通常增加一個10ms-20ms左右的延時程序,在鍵穩(wěn)定

閉合時才去讀取按值鍵。

D、鍵釋放處理通常采用等待鍵釋放后,再去進行鍵處理,但這種方法實時性差。較好的方法是建立一個按鍵標志,該標

志在鍵釋放后置0,鍵處理后置1。在進行鍵處理時,只有按鍵標志為0時,才去進行鍵處理。

E、由鍵值求鍵號由于所得到的鍵值是一個不規(guī)則數(shù),為了得到一個規(guī)則數(shù)(即鍵號),應當將鍵值作成一個鍵值表,編一

個由項值求項號的查表程序,處于表首址的鍵值所對應的鍵號為00H。

2、鍵盤接口電路

3、鍵盤掃描程序:

各按鍵對應的鍵值與鍵號如下:鍵盤進行掃描管理的流程:

具體程序如下:

ST:MOVDPTR,#7F00HLK0:CLR00H MOVA,#00HLK1:MOVA,#FFH MOVX@DPTR,ARET INCDPTR

INCDPTR

MOVXA,@DPTR

CPLA

ANLA,#0FH

JNZLK2

LK2:ACALLDIR

ACALLDIR

MOVR2,#08H

MOVR3,#FEH

LK3:MOVDPTR,#7F00H

MOVA,R3

MOVX@DPTR,A

RLA

MOVR3,AINCDPTR

INCDPTR

MOVXA,@DPTR

CPLA ANLA,#0FHJNZLK4DJNZR2,LK3

SJMPLK0LK4:SWAPA

ORLA,R2

MOVB,A

JB00H,LK1

MOVDPTR,#TAB

MOVR3,#1FH

LK5:MOVA,R3

MOVCA,@A+DPTR

CJNEA,B,LK7LK6:SETB00H

MOVA,R3

RET

LK7:DJNZR3,LK5

SJMPLK6 TAB:DB88H,48H,47H,…三、7279可編程數(shù)碼管/鍵盤串行接口

HD7279A是一片數(shù)碼管/鍵盤串行接口芯片,其主要特性如下:

串行接口,無需外圍元件可直接驅(qū)動LED。

各位具有獨立控制譯碼/不譯碼及消隱和閃爍屬性。

具有(循環(huán))左移/(循環(huán))右移指令。

具有段尋址指令,方便控制獨立LED。

具有64鍵鍵盤控制器,內(nèi)含去抖動電路。

1、引腳說明:

CS:片選CLK:時鐘輸入端

DATA:串行數(shù)據(jù)入/出端CLK0:振蕩輸出端

KEY:按鍵有效輸出端RES:復位端

SG-SA:段g—段a驅(qū)動輸出DP:小數(shù)點驅(qū)動輸出

DIG0-7:數(shù)位0-7驅(qū)動輸出RC:RC振蕩器連接端

7279芯片與數(shù)碼管、鍵盤的接口電路如圖所示:

2、控制指令

HD7279A的控制指令分為二大類——純指令和帶

有數(shù)據(jù)的指令。

主要控制指令如下:

A、純指令

a、復位(清除)指令A4HD7D6D5D4D3D2D1D010100100

當HD7279A收到該指令后,將所有的顯示清除,所有設置的字符消隱、閃爍等屬性也被一起清除。執(zhí)行該指令后,芯片所處的狀態(tài)與系統(tǒng)上電后所處的狀態(tài)一樣。

b、左移指令A1HD7D6D5D4D3D2D1D0101000014252LP39

例如,原顯示為:

其中第2位‘3’和第4位‘L’為閃爍顯示,執(zhí)行了左移指令后,顯示變?yōu)?252LP39第2位‘9’和第4位‘P’為閃爍顯示。

c、右移指令A0H

D7D6D5D4D3D2D1D010100000

與左移指令類似,但所做移動為自左向右(從第8位向第1位)移動,移動后,最左邊一位為空。

B、帶有數(shù)據(jù)的指令

a、下載數(shù)據(jù)且按方式0譯碼D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010000a2a1a0DPXXXd3d2d1d0

命令由二字節(jié)組成,前半部分為指令,其中a2,a1,

a0為位地址。d0-d3為數(shù)據(jù),收到此指令時,按以下規(guī)

則進行譯碼。

0000:顯01001:顯9

1010:顯-1111:顯空白

小數(shù)點的顯示由DP位控制:

DP=1時,小數(shù)點顯示, DP=0時,小數(shù)點不顯示。

b、下載數(shù)據(jù)且按方式1譯碼D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011001a2a1a0DPXXXd3d2d1d0

此指令與上一條指令其本相同,所不同的是譯碼式,該指令的譯碼為按d0—d3值對應的是0—9,A~F。c、下載數(shù)據(jù)但不譯碼

D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010010a2a1a0DPABCDEFG

其中,a2,a1,a0為位地址,A-G和DP為顯示數(shù)

據(jù),分別對應7段LED數(shù)碼管的各段。當相應的數(shù)據(jù)位

為‘1’時,該段點亮,否則不亮。此指令靈活,通過造

字形表,可以顯示用戶所需的字符。d、閃爍控制88H

D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010001000d8d7d6d5d4d3d2d1此命令控制各個數(shù)碼管的閃爍屬性,d1—d8分別對應數(shù)碼管1-8。0=閃爍,1=不閃爍。開機后,缺省的狀態(tài)為各位均不閃爍。

e、讀鍵盤數(shù)據(jù)指令15H

D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D000010101d7d6d5d4d3d2d1d0

該指令從HD7279A讀出當前的按鍵代碼。前一個字節(jié)15H為指令代碼,而后一個字節(jié)d0-d7則HD7279A返回的按鍵代碼,其范圍是00H-3FH(無鍵按下時為FFH)。

(1)、當HD7279A檢測到有效的按鍵時,KEY引腳從高電平變?yōu)榈碗娖?,并一直保持到按鍵結(jié)束。在此期間,如果HD7279A接收到‘讀鍵盤數(shù)據(jù)指令’,則輸出當前按鍵的鍵盤代碼;

(2)、如果在收到‘讀鍵盤指令’時沒有有效按鍵,HD7279A將輸出FFH。

3、串行接口的時序圖。

A、HD7279A的指令結(jié)構類型:

a、不帶數(shù)據(jù)的純指令,指令的寬度為8個BIT。即微處

理器需發(fā)送8個CLK脈沖。

b、帶有數(shù)據(jù)的指令,寬度為16個BIT,即微處理器需

發(fā)送16個CLK脈沖。

c、讀取鍵盤數(shù)據(jù)指令,寬度為16個BIT,前8個為微處

理器發(fā)送到HD7279A的指令,后8個BIT為HD7279A返

回的鍵盤代碼。執(zhí)行此指令時,HD7279A的DATA端在

第9個CLK脈沖的上升沿變?yōu)檩敵鰻顟B(tài),并與第16個

脈沖的下降沿恢復為輸入狀態(tài),等待接收下一個指

令。

B、串行接口的時序圖:

a、純指令

T1=50us;T2=8us;T3=8us

b、帶數(shù)據(jù)指令

T4=25usc、讀鍵盤指令T5=25us;T6=8us;T7=8us

4、HD7279A應用舉例

A、硬件電路:

注意:

(1).HD7279A應連接共陰式數(shù)碼管。

(2).應用中,無需用到的鍵盤和數(shù)碼管可以不連接。

(3).應用中,串入DP及SA-SG連接的8只電阻為200歐。

(4).應用中,8只下拉電阻和8只鍵盤連接位選線DIG0 -DIG7的電阻,應遵從一定的比例 關系,典型值為10倍,

下拉電阻的取值范圍是10K—100K

位選電阻的取值范圍是1K—10K

(5).HD7279A需要一外接的RC振蕩電路以供系統(tǒng)工 作,其典型值分別為R=1.5KΩ,C=15pF。

B、軟件編程

(設F晶=6MHZ)

a、發(fā)送一字節(jié)子程序:(發(fā)送數(shù)存于A中)

STFS:MOVR7,#08H設:P1.0CS

L1:RLCAP1.1CLK

MOVP1.2,CP1.2DATA

SETBP1.1P1.3KEY

MOVR6,#02H

L2:DJNZR6,L2

CLRP1.1

MOVR6,#02H

L3:DJNZR6,L3

DJNZR7,L1

RET

b、接收一字節(jié)子程序:(接收字符存于A中)

STJS:MOVR7,#08H

L1:SETBP1.1

SETBP1.2

MOVR6,#02H

L2:DJNZR6,L2

MOVC,P1.2

RLCA

CLRP1.1

MOVR6,#01H

L3:DJNZR6,L3

DJNZR7,L1

RET

c、顯示程序:采用下載數(shù)據(jù)但不譯碼方式,其字形表 由用戶根據(jù)需要和硬件連線來確定,指 令碼為90H~97H.顯緩區(qū)為40H~47H。

DTR:MOVR5,#08HMOVCA,@A+PC

MOVR0,#40HACALLSTFS

MOVR1,#97HMOVR6,#02H

L1:CLRP1.0L4:DJNZR6,L4

MOVR6,#0CHSETBP1.0

L2:DJNZR6,L2INCR0 MOVA,R1DECR1

ACALLSTFSDJNZR5,L1

MOVR6,#04HRETL3:DJNZR6,L3TABDB7EH,30H,6DH…MOVA,@R0ADDA,#0DH

d、讀鍵值子程序:所讀的鍵值保存在A中,其值與按鍵 在鍵盤中位置及硬件連線有關。

KEY1:CLRP1.0

MOVR6,#0CH

L1:DJNZR6,L1

MOVA,#15H

ACALLSTFS MOVR6,#06H

L2:DJNZR6,L2

ACALLSTJS

SETBP1.0 RET

e、讀鍵值三種方式:

(1)中斷方式:將KEY連到INT引腳上,在中斷程序中, 用KEY1子程序讀取鍵值。

(2)查詢方式:軟件查詢KEY腳電平,當為低電平時讀取值。采用這種方式要求主循環(huán)程序時間應小于100ms,為保證按一次鍵只得到一個鍵值,在軟件中應建立一個標志。

設00H為標志位.A保存按鍵值,當A=FFH時,表示無鍵按下.

KEY:SETBP1.3SETB00H

MOVC,P1.3RET

JCL2L2:CLR00H

JB00H,L1L1:MOVA,#FFH

LCALLKEY1RET

(3)直讀方式:

在主程序循環(huán)中,安排一個讀鍵值子程序。當讀到的值為FFH為無鍵按下,當讀到的值不為FFH時,表示有鍵按下,其值為鍵值。采用這種方式要求主循環(huán)程序應小于100ms,為了解決在按一次鍵時可讀到多個同樣的值的問題,在軟件中應建立一個標志。設00H為標志位.

A保存按鍵值,當A=FFH時,表示無鍵按下.

KEY:ACALLKEY1ACALLKEY2

CJNEA,#0FFH,L1RET

CLR00HL2:MOVA,#FFH

RETRET

L1:JB00H,L2

SETB00H

f、求鍵號(設按鍵值存A,求得鍵號也存A)

KEY2:MOVB,AMOVR2,#00H

MOVR7,#0FH(16個鍵)

L1:MOVA,R2

ADDA,#0AH

MOVCA,@A+PC

CJNEA,B,L2

SJMPL3

L2:INCR2

DJNZR7,L1

L3:MOVA,R2

RET

TAB:DBXXH,XXH,┈(鍵值表)

g、7279初始化(復位)

ST:CLRP1.0 MOVR6,#0CH L0:DJNZR6,L0 MOVA,#A4H ACALLSTFS MOVR6,#02H L1:DJNZR6,L1 SETBP1.0 RET

五、單片機應用系統(tǒng)的軟件設計

通常單片機應用系統(tǒng)的系統(tǒng)軟件由主程序、定時中

斷服務程序和若干個子程序構成。根據(jù)系統(tǒng)各操作的

性質(zhì),指定哪些操作由中斷服務程序完成,哪些操作

由主程序完成。通常主程序完成顯示及鍵盤處理,實現(xiàn)人機對話功

能。其實時時鐘、現(xiàn)場參數(shù)采樣、控制輸出等則由定

時中斷完成。下面以實時時鐘為例,介紹單片機應用系統(tǒng)的軟件

設計流程。

1、實時時鐘技術要求:

A、實時顯示時鐘。

B、實時校時。

2、軟件設計的有關參數(shù)

A、鍵盤及顯示安排數(shù)字鍵:0-9個命令鍵:校時(0AH)

、確認(0BH)

數(shù)碼管:6個顯示方式:XX.XX.XX

B、內(nèi)存單元及P1口安排:標志位:00H鍵標志P1口:P1.0CS01H校時標志 P1.1CLK02H半秒標志P1.2DATA

顯緩區(qū):40H---47H(7279)

顯示指針:22H

時鐘:30H(時) 31H(分)

32H(秒)

33H(100ms) 34H(100ms)

堆棧區(qū):68H-7FH3、軟件框圖

鍵掃入口:0000H初始化顯示處理、顯示有鍵按下否鍵數(shù)-【顯針】修改顯針顯針限值保存校時值置0校時標志鍵處理

A、主程序校時否數(shù)鍵YNNY確認初始化設置棧底(SP)定時器初始化開中斷置“0”工作單元及標志校時建立校時標志建立顯針

B、中斷服務程序:入口:000BH保護現(xiàn)場(A、B、DPH、DPL、PSW等)選另一工作寄存器區(qū)重新置定時初值中斷次數(shù)計數(shù),建立時間標志(控制顯示更新等)時鐘計時恢復現(xiàn)場中斷返回

4、實時時鐘軟件清單

A、主程序:

a、MAIN_1:

ORG0000HLJMPMAIN_1

MAIN_1:MOVSP,#67HM_0:CLRA

MOVTMOD,#01HMOV@R0,A

MOVTL0,#C0HINCR0

MOVTH0,#3BHDJNZR7,M_0

MOVIE,#82HACALLINT_7279

SETBTR0AJMPMAIN_2MOVR7,#30H

MOVR0,#20H

b、

MAIN_2:

MAIN_2:ACALLDIR_0M_4:CJNEA,#0BH,M_5ACALLDIRACALLMKEY_2ACALLKEYM_5:SJMPMAIN_2CJNEA,#FFH,M_1SJMPMAIN_2M_1:CJNEA,#0AH,M_2M_2:JNCM_3ACALLSKEYSJMPMAIN_2M_3:CJNEA,#0AH,M_4ACALLMKEY_1SJMPMAIN_2

c、DIR_0:(顯示處理)

DIR_0:JB01H,D_1A_R0:MOVR2,A JNB02H,D_1 SWAPA CLR02H ANLA,#0FH MOVR0,#40H MOV@R0,A MOVA,30H INCR0 ACALLA_R0MOVA,R2 MOVA,31HANLA,#0FH ACALLA_R0 MOV@R0,A MOVA,32H INCR0 ACALLA_R0 RET MOV41H,#10H MOV43H,#10H D_1:RET

d、SKEY:(數(shù)鍵處理)

(1)方法1

SKEY:JNB01H,S_2MOVR0,22HMOV@R0,AINC22HMOVA,22HCJNEA,#46H,S_1S_1:JCS_2MOV22H,#40HS_2:RET

(2)方法2SKEY:JNB01H,S_2MOVR2,A MOVR7,#05H MOVR0,#41H S_1:MOVA,@R0 ANLA,#0FH DECR0 MOV@R0,A INCR0 INCR0 DJNZR7,S_1 MOV45H,R2 ORL41H,#10H ORL41H,#10H S_2:RETE、MKEY_1:(校時鍵處理)

溫馨提示

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

評論

0/150

提交評論