找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

简单任务之四位数码管求助,新手求助

查看数: 3821 | 评论数: 14 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-8-25 10:20

正文摘要:

在实验板上欲实现一个简单的功能,按K1键 数码管LED1 显1  按K2键 数码管LED2 显2  按K3键 数码管LED3 显3 按K4键 数码管LED1 显4问题?现在按K1四个管子同时显示1,其它按键也是四个数码管同时 ...

回复

ID:137239 发表于 2016-8-26 13:04
likemanweb 发表于 2016-8-25 16:53
找到问题出在那了,还是要谢谢你们

楼主方便说说是哪里出了问题吗?
ID:5564 发表于 2016-8-26 09:29
是不是没有采用动态扫描
ID:137239 发表于 2016-8-26 02:19
likemanweb 发表于 2016-8-25 16:56
找到问题了,还是要谢谢你们

是哪里出了问题?可否告知一下?
ID:137239 发表于 2016-8-26 01:04
读输入的时候要把P1^4~P1^7拉高,也就是置一,其他的写零,也就是P1=0xf0;除此之外,还要考虑到按键抖动,这点楼主是考虑到了,不过感觉有些不妥,有些啰嗦,不知道楼主把数码管段选都置一是什么意思?建议楼主可以这样写:
void main()
{
    P1=0xf0;
while(1)
    {
         if((P1|0x00)!=0xf0)
         {
      delay5(1);//延时消抖
   if((P1&0x00)!=0xf0)
   {
     switch(P1&0xf0)
              {
                    case 0xe0:SMG=DIG_CODE[1];ws1=1;delay5(400);ws1=0;break; //延时加长,这样看到的时间长点
                    case 0xd0:SMG=DIG_CODE[2];ws2=1;delay5(400);ws2=0;break;//NPN型三极管,发射极接地,高电平导通,做开关用
                    case 0xb0:SMG=DIG_CODE[3];ws3=1;delay5(400);ws3=0;break;
                    case 0x70:SMG=DIG_CODE[4];ws4=1;delay5(400);ws4=0;break;  
              }
   }                       
         }
    }
}

ID:118098 发表于 2016-8-25 16:56
找到问题了,还是要谢谢你们
ID:118098 发表于 2016-8-25 16:54
huangfuxi2002 发表于 2016-8-25 15:18
switch(P1&0xf0)
{
    case 0xe0:

找到问题了,还是要谢谢你们
ID:118098 发表于 2016-8-25 16:54
huangfuxi2002 发表于 2016-8-25 15:18
switch(P1&0xf0)
{
    case 0xe0:

找到问题出在那了,还要是谢谢你
ID:118098 发表于 2016-8-25 16:53
找到问题出在那了,还是要谢谢你们
ID:39386 发表于 2016-8-25 15:18
switch(P1&0xf0)
{
    case 0xe0:
          ws1=1;ws2=0;ws3=0;ws4=0;
          SMG=DIG_CODE[1];
          break;
   case 0xd0:;;break; 同上打开相应的led位
   case 0xb0:;;;break;
   case 0x70:;;break;  
}
ID:137549 发表于 2016-8-25 10:38
按key1的时候把LED1为1其他的全部写为0;
switch(P1&0xf0)
{
    case 0xe0:
          ws1=1;ws2=0;ws3=0;ws4=0;
          SMG=DIG_CODE[1];
          break;
   case 0xd0:;;break; 同上打开相应的led位
   case 0xb0:;;;break;
   case 0x70:;;break;  
}
ID:118098 发表于 2016-8-25 10:38
thest 发表于 2016-8-25 10:31
case语句少了大括号吧,应该是case 0xe0:{SMG=DIG_CODE[1];ws1=0;delay5(1);ws1=1;}break;

按你说的试了,不可以的
ID:136609 发表于 2016-8-25 10:31
case语句少了大括号吧,应该是case 0xe0:{SMG=DIG_CODE[1];ws1=0;delay5(1);ws1=1;}break;
ID:118098 发表于 2016-8-25 10:21
简单任务

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表