共阴极数码管单片机c语言编程,单片机驱动共阴数码管电路图

发布时间:2023-01-08

本文目录一览:

  1. 用单片机c语言 用七个独立式按键控制共阴极的数码管静态显示0~7七个数字
  2. 51单片机,8位共阴极数码管动态显示12位学号,按键调整走动速度,C语言的
  3. 单片机数码管共阴极程序
  4. 51单片机的共阴数码管怎么显示数字(c语言)知道

用单片机c语言 用七个独立式按键控制共阴极的数码管静态显示0~7七个数字

今天早上刚写的,这是共阳极数码管的,数组里的结合自己的接口对应更改,希望对大家有用

#include <at89x51.h>
unsigned char code table[] = {0x82,0xe7,0x4a,0x46,0x27,0x16,0x12,0xc7,0x02,0x06};
sbit R1 = P1^0;
void main() {
    R1 = 0;
    while(1) {
        switch(P2) {
            case 0xfe: P0 = table[0]; break;
            case 0xfd: P0 = table[1]; break;
            case 0xfb: P0 = table[2]; break;
            case 0xf7: P0 = table[3]; break;
            case 0xef: P0 = table[4]; break;
            case 0xdf: P0 = table[5]; break;
            case 0xbf: P0 = table[6]; break;
            case 0x7f: P0 = table[7]; break;
            default: break;
        }
    }
}

51单片机,8位共阴极数码管动态显示12位学号,按键调整走动速度,C语言的

#include <reg52.h>
#include <intrins.h>
sbit k_add = P3^1;
sbit k_sub = P3^4;
unsigned char code SEG7[] = {
    0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff
};
unsigned char DISP_BUFF[] = {
    10, 10, 10, 10, 10, 10, 10, 10,
    1, 3, 9, 2, 5, 8, 0, 7, 4, 6, 3, 2,
    10, 10, 10, 10, 10, 10, 10, 10
};
unsigned char j = 0, k = 1;
void DelayMS(unsigned int x) {
    unsigned char i;
    while(x--) for(i = 200; i > 0; i--);
}
void display(unsigned char x) {
    unsigned char i, w = 128;
    for(i = 0; i < 8; i++) {
        P0 = SEG7[DISP_BUFF[i + k]];
        P2 = w; DelayMS(1); P2 = 0;
        w = _cror_(w, 1);
    }
    j++;
    if (j > x) {
        j = 0;
        k++;
        if (k == 20) k = 0;
    }
}
void main() {
    unsigned char d = 30;
    while(1) {
        if (!k_add) {
            display(d);
            if (!k_add) {
                d += 2;
                if (d > 50) d = 50;
                while (!k_add) display(d);
            }
        }
        if (!k_sub) {
            display(d);
            if (!k_sub) {
                d -= 2;
                if (d < 10) d = 10;
                while (!k_sub) display(d);
            }
        }
        display(d);
        P1 = d;
    }
}

单片机数码管共阴极程序

首先你要告诉别人是什么单片机 89C51 PIC?是C语言的还是汇编的?

51单片机的共阴数码管怎么显示数字(c语言)知道

共阴极数码管也就是说,当控制信号为1时该段LED点亮,8段数码管的数字0~9定义为:

3FH, 06H, 5BH, 4FH, 66H  // 0 1 2 3 4
6DH, 7DH, 07H, 7FH, 6FH  // 5 6 7 8 9

以下为简易8路抢答器的例程:

#include <reg51.h>
#define uchar unsigned char
uchar table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbit rstkey = P2^2;
sbit speaker = P2^0;
void delay() {
    uchar i, j;
    for(i = 0; i < 200; i++)
        for(j = 0; j < 250; j++);
}
void main() {
    uchar i, key;
    P2 = 0xff;
    while(1) {
        i = 0;
        P1 = table[i];
        while(1) {
            key = P3;
            if(key != 0) break;
        }
        switch(key) {
            case 0x01: i = 1; break;
            case 0x02: i = 2; break;
            case 0x04: i = 3; break;
            case 0x08: i = 4; break;
            case 0x10: i = 5; break;
            case 0x20: i = 6; break;
            case 0x40: i = 7; break;
            case 0x80: i = 8; break;
            default: break;
        }
        P1 = table[i]; // 显示按下抢答器的号
        P0 = key;      // 显示按下键号的LED
        while(1) {
            if(rstkey == 0) break; // 主持人按下复位键则重新开始
            speaker = ~speaker;    // 否则蜂鸣器报警
            delay();
        }
    }
}