(4)51单片机入门案列-8个数码管中循环显示数字0-9

通过控制段选信号锁存器和位选信号锁存器,两个for循环点亮8个数码管和显示0-9数字


工具:Keil U3 + STC-SP(v6.86)+BST-v51单片机开发板

晶振:11.0592MHZ


实现代码如下:

#include 

sbit dula=P2^6;     //段选信号的锁存器控制
sbit wela=P2^7;     //位选信号的锁存器控制

unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   //数码管表

unsigned char ch[] = {      //字符表
    0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
};              //数码管各位的码表

void delay(unsigned int i)  //延时函数
{
    unsigned int m,n;
    for(m=i;m>0;m--)
        for(n=90;n>0;n--);
}

void main()
{

    unsigned char i,j;
    while(1)
    {
        for(i=0;i<9;i++)    //8个数码管循环
        {
            for (j = 0; j < 10; i++)
            P0=table[i];    //选择数码管    
            wela=1;         //位选开启
            wela=0;         //位选关闭

            P0=ch[i];       //选择数字
            dula=1;         //段选开启
            dula=0;         //段选关闭
            if (i<9)        //点亮最后一个数码管到第一个数码管之间无间隔
            delay(150);
        }
    }
}

你可能感兴趣的:(51单片机入门学习案列)