本文目录一览:
- 用单片机c语言 用七个独立式按键控制共阴极的数码管静态显示0~7七个数字
- 51单片机,8位共阴极数码管动态显示12位学号,按键调整走动速度,C语言的
- 单片机数码管共阴极程序
- 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();
}
}
}