找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4385|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

菜鳥求教這個實驗

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:33156 發(fā)表于 2011-11-10 14:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 

鍵盤顯示程序設(shè)計

實驗?zāi)康?/b>

1、理解串行接口鍵盤單片機匯編語言程序的基本結(jié)構(gòu)

2、了解單片機匯編語言程序的設(shè)計和調(diào)試方法

3、掌握幾個的基本的傳送類、控制類指令的使用方法

實驗儀器

單片機開發(fā)板、萬利仿真機、穩(wěn)壓電源、計算機

實驗原理

1、  鍵盤接口電路工作原理

串行接口鍵盤盤電路如圖4-15所示。鍵盤掃描線與顯示位選掃描信號共用。鍵盤輸入只需要一根線,電路簡單。鍵盤掃描信號從74LS164輸出,低電平有效。當(dāng)掃描到某個鍵時,若按鍵按下,在KEY端得到低電平,否則得到高電平。通過判斷KEY的電平就可以知道相應(yīng)鍵盤是否按下。

圖4-15 鍵盤接口電路圖

2、  讀鍵盤程序設(shè)計

從上面工作原理分析可知,讀鍵程序可以和顯示程序結(jié)合在一起,也可以單獨設(shè)計。這種結(jié)構(gòu)的鍵盤同樣存在抖動問題。為了減少程序誤動作,程序設(shè)計時也要考慮去抖動問題。這里設(shè)計一個把鍵值顯示在LED上的程序。為了簡化問題,把讀鍵程序與顯示結(jié)合起來。程序流程圖如圖4-16所示。

主程序

初值化,顯示緩沖區(qū),鍵值暫存,鍵盤緩存

調(diào)用鍵盤顯示程序

鍵值相同

鍵值送顯示

Y

N

Y

顯示計數(shù)為0

……

鍵盤顯示程序

取鍵值暫存到累加器

返回鍵值

N

顯示程序

延時程序執(zhí)行后

讀當(dāng)前掃描的鍵狀態(tài),并存入鍵值暫存寄存器

 


















圖4-16 鍵盤掃描程序流程圖

實驗內(nèi)容

1、單片機鍵盤顯示程序設(shè)計

……

LEDCLK        bit          P3.4

LEDDIN        bit          P2.3

LEDDATA      data        P0

KEYINPUT    bit          P1.0

……

dispbuf:          DS          8            ;顯示緩沖區(qū)8字節(jié)

disppoint:       Ds          1            ;小數(shù)點控制數(shù)據(jù)

keytemp:        DS          1            ;鍵值暫存

keybuf:          DS          1            ;鍵值緩沖區(qū)

……

Start:

CLR        EA

MOV      A,#13H                        ;全暗數(shù)據(jù)

MOV      B,#8

MOV      R0,#dispbuf

Start1:

MOV      @R0,A                 ;往顯示緩沖區(qū)填入數(shù)據(jù)

INC        R0

DJNZ      B,Start1

MOV      keytemp,#0

MOV      keybuf,#0

Start2:

LCALL   Disp

CJNE      A,keybuf,Start2

MOV      R0,#dispbuf+7

MOV      @R0,A

       SJMP      Start2

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

;輸入: 無

;輸出:鍵值

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

Disp:       MOV      R7,#8

              MOV      R0,#dispbuf

              CLR        LEDCLK

              SETB      LECDIN

Disp1:     MOV      A,@R0

              MOV      DPTR,#DispTab

              MOVC    A,@A+DPTR

        CPL        A

              MOV      LEDDATA,A                ;在這里加入顯示小數(shù)點程序

              LCALL   DispSelection1              ;輸出位選擇信號,DispSelection2是第二種

              LCALL   Delay1ms

              INC        R0

              MOV      C,KEYINPUT

              MOV      A,keytemp

              RRC       A

              MOV      keytemp,A

              DJNZ      R7,Disp1

              MOV      A,keytemp                    ;鍵值(特征值,按下鍵對應(yīng)的位為0)

              MOV      B,#0

              MOV      R7,#8

Disp2:

              RRC       A

              JNC        Disp3

`             INC        B

              DJNZ      R7,Disp2

Disp3:     MOV      A,B

              RET

DispSelection1:                                  ;位選碼以一次一位方式輸出

              CJNE      R7,#8,DispSelection11

              CLR        LEDDIN

DispSelection11:

              SETB      LEDCLK

              NOP

              CLR        LEDCLK

              SETB      LEDDIN

              RET

DispSTab:       DB  00H,80H,40H,20H,10H,08H,04H,02H,01H ;位選碼數(shù)據(jù)表

dispa       equ  80h                ;數(shù)碼管各段數(shù)據(jù)定義

dispb       equ  40h

dispc       equ  20h

dispd       equ  10h

dispe       equ  08h

dispf       equ  04h

dispg       equ  02h

disph       equ  01h

disp8       equ  0ffh-disph

DispTab:  db    disp8-dispg,dispb+dispc,dispa+dispb+dispg+dispd+dispe                  ;0,1,2

              db    disp8-dispe-dispf,disp8-dispa-dispd-dispe,disp8-dispb-dispe              ;3,4,5

              db    disp8-dispb,dispa+dispb+dispc,disp8,disp8-dispe                             ;6,7,8,9

              db    disp8-dispd,disp8-dispa-dispb,disp8-dispb-dispc-dispg                      ;a,b,c

              db    disp8-dispa-dispf,disp8-dispb-dispc,disp8-dispb-dispc-dispd              ;d,e,f

              db    disp8-dispb-dispc,0ffh,00h,dispg                                      ;H,全亮,全暗,-

 

 

 

這個C程序怎么寫啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:24977 發(fā)表于 2011-11-10 16:06 | 只看該作者
看不到圖??
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表