用52单片机学习板上的2个按键,4个数码管,实现以下功能:

2019-07-15 12:58发布

用52单片机学习板上的2个按键,4个数码管,实现以下功能:
1. 不按按键,数码管灭;
2. 按下第1个按键,数码管显示“dlnu”;再按一下第1个按键,数码管显示“xtxy”;再按一下第1个按键,数码管显示“dzxx”;再按第1个键,显示“dlnu”.....,依次循环;
3.按下第2个按键,数码管灭。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
白日依山尽111
1楼-- · 2019-07-15 16:57
求大神们教教我
@曲终人散@
2楼-- · 2019-07-15 20:31
 精彩回答 2  元偷偷看……
白日依山尽111
3楼-- · 2019-07-15 22:50
@曲终人散@ 发表于 2016-10-4 16:27
把你想显示的那三个字符串的编码变成三个数组,记住按下的次数,依次显示就ok了,很简单

编了 但是按下按键有显示但是松手就只有最后一个字母了,求大神帮解决
xyz549040622
4楼-- · 2019-07-16 03:40
白日依山尽111 发表于 2016-10-4 19:57
编了 但是按下按键有显示但是松手就只有最后一个字母了,求大神帮解决

有两种可能,一种是按键发生了抖动,第二种是你按键状态没有记录OK,配套的程序也出了问题。
李春明
5楼-- · 2019-07-16 04:42
楼主上传你的程序看看
白日依山尽111
6楼-- · 2019-07-16 05:37
王栋春 发表于 2016-10-4 20:29
楼主上传你的程序看看

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit s1=P3^4;
sbit s2=P3^5;
uchar code u1[]={0x5e,0x38,0x37,0x3e};
uchar code u2[]={0x76,0x78,0x76,0x6e};
uchar code u3[]={0x5e,0x5b,0x76,0x76};
uchar code u4[]={0xfb,0xf7,0xef,0xdf};
uint i,j,x;

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);

}
void display()
{        if(x==1)
        {        
                for(i=0;i<4;i++)
                {
                        wela=1;
                        P0=0xff;
                        wela=0;
                        wela=1;
                        P0=u4;
                        wela=0;
                        dula=1;
                        P0=u1;
                        dula=0;
                        delay(5);
                }
         }
         if(x==2)
        {  for(i=0;i<4;i++)
                {        wela=1;
                        P0=0xff;
                        wela=0;
                        wela=1;
                        P0=u4;
                        wela=0;
                        dula=1;
                        P0=u2;
                        dula=0;
                        delay(5);
       
                }
         }
         if(x==3)
        {  for(i=0;i<4;i++)
                {        wela=1;
                        P0=0xff;
                        wela=0;
                        wela=1;
                        P0=u4;
                        wela=0;
                        dula=1;
                        P0=u3;
                        dula=0;
                        delay(5);

                }
         }
         if(x==4)
         {
                 x=1;
         }
}
void main()
{         x=1;
        while(1)
        {
                if(s1==0)
                {          delay(10);
                          if(s1==0)
                          {          while(!s1)
                                    display();
                                  x++;
                          }
        }
                if(s2==0)
                {          delay(10);
                          if(s2==0)
                          {          while(!s2)
                                            wela=1;
                                        P0=0xff;
                                        wela=0;
                          }
                }        
        }
}

一周热门 更多>