0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

8255驅(qū)動(dòng)矩陣鍵盤和數(shù)碼管程序

算法&編程學(xué)院 ? 作者:工程師a ? 2018-05-12 01:44 ? 次閱讀

匯編編程:矩陣鍵盤控制數(shù)碼管切換顯示0~F。

下面是電路圖。要求16個(gè)鍵按下能顯示0~F字樣。

8255驅(qū)動(dòng)矩陣鍵盤和數(shù)碼管程序

看到這樣的電路和程序,不由得想起初學(xué)單片機(jī)時(shí)情景。

十幾年前,是一本北航的書,里面就是這樣的程序。

后來(lái)又看過幾本,里面也有雷同的程序。

其實(shí),該程序編寫的很濫。

它把行列號(hào)碼,算的很清。還特意弄成幾個(gè)分支。

換下一行時(shí),行號(hào)就要分別存入 00H、08H、10H、18H。

想法也太笨了,其實(shí),只要加上 8,就可以編寫成循環(huán)程序了。

程序中,還有很多應(yīng)該簡(jiǎn)化的地方。

這程序?qū)W起來(lái),的確浪費(fèi)了我不少的時(shí)間。

根據(jù)題目中的電路和程序,做而論道改寫的程序如下。

;

ORG 0000H

SJMP START

ORG 0030H

;--------------------------------------

DUMA:

DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H //共陰段碼

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

;--------------------------------------

START:

MOV DPTR, #7F03H //8255初始化

MOV A, #90H

MOVX @DPTR, A

MOV A, #16

;--------------------------------------

KEY1:

ACALL KS1 //判斷有無(wú)鍵按下, 返回PA口狀態(tài)存放在A中

JZ KEY1 //無(wú)則返回

ACALL DELAY //調(diào)用延時(shí)子程序

ACALL KS1 //再次判斷有無(wú)鍵按下

JZ KEY1 //無(wú)則返回

;

MOV R2, #0FEH //初始列掃描字

MOV R3, #8 //檢查8次

MOV R4, #0 //初始鍵號(hào)

LK4:

MOV DPTR, #7F01H //指向PB口

MOV A, R2

MOVX @DPTR, A

MOV DPTR, #7F00H //指向PA口

MOVX A, @DPTR

JNB ACC.0, LK3

INC R4

JNB ACC.1, LK3

INC R4

MOV A, R2

RL A //無(wú)則左移一位列掃描字, 繼續(xù)判斷下一列

MOV R2, A

DJNZ R3, LK4

LK3:

ACALL KS1

JNZ LK3 //判斷按下的鍵有沒有彈起, 無(wú)則原地等待繼續(xù)判斷

;

MOV A, R4 //鍵號(hào)放于A中

MOV DPTR, #0030H //指向段碼表首址

MOVC A, @A + DPTR //鍵號(hào)轉(zhuǎn)成相應(yīng)的段碼

MOV DPTR, #7F02H //指向PC口

MOVX @DPTR, A //數(shù)碼管顯示

;

SJMP KEY1

;--------------------------------------

KS1:

MOV DPTR, #7F01H //指向PB口

MOV A, #0

MOVX @DPTR, A

MOV DPTR, #7F00H //指向PA口

MOVX A, @DPTR

CPL A

ANL A, #03H

RET //返回PA口數(shù)據(jù)存放在A中, 若有鍵按下, 則A不等于零

;--------------------------------------

DELAY: //延時(shí)子程序, 約10ms

MOV R7, #20

D1: DJNZ R6, $

DJNZ R7, D1

RET

END

;======================================

本程序運(yùn)行的仿真截圖,可見前面的插圖。

題目中的電路,僅僅使用了一個(gè)數(shù)碼管。這和實(shí)用的場(chǎng)合,還有差距。

如果使用動(dòng)態(tài)顯示的方法,驅(qū)動(dòng)多位數(shù)碼管,那么,矩陣鍵盤的規(guī)模,就可以再擴(kuò)大一些。

而做而論道在這里給出的程序,卻不用增加很多,僅僅再添上三、五行即可夠用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1882

    瀏覽量

    91125
  • 矩陣鍵盤
    +關(guān)注

    關(guān)注

    7

    文章

    206

    瀏覽量

    31473
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鍵盤掃描和數(shù)碼管顯示源程序和電路圖

    鍵盤掃描和數(shù)碼管顯示源程序和電路圖 在RB口上擴(kuò)充一個(gè)矩陣鍵盤,一共4×4個(gè)按鍵,剛好4條行線、4條列線占用RB口的全部8個(gè)接口;而在R
    發(fā)表于 01-11 23:19 ?2632次閱讀
    <b class='flag-5'>鍵盤</b>掃描<b class='flag-5'>和數(shù)碼管</b>顯示源<b class='flag-5'>程序</b>和電路圖

    全面剖析數(shù)碼管矩陣鍵盤聯(lián)合使用法則

    本文內(nèi)容為7.7 數(shù)碼管矩陣鍵盤聯(lián)合使用、7.8 ZLG72128——數(shù)碼管鍵盤管理、7.9 溫控器。
    的頭像 發(fā)表于 11-21 07:47 ?1.1w次閱讀
    全面剖析<b class='flag-5'>數(shù)碼管</b>與<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>聯(lián)合使用法則

    數(shù)碼管矩陣鍵盤聯(lián)合應(yīng)用設(shè)計(jì)

    AMetal 提供了數(shù)碼管矩陣鍵盤聯(lián)合使用的驅(qū)動(dòng),其本質(zhì)上就是數(shù)碼管驅(qū)動(dòng)
    的頭像 發(fā)表于 01-19 09:31 ?7901次閱讀
    <b class='flag-5'>數(shù)碼管</b>與<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>聯(lián)合應(yīng)用設(shè)計(jì)

    應(yīng)用數(shù)碼管、矩陣鍵盤、蜂鳴器、流水燈的程序

    課題學(xué)習(xí)的模塊:數(shù)碼管、矩陣鍵盤、蜂鳴器、流水燈鍵盤按鍵數(shù)值排布如下:789456123 0引腳定義:LEDP1數(shù)碼管P0
    發(fā)表于 08-14 21:34

    51單片機(jī)矩陣鍵盤和數(shù)碼管實(shí)現(xiàn)計(jì)算器

    51單片機(jī)矩陣鍵盤和數(shù)碼管實(shí)現(xiàn)計(jì)算器,,,最簡(jiǎn)單的c語(yǔ)言寫的,保定看得懂
    發(fā)表于 11-08 20:23

    數(shù)碼管顯示鍵盤矩陣按鍵

    51單片機(jī) at89c52 數(shù)碼管顯示鍵盤矩陣按鍵
    發(fā)表于 10-13 07:27

    請(qǐng)問矩陣按鍵和數(shù)碼管顯示應(yīng)該怎樣配合?

    現(xiàn)在有5*3矩陣鍵盤和10位8端段數(shù)碼管,需要進(jìn)行按鍵掃描和數(shù)碼管動(dòng)態(tài)顯示。一個(gè)朋友說(shuō)矩陣鍵盤
    發(fā)表于 03-25 03:46

    數(shù)碼管顯示矩陣鍵盤掃描程序

    數(shù)碼管顯示矩陣鍵盤掃描程序 ?/*矩陣鍵盤掃描出鍵值,在數(shù)
    發(fā)表于 01-11 19:14 ?2272次閱讀

    數(shù)碼管顯示矩陣鍵盤掃描值

    數(shù)碼管顯示矩陣鍵盤掃描值 ?/*矩陣鍵盤掃描出鍵值,在數(shù)碼管上顯示出來(lái)?????? P0口接
    發(fā)表于 01-14 21:01 ?2781次閱讀

    數(shù)碼管程序

    簡(jiǎn)單的C語(yǔ)言數(shù)碼管顯示程序,其中包含仿真內(nèi)容
    發(fā)表于 08-17 11:13 ?4次下載

    tm1637驅(qū)動(dòng)數(shù)碼管程序

    本文介紹了tm1637驅(qū)動(dòng)數(shù)碼管程序,TM1637是一種帶鍵盤掃描接口的LED(發(fā)光二極管顯示器)驅(qū)動(dòng)控制專用電路,內(nèi)部集成有MCU數(shù)字接口,數(shù)據(jù)鎖存器,LED高壓
    發(fā)表于 12-19 11:59 ?4.7w次閱讀
    tm1637<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>數(shù)碼管程序</b>

    max7219驅(qū)動(dòng)數(shù)碼管程序(51單片機(jī)+STM32 MAX7219數(shù)碼管程序案例)

    本文主要介紹了max7219驅(qū)動(dòng)數(shù)碼管:STM32硬件SPImax7219驅(qū)動(dòng)8位數(shù)碼管顯示模塊程序設(shè)計(jì)和51單片機(jī)+MAX7219
    發(fā)表于 01-15 16:51 ?1.9w次閱讀
    max7219<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>數(shù)碼管程序</b>(51單片機(jī)+STM32 MAX7219<b class='flag-5'>數(shù)碼管程序</b>案例)

    51單片機(jī)超聲波模塊數(shù)碼管程序分享

    超聲波原理簡(jiǎn)單測(cè)距準(zhǔn)確,應(yīng)用廣泛下面貼一個(gè)自己寫的數(shù)碼管程序,顯示部分需要改,寫的是我使用的是慧凈開發(fā)板,共陰數(shù)碼管。
    的頭像 發(fā)表于 10-05 09:18 ?6895次閱讀

    使用51單片機(jī)和8255芯片驅(qū)動(dòng)矩陣鍵盤控制數(shù)碼管切換顯示的程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)和8255芯片驅(qū)動(dòng)矩陣鍵盤控制數(shù)碼管切換顯示的程序免費(fèi)
    發(fā)表于 09-06 17:26 ?23次下載
    使用51單片機(jī)和<b class='flag-5'>8255</b>芯片<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>控制<b class='flag-5'>數(shù)碼管</b>切換顯示的<b class='flag-5'>程序</b>

    矩陣按鍵、秒表、數(shù)碼管動(dòng)態(tài)掃描和數(shù)碼管同時(shí)加減的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是基于51單片機(jī)的矩陣按鍵、秒表、數(shù)碼管動(dòng)態(tài)掃描和數(shù)碼管同時(shí)加減的C語(yǔ)言程序免費(fèi)下載。
    發(fā)表于 05-13 08:00 ?21次下載
    <b class='flag-5'>矩陣</b>按鍵、秒表、<b class='flag-5'>數(shù)碼管</b>動(dòng)態(tài)掃描<b class='flag-5'>和數(shù)碼管</b>同時(shí)加減的<b class='flag-5'>程序</b>免費(fèi)下載