基于单片机proteus系统的数码管时钟电路实现

2019-07-18 11:22发布

主要是带C语言程序,数码管有8个的,谢谢大神们,程序不要错的啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
DDL123
2019-07-18 15:12
/*        名称:定时器控制数码管动态显示
        说明:8个数码管上分两组动态显示年月日与时分秒,本例的  位显示延时用定时器实现。
*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//段码,最后一位是“-”的段码
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
//待显示的数据:09-12-25与23-59-58(分两组显示)
uchar code Table_of_Digits[][8]={{0,9,10,1,2,10,2,5},{2,3,10,5,9,10,5,8}};
uchar i,j=0;
uint t=0;
//主程序
void main()
{
        P3=0x80;                                //位码初值
        TMOD=0x00;                                //计数器T0方式0
        TH0=(8192-4000)/32;        //4ms定时
        TL0=(8192-4000)%32;
        IE=0x82;
        TR0=1;                                        //启动T0
        while(1);
}
//T0中断函数控制数码管刷新显示
void DSY_Show() interrupt 1
{
        TH0=(8192-4000)/32;                //恢复初值
        TL0=(8192-4000)%32;
        P0=0xff;                                //输出位码和段码
        P0=DSY_CODE[Table_of_Digits[j]];
        P3=_crol_(P3,1);               
        j=(j+1)%8;                                //数组第i行的下一字节索引
        if(++t!=350) return;        //保持刷新一段时间
        t=0;
        i=(i+1)%2;                                 //数组行i=0时显示年月日,i=1时显示时分秒
} 时钟.png

一周热门 更多>