|
我用查理復用寫的數碼管顯示,結果亮度不夠,請問如果用位選,段選寫法怎么寫?腳位太多了
//------------------------------------------掃描數碼管-------------------------------------//
void LED_SCAN(void)
{
SEG++;
if(SEG>15){SEG=1;}
PIN1=PIN2=PIN3=PIN4=PIN5=PIN6=PIN7=PIN8=PIN9=PIN10=0;
//pin1=pa2,pin2=pa3,pin3=pb2,pin4=pb1,pin5=pb0,pin6=pb7,pin7=pb6,pin8=pb5,pin9=pb4,pin10=pa0
//IOSTA = 0XFD;1011 1101 IOSTB = 0XFF;1101 11011
//if(SEG==0){IOSTA=0XFD;IOSTB=0XFF;PIN10=1;PIN9=1;}
//PIN1=PB1;PIN2=PB0;PIN3=PA4;PIN4=PA3;PIN5=PA2;PIN6=PA0;PIN7=PA1;PIN8=PA7;PIN9=PA6;PIN10=PB5
if(SEG==1){IOSTA=0XBF;IOSTB=0XFD;if(data[0]&0x01)PIN1=1,PIN10=1;else PIN9=0;PIN1=0;}
if(SEG==2){IOSTA=0XBF;IOSTB=0XFE;if(data[0]&0x02)PIN2=1,PIN10=1;else PIN9=0;PIN2=0;}
if(SEG==3){IOSTA=0XAF;IOSTB=0XFF;if(data[0]&0x04)PIN3=1,PIN10=1;else PIN9=0;PIN3=0;}
if(SEG==4){IOSTA=0XB7;IOSTB=0XFF;if(data[0]&0x08)PIN4=1,PIN10=1;else PIN9=0;PIN4=0;}
if(SEG==5){IOSTA=0XBB;IOSTB=0XFF;if(data[0]&0x10)PIN5=1,PIN10=1;else PIN9=0;PIN5=0;}
if(SEG==6){IOSTA=0XBE;IOSTB=0XFF;if(data[0]&0x20)PIN6=1,PIN10=1;else PIN9=0;PIN6=0;}
if(SEG==7){IOSTA=0XBD;IOSTB=0XFF;if(data[0]&0x40)PIN7=1,PIN10=1;else PIN9=0;PIN7=0;}
if(SEG==8){IOSTA=0XFF;IOSTB=0XDD;if(data[1]&0x01)PIN1=1,PIN9=1;else PIN10=0;PIN1=0;}
if(SEG==9){IOSTA=0XFF;IOSTB=0XDE;if(data[1]&0x02)PIN2=1,PIN9=1;else PIN10=0;PIN2=0;}
if(SEG==10){IOSTA=0XEF;IOSTB=0XDF;if(data[1]&0x04)PIN3=1,PIN9=1;else PIN10=0;PIN3=0;}
if(SEG==11){IOSTA=0XF7;IOSTB=0XDF;if(data[1]&0x08)PIN4=1,PIN9=1;else PIN10=0;PIN4=0;}
if(SEG==12){IOSTA=0XFB;IOSTB=0xDF;if(data[1]&0x10)PIN5=1,PIN9=1;else PIN10=0;PIN5=0;}
if(SEG==13){IOSTA=0XFE;IOSTB=0xDF;if(data[1]&0x20)PIN6=1,PIN9=1;else PIN10=0;PIN6=0;}
if(SEG==14){IOSTA=0XFD;IOSTB=0xDF;if(data[1]&0x40)PIN7=1,PIN9=1;else PIN10=0;PIN7=0;}
if(SEG==15){IOSTA=0X7F;IOSTB=0xDF;if(data[1]&0x80)PIN8=1,PIN9=1;else PIN10=0;PIN8=0;}
}
|
|