数码管动态显示123456

先上代码:

#include <reg52.h>
#define uchar unsigned char  
#define uint unsigned int
sbit SegSel=P2^6;                              //段选
sbit BitSel=P2^7;                              //位选
unsigned char code table[]={                   
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; //数码管编码0123456789
unsigned char code wei[]={                   
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};                //数码管位123456

uint D[6]={1,2,3,4,5,6};                       //数码管数字

//函数声明
void delay_ms(uint x);                         //延时函数
void show();                                   //数码管动态显示函数

//主函数
void main()
{
    while(1)
    {
        show();
    }
}


void delay_ms(uint x)
{
    uint i,j;
    for(i=x;i>0;i--)
    for(j=240;j>0;j--)
    ;
}
void show()
{
    uint i;
    for(i=0;i<6;i++)
    {
        BitSel=1;P0=wei[i];BitSel=0;SegSel=1;P0=table[D[i]];SegSel=0;delay_ms(1);
    }
}

解释:
数码管的动态显示,其实就是一个快速的静态显示的过程。只要显示时间适当,由于人眼的暂时停留功能,我们会以为它停留在那里不动。

0

2 thoughts on “数码管动态显示123456

Leave a Reply

Your email address will not be published.