找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1565|回复: 1
打印 上一主题 下一主题
收起左侧

我想使用单片机按键控制数码管显示不同的内容,为啥实现不了呢?

[复制链接]
跳转到指定楼层
楼主
ID:701610 发表于 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. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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