Ardino基础教程 17_四位数码管
實驗十七:四位數碼管
這次我們進行的實驗是使用arduino 驅動一塊共陰四位數碼管。驅動數碼管限流電阻肯定是必不可少的,限流電阻有兩種接法,一種是在d1-d4陽極接,總共接4 顆。這種接法好處是需求電阻比較少,但是會產生每一位上顯示不同數字亮度會不一樣,1 最亮,8 最暗。另外一種接法就是在其他8 個引腳上接,這種接法亮度顯示均勻,但是用電阻較多。本次實驗使用8 顆220Ω 電阻(因為沒有100Ω 電阻,所以使用220Ω的代替,100 歐姆亮度會比較高)。
4 位數碼管總共有12 個引腳,小數點朝下正放在面前時,左下角為1,其他管腳順序為逆時針旋轉。左上角為最大的12 號管腳。
下圖為數碼管的說明手冊
實驗接線圖
參考源程序:
//顯示1234
//設置陰極接口
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int dp = 8;
//設置陽極接口
int d4 = 9;
int d3 = 10;
int d2 = 11;
int d1 = 12;
//設置變量
long n = 1230;
int x = 100;
int del = 55; //此處數值對時鐘進行微調
void setup()
{
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
}
/
void loop()
{
Display(1, 1);
Display(2, 2);
Display(3, 3);
Display(4, 4);
}
///
void WeiXuan(unsigned char n)//
{
switch(n)
{
case 1:
digitalWrite(d1,LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 2:
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
case 3:
digitalWrite(d1,HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
break;
case 4:
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
break;
default :
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
break;
}
}
void Num_0()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_1()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_2()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_3()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_4()
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_5()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_6()
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_7()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void Num_8()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Num_9()
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp,LOW);
}
void Clear() //清屏
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp,LOW);
}
void pickNumber(unsigned char n)//選數
{
switch(n)
{
case 0:Num_0();
break;
case 1:Num_1();
break;
case 2:Num_2();
break;
case 3:Num_3();
break;
case 4:Num_4();
break;
case 5:Num_5();
break;
case 6:Num_6();
break;
case 7:Num_7();
break;
case 8:Num_8();
break;
case 9:Num_9();
break;
default:Clear();
break;
}
}
void Display(unsigned char x, unsigned char Number)//顯示x 為坐標,Number 為數字
{
WeiXuan(x);
pickNumber(Number);
delay(1);
Clear() ; //消影
}
實驗效果
把下面代碼復制下載到控制板中,看看效果圖。
實驗結果為數碼管顯示1234 ,
注意:連接的時候需要耐心,認真,不要連錯任何線,當出現亂碼時,要先檢查線路。謝謝!
程序代碼
//設置陰極接口int a = 1;int b = 2;int c = 3;int d = 4;int e = 5;int f = 6;int g = 7;int dp = 8;//設置陽極接口int d4 = 9;int d3 = 10;int d2 = 11;int d1 = 12;//設置變量long n = 1230;int x = 100;int del = 55; //此處數值對時鐘進行微調void setup(){pinMode(d1, OUTPUT);pinMode(d2, OUTPUT);pinMode(d3, OUTPUT);pinMode(d4, OUTPUT);pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);pinMode(dp, OUTPUT);} / void loop() {Display(1, 1);Display(2, 2);Display(3, 3);Display(4, 4);} /// void WeiXuan(unsigned char n)// {switch(n){case 1: digitalWrite(d1,LOW);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH); break;case 2: digitalWrite(d1, HIGH);digitalWrite(d2, LOW);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH); break;case 3: digitalWrite(d1,HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, LOW);digitalWrite(d4, HIGH); break;case 4: digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, LOW); break;default :digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;} } void Num_0() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, LOW);digitalWrite(dp,LOW); } void Num_1() {digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW); } void Num_2() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, LOW);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Num_3() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Num_4() {digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Num_5() {digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Num_6() {digitalWrite(a, HIGH);digitalWrite(b, LOW);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Num_7() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW); } void Num_8() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Num_9() {digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, LOW);digitalWrite(f, HIGH);digitalWrite(g, HIGH);digitalWrite(dp,LOW); } void Clear() //清屏 {digitalWrite(a, LOW);digitalWrite(b, LOW);digitalWrite(c, LOW);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW); } void pickNumber(unsigned char n) {switch(n){case 0:Num_0();break;case 1:Num_1();break;case 2:Num_2();break;case 3:Num_3();break;case 4:Num_4();break;case 5:Num_5();break;case 6:Num_6();break;case 7:Num_7();break;case 8:Num_8();break;case 9:Num_9();break;default:Clear();break; } } void Display(unsigned char x, unsigned char Number) {WeiXuan(x);pickNumber(Number);delay(1);Clear() ; }總結
以上是生活随笔為你收集整理的Ardino基础教程 17_四位数码管的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ardino基础教程 16_一位数码管
- 下一篇: Ardino基础教程 18_驱动74HC