Arduino与7段显示器连接
原文地址:https://circuitdigest.com/microcontroller-projects/7-segment-display-interfacing-with-arduino
Arduino與7段顯示器連接
ARDUINO的
經過**迪利普·拉賈(Dilip Raja)** 2015年6月6日8
在本教程中,我們將把一個七段顯示器連接到ARDUINO UNO。顯示屏從0-9開始計數,并將自身重置為零。在繼續之前,讓我們首先討論七個分段顯示。
七段顯示器的得名是因為它具有七個照明段。這些段中的每一個都有一個LED(發光二極管),因此可以發光。LED的制造方式使得每個LED的照明都包含在自己的部分中。這里要注意的重要一點是,任何七段顯示器中的LED都以共陽極模式(共正)或共陰極模式(共負)排列。
上圖顯示了共陰極和共陽極中LED的電路連接。在這里,可以觀察到,在CC中,每個LED的負極都連接在一起,并作為GND引出。在CA中,每個LED的正極連接在一起并作為VCC輸出。這些CC和CA在將多個單元復用在一起時非常方便。
所需組件
硬件: ARDUINO UNO,電源(5v),HDSP5503七段顯示器(兩塊)(任何公共陰極都可以),47uF電容器(跨電源連接)。
軟體: arduino IDE(Arduino每晚)
電路圖和工作說明
7段顯示的連接如下所示:
ARDUINO UNO的PIN1或E至PIN 6
PIN2或D到PIN 5
PIN4或C至PIN 4
PIN5或H或DP到PIN 9 ///不需要,因為我們不使用小數點
PIN6或B到PIN 3
PIN7或A至PIN 2
PIN9或F至PIN 7
PIN10或G到PIN 8
PIN3或PIN8或CC通過100Ω電阻接地。
現在,要了解其工作原理,請考慮將七段顯示器連接到端口,因此,我們已經將“顯示器的一部分連接到PIN0”,“顯示器的B部分連接到PIN1”,“顯示器的一部分連接到PIN3”,“顯示到PIN4的一段”,“顯示到PIN5的一段”,“顯示到PIN6的一段”。并為普通接地型,如圖所示。
在這里,公共接地必須連接到地面,顯示器才能正常工作。可以使用二極管模式的萬用表檢查顯示的每個部分。每個段均不得使用大于4v的電壓供電,否則顯示屏將被永久損壞。為了避免這種情況,可以在公共端子上提供一個公共電阻,如電路圖所示。
現在,如果我們要在該顯示中顯示“ 0”,如下圖所示。
我們需要打開“ A,B,C,D,EF”段的LED,因此需要給PIN0,PIN1,PIN2,PIN3,PIN4和PIN5供電。因此,每當我們需要一個“ 0”時,就需要給所有提到的引腳供電。
現在,如果我們想顯示“ 1”
我們需要為網段“ B,C”供電,要使網段B,C開啟,我們需要給PIN1,PIN2供電。當兩個引腳都為高電平時,顯示為“ 1”。因此,如上所示,我們將為與要在顯示屏上顯示的數字相對應的引腳供電。
在這里,我們將編寫一個程序來打開和關閉每個段,計數為0-9。最好在下面的C代碼中逐步解釋0-9計數器的工作 :
代碼
#define segA 2//connecting segment A to PIN2#define segB 3// connecting segment B to PIN3#define segC 4// connecting segment C to PIN4#define segD 5// connecting segment D to PIN5#define segE 6// connecting segment E to PIN6#define segF 7// connecting segment F to PIN7#define segG 8// connecting segment G to PIN8int COUNT = 0; //count integer for 0-9 incrementvoid setup(){for (int i = 2; i < 9; i++){pinMode(i, OUTPUT);// taking all pins from 2-8 as output}}void loop(){switch (COUNT){case 0://when count value is zero show”0” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, HIGH);digitalWrite(segE, HIGH);digitalWrite(segF, HIGH);digitalWrite(segG, LOW);break;case 1:// when count value is 1 show”1” on dispdigitalWrite(segA, LOW);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, LOW);digitalWrite(segE, LOW);digitalWrite(segF, LOW);digitalWrite(segG, LOW);break;case 2:// when count value is 2 show”2” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, HIGH);digitalWrite(segC, LOW);digitalWrite(segD, HIGH);digitalWrite(segE, HIGH);digitalWrite(segF, LOW);digitalWrite(segG, HIGH);break;case 3:// when count value is 3 show”3” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, HIGH);digitalWrite(segE, LOW);digitalWrite(segF, LOW);digitalWrite(segG, HIGH);break;case 4:// when count value is 4 show”4” on dispdigitalWrite(segA, LOW);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, LOW);digitalWrite(segE, LOW);digitalWrite(segF, HIGH);digitalWrite(segG, HIGH);break;case 5:// when count value is 5 show”5” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, LOW);digitalWrite(segC, HIGH);digitalWrite(segD, HIGH);digitalWrite(segE, LOW);digitalWrite(segF, HIGH);digitalWrite(segG, HIGH);break;case 6:// when count value is 6 show”6” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, LOW);digitalWrite(segC, HIGH);digitalWrite(segD, HIGH);digitalWrite(segE, HIGH);digitalWrite(segF, HIGH);digitalWrite(segG, HIGH);break;case 7:// when count value is 7 show”7” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, LOW);digitalWrite(segE, LOW);digitalWrite(segF, LOW);digitalWrite(segG, LOW);break;case 8:// when count value is 8 show”8” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, HIGH);digitalWrite(segE, HIGH);digitalWrite(segF, HIGH);digitalWrite(segG, HIGH);break;case 9:// when count value is 9 show”9” on dispdigitalWrite(segA, HIGH);digitalWrite(segB, HIGH);digitalWrite(segC, HIGH);digitalWrite(segD, HIGH);digitalWrite(segE, LOW);digitalWrite(segF, HIGH);digitalWrite(segG, HIGH);break;break;}if (COUNT < 10){COUNT++;delay(1000);///increment count integer for every second}if (COUNT == 10){COUNT = 0; // if count integer value is equal to 10, reset it to zero.delay(1000);}}總結
以上是生活随笔為你收集整理的Arduino与7段显示器连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于OpenLayer的室内地图前端设计
- 下一篇: SM总线控制器