#include <REGX52.H> #include "shuma.h" #include "Delay.h" #include "Time0.h" #include "display.h" unsigned int a,b,c,d,e,f; void main() { a=1;b=2;c=5;d=9;e=5;f=9; Timer0Init(); while(1) { shuma(1,a); //在数码管的第1位置显示a shuma(2,b); //在数码管的第2位置显示b shuma(3,10); //在数码管的第3位置显示空白 shuma(4,c); shuma(5,d); shuma(6,10); shuma(7,e); shuma(8,f); } } void Timer0_Routine() interrupt 1 { static unsigned int count; TL0 = 0x18; //赋值 TH0 = 0xFC; //赋值 count++; if(count>=50) { count=0; f--; } }怎么改才实现显示时、分、秒,并且随时间跳变。
时间: 2024-04-19 13:27:32 浏览: 127
要实现显示时、分、秒,并且随时间跳变,你需要做以下修改:
1. 在头文件 "shuma.h" 中添加对 "display.h" 的引用,以便使用显示函数。
2. 在 "display.h" 中定义时、分、秒的变量,并初始化为初始值。
3. 在 Timer0_Routine() 中,在 count 达到一定值时,更新时、分、秒的值,并更新数码管显示。
修改后的代码如下所示:
#include <REGX52.H>
#include "shuma.h"
#include "Delay.h"
#include "Time0.h"
#include "display.h"
unsigned int a,b,c,d,e,f;
unsigned int hour = 0; // 时
unsigned int minute = 0; // 分
unsigned int second = 0; // 秒
void main()
{
a = 1;
b = 2;
c = 5;
d = 9;
e = 5;
f = 9;
Timer0Init();
while(1)
{
shuma(1, hour / 10); // 在数码管的第1位置显示时的十位数
shuma(2, hour % 10); // 在数码管的第2位置显示时的个位数
shuma(3, 10); // 在数码管的第3位置显示空白
shuma(4, minute / 10); // 在数码管的第4位置显示分的十位数
shuma(5, minute % 10); // 在数码管的第5位置显示分的个位数
shuma(6, 10); // 在数码管的第6位置显示空白
shuma(7, second / 10); // 在数码管的第7位置显示秒的十位数
shuma(8, second % 10); // 在数码管的第8位置显示秒的个位数
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int count;
TL0 = 0x18; // 赋值
TH0 = 0xFC; // 赋值
count++;
if(count >= 50)
{
count = 0;
second++;
if(second >= 60)
{
second = 0;
minute++;
if(minute >= 60)
{
minute = 0;
hour++;
if(hour >= 24)
{
hour = 0;
}
}
}
}
}
阅读全文