极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17906|回复: 5

Arduino 数码管累加器问题.

[复制链接]
发表于 2016-5-11 20:55:24 | 显示全部楼层 |阅读模式
  1. #include<Arduino.h>

  2. #define a 2
  3. #define b 3
  4. #define c 4
  5. #define d 5
  6. #define e 6
  7. #define f 7
  8. #define g 8
  9. #define h 9

  10. #define com1 10
  11. #define com2 11
  12. #define com3 12
  13. #define com4 13

  14. #define an_jian 1

  15. char anxia = 1;
  16. char s = 0;       /*随便定义的变量*/


  17. unsigned char tiaodeng[][8]=
  18. {
  19.         {0,        0,        1,        1,        1,        1,        1,        1},
  20.         {0,        0,        0,        0,        0,        1,        1,        0},
  21.         {0,        1,        0,        1,        1,        0,        1,        1},
  22.         {0,        1,        0,        0,        1,        1,        1,        1},
  23.         {0,        1,        1,        0,        0,        1,        1,        0},
  24.         {0,        1,        1,        0,        1,        1,        0,        1},
  25.         {0,        1,        1,        1,        1,        1,        0,        1},
  26.         {0,        0,        0,        0,        0,        1,        1,        1},
  27.         {0,        1,        1,        1,        1,        1,        1,        1},
  28.         {0,        1,        1,        0,        1,        1,        1,        1}        
  29. };

  30. void setup()

  31. {
  32.   for(unsigned char z = 2; z <= 13; z++)
  33.   {
  34.     pinMode(z,OUTPUT);
  35.   }
  36.   pinMode(an_jian,INPUT);
  37.   digitalWrite(an_jian,HIGH);
  38. }

  39. void loop()
  40. {
  41.   
  42.   if(jian_ce() == 1)
  43.   {
  44.     s++;
  45.     if(s > 9999)
  46.       {
  47.         s = 0;
  48.       }
  49.   }
  50.   shumaguang(1,s/1000);
  51.   delay(2);
  52.   shumaguang(2,s%1000/100);
  53.   delay(2);
  54.   shumaguang(3,s%100/10);
  55.   delay(2);
  56.   shumaguang(4,s%10);
  57.   delay(2);
  58. }

  59. unsigned char jian_ce()
  60. {
  61.   if(anxia == 1 && digitalRead(an_jian) == LOW)
  62.     {
  63.       anxia = 0;
  64.       delay(1);
  65.       if(digitalRead(an_jian) == LOW);
  66.         {
  67.           return 1;
  68.         }
  69.     }
  70.   if(digitalRead(an_jian) == HIGH)
  71.     {
  72.       anxia = 1;
  73.     }
  74.   return 0;
  75. }

  76. unsigned char shumaguang(unsigned char com,unsigned num)
  77. {

  78.   digitalWrite(a,LOW);
  79.   digitalWrite(b,LOW);
  80.   digitalWrite(c,LOW);
  81.   digitalWrite(d,LOW);
  82.   digitalWrite(e,LOW);
  83.   digitalWrite(f,LOW);
  84.   digitalWrite(g,LOW);
  85.   digitalWrite(h,LOW);
  86.   
  87.   switch(com)
  88.   {
  89.     case 1:
  90.             digitalWrite(com1,LOW);
  91.             digitalWrite(com2,HIGH);
  92.             digitalWrite(com3,HIGH);
  93.             digitalWrite(com4,HIGH);
  94.             break;
  95.     case 2:
  96.             digitalWrite(com1,HIGH);
  97.             digitalWrite(com2,LOW);
  98.             digitalWrite(com3,HIGH);
  99.             digitalWrite(com4,HIGH);
  100.             break;
  101.     case 3:
  102.             digitalWrite(com1,HIGH);
  103.             digitalWrite(com2,HIGH);
  104.             digitalWrite(com3,LOW);
  105.             digitalWrite(com4,HIGH);
  106.             break;
  107.     case 4:
  108.             digitalWrite(com1,HIGH);
  109.             digitalWrite(com2,HIGH);
  110.             digitalWrite(com3,HIGH);
  111.             digitalWrite(com4,LOW);
  112.             break;        
  113.     default:break;
  114.   }
  115.   
  116.    digitalWrite(a,tiaodeng[num][7]);
  117.    digitalWrite(b,tiaodeng[num][6]);
  118.    digitalWrite(c,tiaodeng[num][5]);
  119.    digitalWrite(d,tiaodeng[num][4]);
  120.    digitalWrite(e,tiaodeng[num][3]);
  121.    digitalWrite(f,tiaodeng[num][2]);
  122.    digitalWrite(g,tiaodeng[num][1]);
  123.    digitalWrite(h,tiaodeng[num][0]);
  124.            
  125. }
复制代码


以上代码来源http://www.geek-workshop.com/thread-12758-1-1.html
按照以上代码接线显示正常,但到了解120以上就出现乱码,请求大神指点.
回复

使用道具 举报

 楼主| 发表于 2016-5-11 20:59:48 | 显示全部楼层
数码管到了127就开始出现代码.大神知道什么原因吗?
回复 支持 反对

使用道具 举报

发表于 2016-5-11 21:34:02 | 显示全部楼层
应该是变量类型的问题吧。
char 就能到127,改成int 能到32767
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-12 07:38:40 | 显示全部楼层
wwwusr 发表于 2016-5-11 21:34
应该是变量类型的问题吧。
char 就能到127,改成int 能到32767

谢谢,按你的方法解决了.
回复 支持 反对

使用道具 举报

发表于 2016-5-12 21:58:41 | 显示全部楼层
平淡幸福 发表于 2016-5-11 20:59
数码管到了127就开始出现代码.大神知道什么原因吗?

char类型的存储都是按照ascii码转换之后存储的,你可以了解一下相关的知识,比如去某度
最大只能存到01111111(8位),总共是127个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-13 17:15:29 | 显示全部楼层
zjz5717 发表于 2016-5-12 21:58
char类型的存储都是按照ascii码转换之后存储的,你可以了解一下相关的知识,比如去某度
最大只能存到011 ...

谢谢,刚学,慢慢了解。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 03:01 , Processed in 0.038405 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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