|
发表于 2022-6-4 15:24:22
|
显示全部楼层
本帖最后由 傻眼貓咪 于 2022-6-4 15:26 编辑
我对单片机比较不熟,很久之前玩的,现在电脑要安装编译器和连接单片机很麻烦所以没有玩。
我是用 Arduino 呈现 4 位七段数码管的,我的 Arduino 代码,希望对你有帮助:- #define pinA 2
- #define pinB 3
- #define pinC 4
- #define pinD 5
- #define pinE 7
- #define pinF 12
- #define pinG 8
- #define pinDP 13
- #define D1 6
- #define D2 9
- #define D3 10
- #define D4 11
- uint8_t pin[12] = { pinA, pinB, pinC, pinD, pinE, pinF, pinG, pinDP, D1, D2, D3, D4 };
- void setup() {
- for (int i = 0; i < 12; ++i) {
- pinMode(pin[i], OUTPUT); // 设为输出电位
- }
- Serial.begin(9600);
- }
- // num 为数字,D 为位,共有 4位(个、十、百、千位)
- void foo(int num, int D) {
- int digits[10][7] = {
- {1, 1, 1, 1, 1, 1, 0}, // 0
- {0, 1, 1, 0, 0, 0, 0}, // 1
- {1, 1, 0, 1, 1, 0, 1}, // 2
- {1, 1, 1, 1, 0, 0, 1}, // 3
- {0, 1, 1, 0, 0, 1, 1}, // 4
- {1, 0, 1, 1, 0, 1, 1}, // 5
- {1, 0, 1, 1, 1, 1, 1}, // 6
- {1, 1, 1, 0, 0, 0, 0}, // 7
- {1, 1, 1, 1, 1, 1, 1}, // 8
- {1, 1, 1, 1, 0, 1, 1} // 9
- };
- for (int i = 0; i < 7; ++i) digitalWrite(pin[i], digits[num][i]);
- digitalWrite(pinDP, LOW); // 设为低电位
- for (int i = 8; i < 12; ++i) digitalWrite(pin[i], 1);
- if(D <= 4) digitalWrite(pin[D + 7], LOW); // 设为低电位
- }
- void foo3(int num) {
- if (num < 10) {
- foo(num, 1);
- delay(5);
- }
- else if (num < 100) {
- int a, b;
- a = num / 10;
- b = num % 10;
- foo(a, 2);
- delay(5);
- foo(b, 1);
- delay(5);
- }
- else if (num < 1000) {
- int a, b, c, d;
- a = num / 100;
- b = num % 100 / 10;
- c = num % 10;
- d = 0;
- foo(a, 3);
- delay(5);
- foo(b, 2);
- delay(5);
- foo(c, 1);
- delay(5);
- foo(d, 5);
- delay(5);
- }
- else {
- int a, b, c, d;
- a = num / 1000;
- b = num % 1000 / 100;
- c = num % 100 / 10;
- d = num % 10;
- foo(a, 4);
- delay(5);
- foo(b, 3);
- delay(5);
- foo(c, 2);
- delay(5);
- foo(d, 1);
- delay(5);
- }
- }
- int foo2(int num) {
- int T = (millis()/1000)%10; // 当程序开始时,millis()函数开始计时(以毫秒为单位),计满50天后,又从0开始一直循环计时
- // T 时间线和 foo3() 七段数码管开关函数时间不会互相影响(foo3()只会重复打印当时应该显示的时间)
- while (((millis()/1000)%10) - T < 1) {
- foo3(num);
- }
- return T + 1;
- }
- // 主函数
- void loop() {
- int x;
- for (int num = 0; num < 10000; ++num) {
- x = foo2(num);
- }
- }
复制代码 |
|