这是一个数码管动态显示的程序 红 {MOD}的两句为什么不能调换顺序呢,已调换就会报错。求解 谢谢
#include<reg51.h>
sbit L138A=P2^2;
sbit L138B=P2^3;
sbit L138C=P2^4;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
char delayNUM1 ;//the number which will be displayed
void delay(unsigned char x);
main()
{
unsigned int i;
unsigned int dispNUM; //延时用的一个变量数
unsigned int ledout[10]; //中间数组,起一个传接的作用将段选传到P0口 ????
delayNUM1=0; //要显示的数字 ????
while(1)
{
if(++delayNUM1>=50)
{ //延时,没50个扫描周期要显示的数字加1
delayNUM1=0;
++dispNUM;
}
/**************段选******************/
ledout[0]=table[dispNUM%10000/1000]; //可以试试看过dispNUM这位是5的话,table5也正好是5哦。
ledout[1]=table[dispNUM%1000/100];
ledout[2]=table[dispNUM%100/10];
ledout[3]=table[dispNUM%10];
ledout[4]=table[dispNUM%10000/1000];
ledout[5]=table[dispNUM%1000/100];
ledout[6]=table[dispNUM%100/10];
ledout[7]=table[dispNUM%10];
for(i=0;i<8;i++)
{
P0=ledout; //输出段选
switch(i)
{
case 0:L138A=0 ,L138B=0 , L138C=0 ;break;
case 1:L138A=1 ,L138B=0 , L138C=0 ;break;
case 2:L138A=0 ,L138B=1 , L138C=0 ;break;
case 3:L138A=1 ,L138B=1 , L138C=0 ;break;
case 4:L138A=0 ,L138B=0 , L138C=1 ;break;
case 5:L138A=1 ,L138B=0 , L138C=1 ;break;
case 6:L138A=0 ,L138B=1 , L138C=1 ;break;
case 7:L138A=1 ,L138B=1 , L138C=1 ;break;
}
delay(200);
}
}
}
void delay(unsigned char x)
{
char j;
for(x; x > 0; x--)
for(j = 200; j > 0; j--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>