微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 求MSC12XX驱动4位共阳数码管程序,

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

时间:10-02 整理:3721RD 点击:

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函数调用而已略,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top