微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 计数器计数,并在动态LED显示(去掉前导0)

计数器计数,并在动态LED显示(去掉前导0)

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

#include<reg51.h>


typedef unsigned int uint;


typedef unsigned char uchar;


typedef unsigned long int lint;


sbit p0=P0^0;


sbit p1=P0^1;


sbit p2=P0^2;


sbit p3=P0^3;


sbit p4=P0^4;


sbit p5=P0^5;


sbit p6=P0^6;


sbit p7=P0^7;//P0口控制位选


uchar code led[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数组字模 0 到 9


lint table=0,n;//总数


uchar len;//table的长度


uchar t1,t2,t3,t4,t5,t6,t7,t8;


void delay()//延时函数


{


    uchar i,j;


    TR0=0;


    for(i=30;i>0;i--)


        for(j=50;j>0;j--);


    TR0=1;


}


void reflush()//动态LED的刷新


{


    uchar len=0,i=0;


    n=table;


    while(n)//判断长度


    {


        len++;n/=10;


    }


    t1=table/1;


    t2=table/10;


    t3=table/100;


    t4=table/1000;


    t5=table/10000;


    t6=table/100000;   


    t7=table/1000000;   


    t8=table/10000000;//取各个位的数字


    for(i=1;i<=8;i++,P0=0xff)


    {


        if(i>len)//当长度大于实际长度时,退出


            break;


        switch(i)


        {


            case 1: p0=0;P2=led[t1];delay();break;//P2口控制断选


            case 2: p1=0;P2=led[t2];delay();break;


            case 3: p2=0;P2=led[t3];delay();break;


            case 4: p3=0;P2=led[t4];delay();break;


            case 5: p4=0;P2=led[t5];delay();break;


            case 6: p5=0;P2=led[t6];delay();break;


            case 7: p6=0;P2=led[t7];delay();break;


            case 8: p7=0;P2=led[t8];delay();break;


        }


    }   


     


}


void main()


{


    uint count;


    TMOD=0x01;


    TH0=0xb8;


    TL0=0x00;


    count =0;


    TR0=1;//计数器


    while(1)


    {


        if(table>99999999)


            table=0;


        if(TF0==1)


        {


            TH0=0xb8;


            TL0=0x00;


            TF0=0;         


            reflush();


            count++;


        }


        if(count==4)//每四次table加一次


        {      


            table++;   


            count=0;


        }


    }


}







实际效果图


这个问题之前还有人在问呢,谢谢分享

呵呵,菜鸟一枚。我也是刚学单片机。以前有一点C语言基础....程序写的不是很完美,在算法,在时间的控制上...写出后就急于把代码给贴出来了,望多点评。


挺好的  谢谢小编分享

嗯  继续努力......  先国庆玩一把在说

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

网站地图

Top