用C语言怎么编写7段LED的显示程序

2024-12-21 21:41:34
推荐回答(3个)
回答1:

C语言写LED数码管显示程序与汇编是一致的,将显示的基本内容定义在一个数组中就可以了,比如:

#include

#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;i<200;i++)

for(j=0;j<250;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();

}

}

}

回答2:

/*头文件*/
#include
#define uint unsigned int
#define uchar unsigned char

#define sled_dm_port P0 /*定义数码管段码的控制脚*/
sbit sled_bit0_port = P2^1; /*定义数码管位码的控制脚*/
/*定义数码管显示字符跟数字的对应数组关系*/
uchar code mun_to_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */

void main()
{
sled_dm_port = mun_to_char[8]; /*送数字8到段码端口*/
sled_bit0_port = 0; /*点亮数码管*/
}

回答3:

首先要知道你的LED共阳极还是共阴极的接法