用Keil4写一个基于89c51单片机的电子时钟6位LED数码管显示
时间: 2024-05-03 09:18:51 浏览: 122
好的,下面是基于89c51单片机的电子时钟6位LED数码管显示的代码。请注意,由于Keil4是Windows环境下的IDE,所以以下代码只能在Windows环境下使用。
```
#include <reg51.h>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, // 0-9
0x77,0x7c,0x39,0x5e,0x79,0x71, // A-F
0x80}; // 空白
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void main()
{
unsigned char second=0,minute=0,hour=0; // 分别保存秒、分、时
unsigned char i;
TMOD=0x01; // 定时器0工作在模式1(16位定时器模式)
TH0=0xfc; // 定时器0初始值,1ms
TL0=0x66;
TR0=1; // 启动定时器0
ET0=1; // 允许定时器0中断
EA=1; // 开启总中断
while(1)
{
if(second==60) // 如果秒钟达到60
{
second=0;
minute++; // 分钟加1
if(minute==60) // 如果分钟达到60
{
minute=0;
hour++; // 小时加1
if(hour==24) // 如果小时达到24
{
hour=0; // 小时清零
}
}
}
// 显示小时
LSA=0;LSB=0;LSC=0; // 共阴数码管,所以要拉低位选线
P0=table[hour/10]; // 显示十位数字
delay(100);
LSA=1;LSB=0;LSC=0;
P0=table[hour%10]; // 显示个位数字
delay(100);
// 显示分钟
LSA=0;LSB=1;LSC=0;
P0=table[minute/10];
delay(100);
LSA=1;LSB=1;LSC=0;
P0=table[minute%10];
delay(100);
// 显示秒钟
LSA=0;LSB=0;LSC=1;
P0=table[second/10];
delay(100);
LSA=1;LSB=0;LSC=1;
P0=table[second%10];
delay(100);
for(i=0;i<20;i++) // 延时约200ms
{
delay(10000);
}
}
}
void timer0_isr() interrupt 1 using 1 // 定时器0中断服务函数
{
TH0=0xfc; // 定时器0初始值,1ms
TL0=0x66;
second++; // 秒钟加1
}
```
请将上述代码复制到Keil4中,然后编译并下载到89c51单片机中,即可实现电子时钟6位LED数码管显示。
阅读全文