0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

8255驱动矩阵键盘和数码管程序

算法&编程学院 作者:工程师a 2018-05-12 01:44 次阅读

汇编编程:矩阵键盘控制数码管切换显示0~F。

下面是电路图。要求16个键按下能显示0~F字样。

8255驱动矩阵键盘和数码管程序

看到这样的电路和程序,不由得想起初学单片机时情景。

十几年前,是一本北航的书,里面就是这样的程序。

后来又看过几本,里面也有雷同的程序。

其实,该程序编写的很滥。

它把行列号码,算的很清。还特意弄成几个分支。

换下一行时,行号就要分别存入 00H、08H、10H、18H。

想法也太笨了,其实,只要加上 8,就可以编写成循环程序了。

程序中,还有很多应该简化的地方。

这程序学起来,的确浪费了我不少的时间。

根据题目中的电路和程序,做而论道改写的程序如下。

;

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 //判断有无键按下, 返回PA口状态存放在A中

JZ KEY1 //无则返回

ACALL DELAY //调用延时子程序

ACALL KS1 //再次判断有无键按下

JZ KEY1 //无则返回

;

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

MOV R3, #8 //检查8次

MOV R4, #0 //初始键号

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 //无则左移一位列扫描字, 继续判断下一列

MOV R2, A

DJNZ R3, LK4

LK3:

ACALL KS1

JNZ LK3 //判断按下的键有没有弹起, 无则原地等待继续判断

;

MOV A, R4 //键号放于A中

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

MOVC A, @A + DPTR //键号转成相应的段码

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

MOVX @DPTR, A //数码管显示

;

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口数据存放在A中, 若有键按下, 则A不等于零

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

DELAY: //延时子程序, 约10ms

MOV R7, #20

D1: DJNZ R6, $

DJNZ R7, D1

RET

END

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

本程序运行的仿真截图,可见前面的插图。

题目中的电路,仅仅使用了一个数码管。这和实用的场合,还有差距。

如果使用动态显示的方法,驱动多位数码管,那么,矩阵键盘的规模,就可以再扩大一些。

而做而论道在这里给出的程序,却不用增加很多,仅仅再添上三、五行即可够用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数码管
    +关注

    关注

    31

    文章

    1827

    浏览量

    89951
  • 矩阵键盘
    +关注

    关注

    7

    文章

    204

    浏览量

    31137
收藏 人收藏

    评论

    相关推荐

    键盘扫描和数码管显示源程序和电路图

    键盘扫描和数码管显示源程序和电路图 在RB口上扩充一个矩阵键盘,一共4×4个按键,刚好4条行线、4条列线占用RB口的全部8个接口;而在R
    发表于 01-11 23:19 2479次阅读
    <b class='flag-5'>键盘</b>扫描<b class='flag-5'>和数码管</b>显示源<b class='flag-5'>程序</b>和电路图

    全面剖析数码管矩阵键盘联合使用法则

    本文内容为7.7 数码管矩阵键盘联合使用、7.8 ZLG72128——数码管键盘管理、7.9 温控器。
    的头像 发表于 11-21 07:47 1w次阅读
    全面剖析<b class='flag-5'>数码管</b>与<b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>联合使用法则

    数码管矩阵键盘联合应用设计

    AMetal 提供了数码管矩阵键盘联合使用的驱动,其本质上就是数码管驱动
    的头像 发表于 01-19 09:31 7575次阅读
    <b class='flag-5'>数码管</b>与<b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>联合应用设计

    应用数码管矩阵键盘、蜂鸣器、流水灯的程序

    课题学习的模块:数码管矩阵键盘、蜂鸣器、流水灯键盘按键数值排布如下:789456123 0引脚定义:LEDP1数码管P0
    发表于 08-14 21:34

    51单片机矩阵键盘和数码管实现计算器

    51单片机矩阵键盘和数码管实现计算器,,,最简单的c语言写的,保定看得懂
    发表于 11-08 20:23

    数码管显示键盘矩阵按键

    51单片机 at89c52 数码管显示键盘矩阵按键
    发表于 10-13 07:27

    请问矩阵按键和数码管显示应该怎样配合?

    现在有5*3矩阵键盘和10位8端段数码管,需要进行按键扫描和数码管动态显示。一个朋友说矩阵键盘
    发表于 03-25 03:46

    数码管显示矩阵键盘扫描程序

    数码管显示矩阵键盘扫描程序  /*矩阵键盘扫描出键值,在
    发表于 01-11 19:14 2197次阅读

    数码管显示矩阵键盘扫描值

    数码管显示矩阵键盘扫描值  /*矩阵键盘扫描出键值,在数码管上显示出来       P0口接
    发表于 01-14 21:01 2551次阅读

    基于单片机的数码管矩阵键盘显示【C语言版】

    基于单片机的数码管矩阵键盘显示【C语言版】
    发表于 12-29 18:19 0次下载

    基于8051的Proteus仿真-数码管显示4×4键盘矩阵按键

    基于8051的Proteus仿真-数码管显示4×4键盘矩阵按键
    发表于 09-01 23:36 93次下载

    tm1637驱动数码管程序

    本文介绍了tm1637驱动数码管程序,TM1637是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口,数据锁存器,LED高压
    发表于 12-19 11:59 4.5w次阅读
    tm1637<b class='flag-5'>驱动</b><b class='flag-5'>数码管程序</b>

    使用51单片机和8255芯片驱动矩阵键盘控制数码管切换显示的程序

    本文档的主要内容详细介绍的是使用51单片机和8255芯片驱动矩阵键盘控制数码管切换显示的程序免费
    发表于 09-06 17:26 21次下载
    使用51单片机和<b class='flag-5'>8255</b>芯片<b class='flag-5'>驱动</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>控制<b class='flag-5'>数码管</b>切换显示的<b class='flag-5'>程序</b>

    矩阵按键、秒表、数码管动态扫描和数码管同时加减的程序免费下载

    本文档的主要内容详细介绍的是基于51单片机的矩阵按键、秒表、数码管动态扫描和数码管同时加减的C语言程序免费下载。
    发表于 05-13 08:00 21次下载
    <b class='flag-5'>矩阵</b>按键、秒表、<b class='flag-5'>数码管</b>动态扫描<b class='flag-5'>和数码管</b>同时加减的<b class='flag-5'>程序</b>免费下载

    使用单片机实现数码管显示4乘4键盘矩阵按键的C语言程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现数码管显示4乘4键盘矩阵按键的C语言程序免费下载。
    发表于 03-16 14:39 25次下载