求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 ++;
}
}
闪的厉害说明刷新频率较低,不够亮有可能是你的电路驱动能力有限,不知道你是使用的IO口直接驱动还是通过控制三极管来驱动
另外没看到你的main函数啊
IO直接驱动,主要原因为刷新频率低,如何改正,MAIN函数调用而已略,