极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17014|回复: 5

试水,4位数字温度计

[复制链接]
发表于 2013-7-27 18:50:15 | 显示全部楼层 |阅读模式
手上有4位数码管,和LM35温度传感器,从论坛学了点知识,今天有空搭建了一个数字温度计。遗憾的就是我的线材太少了,基本上用上了所有的线。还“桥接”了几处。呵呵。   接线很简单,参阅弘老大的帖子接就行:http://www.geek-workshop.com/thread-82-1-1.html

移动电源供电

把代码贴出来,供大家参考一下。(代码我也是修改弘老大和其他人的,嘿嘿)





  1. //设置阳极接口
  2. int a = 1;
  3. int b = 2;
  4. int c = 3;
  5. int d = 4;
  6. int e = 5;
  7. int f = 6;
  8. int g = 7;
  9. int p = 8;

  10. // 温度刷新间隔
  11. long count=1000;
  12. // 初始温度值
  13. float vol=0.0;

  14. //设置阴极接口

  15. int d4 = 9;
  16. int d3 = 10;
  17. int d2 = 11;
  18. int d1 = 12;
  19. byte segs[7] = {
  20.   a, b, c, d, e, f, g };
  21. byte seven_seg_digits[11][7] = {
  22.   {
  23.     0,0,0,0,0,0,1                 }
  24.   ,  // = 0
  25.   {
  26.     1,0,0,1,1,1,1                 }
  27.   ,  // = 1
  28.   {
  29.     0,0,1,0,0,1,0                 }
  30.   ,  // = 2
  31.   {
  32.     0,0,0,0,1,1,0                 }
  33.   ,  // = 3
  34.   {
  35.     1,0,0,1,1,0,0                 }
  36.   ,  // = 4
  37.   {
  38.     0,1,0,0,1,0,0                 }
  39.   ,  // = 5
  40.   {
  41.     0,1,0,0,0,0,0                 }
  42.   ,  // = 6
  43.   {
  44.     0,0,0,1,1,1,1                 }
  45.   ,  // = 7
  46.   {
  47.     0,0,0,0,0,0,0                 }
  48.   ,  // = 8
  49.   {
  50.     0,0,0,0,1,0,0                 }   // = 9
  51.   ,  // = C
  52.   {
  53.     1,1,1,0,0,1,0                 }   // = C
  54. };


  55. void setup() {
  56.   pinMode(d1, OUTPUT);
  57.   pinMode(d2, OUTPUT);
  58.   pinMode(d3, OUTPUT);
  59.   pinMode(d4, OUTPUT);
  60.   pinMode(A0, OUTPUT);
  61.   pinMode(a, OUTPUT);
  62.   pinMode(b, OUTPUT);
  63.   pinMode(c, OUTPUT);
  64.   pinMode(d, OUTPUT);
  65.   pinMode(e, OUTPUT);
  66.   pinMode(f, OUTPUT);
  67.   pinMode(g, OUTPUT);
  68.   pinMode(p, OUTPUT);
  69.   pinMode(A1, OUTPUT);

  70.   digitalWrite(d1, HIGH);
  71.   digitalWrite(d2, HIGH);
  72.   digitalWrite(d3, HIGH);
  73.   digitalWrite(d4, HIGH);
  74.   digitalWrite(A0, HIGH);//

  75.   digitalWrite(a, LOW);
  76.   digitalWrite(b, LOW);
  77.   digitalWrite(c, LOW);
  78.   digitalWrite(d, LOW);
  79.   digitalWrite(e, LOW);
  80.   digitalWrite(f, LOW);
  81.   digitalWrite(g, LOW);
  82.   digitalWrite(p, LOW);
  83.   digitalWrite(A1, LOW);
  84. }

  85. void loop() {

  86.   int n = analogRead(A3);    //读取A0口的电压值

  87.   float vol_t = n * (5.0 / 1023.0*100);   //使用浮点数存储温度数据,温度数据由电压值换算得到
  88.   if(count>=1000){
  89.     count=0;
  90.     vol=vol_t;
  91.   }
  92.   // 左起第1位数字
  93.   clearLEDs() ;
  94.   SetNumber(1,(int)(vol/10));
  95.   delay(2);
  96.   // 左起第2位数字
  97.   clearLEDs() ;
  98.   SetNumber(2,((int)vol)%10);
  99.   delay(2);

  100.   // 左起第3位数字
  101.   clearLEDs() ;
  102.   SetNumber(3,((int)(vol*10))%10);
  103.   delay(2);
  104.   // 左起第4位数字
  105.   clearLEDs() ;
  106.   SetNumber(4,10);//10=C
  107.   delay(2);

  108.   count++;
  109. }

  110. // 点亮对应数字的数码管
  111. void lightSegments(int x) {
  112.   for (int i = 0; i < 7; i++) {
  113.     digitalWrite(segs[i], !seven_seg_digits[x][i]);
  114.   }
  115. }

  116. // 点亮小数点
  117. void dot()
  118. {
  119.   digitalWrite(p,HIGH);
  120. }

  121. void SetNumber(int b,int num)
  122. {
  123.   switch(b)
  124.   {
  125.   case 1:
  126.     digitalWrite(d1, LOW);
  127.     digitalWrite(d2, HIGH);
  128.     digitalWrite(d3, HIGH);
  129.     digitalWrite(d4, HIGH);
  130.     lightSegments(num);
  131.     break;
  132.   case 2:
  133.     digitalWrite(d1, HIGH);
  134.     digitalWrite(d2, LOW);
  135.     digitalWrite(d3, HIGH);
  136.     digitalWrite(d4, HIGH);
  137.     lightSegments(num);
  138.     // 点亮小数点
  139.     dot();
  140.     break;
  141.   case 3:
  142.     digitalWrite(d1, HIGH);
  143.     digitalWrite(d2, HIGH);
  144.     digitalWrite(d3, LOW);
  145.     digitalWrite(d4, HIGH);
  146.     lightSegments(num);
  147.     break;
  148.   case 4:
  149.     digitalWrite(d1, HIGH);
  150.     digitalWrite(d2, HIGH);
  151.     digitalWrite(d3, HIGH);
  152.     digitalWrite(d4, LOW);
  153.     lightSegments(num);
  154.     break;
  155.   }
  156. }
  157. void clearLEDs()  //清屏
  158. {
  159.   digitalWrite(a, LOW);
  160.   digitalWrite(b, LOW);
  161.   digitalWrite(c, LOW);
  162.   digitalWrite(d, LOW);
  163.   digitalWrite(e, LOW);
  164.   digitalWrite(f, LOW);
  165.   digitalWrite(g, LOW);
  166.   digitalWrite(p, LOW);
  167.   digitalWrite(A1, LOW);
  168. }






复制代码


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-7-27 22:44:16 | 显示全部楼层
赞和顶楼主的精神
回复 支持 反对

使用道具 举报

发表于 2013-7-28 07:13:30 | 显示全部楼层
做的好啊~~!!!
回复 支持 反对

使用道具 举报

发表于 2013-7-29 09:23:35 | 显示全部楼层
不错~~~~~~
回复 支持 反对

使用道具 举报

发表于 2013-7-31 22:18:47 | 显示全部楼层
写的挺好的
回复 支持 反对

使用道具 举报

发表于 2015-1-19 18:27:19 | 显示全部楼层
請問有電路圖嗎?
可以參考一下怎麼接線的嗎
感謝
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 11:00 , Processed in 0.059249 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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