数码管led菜单求助
#include <AT89X52.H> //包含头文件
#define shuma P0 //定义P0口为数据口
unsigned char b=0;//,c=0,d=0,e=0; //以下定义P1各口为控制口
sbit LED_4=P1^0;
sbit LED_5=P1^1;
sbit LED_6=P1^2;
sbit LED_7=P1^3;
void delay(unsigned int x); //声明延时函数
void display2(unsigned char d1);//,unsigned char d2,unsigned char d3,unsigned char d4);
//声名数码管显示函数2
/*定义段码=====0-9=====A-G=====*/
unsigned char a[16]={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()
{
while(1)
{
for(;;) //
{
b++;// c++;d++;e++;
if(b>15)
b=0;
delay(30000);
display2(b);//,c,d,e);
}/**/
//在主循环中动态扫描显示,一直循环直到断电为止
//display1(10,11,12,13);
}
}
void delay(unsigned int x)
{
unsigned int i;
//x为延时长度,可以设置
for(i=0;i<x;i++);
}
void display2(unsigned char d1)//,unsigned char d2,unsigned char d3,unsigned char d4)
{
shuma=a[d1]; //选中第五位,发送第一位段码
P1=0xf0;
}
不同的单片机,程序有差别,上面的是四个数码管闪0-f
是啊 还得根据自己的电路来考虑 不过程序大同小异
谢谢
