试水,4位数字温度计
手上有4位数码管,和LM35温度传感器,从论坛学了点知识,今天有空搭建了一个数字温度计。遗憾的就是我的线材太少了,基本上用上了所有的线。还“桥接”了几处。呵呵。 接线很简单,参阅弘老大的帖子接就行:http://www.geek-workshop.com/thread-82-1-1.html移动电源供电
把代码贴出来,供大家参考一下。(代码我也是修改弘老大和其他人的,嘿嘿)
//设置阳极接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int p = 8;
// 温度刷新间隔
long count=1000;
// 初始温度值
float vol=0.0;
//设置阴极接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
byte segs = {
a, b, c, d, e, f, g };
byte seven_seg_digits = {
{
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,0,1,0,0 } // = 9
,// = C
{
1,1,1,0,0,1,0 } // = C
};
void setup() {
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(p, OUTPUT);
pinMode(A1, OUTPUT);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
digitalWrite(A0, HIGH);//
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(p, LOW);
digitalWrite(A1, LOW);
}
void loop() {
int n = analogRead(A3); //读取A0口的电压值
float vol_t = n * (5.0 / 1023.0*100); //使用浮点数存储温度数据,温度数据由电压值换算得到
if(count>=1000){
count=0;
vol=vol_t;
}
// 左起第1位数字
clearLEDs() ;
SetNumber(1,(int)(vol/10));
delay(2);
// 左起第2位数字
clearLEDs() ;
SetNumber(2,((int)vol)%10);
delay(2);
// 左起第3位数字
clearLEDs() ;
SetNumber(3,((int)(vol*10))%10);
delay(2);
// 左起第4位数字
clearLEDs() ;
SetNumber(4,10);//10=C
delay(2);
count++;
}
// 点亮对应数字的数码管
void lightSegments(int x) {
for (int i = 0; i < 7; i++) {
digitalWrite(segs, !seven_seg_digits);
}
}
// 点亮小数点
void dot()
{
digitalWrite(p,HIGH);
}
void SetNumber(int b,int num)
{
switch(b)
{
case 1:
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
lightSegments(num);
break;
case 2:
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
lightSegments(num);
// 点亮小数点
dot();
break;
case 3:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
lightSegments(num);
break;
case 4:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
lightSegments(num);
break;
}
}
void clearLEDs()//清屏
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(p, LOW);
digitalWrite(A1, LOW);
}
赞和顶楼主的精神 做的好啊~~!!! 不错~~~~~~ 写的挺好的 請問有電路圖嗎?
可以參考一下怎麼接線的嗎
感謝
页:
[1]