专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

HOLTEK单片机-数码管显示

作者:佚名   来源:本站原创   点击数:  更新时间:2012年01月02日   【字体:

功能说明:

4个共阳极七段显示器每次显示4个数字,从0-F共有16个字,分成3-0,7-4,B-8,F-C四组数字,每次显示一组,依次显示,循环不止。

电路说明:

        电路图如下图所示:

 

        本实验所使用的共阳极七段显示器是由4个七段显示器做在一起,所以4个七段显示器共享一组七段控制线,而每一个七段显示器都有自己的共阳极脚,故这组共阳极七段显示器共有12只引脚。

        晶体管Q1-Q4  作为电子开关,使用PNP型三极管,当晶体管的基极为低电位时,发射极与集电极导通,但是会有0.2V的压降。

        由于每一个晶体管的发射极都可接上电源供给所控制的共阳极七段显示器,故在七段显示器的每一段LED上必须串接一个电阻,以防止LED被烧毁。因为发射极可以直接接VCC而无须再串接电阻,但需注意基极必须接一个数千欧的电阻,这样晶体管才会正常工作。

     完整的程序文件下载地址:http://www.51hei.com/f/htdef.rar

程序:

#include "HT48F50E.H"

const unsigned char number[16]={

0x81,0xcf,0x92,0x86,

0xcc,0xa4,0xa0,0x8f,

0x80,0x84,0x88,0xe0,

0xb1,0xc2,0xb0,0xb8};             //数码管显示0-F

void delayms(unsigned int dly)

{

    unsigned int i;

    for(i=0;i<dly;i++)

    {

        _delay(984);

    }  

}                                      //延时函数1MS

void main()

{ 

    unsigned char j;

    _pac=0x00;

    _pbc=0x00;                           //PA,PC输出选择

    while(1)                            //大循环

    {      

        for(j=0;j<50;j++)                //循环显示

        {

            _pb=0xfe;                 //选通第一位数码管

            _pa=number[0];             //显示0

            delayms(5);                  //延时5MS(下同)

            _pb=0xfd;

            _pa=number[1];

            delayms(5);

            _pb=0xfb;

            _pa=number[2];

            delayms(5);

            _pb=0xf7;

        _  pa=number[3];

            delayms(5);

        }

        for(j=0;j<50;j++)

        {

            _pb=0xfe;

            _pa=number[4];

            delayms(5);

            _pb=0xfd;

            _pa=number[5];

            delayms(5);

            _pb=0xfb;

            _pa=number[6];

            delayms(5);

            _pb=0xf7;

            _pa=number[7];

            delayms(5);

        }

        for(j=0;j<50;j++)

        {

            _pb=0xfe;

            _pa=number[8];

            delayms(5);

            _pb=0xfd;

            _pa=number[9];

            delayms(5);

            _pb=0xfb;

            _pa=number[10];

            delayms(5);

            _pb=0xf7;

            _pa=number[11];

            delayms(5);

        }  

        for(j=0;j<50;j++)

        {

            _pb=0xfe;

            _pa=number[12];

            delayms(5);

            _pb=0xfd;

            _pa=number[13];

            delayms(5);

            _pb=0xfb;

            _pa=number[14];

            delayms(5);

            _pb=0xf7;

            _pa=number[15];

            delayms(5);

        }

    }

} 
关闭窗口

相关文章