51单片机单个数码管0-9循环秒计数

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机单个数码管0-9循环秒计数相关的知识,希望对你有一定的参考价值。

51单片机单位数码管0-9循环秒计数


  • 51单片机:AT89C5274HC595、单位共阴数码管、74HC245、`
  • Proteus仿真

实例代码

/*********51单片机单位数码管0-9循环秒计数***********/
#include <reg51.H>
#define uint unsigned int
#define uchar unsigned char
sbit HC595_DIO   = P1^0;
sbit HC595_SCLK  = P1^1;
sbit HC595_RCLK  = P1^2;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,//共阴数码管段码0~f
                                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code dis_buf[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共阴数码管位码

/******************1ms延时子程序(12MHz)*******************/
void delayms(uint k)
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=125;j>0;j--);
}
/**************** 向HC595发送一个字节函数 ******************/
void Send_595(uchar dat)
{               
        uchar i;
        for(i=0;i<8;i++)
        {
                HC595_DIO=(dat&0x80)>>7;//由高位到低位赋值数据输出端
                HC595_SCLK = 1;        //移位时钟
                HC595_SCLK = 0;
                dat <<= 1;                        //dat左移一位
        }
}
/**************** 数码管显示函数 ******************/
void DisplayScan()
{       
        static uchar i=0;
        Send_595(dis_buf[i]);//向HC595发送位码(共阴数码管)
        Send_595(table[i]);        //向HC595发送段码(共阴数码管)
//        Send_595(~dis_buf[i]);//向HC595发送位码(共阳数码管)
//        Send_595(~table[i]);        //向HC595发送段码(共阳数码管)
        HC595_RCLK = 1;                //锁存输出数据
        HC595_RCLK = 0;
        i++;
        i%=10;
}

void main()
{
        HC595_SCLK  = 0;        //初始化移位时钟端
        HC595_RCLK  = 0;        //初始化锁存输出端
        while(1)
        {
                DisplayScan();        //数码管显示函数
                delayms(1000);                //延时1ms
        }
}

相关代码解释

  • i%=10;看到这个有点反应懵,

i%=10 等于 if(i>=10)i=0; 其作用就是归零。

以上是关于51单片机单个数码管0-9循环秒计数的主要内容,如果未能解决你的问题,请参考以下文章

Proteus仿真CD4026秒脉冲0-9循环计数

51单片机定时器累加计数(0000-9999)+4位数码管(循环显示)+Proteus仿真

51单片机定时器累加计数+2位数码管(循环显示00-99)+Proteus仿真

51单片机定时器计时1秒数码管静态循环显示0到F+Proteus仿真

80c51单片机驱动LED显示。。。急急急

51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真