第二十四课--Microduino 数码管温度计/zh

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年3月11日 (二) 06:19的版本 (Created page with "{{Language|Lesson_24--Microduino_Digital_Tube_Thermometer}} {| style="width: 800px;" |- | ==目的== 本教程将教大家使用DS18B20温度传感器在Microduino上通过数...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Language English

目的

本教程将教大家使用DS18B20温度传感器在Microduino上通过数码管显示温度

设备

  • Microduino-Core
  • Microduino-FT232R
  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • DS18B20温度传感器 一个
    • 数码管 一个
    • USB数据连接线 一根

扬声器

第二十四课-DS18B20温度传感器.jpg

常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。

正确连线,面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!同时,接反也是导致该传感器总是显示85℃的原因。正确接法:面对着扁平的那一面,左负右正。

原理图

第二十四课-Microduino数码管温度计原理图.jpg

引脚表

Microduino引脚 数码管引脚
D2 10(A)
D3 9(B)
D4 1(C)
D5 4(D)
D6 3(E)
D7 6(F)
D8 5(G)
9 2(DP)
D10 8(LED1)
D11 7(LED2)

程序

byte digit0 = 10;	//十位数Microduino pin
byte digit1 = 11;	//个位数Microduino pin
byte dotPin = 2;	//数码管小数点对应的pin

byte sevenSegmentPins[] = {
  2,3,4,5,6,7,8};	//A,B,C,D,E,F,G  对应的Microduino pin
byte sevenSegment[10][7] =
{
  //a b c d e f g
  { 
    0,0,0,0,0,0,1   }
  ,  // = 0
  { 
    1,0,0,1,1,1,1   }
  ,  // = 1
  { 
    0,0,1,0,0,1,0   }
  ,  // = 2
  { 
    0,0,0,0,1,1,0   }
  ,  // = 3
  { 
    1,0,0,1,1,0,0   }
  ,  // = 4
  { 
    0,1,0,0,1,0,0   }
  ,  // = 5
  { 
    0,1,0,0,0,0,0   }
  ,  // = 6
  { 
    0,0,0,1,1,1,1   }
  ,  // = 7
  { 
    0,0,0,0,0,0,0   }
  ,  // = 8
  { 
    0,0,0,1,1,0,0   }   // = 9
};

void setup() {


  //初始化全部亮起
  pinMode(dotPin, OUTPUT); //pin 2
  pinMode(digit0, OUTPUT); //pin 10
  pinMode(digit1, OUTPUT); //pin 11

  for(int i=0; i<7; i++)
  {
    pinMode(sevenSegmentPins[i], OUTPUT);
  }
  digitalWrite(dotPin, HIGH);
  digitalWrite(digit0, HIGH);
  digitalWrite(digit1, HIGH);

}

//显示数字
void segmentWrite(byte digit)
{
  byte pin = 2;
  for (byte i=0; i<7; ++i)
  {
    digitalWrite(pin, sevenSegment[digit][i]);
    ++pin;
  }
}

void loop() {

  int n = analogRead(A0);    //读取A0口的电压值
  int vol = n * (5.0 / 1023.0*100);   //使用浮点数存储温度数据,温度数据由电压值换算得到

  //取个位数
  int sd=vol%10;
  //取十位数
  int td=vol/10;

  digitalWrite(digit0, LOW);   //熄灭十位数码管
  segmentWrite(sd);             //显示个位
  delay(10);                  //10ms 延迟
  digitalWrite(digit0, HIGH);  //点亮十位数码管
  digitalWrite(digit1, LOW);   //熄灭个位数码管
  segmentWrite(td);             //显示十位
  delay(10);                  //10ms 延迟
  digitalWrite(digit1, HIGH);  //点亮个位数码管

}

调试

步骤一:代码复制到IDE中编译

步骤二:编译不出错的话开始连接电路,如下图:

第二十四课-Microduino数码管温度计连接图.jpg

步骤三:连接好后,运行代码。

步骤四:看数码管显示,找一个比较热的东西靠近温度传感器,看看数码管变化。


结果

传感器靠近热源后,数码管显示数值会升高

视频

http://v.youku.com/v_show/id_XNjgyMzE4ODg4.html