找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3770|回復(fù): 1
收起左側(cè)

新手嘗試Arduino溫度數(shù)碼管顯示程序 可調(diào)亮度

[復(fù)制鏈接]
ID:512424 發(fā)表于 2019-4-15 11:16 | 顯示全部樓層 |閱讀模式
175346i6kgs62wjwxc3s6h_WPS圖片.jpg
  1. int a = 15;//設(shè)置端口
  2. int b = 19;
  3. int c = 7;
  4. int d = 5;
  5. int e = 4;
  6. int f = 16;
  7. int g = 8;
  8. int dp = 6;
  9. int tempPin = 7;
  10. int d1 = 14;
  11. int d2 = 17;
  12. int d3 = 18;
  13. int d4 = 9;
  14. int n = 0;//溫度變量
  15. int del = 2; //數(shù)碼管的亮度
  16. unsigned long m=0

  17. byte segs[7] = { a, b, c, d, e, f, g }
  18. byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },
  19.                                { 0,1,1,0,0,0,0 },
  20.                                { 1,1,0,1,1,0,1 },
  21.                                { 1,1,1,1,0,0,1 },
  22.                                { 0,1,1,0,0,1,1 },
  23.                                { 1,0,1,1,0,1,1 },
  24.                                { 1,0,1,1,1,1,1 },
  25.                                { 1,1,1,0,0,0,0 },
  26.                                { 1,1,1,1,1,1,1 },
  27.                                { 1,1,1,1,0,1,1 }
  28.                                };
  29. void setup()
  30. {
  31.   pinMode(d1, OUTPUT);
  32.   pinMode(d2, OUTPUT);
  33.   pinMode(d3, OUTPUT);
  34.   pinMode(d4, OUTPUT);
  35.   pinMode(a, OUTPUT);
  36.   pinMode(b, OUTPUT);
  37.   pinMode(c, OUTPUT);
  38.   pinMode(d, OUTPUT);
  39.   pinMode(e, OUTPUT);
  40.   pinMode(f, OUTPUT);
  41.   pinMode(g, OUTPUT);
  42.   pinMode(dp, OUTPUT);
  43.   pinMode(11, OUTPUT);
  44.   digitalWrite(11, LOW);
  45.   Serial.begin(9600);
  46. }
  47. void loop()//運(yùn)行程序
  48. {
  49. float tempval=analogRead(tempPin)* 4.6;
  50. if (m%30==0) n=int(tempval);

  51.       if (n>300)  digitalWrite(11, HIGH);
  52.       if (n<=300)  digitalWrite(11, LOW);
  53.   clearLEDs()
  54.   delay(del)
  55.   lightSegments(n/1000%10);

  56.   pickDigit((n/1000%10>0));

  57. clearLEDs();
  58.   delay(del);
  59.   pickDigit(2);
  60.   lightSegments(n/100%10);
  61.   delay(del+2);

  62.   clearLEDs();
  63.   pickDigit(3);
  64.   lightSegments(n/10%10);
  65.   dispDec(3);
  66.   delay(del+2);

  67.   clearLEDs();
  68.   delay(del);
  69.   pickDigit(4);
  70.   lightSegments(n%10);
  71.   delay(del-1);
  72.   m++;


  73. Serial.println(analogRead(tempPin));
  74. Serial.println(n);
  75. }

  76. void pickDigit(int x)
  77. {
  78.   digitalWrite(d1, LOW);
  79.   digitalWrite(d2, LOW);
  80.   digitalWrite(d3, LOW);
  81.   digitalWrite(d4, LOW);
  82.   switch(x)
  83.   {
  84.   case 1:
  85.     digitalWrite(d1, HIGH);
  86.     break;
  87.   case 2:
  88.     digitalWrite(d2, HIGH);
  89.     break;
  90.   case 3:
  91.     digitalWrite(d3, HIGH);
  92.     break;
  93.   case 4:// default:
  94. digitalWrite(d4, (m%100>=30));

  95.     break;
  96.   }
  97. }
  98. void dispDec(int x)
  99. {
  100. digitalWrite(dp, LOW);//點(diǎn)亮小數(shù)點(diǎn)
  101. }
  102. void clearLEDs()
  103. {
  104.     for (int i = 0; i < 7; i++)
  105. {
  106.     digitalWrite(segs[ i], HIGH);
  107.      }
  108.     digitalWrite(dp, HIGH);
  109. }
  110. void lightSegments(int x)
  111. {
  112. for (int i = 0; i < 7; i++)
  113. {
  114. digitalWrite(segs[ i], 1-seven_seg_digits[x][ i]);
  115.   }
  116. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-4-15 16:53 | 顯示全部樓層
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表