本文目錄一覽:
- 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
;01234
6DH,7DH,07H,7FH,6fh
;56789
以下為簡易8路搶答器的例程:
#includereg51.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()//延時約400毫秒
{
uchar
i,j;
for(i=0;i200;i++)
for(j=0;j250;j++);
}
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();
}
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/291880.html