//设置阳极接口
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[7] = {
a, b, c, d, e, f, g };
byte seven_seg_digits[11][7] = {
{
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[i], !seven_seg_digits[x][i]);
}
}
// 点亮小数点
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);
}