找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3829|回复: 1
打印 上一主题 下一主题
收起左侧

菜鸟求教这个实验

[复制链接]
跳转到指定楼层
楼主
ID:33156 发表于 2011-11-10 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 

键盘显示程序设计

实验目的

1、理解串行接口键盘单片机汇编语言程序的基本结构

2、了解单片机汇编语言程序的设计和调试方法

3、掌握几个的基本的传送类、控制类指令的使用方法

实验仪器

单片机开发板、万利仿真机、稳压电源、计算机

实验原理

1、  键盘接口电路工作原理

串行接口键盘盘电路如图4-15所示。键盘扫描线与显示位选扫描信号共用。键盘输入只需要一根线,电路简单。键盘扫描信号从74LS164输出,低电平有效。当扫描到某个键时,若按键按下,在KEY端得到低电平,否则得到高电平。通过判断KEY的电平就可以知道相应键盘是否按下。

图4-15 键盘接口电路图

2、  读键盘程序设计

从上面工作原理分析可知,读键程序可以和显示程序结合在一起,也可以单独设计。这种结构的键盘同样存在抖动问题。为了减少程序误动作,程序设计时也要考虑去抖动问题。这里设计一个把键值显示在LED上的程序。为了简化问题,把读键程序与显示结合起来。程序流程图如图4-16所示。

主程序

初值化,显示缓冲区,键值暂存,键盘缓存

调用键盘显示程序

键值相同

键值送显示

Y

N

Y

显示计数为0

……

键盘显示程序

取键值暂存到累加器

返回键值

N

显示程序

延时程序执行后

读当前扫描的键状态,并存入键值暂存寄存器

 


















图4-16 键盘扫描程序流程图

实验内容

1、单片机键盘显示程序设计

……

LEDCLK        bit          P3.4

LEDDIN        bit          P2.3

LEDDATA      data        P0

KEYINPUT    bit          P1.0

……

dispbuf:          DS          8            ;显示缓冲区8字节

disppoint:       Ds          1            ;小数点控制数据

keytemp:        DS          1            ;键值暂存

keybuf:          DS          1            ;键值缓冲区

……

Start:

CLR        EA

MOV      A,#13H                        ;全暗数据

MOV      B,#8

MOV      R0,#dispbuf

Start1:

MOV      @R0,A                 ;往显示缓冲区填入数据

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                ;在这里加入显示小数点程序

              LCALL   DispSelection1              ;输出位选择信号,DispSelection2是第二种

              LCALL   Delay1ms

              INC        R0

              MOV      C,KEYINPUT

              MOV      A,keytemp

              RRC       A

              MOV      keytemp,A

              DJNZ      R7,Disp1

              MOV      A,keytemp                    ;键值(特征值,按下键对应的位为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 ;位选码数据表

dispa       equ  80h                ;数码管各段数据定义

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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:24977 发表于 2011-11-10 16:06 | 只看该作者
看不到图??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表