问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求51单片机矩阵44键盘程序p0口接一个数码管p3口接矩阵键盘c语言的

发布网友 发布时间:2023-04-29 01:19

我来回答

1个回答

热心网友 时间:2023-10-31 17:45

#include<reg51.h>
unsigned char keyval,keynum=0;
unsigned char distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void t1isr() interrupt 3
{
unsigned char sccode,recode;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P3=0x0f; //发0扫描,列线输入
if ((P3 & 0x0f) != 0x0f)keynum++; //有键按下
else keynum=0;
if(keynum>5) //按键保持在5次中断以上
{
keynum=0;
sccode = 0xef; //逐行扫描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
getkey((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
getkey(0);
}
void getkey(unsigned char key)
{
if(key==0){keyval=0xff;return;}
switch(key)
{
case 0x11:keyval=7;break;
case 0x12:keyval=4;break;
case 0x14:keyval=1;break;
case 0x18:keyval=10;break;
case 0x21:keyval=8;break;
case 0x22:keyval=5;break;
case 0x24:keyval=2;break;
case 0x28:keyval=0;break;
case 0x41:keyval=9;break;
case 0x42:keyval=6;break;
case 0x44:keyval=3;break;
case 0x48:keyval=11;break;
case 0x81:keyval=12;break;
case 0x82:keyval=13;break;
case 0x84:keyval=14;break;
case 0x88:keyval=15;break;
default:keyval=0xff;break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(keyval!=0xff)P0=distab[keyval];
}

}来自:求助得到的回答

热心网友 时间:2023-10-31 17:45

#include<reg51.h>
unsigned char keyval,keynum=0;
unsigned char distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void t1isr() interrupt 3
{
unsigned char sccode,recode;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P3=0x0f; //发0扫描,列线输入
if ((P3 & 0x0f) != 0x0f)keynum++; //有键按下
else keynum=0;
if(keynum>5) //按键保持在5次中断以上
{
keynum=0;
sccode = 0xef; //逐行扫描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
getkey((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
getkey(0);
}
void getkey(unsigned char key)
{
if(key==0){keyval=0xff;return;}
switch(key)
{
case 0x11:keyval=7;break;
case 0x12:keyval=4;break;
case 0x14:keyval=1;break;
case 0x18:keyval=10;break;
case 0x21:keyval=8;break;
case 0x22:keyval=5;break;
case 0x24:keyval=2;break;
case 0x28:keyval=0;break;
case 0x41:keyval=9;break;
case 0x42:keyval=6;break;
case 0x44:keyval=3;break;
case 0x48:keyval=11;break;
case 0x81:keyval=12;break;
case 0x82:keyval=13;break;
case 0x84:keyval=14;break;
case 0x88:keyval=15;break;
default:keyval=0xff;break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(keyval!=0xff)P0=distab[keyval];
}

}来自:求助得到的回答
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
行车工退休是否有工龄年限限制?男士、女士的的退休年龄。 北京中新惠尔健康科技有限公司解决方案 北京中新惠尔健康科技有限公司公司文化 北京中新惠尔健康科技有限公司服务产品 北京中新惠尔健康科技有限公司历史沿革 北京中新惠尔健康科技有限公司惠尔简介 速腾能放多久? 昆山汽车搭电多少钱? 比亚迪救急估计电瓶没电了 盒马员工超过1小时算不算大吧 关于一个c51单片机的4*4矩阵键盘扫描程序,我用keil运行,总是有错误,请各位帮帮忙,把错误给修改下。谢 单片机简答题以44矩阵键盘为例写出该键盘按键处理扫描流程 徊徨的国语词典徊徨的国语词典是什么 北京IT培训分享如何更有效率地学习Java? it培训哪家强_it培训哪家好 千层酥皮苹果派制作方法简单在家用什么去自制千层酥皮苹果派 温州大门大桥介绍? 梦见鸟说话要吃人的预兆 微信可以登录两个吗 2023年2月28日农历二月初九出生的男孩最吉利的名字 梦见新生_的预兆 梦见小学一年级新生的由来的预兆 梦见办入学手续的预兆 梦见新入学准备节目的预兆 一个可以同时登陆两个吗? 一个人可以用两个吗? 一部手机能同时登两个吗? 请问一下抽贷和断贷是什么? 冰淇淋加盟十大品牌有哪些 2022年大学生心理健康的自我成长报告3篇 求个单片机矩阵键盘44中断记得要中断的c语言程序求高手自己写个啊 容量小于2TB的硬盘片上每个磁道上的每个扇区的容量是多少个字节? 银证转账 显示不能使用资金 银证转账时明明里面显示有余额可是转时却提示现金不足咋回事 全能行证券可用金额有1万多我想转到银行账户为什么会显示余额不足 好听音乐驿站女歌手为什么蒙面 好听音乐驿站中三位歌手分别是谁 四年级上册语文教学反思5篇 手机壳推广语、推广文案 飞狐外传多少集 《飞狐外传》剧情简介 《飞狐外传》主要讲了什么故事 父姓王,孩子属兔,男孩该起什么名字好呢 《飞狐外传》唤醒了观众的金庸武侠情怀,如何评价这部翻拍剧? 《飞狐外传》:没有你要的相濡以沫,只有一滴朱砂血洒心头 王者荣耀怎么换头像王者荣耀怎么换头像QQ不换 为什么梦幻西游手游我登陆账号就显示账号以失效什么意思啊? 王者荣耀怎么换头像,王者荣耀怎么换头像不换微信头像 彩虹岛手游账号验证过期 渠弥的解释 渠弥的解释是什么 弭_的解释弭_的解释是什么