标题: 我想使用单片机按键控制数码管显示不同的内容,为啥实现不了呢? [打印本页]

作者: lijiqing    时间: 2020-7-20 10:47
标题: 我想使用单片机按键控制数码管显示不同的内容,为啥实现不了呢?
请教大神,我想使用按键控制数码管显示不同的内容,为啥实现不了呢,同一个按键,按一次显示温度、按一次显示时间,如此循环。按键加了延时后,按下去后数码管会变黑。求帮我分析下。

单片机源程序如下:
  1. u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
  2. u8 DisData[8];
  3. u8 DisplayData[8];
  4. u8 Data[8];



  5. u8 keypro()    //按键处理函数
  6. {
  7.         u8 i,flag=0,t=0;
  8.   if(k1==0)
  9.         {
  10.                  if(k1==0)
  11.                  {
  12.                          for(i=0;i<2;i++)
  13.                          {
  14.                          delay2s();
  15.                          flag++;
  16.                          if(flag==2)flag=0;
  17.                          }
  18.                  }
  19.                 //while(!k1);
  20.         }
  21. switch(flag)
  22.                   {
  23.                           case (0):t=0;break;
  24.                                 case (1):t=1;break;
  25.                         }
  26. return t;

  27. }


  28. void dyna()    \\数码管显示函数
  29. {
  30.   unsigned int i;
  31.         for(i=0;i<8;i++)
  32.         {
  33.           switch(i)
  34.                   {
  35.                           case (0):SA=0;SB=0;SC=0;break;
  36.                                 case (1):SA=1;SB=0;SC=0;break;
  37.                                 case (2):SA=0;SB=1;SC=0;break;
  38.                                 case (3):SA=1;SB=1;SC=0;break;
  39.                                 case (4):SA=0;SB=0;SC=1;break;
  40.                                 case (5):SA=1;SB=0;SC=1;break;
  41.                           case (6):SA=0;SB=1;SC=1;break;
  42.         case (7):SA=1;SB=1;SC=1;break;
  43.                         }        
  44. switch(keypro())
  45.                 {
  46.                         case 1:Data[i]=DisplayData[i];break;
  47.                         case 0:Data[i]=DisData[i];break;
  48.                 }
  49.          GPIO_DIG=Data[i];
  50.          delay(20);
  51.          GPIO_DIG=0x00;//消隐         
  52.         }        
  53. }
复制代码



作者: wulin    时间: 2020-7-20 21:22
给你一个示例参考,时钟/温度按键切换显示。按键停止操作5秒自动恢复时钟显示。
4位数码管时钟温度表仿真.zip (158.01 KB, 下载次数: 14)






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1