鱼C论坛

 找回密码
 立即注册
查看: 2510|回复: 1

单片机四位七段数码管按键加减个十百千位的数值

[复制链接]
发表于 2020-10-27 21:32:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用三个按键改变个位,十位,百位,千位,一个加键,一个减键,还有一个换位。具体的代码是怎么样的,求大佬回答
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-18 12:42:38 | 显示全部楼层
本帖最后由 kylin121380 于 2020-11-18 12:44 编辑

换位是?加减可参考下面,用的是独立式按键,短按加减,长按快速加减
  1. #include<reg52.h>

  2. #define DataOut P1
  3. #define DataIn P0
  4. sbit Led_show = P2^1;
  5. sbit Led_control = P2^0;
  6. sbit add = P0^0;
  7. sbit dec = P0^1;

  8. code unsigned char Tube_table[17] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77,
  9.                                                                          0x7c, 0x39, 0x5e, 0x79, 0x71, 0x73};
  10. code unsigned char Yube_cho[8] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
  11. unsigned char temp[8];
  12. unsigned char TH0H, TH0L;
  13. unsigned int time_count;  //9999计数


  14. void ConfigTime0(unsigned int ms)
  15. {
  16.         unsigned long tmp;
  17.         tmp = 11059200 / 12;
  18.         tmp = (tmp * ms) / 1000;
  19.         tmp = 65536- tmp ;
  20.         tmp = tmp + 18;
  21.         TH0H = (unsigned char)(tmp >> 8);
  22.         TH0L = (unsigned char) tmp;
  23.         TMOD &= 0XF0;
  24.         TMOD |= 0x01;
  25.         TH0 = TH0H;
  26.         TL0 = TH0L;
  27.         TR0 = 1;
  28.         ET0 = 1;
  29. }



  30. void Delay(unsigned int i)
  31. {
  32.         unsigned int j;
  33.         for (;i > 0; i --)
  34.         {
  35.                 for(j = 20; j > 0; j --);
  36.         }
  37. }


  38. void temp_calc(unsigned int num)
  39. {
  40.         temp[4] = Tube_table[num % 10];
  41.         temp[3] = Tube_table[num /10 % 10];
  42.         temp[2] = Tube_table[num /100 % 10];
  43.         temp[1] = Tube_table[num /1000 % 10];
  44.         temp[0] = Tube_table[num /10000 % 10];
  45. }

  46. //9999计时,长短按加减时间
  47. void main()
  48. {
  49.         unsigned long i, count;
  50.         unsigned char j, flag = 0;
  51.         //unsigned int num;
  52.         ConfigTime0(1);
  53.         EA = 1;
  54.         while(1)
  55.         {
  56.                 temp_calc(time_count);
  57.                 j = DataIn;
  58.                 Delay(15);
  59.                 if ((j == DataIn) & (0x7f == DataIn))
  60.                 {
  61.                         while((j == DataIn) & (0x7f == DataIn))
  62.                         {
  63.                                 i ++;
  64.                                 if         (i > 1000)
  65.                                 {
  66.                                         i --;
  67.                                         count ++;
  68.                                         if ((count == 50) & (time_count < 65536))
  69.                                         {
  70.                                                  flag = 1;
  71.                                                  count = 0;
  72.                                                  time_count += 10;
  73.                                         }       
  74.                                 }
  75.                                 temp_calc(time_count);
  76.                         }
  77.                         i = 0;
  78.                         if(flag)
  79.                         {
  80.                                  flag = 0;
  81.                         }
  82.                         else
  83.                         {
  84.                                 time_count += 100;
  85.                         }
  86.                        
  87.                         temp_calc(time_count);
  88.                 }
  89.                 if ((j == DataIn) & (0xbf == DataIn))
  90.                 {
  91.                         while((j == DataIn) & (0xbf == DataIn))
  92.                         {
  93.                                 i ++;
  94.                                 if         (i > 1000)
  95.                                 {
  96.                                         i --;
  97.                                         count ++;
  98.                                         if ((count == 50) & (time_count > 0))
  99.                                         {
  100.                                                  flag = 1;
  101.                                                  count = 0;
  102.                                                  time_count -= 10;
  103.                                         }       
  104.                                 }
  105.                                 temp_calc(time_count);
  106.                         }
  107.                         i = 0;
  108.                         if(flag)
  109.                         {
  110.                                  flag = 0;
  111.                         }
  112.                         else
  113.                         {
  114.                                 time_count -= 100;
  115.                         }
  116.                         temp_calc(time_count);
  117.                 }
  118.         }
  119. }



  120. void time0_interrupt() interrupt 1
  121. {
  122.         static unsigned int i, count ;
  123.        
  124.         TH0 = TH0H;
  125.         TL0 = TH0L;

  126.         count ++;
  127.         if (count == 1000)
  128.         {
  129.                 count = 0;
  130.                 time_count ++;
  131.         }

  132.         DataOut = 0;
  133.         Led_show = 1;
  134.         Led_show = 0;


  135.         DataOut = Yube_cho[i + 3];
  136.         Led_control        = 1;
  137.         Led_control        = 0;

  138.         DataOut = temp[i];
  139.         Led_show = 1;
  140.         Led_show = 0;


  141.         if (i < 4)
  142.         {
  143.                 i ++;
  144.         }
  145.         else
  146.         {
  147.                 i = 0;
  148.         }
  149. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-18 14:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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