51单片机写一个时钟代码
时间: 2024-01-24 19:04:13 浏览: 43
好的,以下是一个简单的51单片机时钟代码:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // 数码管显示0-9
void delayms(uint x) // 延时函数
{
uint i, j;
for (i = x; i > 0; i--)
for (j = 112; j > 0; j--);
}
void main()
{
uchar i, j, k, l, num; // i,j,k,l为四个数码管显示的数值,num为计数器
while (1)
{
for (num = 0; num < 500; num++) // 循环500次
{
for (i = 0; i < 10; i++) // 第一位数码管
{
P2 = 0xfe; // 打开第一位数码管
P0 = table[i]; // 显示i对应的数字
delayms(5); // 延时5ms
}
for (j = 0; j < 10; j++) // 第二位数码管
{
P2 = 0xfd; // 打开第二位数码管
P0 = table[j]; // 显示j对应的数字
delayms(5); // 延时5ms
}
for (k = 0; k < 10; k++) // 第三位数码管
{
P2 = 0xfb; // 打开第三位数码管
P0 = table[k]; // 显示k对应的数字
delayms(5); // 延时5ms
}
for (l = 0; l < 10; l++) // 第四位数码管
{
P2 = 0xf7; // 打开第四位数码管
P0 = table[l]; // 显示l对应的数字
delayms(5); // 延时5ms
}
}
}
}
```
这个代码使用了P0口输出数码管显示的数字,P2口控制数码管显示的位数,通过循环改变四个位数码管的显示值,从而实现了时钟的功能。需要注意的是,这个代码没有使用任何外部时钟源,所以时钟精度可能会有一些误差。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)