永发信息网

单片机程序设计4*4键盘输入系统~控制16个发光二极管

答案:6  悬赏:40  手机版
解决时间 2021-11-11 09:36
单片机程序设计4*4键盘输入系统~控制16个发光二极管
最佳答案
LINE EQU 30H
ROW EQU 31H
VAL EQU 32H
ORG 00H
START: MOV DPTR,#TABLE ;段码表首地址
MOV P2,#10H ;数码管显示初始化

LSCAN: MOV P3,#0F0H ;列线置高电平,行线置高电平
L1: JNB P3.0,L2 ;逐行扫描
LCALL DELAY
JNB P3.0,L2
MOV LINE,#00H ;存行号
LJMP RSCAN
L2: JNB P3.1,L3
LCALL DELAY
JNB P3.1,L3
MOV LINE,#01H ;存行号
LJMP RSCAN
L3: JNB P3.2,L4
LCALL DELAY
JNB P3.2,L4
MOV LINE,#02H ;存行号
LJMP RSCAN
L4: JNB P3.3,L1
LCALL DELAY
JNB P3.3,L1
MOV LINE,#03H ;存行号

RSCAN: MOV P3,#0FH ;行线列线电平互换
C1: JNB P3.4,C2 ;逐列扫描
MOV ROW,#00H ;存列号
LJMP CALCU
C2: JNB P3.5,C3
MOV ROW,#01H ;存列号
LJMP CALCU
C3: JNB P3.6,C4
MOV ROW,#02H ;存列号
LJMP CALCU
C4: JNB P3.7,C1
MOV ROW,#03H ;存列号

CALCU: MOV A,LINE ;根据行号和列号计算键值
MOV B,#04H
MUL AB
ADD A,ROW
MOV VAL,A ;存键值

MOVC A,@A+DPTR ;要据键值查段码
MOV P2,A ;输出段码显示

LJMP LSCAN

DELAY: MOV R6,#20
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET

TABLE: DB 00H,01H,02H,03H,04H,05H,06H,07H
DB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH

END
应该能看得懂 不是很难的
全部回答
自己看书
简单倒是简单,要专门替你作好还是要点时间.
我这有C语言程序的 4*4键盘程序 和电路 要的 来个邮箱 qq:709672381
挺简单的一个东西,网上有大量的资料,这个都不自己做,平时不就白学了吗
1)P1.0-P1.3为4列,P1.4-P1.7为4行。
2)P0.1-P0.7连接1-8LED,P2.0-P2.7连接9-16LED。
3)P1初始值为0xf0,P1.0-P1.3同时连接到一个与非门接入到INT1口。
4)用外部中断1来触发按键扫描。

我画好了Proteus的图,已经和Proteus联调过,目前我的等级无法上传图片。

程序很简单,基本是自解释的。C的源程序如下:
#include

sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;

//中断服务程序
void keyinterrupt() interrupt 2
{
int t;

//延时软件消抖
t=5000;
while(t--);
if(INT1==1)
return;

EX1=0;

//扫描键值
P1=0xef;
if(L1==0){P0=0xfe;P2=0xff;} //按键盘key1
if(L2==0){P0=0xfd;P2=0xff;} //按键盘key2
if(L3==0){P0=0xfb;P2=0xff;} //按键盘key3
if(L4==0){P0=0xf7;P2=0xff;} //按键盘key4
P1=0xdf;
if(L1==0){P0=0xef;P2=0xff;} //按键盘key5
if(L2==0){P0=0xdf;P2=0xff;} //按键盘key6
if(L3==0){P0=0xbf;P2=0xff;} //按键盘key7
if(L4==0){P0=0x7f;P2=0xff;} //按键盘key8
P1=0xbf;
if(L1==0){P2=0xfe;P0=0xff;} //按键盘key9
if(L2==0){P2=0xfd;P0=0xff;} //按键盘key10
if(L3==0){P2=0xfb;P0=0xff;} //按键盘key11
if(L4==0){P2=0xf7;P0=0xff;} //按键盘key12
P1=0x7f;
if(L1==0){P2=0xef;P0=0xff;} //按键盘key13
if(L2==0){P2=0xdf;P0=0xff;} //按键盘key14
if(L3==0){P2=0xbf;P0=0xff;} //按键盘key15
if(L4==0){P2=0x7f;P0=0xff;} //按键盘key16

P1=0x0f;
EX1=1;
return;
}

void main(void)
{
IE=0;
EX1=1;
EA=1; //中断open
P1=0x0f;
P0=0xff;
P2=0xff;
while(1);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
太原紫萱按摩具体怎么去叫的
怎么读"烨"字.用潮汕话读
正泰100A空气开关安装孔尺寸,有4个螺丝孔分
面部小红点是怎么回事
崩坏33TH圣遗物怎么获得
弱弱问一句,出口先生是什么意思
怎么私你?
剪下的狗毛有何用?如何处理
情人这段时间对我很冷漠,我心里一点都不高兴
「私有云存储」和网盘是一个东西吗?国内有哪
人和寿长乐满堂下一句是什么
普洱茶是放的时间越长越好吗?
吃秋葵的禁忌有哪些 揭秘豆腐秋葵的正宗做法
想在信阳购一套房子但不知是在羊山新区买好还
淘宝上全场九元九,全部九元九的店里面的东西
推荐资讯
瑞典进口ASKO洗衣机哪里有代理啊,我想买~
将绝缘导线缠绕在铁棒上接入电路,则铁棒能吸
我想知道叮王争霸第二季的丹琳的QQ或可以联系
碳18与碳的相对分子质量之比是多少,为什么
易通训练场地址在哪,我要去那里办事,
同德县的经济概况
上海祺葭实业有限公司怎么样?
农村信用社atm(夫子河镇新建街)地址在什么地
某企业债券的面值为1000元,期限为8年,年利
骆驼电池6-DG-120A多少价格
中国古代皇帝登基前有哪几个做出出格的事
求快男复活赛有个选手唱的英文歌。急呀
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?