基于89c52的16*16点阵电子时钟的程序
时间: 2023-07-24 07:31:23 浏览: 108
以下是基于89C52的16*16点阵电子时钟的程序:
```c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define DATAPORT P0
sbit LATCH1 = P2^0; //锁存1
sbit LATCH2 = P2^1; //锁存2
sbit LATCH3 = P2^2; //锁存3
sbit LATCH4 = P2^3; //锁存4
uchar code table[] = { //0~9的字形表
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67
};
void delay(uint i) //延时函数
{
while (i--);
}
void writeData(uchar dat) //写数据到点阵
{
uchar i;
for (i=0;i<8;i++)
{
DATAPORT = _crol_(dat,1); //循环左移1位,将最高位送到进位标志位,再将进位标志位送到最低位
dat = dat<<1; //将数据左移1位,把最高位清零
P2 = P2 & 0xf0; //锁存控制线先置低电平
P2 = P2 | i; //选择锁存器
DATAPORT = DATAPORT & 0xfe; //数据线先置低电平
P2 = P2 & 0x0f; //锁存控制线置高电平,锁存数据
P2 = P2 | 0xf0; //锁存控制线置低电平,准备显示下一个数据
}
}
void main()
{
uchar hour, minute, second;
uint i;
TMOD = 0x01; //设定定时器0为模式1
TH0 = 0x3c; //设定定时器0初值
TL0 = 0xb0;
ET0 = 1; //打开定时器0中断
EA = 1; //打开总中断开关
TR0 = 1; //启动定时器0
while (1)
{
hour = TH0; //读取时、分、秒
minute = TL0;
second = P1;
writeData(table[hour/10]); //写入数据到点阵
LATCH1 = 1;
LATCH1 = 0;
writeData(table[hour%10]);
LATCH2 = 1;
LATCH2 = 0;
writeData(0x40); //冒号的ASCII码为0x40
LATCH3 = 1;
LATCH3 = 0;
writeData(table[minute/10]);
LATCH4 = 1;
LATCH4 = 0;
writeData(table[minute%10]);
LATCH1 = 1;
LATCH1 = 0;
delay(10000); //延时10ms
}
}
void timer0() interrupt 1 //定时器0中断服务程序
{
TH0 = 0x3c; //重新设定定时器0初值
TL0 = 0xb0;
P1++; //秒数加1
if (P1==60) //如果秒数为60,分钟数加1
{
P1 = 0;
TL0++; //定时器0计数器加1
if (TL0==60) //如果分钟数为60,小时数加1
{
TL0 = 0;
TH0++; //定时器0计数器加1
}
}
}
```
该程序实现了一个简单的16*16点阵电子时钟,使用89C52单片机控制LED点阵显示当前的时间。程序中使用定时器0来计时,并使用P1口来记录秒数。程序中还定义了一个字形表,用于将数字转换为在点阵上显示的字形。在主循环中,程序将当前的小时数和分钟数分别显示在第1和第2个点阵上,并在中间显示一个冒号,然后将当前的分钟数的十位数和个位数分别显示在第3和第4个点阵上。程序使用锁存器来控制点阵的显示,通过循环写入每个点阵的数据来实现整个时钟的显示。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)