单片机时钟程序,
发布网友
发布时间:2023-05-26 02:59
我来回答
共2个回答
热心网友
时间:2024-11-25 01:06
给个类似的你自己改改,如果你是四位数,只要分别取出个位十位百位千位送出来显示,动态时间自己改,也就是对应的分和秒,此时要把NUM设成UINT ,不能用UCHAR
取千位,NUM/1000
取百位 (NUM%1000)/100
取十位 (NUM%100)/10
取个位 NUM%10
自己改改
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit wei1= P1^0;
sbit wei2=P1^1;
sbit wei3=P1^2;
sbit wei4=P1^3;
//sbit wei5=P1^4;
uchar code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar num=0;
uchar shi=0;
uchar fen=0;
uchar miao=0;
void delay_ms(uint i)
{
uint j;
for(;i>0;i--)
{
for(j=0;j<125;j++);
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
void main()
{
P0=seg[0];
wei1=1;
wei2=1;
wei3=1;
wei4=1;
init();
while(1)
{
if(num==10)
{
num=0;
miao++ ;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
shi++;
fen=0;
}
}
}
P0=seg[miao%10];
wei1=0;
delay_ms(5);
wei1=1;
P0=seg[miao/10];
wei2=0;
delay_ms(5);
wei2=1;
P0=seg[fen/10];
wei3=0;
delay_ms(5);
wei3=1;
P0=seg[fen%10];
wei4=0;
delay_ms(5);
wei4=1;
}
}
热心网友
时间:2024-11-25 01:06
你程序的意思是用定时器0和1分别来一个控制LED的动态扫描和时间的计算?那个时间50MS计算一次我就不懂了