求以下代码具体意思
发布网友
发布时间:2022-04-22 00:36
我来回答
共1个回答
热心网友
时间:2023-09-21 17:46
程序代码不全,交通灯测试程序?:针对代码详细解释如下:
place控制数码管位选,低电平有效。至于是最高位,还是最低位,要看实际接的电路
#include
#define value P2 //控制数码管显示的段码端口
#define place P0 //控制数码管位选
unsigned char d[4];
//共阴数码管段码
usigned char Num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit addrC=P1^0;//
sbit addrB=P1^1;//
sbit addrA=P1^2;//
sbit clear=P1^3;//清空
sbit ledG=P1^4;//控制点亮熄灭LED灯绿灯
sbit ledY=P1^5;//控制点亮熄灭LED灯黄灯
sbit ledR=P1^6;//控制点亮熄灭LED灯红灯
unsigned char count;
unsigned char gears;
unsigned int tN;
unsigned int fCnt;
unsigned long regCnt;
unsigned int pCnt;
//不精确延时函数Delay
void Delay( unsigned int DelayTime)
{
while(DelayTime--);
}
//数码管显示程序
void display()
{
if(gears==1) //gears等于1时
{
d[3]=0; //用于数字最高位显示0
d[2]=pCnt/100; //取出pCnt的百位,假如d[2]=1,用于后面显示Num[1],
d[1]=(pCnt%100)/10; //取出pCnt的十位,假如d[1]=2,用于后面显示Num[2],
d[0]=pCnt% 10; //取出pCnt的个位,假如d[0]=3,用于后面显示Num[3],
place=0xfe;value=Num[d[3]];Delay(300);//place控制最高位数码管显示,显示值为Num[0],去查找Num[0]对应的数码管段码意思是数码管显示0
place=0xfd;value=Num[d[2]];Delay(300);//place控制最高位后面那位数码管显示,显示值为Num[1]意思是数码管显示1
place=0xfb;value=Num[d[1]];Delay(300);//place控制十位数码管显示,显示值为Num[2]意思是数码管显示2
place=0xf7;value=Num[d[0]];Delay(300);//place控制个位数码管显示,显示值为Num[3]意思是数码管显示3
ledG=1; //绿灯熄灭
ledY=1; //黄灯熄灭
ledR=0; //红灯亮(低电平点亮LED)
}
else if(gears==2) //gears等于2时
{
d[3]=pCnt/1000; //取出pCnt的千位
d[2]=(pCnt%1000 )/100; //取出pCnt的百位
d[1]=(pCnt%100)/10; //取出pCnt的十位
d[0]=pCnt%10; //取出pCnt的个位
//控制数码管显示同gears等于1时,不同是黄灯亮,有显示小数点例如102.3
place=0xfe;value=Num[d[3]];Delay(300);
place=0xfd;value=Num[d[2]];Delay(300);
place=0xfb;value=Num[d[1]]+0x80;Delay(300);//0x80是显示小数点
place=0xf7;value=Num[d[0]];Delay(300);
ledG=1;
ledY=0;
ledR=1;
}
else if(gears==3)
{
d[3]=pCnt/1000;
d[2]=(pCnt%1000)/100;
d[1]=(pCnt%100)/10;
d[0]=pCnt% 10;
place=0xfe;value=Num[d[3]]+0x80;Delay(300);
place=0xfd;value=Num[d[2]];Delay(300);
place=0xfb;value=Num[d[1]];Delay(300);
place=0xf7;value=Num[d[0]];Delay(300);
ledG=0;
ledY=1;
ledR=1;
}
else if(gears==4) //数码管全部显示0
{
d[3]=0;
d[2]=0;
d[1]=0;
d[0]=0;
place=0xfe;value=Num[d[3]];Delay(300);
place=0xfd;value=Num[d[2]];Delay(300);
place=0xfb;value=Num[d[1]];Delay(300);
place=0xf7;value=Num[d[0]];Delay(300);
ledG=0;