找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

菜鳥(niǎo)求教這個(gè)實(shí)驗(yàn)

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

鍵盤(pán)顯示程序設(shè)計(jì)

實(shí)驗(yàn)?zāi)康?/b>

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

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

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

實(shí)驗(yàn)儀器

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

實(shí)驗(yàn)原理

1、  鍵盤(pán)接口電路工作原理

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

圖4-15 鍵盤(pán)接口電路圖

2、  讀鍵盤(pán)程序設(shè)計(jì)

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

主程序

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

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

鍵值相同

鍵值送顯示

Y

N

Y

顯示計(jì)數(shù)為0

……

鍵盤(pán)顯示程序

取鍵值暫存到累加器

返回鍵值

N

顯示程序

延時(shí)程序執(zhí)行后

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

 


















圖4-16 鍵盤(pán)掃描程序流程圖

實(shí)驗(yàn)內(nèi)容

1、單片機(jī)鍵盤(pán)顯示程序設(shè)計(jì)

……

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ù)點(diǎn)控制數(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

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

;輸入: 無(wú)

;輸出:鍵值

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

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ù)點(diǎn)程序

              LCALL   DispSelection1              ;輸出位選擇信號(hào),DispSelection2是第二種

              LCALL   Delay1ms

              INC        R0

              MOV      C,KEYINPUT

              MOV      A,keytemp

              RRC       A

              MOV      keytemp,A

              DJNZ      R7,Disp1

              MOV      A,keytemp                    ;鍵值(特征值,按下鍵對(duì)應(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,全亮,全暗,-

 

 

 

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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