This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求MSC12XX驱动4位共阳数码管程序,



sbit led1=P3^5;  第一位数码
sbit led2=P3^4;第二位数码
sbit led3=P3^3;第三位数码
sbit led4=P3^2;第四位数码

P1 对应A,B,C,D,E,F,G ,H

我搞的程序数码管可以点亮,但闪的厉害,又不够亮

void led4_init(void) {
   CKCON = 0x00; // Timers 0,1 at fclk/12
  PCON = 0x30; // SMOD = 0
  TMOD = 0x20; // Timer 1 Auto reload; Timer 0 13-bit
  TCON = 0x50; // TR1 and TR0 are 1
  TH1 = 256 - 22118400/32/12/BAUD; // Timer 1 reload value
  SCON0 = 0x52; // Asynchronous, TI_0=1, RI_0=0
  IE =0x82;
  SBUF0=SBUF0;

}

void Timer0Int(void) interrupt 1 using 1
{
  unsigned char temp;
    static unsigned char i;

 
 led1=0;
    led2=0;
    led3=0;
    led4=0;
 
 if (led4_buf[i] == 0x00) {       /*判断空值       */
  temp = 0xFF;
  }
 else {
  temp = (led4_buf[i] - '0');      /*ASCII码转换      */
  temp = disp[temp];        /*取出码表       */
  }

 if (led4_buf[4] & (1 << i)) {      /*小数点处理      */
  temp &= 0x7F;
  }
 
 P1 = temp;          /*加载显示值      */

  if (i == 0) {          /*打开对应位      */
   led1=1;
   }
  if (i == 1) {
   led2=1;
   }
    if (i == 2) {
   led3=1;
   }
  if (i == 3) {
   led4=1;
   }
  
  if (i > 3) {          /*显示位置处理      */
   i = 0;
   }
  else {
   i ++;
   }
 
}