利用51单片机定时器设计一个数字时钟,用数码管显示时间,格式为“16-59-54”(时-分-秒),中间用短线隔开。请给出keil4c语言代码
时间: 2024-05-04 16:15:38 浏览: 102
以下是利用51单片机定时器设计一个数字时钟的Keil4C语言代码:
```
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit DIO = P1^0; // 数码管数据线
sbit CLK = P1^1; // 数码管时钟线
uchar code table[] = { // 数码管显示表
0x3f, // 0
0x06, // 1
0x5b, // 2
0x4f, // 3
0x66, // 4
0x6d, // 5
0x7d, // 6
0x07, // 7
0x7f, // 8
0x6f // 9
};
uchar hour = 16; // 初始时间为16时59分54秒
uchar minute = 59;
uchar second = 54;
void delay(uint t) { // 延时函数,t为延时时间
uint i, j;
for(i = t; i > 0; i--) {
for(j = 110; j > 0; j--);
}
}
void display(uchar h, uchar m, uchar s) { // 显示函数,h为小时数,m为分钟数,s为秒数
uchar a, b, c;
a = h / 10; // 分离出十位数
b = h % 10; // 分离出个位数
c = 0x40; // 显示短线
DIO = 1; // 拉高数据线
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = 0; // 拉低数据线
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = table[a]; // 发送十位数到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = table[b]; // 发送个位数到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = c; // 发送短线到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
a = m / 10; // 分离出十位数
b = m % 10; // 分离出个位数
DIO = table[a]; // 发送十位数到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = table[b]; // 发送个位数到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = c; // 发送短线到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
a = s / 10; // 分离出十位数
b = s % 10; // 分离出个位数
DIO = table[a]; // 发送十位数到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = table[b]; // 发送个位数到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
DIO = c; // 发送短线到数码管
CLK = 0; // 拉低时钟线
CLK = 1; // 拉高时钟线
}
void timer() interrupt 1 { // 定时器中断函数
TH0 = (65536 - 50000) / 256; // 重新设置定时器初值
TL0 = (65536 - 50000) % 256;
second++; // 秒数加1
if(second == 60) { // 如果秒数达到60,则分钟数加1,秒数归零
second = 0;
minute++;
if(minute == 60) { // 如果分钟数达到60,则小时数加1,分钟数归零
minute = 0;
hour++;
if(hour == 24) { // 如果小时数达到24,则小时数归零
hour = 0;
}
}
}
}
void main() {
TMOD = 0x01; // 设置定时器0为模式1
TH0 = (65536 - 50000) / 256; // 初始定时器初值
TL0 = (65536 - 50000) % 256;
ET0 = 1; // 允许定时器0中断
EA = 1; // 允许总中断
TR0 = 1; // 启动定时器0
while(1) {
display(hour, minute, second); // 显示时间
delay(10); // 延时10ms
}
}
```
阅读全文