为什么按键按下,单片机不能读相应得到数据?

2019-07-15 12:39发布

新手学习单片机的道路总是磕磕绊绊,我刚刚能用矩阵键盘控制板子上的小灯的亮灭(注释部分),但是为什么接上数码管之后,数码管只是显示初始值0,当我按下按键的时候,数码管也没有反应呢?【就是画蓝线的那条语句,逻辑,语法也都没错啊,当按下按键的时候key4=0了难道不对吗?】求大神指教~谢谢大家了 急死我了
截图02.png
截图04.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
houjue
1楼-- · 2019-07-15 15:01
P0口做按钮开关时,要有上拉电阻哦~~~~你添加了么?建议换个端口试试,例如:sbit Key4 = P1^3;//希望能帮到你~~~~~

评分

参与人数 1积分 +20 收起 理由 ElecFans处女座 + 20

查看全部评分

风清扬的徒弟
2楼-- · 2019-07-15 16:43
 精彩回答 2  元偷偷看……
zts329547875
3楼-- · 2019-07-15 21:22
生活就像一盒巧克力,你不知道你的下一块口味是什么。
枫流星羽
4楼-- · 2019-07-15 21:27
/*        名称:K1-K4 按键状态显示
        说明:K1、K2按下时LED点亮,松开时熄灭,
                  K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
//延时
void DelayMS(uint x)
{
        uchar i;
        while(x--) for(i=0;i<120;i++);
}       
//主程序
void main()
{
        P0=0xff;
        P1=0xff;
        while(1)
        {
                LED1=K1;
                LED2=K2;
                if(K3==0)
                {
                        while(K3==0);
                        LED3=~LED3;
                }
                if(K4==0)
                {
                        while(K4==0);
                        LED4=~LED4;
                }
图片1.png
houjue
5楼-- · 2019-07-15 23:02
枫流星羽 发表于 2016-11-8 16:06
/*        名称:K1-K4 按键状态显示
        说明:K1、K2按下时LED点亮,松开时熄灭,
                  K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;

这段程序的最后少了两个【{】,不完美~~~~~
lee_st
6楼-- · 2019-07-16 00:22
学习,,,,,,,,,

一周热门 更多>