基于C语言51单片机数字电子时钟代码
时间: 2024-02-28 07:53:55 浏览: 87
以下是一个基于C语言的51单片机数字电子时钟代码,使用了DS1302实时时钟模块:
```
#include<reg52.h>
#include<intrins.h>
#include<DS1302.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴数码管0-9的编码
sbit DSPORT=P3^4; //DS1302数据总线
sbit RST=P3^5; //DS1302复位信号
sbit SCLK=P3^6; //DS1302时钟信号
void main()
{
uchar sec,min,hour;
uchar num[8];
uchar i;
while(1)
{
sec=DS1302_Read(0x81); //读取秒
min=DS1302_Read(0x83); //读取分
hour=DS1302_Read(0x85); //读取时
num[0]=hour/10; //十位小时
num[1]=hour%10; //个位小时
num[2]=10; //冒号
num[3]=min/10; //十位分钟
num[4]=min%10; //个位分钟
num[5]=10; //冒号
num[6]=sec/10; //十位秒钟
num[7]=sec%10; //个位秒钟
for(i=0;i<8;i++)
{
P0=table[num[i]]; //将数码管编码写入P0口
switch(i) //选择对应的数码管
{
case 0: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 1: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 2: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 3: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 4: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 5: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 6: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
case 7: DSPORT=1; RST=0; _nop_(); _nop_(); RST=1; break;
default: break;
}
_nop_();
_nop_();
P0=0x00; //清空P0口
}
delay(1000); //延时1秒钟
}
}
```
这个代码使用了DS1302实时时钟模块来获取当前时间,然后将时间转换为数码管的编码,并通过P0口输出。在循环中,首先读取当前的小时、分钟和秒钟,然后将这些数字转换为数码管的编码。接着,依次将编码输出到对应的数码管上,并延时1秒钟。注意,这个代码中使用了DS1302库文件,需要提前下载并引用。
阅读全文