基于51单片机——数码管单个数字循环显示(中断实现)

本文介绍了如何使用51单片机通过中断方式实现数码管从0到9的循环显示,详细讲解了硬件电路图的连接及程序设计思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计要求:

控制一个数码管循环显示0~9

硬件电路图连接

程序

#include<reg52.h>

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                              0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴段码表

unsigned char count,timer;

void t0_init()
{
    TMOD = 0x01;    //软件启动定时器T0,方式1 0000 0001
    IE = 0x82;      //EA=1,ET0=1,开总中断,开启定时器T0中断 1000 0001
    TR0 = 1;        //使能定时器T0中断
    TH0 = 0x3c;
    TL0 = 0xb0;     //单次定时初值为50ms
}




void main()
{
    t0_init();
    count = 0;
    timer = 0;
    while(1);
}


void t0_func() interrupt 1
{
    TH0 = 0x3c;     //预置初值
    TL0 = 0xb0;
    if(timer < 20)  //50ms*20=1s
    {
        timer = timer +1;
    }
    else if(timer == 20)    //时间达到1s
    {
        timer = 0;  //将定时计数清零
        if(count == 10)     //如果计数到达9,则让他转到0
        {
            P0 = ~table[0];
            count = 1;
        }
        else    //计数值还未到达9
        {
            P0 = ~table[count];
            count++;
        }
    }
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机学习之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值