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

下載本文檔

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

文檔簡介

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

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

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

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

輸出設(shè)備,其可靠性很高。

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

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

A、共陽極顯示器

B、共陰極顯示器

2、顯示器的工作方式:

A、靜態(tài)顯示方式所謂靜態(tài)顯示,是指顯示器顯示一字符時,相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止。這種顯示方式的每一個數(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連接接口電路:顯示程序(作為練習(xí))

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

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

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

通常點亮?xí)r間為1mS左右,相隔時間為20mS

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

設(shè)8255的CS接P2.7

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

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

注:A口作為位數(shù)據(jù)口,其輸出只能有一位為高。(2)顯示緩沖區(qū):設(shè)顯示緩沖區(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ù)點顯示二、鍵盤接口

鍵盤是由若干個按鍵組成的開關(guān)矩陣,它是單

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

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

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

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

A、按鍵與否的判別

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

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

B、按鍵的識別

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

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

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

例如:當(dāng)使行2為低,讀入列值時,其列1值為低,

則可判是鍵5按下。

C、鍵抖動及消除

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

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

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

閉合時才去讀取按值鍵。

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

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

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

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

2、鍵盤接口電路

3、鍵盤掃描程序:

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

具體程序如下:

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:復(fù)位端

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

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

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

2、控制指令

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

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

主要控制指令如下:

A、純指令

a、復(fù)位(清除)指令A(yù)4HD7D6D5D4D3D2D1D010100100

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

b、左移指令A(yù)1HD7D6D5D4D3D2D1D0101000014252LP39

例如,原顯示為:

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

c、右移指令A(yù)0H

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值對應(yīng)的是0—9,A~F。c、下載數(shù)據(jù)但不譯碼

D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010010a2a1a0DPABCDEFG

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

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

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

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

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

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

D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D000010101d7d6d5d4d3d2d1d0

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

(1)、當(dāng)HD7279A檢測到有效的按鍵時,KEY引腳從高電平變?yōu)榈碗娖剑⒁恢北3值桨存I結(jié)束。在此期間,如果HD7279A接收到‘讀鍵盤數(shù)據(jù)指令’,則輸出當(dāng)前按鍵的鍵盤代碼;

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

3、串行接口的時序圖。

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

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個

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

令。

B、串行接口的時序圖:

a、純指令

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

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

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

4、HD7279A應(yīng)用舉例

A、硬件電路:

注意:

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

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

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

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

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

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

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

B、軟件編程

(設(shè)F晶=6MHZ)

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

STFS:MOVR7,#08H設(shè):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中,其值與按鍵 在鍵盤中位置及硬件連線有關(guān)。

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腳電平,當(dāng)為低電平時讀取值。采用這種方式要求主循環(huán)程序時間應(yīng)小于100ms,為保證按一次鍵只得到一個鍵值,在軟件中應(yīng)建立一個標(biāo)志。

設(shè)00H為標(biāo)志位.A保存按鍵值,當(dāng)A=FFH時,表示無鍵按下.

KEY:SETBP1.3SETB00H

MOVC,P1.3RET

JCL2L2:CLR00H

JB00H,L1L1:MOVA,#FFH

LCALLKEY1RET

(3)直讀方式:

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

A保存按鍵值,當(dāng)A=FFH時,表示無鍵按下.

KEY:ACALLKEY1ACALLKEY2

CJNEA,#0FFH,L1RET

CLR00HL2:MOVA,#FFH

RETRET

L1:JB00H,L2

SETB00H

f、求鍵號(設(shè)按鍵值存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初始化(復(fù)位)

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

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

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

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

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

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

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

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

設(shè)計流程。

1、實時時鐘技術(shù)要求:

A、實時顯示時鐘。

B、實時校時。

2、軟件設(shè)計的有關(guān)參數(shù)

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

、確認(0BH)

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

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

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

顯示指針:22H

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

32H(秒)

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

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

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

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

B、中斷服務(wù)程序:入口:000BH保護現(xiàn)場(A、B、DPH、DPL、PSW等)選另一工作寄存器區(qū)重新置定時初值中斷次數(shù)計數(shù),建立時間標(biāo)志(控制顯示更新等)時鐘計時恢復(fù)現(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論