树莓派编程wiringPi控制电子数码管显示循环0~9

来源:互联网 发布:寿百年黑俄罗斯淘宝店 编辑:程序博客网 时间:2024/05/16 06:24

我是看着胡老师的文档做的,现在也懒得写了。把文档放在这了http://pan.baidu.com/s/1c07D02k,胡老师写的文档真是太详细了


下面只贴一下代码吧,也没有注释。


led.h

#define LED_A 29#define LED_B 27#define LED_C 24#define LED_D 22#define LED_E 21#define LED_F 28#define LED_G 25#define LED_H 23#define LED_COM1 0#define LED_COM2 2#define LED_COM3 3#define LED_COM4 12#define LED_D1 LED_E#define LED_D2 LED_D#define LED_D3 LED_H#define LED_D4 LED_C#define LED_D5 30#define LED_D6 31#define LED_D7 11#define LED_D8 10int tube_segment[]={LED_A, LED_B, LED_C, LED_D, LED_E, LED_F, LED_G, LED_H};int number_segments[]={0b11111100, 0b01100000, 0b11011010, 0b11110010, 0b01100110, 0b10110110, 0b10111110,0b11100000, 0b11111110, 0b11100110};int tube_coms[]={LED_COM1, LED_COM2, LED_COM3, LED_COM4};int led_segment[]={LED_D1, LED_D2, LED_D3, LED_D4, LED_D5, LED_D6, LED_D7, LED_D8};void init_raspberrypi_gpios(void);void display_number_in_tube(int number, int tube_number);


led.c

#include<stdio.h>#include<wiringPi.h>#include "led.h"int main(){int i, current_number=0;wiringPiSetup();init_raspberrypi_gpios();while(1){// for (i = 0; i < 4; ++i){display_number_in_tube(current_number, 0);display_number_in_tube(current_number, 1);display_number_in_tube(current_number, 2);display_number_in_tube(current_number, 3);current_number++;if(current_number==10){current_number=0;}delay(500);}}return 0;}void init_raspberrypi_gpios(void){int i, count =8;for (i = 0; i < count; ++i){pinMode(tube_segment[i], OUTPUT);digitalWrite(tube_segment[i], HIGH);}count = 4;for (i = 0; i < count; ++i){pinMode(tube_coms[i], OUTPUT);digitalWrite(tube_coms[i], HIGH);}}void display_number_in_tube(int number, int tube_number){int i;int b_number = number_segments[number];for (i = 0; i < 8; ++i){if(b_number&0x80){digitalWrite(tube_segment[i], LOW);}else{digitalWrite(tube_segment[i], HIGH);}b_number<<=1;}// for (i = 0; i < 4; ++i)// {// digitalWrite(tube_coms[i], HIGH);// }if (tube_number < 4){digitalWrite(tube_coms[tube_number], LOW);/* code */}else{printf("%s\n", "tube number error!");}}

然后用WinScp传到树莓派上,在终端用如下命令编译、运行。

gcc -Wall -o led led.c -lwiringPi

sudo ./led




0 0