单片机89S51,4×4矩阵键盘,控制16个发光二极管

发布者:Meshulun最新更新时间:2018-05-08 来源: eefocus关键字:单片机  89S51  矩阵键盘  发光二极管 手机看文章 扫描二维码
随时随地手机看文章

用单片机89S51,4×4矩阵键盘,控制16个发光二极管,程序有点错误哪位高手给指点一下。
我所做的矩阵键盘控制的发光二极管只有8个亮8个不亮,和P2口连接的亮和P0口连接的不亮,高手给点意见。

回答:

下列程序已经经过了 PROTEUS 验证,可以满足题目要求。

;----------------------------------------------------------
       ORG  0000H
START:
       MOV  P0, #0        ;显示初始化
       MOV  P2, #0        ;全亮
;----------------------------------------------------------
M_LOOP:
       CALL KEY_SCAN
       JB   ACC.4, M_LOOP ;A=16, 就是没有按下键
       CALL DISPLAY
       SJMP M_LOOP
;----------------------------------------------------------
KEY_SCAN:                 ;用反转法扫描键盘
       PUSH B
       CLR  A             ;将用A保存按键信息
       MOV  P3, #0FH      ;列线置低电平,行线置高电平
       MOV  B, P3
       JNB  B.0, L_J0     ;逐行扫描
       JNB  B.1, L_J1
       JNB  B.2, L_J2
       JNB  B.3, L_J3
       MOV  A, #16        ;没有按键,A=16
       SJMP KEY_END
;------------------------------
L_J3:  INC  ACC           ;加行值
L_J2:  INC  ACC
L_J1:  INC  ACC
L_J0:  RL   A             ;行号×4
       RL   A
;------------------------------
       MOV  P3, #0F0H     ;行线列线电平互换
       MOV  B, P3
       JNB  B.4, R_J0     ;逐列扫描
       JNB  B.5, R_J1
       JNB  B.6, R_J2
       JNB  B.7, R_J3
       MOV  A, #16
       SJMP KEY_END
;------------------------------
R_J3:  INC  ACC           ;加列值
R_J2:  INC  ACC
R_J1:  INC  ACC
R_J0:                     ;A=0~F
KEY_END:
       POP B
       RET        
;----------------------------------------------------------
DISPLAY:
       MOV  P1, A         ;输出到数码显示器
       RL   A             ;乘以2,因为每个键值要显示两个字节
       MOV  B,  A         ;保存
       MOV  DPTR, #TABLE1 ;显示码表首地址
       MOVC A, @A+DPTR    ;根据键值查显示码
       MOV  P2, A         ;输出显示
       MOV  A, B
       INC  A             ;准备查第二字节
       MOVC A, @A+DPTR    ;根据键值查显示码
       MOV  P0, A 
       RET
;----------------------------------------------------------
TABLE1:
       DB 00H, 01H, 00H, 02H, 00H, 04H, 00H, 08H
       DB 00H, 10H, 00H, 20H, 00H, 40H, 00H, 80H
       DB 01H, 00H, 02H, 00H, 04H, 00H, 08H, 00H
       DB 10H, 00H, 20H, 00H, 40H, 00H, 80H, 00H
END
;----------------------------------------------------------
用PROTEUS仿真图像如下:

单片机89S51,4×4矩阵键盘,控制16个发光二极管 - 非著名博主 - 电子信息角落


关键字:单片机  89S51  矩阵键盘  发光二极管 引用地址:单片机89S51,4×4矩阵键盘,控制16个发光二极管

上一篇:利用定时方式0,测量外部脉冲宽度(5到250ms),74HC595输出显示
下一篇:如何正确计算多重循环延时程序的延时时间

推荐阅读最新更新时间:2024-03-16 16:02

MSP430单片机在电力系统操作电源中的应用
随着 电力 系统现代自动化水平的提高以及高频 开关 电源 结构的日趋复杂,促使人们采用新的 控制 手段来迅速反映模块变化,以大幅度提高 开关 电源 模块稳定运行水平.在整个 控制 系统中,要求处理采样数据及采用的算法也越来越多.传统的微处理器如MSC51系列等 单片机 由于内部集成资源相对少、外围 电路 复杂、系统抗干扰能力差、不擅长数据处理的缺点以逐渐不能满足高科技水平的需要. MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗的混合信号处理器. 由于其超低功耗、强大的处理能力、高性能 模拟 技术及丰富的片上外围模块、系统工作稳定、方便高效的开发环境得到广大用户的高度评价。本文采用MSP43
[电源管理]
单片机程序设计中状态机思路的应用
状态机的概念 状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按键状态机例子。实际的按键解析程序会比这更复杂些,但这不影响我们对状态机的认识。 进一步看,击键动作本身也可以看做一个状态机。一个细小的击键动作包含了:释放、抖动、闭合、抖动和重新释放等状态。 同样,一个串行通信的时序(不管它是遵循何种协议,标准串口也好、I2C也好;也不管它是有线的、还是红外的、无线的)也都可以看做由一系列有限的状
[单片机]
<font color='red'>单片机</font>程序设计中状态机思路的应用
MB89163单片机介绍及其在遥控器中的应用
MB89160/160A是日本富士通公司推出的新型8位单片机系列,由于它采用CMOS技术、高密集成工艺和模块化结构,所以具有功耗低、适用性广和性价比高的特点。因此,特别适合遥控器智能仪表和电池供电设备的应用。 MB89163是MB89160/160A系列中一种型号,它有QFE-80和MQFP-80两种封装。其片内具有16K字节的ROM、512字节的RAM。电源电压为2.2V-6.0V,主时钟和子时钟分别为4.194MHz和32.768KHz。 二、内部结构及特点 MB89163内部功能框图如图1所示。从图中看出,该芯片是多功能的单片机,它由LCD控制/驱动器、A/D转换器 、定时器、串行口、PWM
[单片机]
MB89163<font color='red'>单片机</font>介绍及其在遥控器中的应用
基于单片机的照明控制的可编程4 路无线开关系统的设计
1 设计方案 随着电子技术的不断发展,无线技术在智能化中扮演着越来越重要的角色。本设计是一种能实现远距离照明控制的无线遥控开关系统,由发射系统和接收系统两部分组成。系统使用无线收发模块构成射频发射和接收电路,发射部分主要由按键编址电路、编码电路和发射模块组成; 接收部分主要由接收模块、单片机控制电路和负载电路组成。 发射系统采用1 节12 V 干电池供电,接收系统采用3 节1.5 V 干电池供电,单片机采用5 V 直流电源供电,电源系统节能、简便。 2 系统实现 2.1 元件选取及系统框图 考虑到系统的兼容性、实用性、低成本和节能性, 选用AT89S52 单片机, 用PT2262/2272 无线收发模块
[单片机]
基于<font color='red'>单片机</font>的照明控制的可编程4 路无线开关系统的设计
单片机晶振电路原理
  晶振一般采用三端式(考毕兹) 交流等效振荡电路;实际的晶振交流等效电路中,其中Cv是用来调节振荡频率,一般用变容二极管加上不同的反偏电压来实现,这也是压控作用的机理;把晶体的等效电路代替晶体后。其中Co,C1,L1,RR是晶体的等效电路。   分析整个振荡槽路可知,利用Cv来改变频率是有限的:决定振荡频率的整个槽路C=Cbe,Cce,Cv三个串联后和Co并联再和C1串联。可以看出:C1越小,Co越大,Cv变化时对整个槽路的作用就越小。因而能 压控 的频率范围也越小。实际上,由于C1很小(1E-15量级),Co不能忽略(1E-12量级,几PF)。所以,Cv变大时,降低槽路频率的作用越来越小,Cv变小时,升高槽路频率的作用却越来越
[单片机]
51单片机与蓝牙模块连接
不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。 此次学习用到模块是HC-06蓝牙模块,如下图: 该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚和不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是带引脚的,但是模块本身是坏的;第二次买的是不带引脚的,但是由于自身的焊功有限,导致模块损坏,无法使用;第三次是朋友送的蓝牙4.0,由于某些原因无法使用,在此也特别感谢朋友送我蓝牙;第四次购买,就是上图所示的蓝牙,才最终完成了试
[单片机]
51<font color='red'>单片机</font>与蓝牙模块连接
MCS51单片机在数据采集监控系统中的应用
1.引言 MCS51单片机标准构成只有一组全双工UART串行口,P3.0-RXD收、P3.1-TXD发,如果要完成多路串口收发,一般使用外部扩展芯片,例如:GM8123/25,完成一扩多路串口,但是,由于增加扩展芯片,造成硬件成本增加,PCB板面增大,抗干扰性下降等不良因素,因此能尽量使用现有串口,利用分时切换技术,完成串行口不同类型,不同端口的数据传送是优先选择。 2.硬件功能简述 本设计用于数据采集监控系统如图1所示。采用485串行口完成数据采集,和232串口输出打印功能,这样使得接口连线简单,可靠性高。 RS-485工作特征:发送端:逻辑“1″两线间的电压差为+2至6V表示;逻辑”0″以两线间的电压差为-2至6V表示
[单片机]
MCS51<font color='red'>单片机</font>在数据采集监控系统中的应用
基于HX1838(HS0038)与STC10F04单片机的红外遥控器的读码程序
//此程序在硬件上测试通过,要弄懂的话就要去看看HT6221的时序图。 //此程序可以将读到的键值,地址码通过串口发送到计算机,上位机可用串口调试助手查看。 ///C51的红外解码程序,可以根据需要自己修改: //////////////////////////// //11.0592Mhz #include reg51.h //根据自己的接线来改 sbit IRIN = P3^2; //红外接收器数据线 sbit led = P3^7; //指示灯 //////////////////////////////////////////// //定义数组IRCOM,分别装解码后得到的数据 //IRCOM 低8位地址码 //IRCO
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved