找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求救啊,明天要交了~~~~(>_<)~~~~

[复制链接]
跳转到指定楼层
楼主
ID:46154 发表于 2012-11-6 18:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

MAIN: CLR  P1.4

      MOV R4,#00H;初始化按键值

LOOP: MOV R0,#00H;扫描计数器

NEXT: SETB P1.5

      CLR  P1.6;初始化HC138输入信号,选中U4

      MOV P2,#0FFH;关显示

      MOV A,R4 

      MOV DPTR,#DISPCODE

      MOVC A,@A+DPTR;查找显示内容

      MOV P0,A;将查到的显示内容送P0

      SETB P1.7

      CLR  P1.7;P0口数据锁存到U4

      MOV A,R0

      MOV DPTR,#SCAN

      MOVC A,@A+DPTR;查找位扫描数据

      MOV P2,A;位扫描数据送P2

      ACALL DELAY

      CLR  P1.5

      SETB P1.6

      SETB P1.7;选通HC244U6

      MOV A,P0;读取按键状态

      CPL A

      CLR P1.7;

      CJNE A,#00H,KEY;判断是否有键按下

      AJMP NOKEY;无键按下则不处理键值

KEY:  MOV R2,#00H;按键所在的列号清零

      CLR C;清除CY

MVBIT:RRC A

      INC  R2

      JNC MVBIT;循环移位,以获取按键所在的列号

      MOV A,R0;当前扫描的行号

      MOV B,#08H

      MUL AB;行号乘

      ADD A,R2;行列组合,得到按键值

      MOV R4,A;保存按键值

NOKEY:INC R0

      CJNE R0,#06H,NEXT;判断位数码管是否扫描完一次,没扫描完则继续

      AJMP LOOP;扫描完一次尽行下一次扫描

      

SCAN:  DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH;位扫描数据

DISPCODE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H;1,2,3,4,5,6,的显示码

          DB 0F8H,80H,90H,88H,83H,0C6H;7,8,9,A,B,C

          DB 0A1H,86H,8EH,0BFH;D,E,F,-

DELAY:       MOV R3,#01H;延时

LOOP2:       MOV R1,#0FFH

LOOP1:       DJNZ R1,LOOP1

             DJNZ R3,LOOP2

             RET

             END

3、将程序修改为按键时在LED上循环显示所按键值(按第一个键时,第一个LED显示对应键值,按第二个键时,第二个LED显示对应键值,。。。,按第七个键时,第一个LED显示对应键值,按第八个键时,第二个LED显示对应键值。。。)

用了74HC13,,74HC574,8*2键盘接有缓冲器

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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