本次設計的數碼管計數器是基于樹莓派編程,應用材料只需按鍵開關一個、一位共陽數碼管一個、杜邦線數根。用樹莓派進行C語言編程,使其計數器實現初始為零、按鍵+1的效果,因考慮材料有限,數據顯示為0-9的循環顯示。從0開始按鍵+1一直到9,數據顯示到9之后按鍵繼續按下又再次回到數字0,按鍵+1到9。以此的一個按鍵+1的0-9的循環。
0.png (304.3 KB, 下載次數: 67)
下載附件
2018-12-10 19:02 上傳
接線表:
數碼管引腳及按鍵開關接口 | WPi | physical | A | 25 | 37 | B | 24 | 35 | C | 23 | 33 | D | 22 | 31 | E | 21 | 29 | F | 14 | 23 | G | 13 | 21 | DP | 12 | 19 | GND | 26 | 32 | Key | 2 | 13 | Key GND | OV | 39 |
源碼:
- #include<wiringPi.h>
- #include<unistd.h>
- #include<time.h>
- #define LED_A 25 //定義數碼管引腳
- #define LED_B 24
- #define LED_C 23
- #define LED_D 22
- #define LED_E 21
- #define LED_F 14
- #define LED_G 13
- #define LED_DP 12
- #define DIGIT1 26
- #define btn 2 //定義按鍵開關引腳
- unsigned char num=0; //初始化num=0
- void showDigit( int num);
- int main (void)
- {
- wiringPiSetup (); //設置數碼管引腳模式
- pinMode (LED_A, OUTPUT);
- pinMode (LED_B, OUTPUT);
- pinMode (LED_C, OUTPUT);
- pinMode (LED_D, OUTPUT);
- pinMode (LED_E, OUTPUT);
- pinMode (LED_F, OUTPUT);
- pinMode (LED_G, OUTPUT);
- pinMode (LED_DP, OUTPUT);
- pinMode (DIGIT1, OUTPUT);
- pinMode (btn, INPUT);
- pullUpDnControl (btn, PUD_UP);
- digitalWrite (DIGIT1, HIGH);
- num=0;
- while(1)
- {
- if(digitalRead(btn)==0) //按鍵輸出為高電平時
- {
- while(digitalRead(btn)==0);
- showDigit(num);
- delay(50); //延時
- num=num+1; //num加1
- if(num<0) //當num<0時
- {
- num=0; //num=0
- }
- if(num>9) //當num>9時
- {
- num=0; //num=0
- }
- }
- }
- }
- void showDigit(int num)
- {
- if (num == 0) //顯示數字0
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, LOW) ;
- digitalWrite (LED_F, LOW) ;
- digitalWrite (LED_G, HIGH) ;
- }
- else if (num == 1) //顯示數字1
- {
- digitalWrite (LED_A, HIGH) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, HIGH) ;
- digitalWrite (LED_E, HIGH) ;
- digitalWrite (LED_F, HIGH) ;
- digitalWrite (LED_G, HIGH) ;
- }
- else if (num == 2) //顯示數字2
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, HIGH) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, LOW) ;
- digitalWrite (LED_F, HIGH) ;
- digitalWrite (LED_G, LOW) ;
- }
- else if (num == 3) //顯示數字3
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, HIGH) ;
- digitalWrite (LED_F, HIGH) ;
- digitalWrite (LED_G, LOW) ;
- }
- else if (num == 4) //顯示數字4
- {
- digitalWrite (LED_A, HIGH) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, HIGH) ;
- digitalWrite (LED_E, HIGH) ;
- digitalWrite (LED_F, LOW) ;
- digitalWrite (LED_G, LOW) ;
- }
- else if (num == 5) //顯示數字5
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, HIGH) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, HIGH) ;
- digitalWrite (LED_F, LOW) ;
- digitalWrite (LED_G, LOW) ;
- }
- else if (num == 6) //顯示數字6
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, HIGH) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, LOW) ;
- digitalWrite (LED_F, LOW) ;
- digitalWrite (LED_G, LOW) ;
- }
- else if (num == 7) //顯示數字7
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, HIGH) ;
- digitalWrite (LED_E, HIGH) ;
- digitalWrite (LED_F, HIGH) ;
- digitalWrite (LED_G, HIGH) ;
- }
- else if (num == 8) //顯示數字8
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, LOW) ;
- digitalWrite (LED_F, LOW) ;
- digitalWrite (LED_G, LOW) ;
- }
- else if (num == 9) //顯示數字9
- {
- digitalWrite (LED_A, LOW) ;
- digitalWrite (LED_B, LOW) ;
- digitalWrite (LED_C, LOW) ;
- digitalWrite (LED_D, LOW) ;
- digitalWrite (LED_E, HIGH) ;
- digitalWrite (LED_F, LOW) ;
- digitalWrite (LED_G, LOW) ;
- }
- }
復制代碼
完整的Word格式文檔51黑下載地址:
樹莓派計數器.doc
(342 KB, 下載次數: 16)
2018-12-10 11:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|