999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

節省AT89C2051有限資源進行I/O接口擴展的幾個設計

2008-12-31 00:00:00劉金平葉賽風
電腦知識與技術 2008年27期

摘要:AT89C2051是一種精簡型單片機,因其I/O接口有限,應用時必須進行擴展,文章通過5個設計說明如何在耗用較少I/O資源下,實現盡可能多的按鍵輸入。

關鍵詞:AT89C2051;74LS164;按鍵;設計;I/O接口

中圖分類號:TP368文獻標識碼:A文章編號:1009-3044(2008)27-2094-05

AT89C2051 Save Limited Resources to Conduct I/O Interfaces Expand Several Designs

LIU Jin-ping, YE Sai-feng

(Fujian Electric Power Occupation Technical College,Quanzhou 362000, China)

Abstract: AT89C2051 is a streamlining of Singlechip, is limited because of it's I/O port,must carry out expansion when applying. the article passes 5 designs specification , how to import in the button consuming with being as far as possible more than stopping coming true under I/O resource.

Key words: AT89C2051; 74LS164; button; design; I/O port

1 引言

AT89C2051是一種精簡型單片機芯片,20腳封裝,體積小。它的價格比同類產品便宜一半。 AT89C2051的驅動能力較強,P1和P3上可以有20mA左右驅動電流,對一般數字電路芯片等器件,這樣驅動電流足夠了。這些是AT89C2051的優點,但它只有兩個并行接口,并行口線只有15根,可利用資源有限。

輸入和顯示是單片機的外圍電路,同時也是人機交互的重要接口。在實際應用中,幾乎離不開這兩個部分,其中輸入主要是按鍵、鍵盤等器件,顯示主要為數碼管和發光二極管。

隨著智能電子產品的功能越來越強,按鍵個數也越來越多。AT89C2051要應用于這些產品,就必須進行I/O接口擴展。擴展I/O的途徑較多,這里就不一一敘述。按照減少成本的原則以及在不動用P3口(具有第二功能)的前提下,有沒有什么辦法在耗用P1口較少資源的情況下,實現盡可能多的按鍵輸入?下面5個設計回答了這個問題。

2 應用設計

2.1 占用5條I/O線,實現9個按鍵輸入

2.1.1 硬件電路設計

本電路由AT89C2051單片機、移位寄存器74LS164、LED及9個按鍵等組成,電路原理圖如圖1所示。這個電路比起單片機教科書中所介紹的矩陣按鍵知識——5條口線,可實現3行2列的6鍵——多了3 個鍵。

2.1.2 程序設計思想與程序代碼

首先檢查P1.0~P1.2是否出現低電平,若出現,則說明#6,#7,#8中有一鍵按下,這時只要分別對P1.0、P1.1、P1.2進行判零,就可以具體確定哪個按鍵;若都沒有低電平出現,則進行以下操作:先在P1.0上輸出低電平,分別判斷P1.3及P1.4是否出現低電平,若有,就可以分別確定為#0和#1鍵;若沒有,接著在P1.1上輸出低電平,然后分別判斷P1.3及P1.4,若出現,則不是#2就是#3鍵;若還是沒有,就在P1.2上輸出低電平,然后分別判斷P1.3及P1.4,若有,則分別為#4及#5鍵,循環往復。

LED顯示采用P1.5及P1.6分別外接串入并出轉換芯片164的數據輸入端及移位脈沖輸入端。

程序代碼如下:

ORG 0

BEGIN:MOV P1,#0FFH

MOV A,P1

XRL A,#0FFH

JZ START

JB P1.0,ABC

MOV R2,#6

ACALL DSP

SJMP BEGIN

ABC:JB P1.1,ABC1

MOV R2,#7

ACALL DSP

SJMP BEGIN

ABC1:MOV R2,#8

ACALL DSP

SJMP BEGIN

START:MOV R7,#3

MOV DPTR,#TABLE

CLR A

LOOP:MOV 30H,A

MOV B,#2

MUL AB

MOV 40H,A

MOV A,30H

MOVC A,@A+DPTR

MOV P1,A

JB P1.3,NEXT

MOV R2,40H

ACALL DSP

SJMP DONE

NEXT:JB P1.4,DONE

MOV R2,40H

INC R2

ACALL DSP

DONE:MOV A,30H

INC A

DJNZ R7,LOOP

SJMP BEGIN

DSP:PUSH DPH

PUSH DPL

MOV A,R2

MOV DPTR,#TABLE1

MOVC A,@A+DPTR

MOV R6,#8

LP:RRC A

MOV P1.5,C

CLR P1.6

SETB P1.6

DJNZ R6,LP

MOV R5,#80H

LP1:MOV R6,#0

DJNZ R6,$

DJNZ R5,LP1

POP DPL

POP DPH

RET

TABLE:DB 0FEH,0FDH,0FBH

TABLE1: DB 3FH,06H,5BH,4FH

DB 66H,6DH,7DH,07H,7FH

END

2.1.3 性能分析

本設計電路不復雜,程序執行時間也較短,適合按鍵不太多的場合,如應用于電飯煲、早期的電磁爐等家電。

2.2 占用5條I/O線,實現10個按鍵輸入

2.2.1 硬件電路設計

本電路由AT89C2051單片機、移位寄存器74LS164、LED及10個按鍵等組成,電路原理圖如圖2所示。這個電路比起上一個設計,10個按鍵排列采用數學中的上三角矩陣排列。

2.2.2 程序設計思想與程序代碼

在P1.0上輸出低電平(其它為高電平,以下相同),若P1.1,P1.2,P1.3及P1.4有一為低電平,則可以確定按鍵為#0,#1,#2,#3中的一個。同樣,在P1.1上輸出低電平,分別對P1.2,P1.3及P1.4判零,則可以確定按鍵為#4,#5,#6中的一個。接著在P1.2上輸出低電平,分別對P1.3及P1.4判零,則可以確定按鍵為#7,#8中的一個。最后在P1.3上輸出低電平,對P1.4進行判零,就能確定按鍵#9是否按下,循環反復。LED顯示同上。

程序代碼如下:

ORG 0

BEGIN:MOV P1,#0FFH

MOV P1,#11111110B

JB P1.1,L1

MOV R2,#0

ACALL DSP

SJMP BEGIN

L1:JB P1.2,L2

MOV R2,#1

ACALL DSP

SJMP BEGIN

L2:JB P1.3,L3

MOV R2,#2

ACALL DSP

SJMP BEGIN

L3:JB P1.4,L4

MOV R2,#3

ACALL DSP

SJMP BEGIN

L4:MOV P1,#11111101B

JB P1.2,L5

MOV R2,#4

ACALL DSP

SJMP BEGIN

L5:JB P1.3,L6

MOV R2,#5

ACALL DSP

SJMP BEGIN

L6:JB P1.4,L7

MOV R2,#6

ACALL DSP

SJMP BEGIN

L7:MOV P1,#11111011B

JB P1.3,L8

MOV R2,#7

ACALL DSP

SJMP BEGIN

L8:JB P1.4,L9

MOV R2,#8

ACALL DSP

SJMP BEGIN

L9:MOV P1,#11110111B

JB P1.4,BEGIN

MOV R2,#9

ACALL DSP

SJMP BEGIN

DSP:MOV A,R2

MOV DPTR,#TABLE1

MOVC A,@A+DPTR

MOV R6,#8

LP:RRC A

MOV P1.5,C

CLR P1.6

SETB P1.6

DJNZ R6,LP

MOV R5,#80H

LP1:MOV R6,#0

DJNZ R6,$

DJNZ R5,LP1

RET

TABLE1:DB 3FH,06H,5BH,4FH,66H

DB 6DH ,7DH,07H,7FH,6FH

END

2.2.3 性能分析

本設計性能與上一個差不多,但憑巧妙的設計,硬是多了一個按鍵。

2.3 占用4條I/O線,實現12個按鍵輸入

2.3.1 硬件電路設計

本電路由AT89C2051單片機、移位寄存器74LS164、LED、12個按鍵、4個常用的廉價二極管,以及對P1.0及P1.1的上拉電阻,還有一個12V電源等組成,電路原理圖如圖3所示。

2.3.2 程序設計思想與程序代碼

在一條口線上(如P1.0)輸出高電平,其它為低電平(這一點與前兩個設計不同,所以電路中上拉電阻必不可少),然后對其它口線(P1.1~P1.3)進行高電平的判斷,若在某一線上出現高電平,則對應按鍵(#3、#6、#9)按下。依次類推,分別在P1.1、P1.2、P1.3上輸出高電平,就可以分別判斷#0,#7,#A一組鍵、#1,#4,#B一組鍵、#2,#5,#8一組鍵是否有鍵按下。

程序代碼如下:

ORG 0

BEGIN:ORL P1,#0FH

MOV P1,#01H

JNB P1.1,L1

MOV R2,#3

ACALL DSP

SJMP BEGIN

L1:JNB P1.2,L2

MOV R2,#6

ACALL DSP

SJMP BEGIN

L2:JNB P1.3,L3

MOV R2,#9

ACALL DSP

SJMP BEGIN

L3:ORL P1,#0FH

MOV P1,#02H

JNB P1.0,L4

MOV R2,#0

ACALL DSP

SJMP BEGIN

L4:JNB P1.2,L5

MOV R2,#7

ACALL DSP

SJMP BEGIN

L5:JNB P1.3,L6

MOV R2,#10

ACALL DSP

SJMP BEGIN

L6:ORL P1,#0FH

MOV P1,#04H

JNB P1.0,L7

MOV R2,#1

ACALL DSP

SJMP BEGIN

L7:JNB P1.1,L8

MOV R2,#4

ACALL DSP

SJMP BEGIN

L8:JNB P1.3,L9

MOV R2,#11

ACALL DSP

SJMP BEGIN

L9:ORL P1,#0FH

MOV P1,#08H

JNB P1.0,L10

MOV R2,#2

ACALL DSP

SJMP BEGIN

L10:JNB P1.1,L11

MOV R2,#5

ACALL DSP

SJMP BEGIN

L11:JNB P1.2,BEGIN

MOV R2,#8

ACALL DSP

AJMP BEGIN

DSP:MOV A,R2

MOV DPTR,#TABLE1

MOVC A,@A+DPTR

MOV R6,#8

LP:RRC A

MOV P1.4,C

CLR P1.5

SETB P1.5

DJNZ R6,LP

ACALL DELAY

RET

DELAY:MOV R4,#08H

MOV R5,#9AH

MOV R6,#7FH

AA:DJNZ R6,AA

DJNZ R5,AA

DJNZ R4,AA

RET

TABLE1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

END

2.3.3 性能分析

這一設計增加電路的復雜性,增大電路板的面積,但12個按鍵比較適合大多數微電腦控制的家電的應用。

2.4 占用4條I/O線,實現16個按鍵輸入

2.4.1 硬件電路設計

本電路由AT89C2051單片機、移位寄存器74LS164、LED、16個按鍵、4個二極管,以及4個上拉電阻,還有一個12V電源等組成,電路原理圖如圖4所示。

2.4.2 程序設計思想與程序代碼

在一條口線上(如P1.0)輸出高電平,其它為低電平,立刻對該口線進行判零,若為低電平,則#C鍵按下;然后對其它口線(P1.1~P1.3)進行高電平的判斷,若在某一線上出現高電平,則對應按鍵(#3、#6、#9)按下。依次類推。

本設計與上一個設計類似,只是多了判零這一操作,就增加了4 個按鍵。

程序代碼如下:

ORG 0

BEGIN:ORL P1,#0FH

MOV P1,#01H

JB P1.0,NEX1

MOV R2,#0CH

ACALL DSP

SJMP BEGIN

NEX1:JNB P1.1,L1

MOV R2,#3

ACALL DSP

SJMP BEGIN

L1:JNB P1.2,L2

MOV R2,#6

ACALL DSP

SJMP BEGIN

L2:JNB P1.3,L3

MOV R2,#9

ACALL DSP

SJMP BEGIN

L3:ORL P1,#0FH

MOV P1,#02H

JB P1.1,NEX2

MOV R2,#0DH

ACALL DSP

SJMP BEGIN

NEX2:JNB P1.0,L4

MOV R2,#0

ACALL DSP

SJMP BEGIN

L4:JNB P1.2,L5

MOV R2,#7

ACALL DSP

SJMP BEGIN

L5:JNB P1.3,L6

MOV R2,#10

ACALL DSP

SJMP BEGIN

L6:ORL P1,#0FH

MOV P1,#04H

JB P1.2,NEX3

MOV R2,#0EH

ACALL DSP

AJMP BEGIN

NEX3:JNB P1.0,L7

MOV R2,#1

ACALL DSP

SJMP BEGIN

L7:JNB P1.1,L8

MOV R2,#4

ACALL DSP

AJMP BEGIN

L8:JNB P1.3,L9

MOV R2,#11

ACALL DSP

AJMP BEGIN

L9:ORL P1,#0FH

MOV P1,#08H

JB P1.3,NEX4

MOV R2,#0FH

ACALL DSP

AJMP BEGIN

NEX4:JNB P1.0,L10

MOV R2,#2

ACALL DSP

AJMP BEGIN

L10:JNB P1.1,L11

MOV R2,#5

ACALL DSP

AJMP BEGIN

L11:JNB P1.2,DONE

MOV R2,#8

ACALL DSP

DONE:AJMP BEGIN

DSP:MOV A,R2

MOV DPTR,#TABLE1

MOVC A,@A+DPTR

MOV R6,#8

LP:RRC A

MOV P1.4,C

CLR P1.5

SETB P1.5

DJNZ R6,LP

ACALL DELAY

RET

DELAY:MOV R4,#08H

MOV R5,#9AH

MOV R6,#7FH

AA:DJNZ R6,AA

DJNZ R5,AA

DJNZ R4,AA

RET

TABLE1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH

DB 07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

END

2.4.3 性能分析

本設計給電路增加一定復雜程度,生產成本有所增大。但16按鍵已經適合于絕大多數的智能家用電器。

2.5 占用4條I/O線,同時實現16個按鍵輸入及LED輸出

2.5.1 硬件電路設計

本電路由AT89C2051單片機、兩片移位寄存器74LS164、LED、16個按鍵以及三極管等組成,電路原理圖如圖5所示。該電路特點是移位寄存器74LS164既控制按鍵的輸入,又控制顯示的輸出。由于共有16個按鍵,所以需要2片74LS164。

2.5.2 程序設計思想與程序代碼

由P1.6控制LED是否顯示。將雙字節數FFFEH逐位移入74LS164,對P1.7判零,若為低電平,則按下#0鍵;否則,將FFFEH左移一位,轉換后為FFFDH并逐位移入74LS164,然后對P1.7判零,若為低電平,則是#1鍵按下,依此類推,共進行進行16次,就可以判斷16個是否按下。

程序代碼如下:

ORG 0

MOV DPTR,#TABLE

LOOP:MOV R2,#0

MOV R3,#16

MOV 20H,#0FEH

MOV 21H,#0FFH

LOOP2:ACALL SUB

JNB P1.7,NEXT

INC R2

ACALL LEFT

DJNZ R3,LOOP2

SJMP LOOP

NEXT:MOV A,R2

MOVC A,@A+DPTR

ACALL SUB1

CLR P1.6

ACALL DELAY

SETB P1.6

SJMP LOOP

LEFT:MOV C,0FH

MOV A,20H

RLC A

MOV 20H,A

MOV A,21H

RLC A

MOV 21H,A

RET

SUB:MOV R7,#8

MOV A,21H

LP1:RLC A

MOV P1.5,C

CLR P1.4

SETB P1.4

DJNZ R7,LP1

MOV R7,#8

MOV A,20H

LP2:RLC A

MOV P1.5,C

CLR P1.4

SETB P1.4

DJNZ R7,LP2

RET

SUB1:MOV R7,#8

LOOP1:RLC A

MOV P1.5,C

CLR P1.4

SETB P1.4

DJNZ R7,LOOP1

RET

DELAY:MOV R5,#40

D2:MOV R6,#40

D1:MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

DJNZ R5,D2

RET

TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

END

2.5.3 性能分析

本設計從原理上講,每增加一片74LS164就可以增多8個按鍵,但是以緩長程序執行時間為代價的,所以,雖然在這幾個設計中最節省I/O資源,但只能適合實時性要求不高的場合。

3 結束語

通過以上5個設計,可以看出,盡管AT89C2051單片機的I/O口很緊張,但我們可以通過巧妙的軟件設計和添加常用廉價的器件,占用較少的I/O資源,實現盡可能多的按鍵輸入。在這些設計中,作者為了顯示設計的結果,在用PROPTEUS軟件仿真時采用LED顯示鍵值。由于每個程序設計中鍵值都保存在R2中,所以完全可以根據具體功能的設計的需求,將顯示七段代碼部分改為以下程序段就可以了。

MOV A ,R2

MOV B, #2

MUL AB

MOV DPTR, #SUBTABLE

JMP @A+DPTR

SUBTABLE:ACALL SUB1

ACALL SUB2

以上5個設計為AT89C2051更廣泛地應用于智能家用電器、工業生產控制等開發提供一些設計思想。

參考文獻:

[1] 高衛東.51單片機原理與實踐[M].北京:航空航天大學出版社,2008.

[2] 鄒久明.80C51單片機實用技術[M].北京:航空航天大學出版社,2008.

[3] 周潤景.基于PROTEUS的電路及單片機系統設計與仿真[M].北京:航空航天大學出版社,2006.

主站蜘蛛池模板: 国产最爽的乱婬视频国语对白| 无码内射在线| 亚洲欧美综合精品久久成人网| 国产精品自拍露脸视频| 成人福利一区二区视频在线| 国产剧情国内精品原创| 熟妇丰满人妻| 呦女亚洲一区精品| 99re热精品视频中文字幕不卡| 日本成人福利视频| 亚洲天堂网2014| 亚洲区第一页| 欧美一区二区自偷自拍视频| 乱色熟女综合一区二区| 亚洲天堂.com| 九九视频在线免费观看| 麻豆精品在线视频| 中文字幕欧美成人免费| 中文字幕第1页在线播| 亚洲天堂视频网站| 又爽又大又黄a级毛片在线视频| 国产va在线观看| 免费a级毛片视频| 国产精品七七在线播放| 久热99这里只有精品视频6| 日本道综合一本久久久88| 日本人又色又爽的视频| 免费看av在线网站网址| 日本一本正道综合久久dvd| 亚洲国产成人自拍| 国产成人禁片在线观看| 97精品久久久大香线焦| 国产成人精品高清在线| jizz在线观看| 国产一级妓女av网站| 国产精品黄色片| 国产无码网站在线观看| 91网站国产| 国产美女主播一级成人毛片| 亚洲精品福利视频| 亚洲欧洲日产无码AV| 国产女人在线观看| 亚洲性网站| 自拍亚洲欧美精品| 97国产在线播放| 国产成人精品视频一区视频二区| 日韩精品欧美国产在线| 91原创视频在线| 色哟哟国产精品一区二区| 四虎永久免费地址| 激情综合网址| 九色在线观看视频| 播五月综合| 欧美激情视频在线观看一区| 国产精品9| 国产极品粉嫩小泬免费看| 欧美成人日韩| 干中文字幕| 国产在线精彩视频二区| 在线精品亚洲一区二区古装| 欧美中文字幕在线视频 | 青青青国产精品国产精品美女| 嫩草国产在线| 99这里只有精品6| 久久99国产乱子伦精品免| 免费人成黄页在线观看国产| 国产麻豆另类AV| 波多野结衣第一页| 玖玖免费视频在线观看| 玩两个丰满老熟女久久网| 国产成人区在线观看视频| 国产美女精品一区二区| 69av在线| 久久性妇女精品免费| 亚洲成肉网| 亚洲精品国产成人7777| 色九九视频| 欧美日韩精品一区二区在线线| 国内精品免费| 免费无码AV片在线观看国产| 日韩欧美中文在线| 日本高清有码人妻|