C语言程序设计遍历时间利用,单片机从PC端读取当前时间(用到ds1302 用c语言编程)急用!!!...

该博客详细介绍了如何使用C语言编程配合DS1302实时时钟芯片,从PC端读取当前时间,并在单片机上进行显示。内容包括初始化DS1302、读取时间数据以及在LCD模块上显示时间的各个部分(秒、分、小时、日、月、年)。通过一系列的函数实现了数据的读写和液晶屏的显示控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include //包含单片机寄存器的头文件

#include //包含_nop_()函数定义的头文件

unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字

sbit SCLK=P1^0; //位定义1302芯片的接口,时钟输出端口定义在P1.0引脚

sbit DATA=P1^1; //位定义1302芯片的接口,数据输出端定义在P1.1引脚

sbit RST=P1^2; //位定义1302芯片的接口,复位端口定义在P1.2引脚

/*****************************************************

函数功能:延时若干微秒

入口参数:n

***************************************************/

void delaynus(unsigned char n)

{

unsigned char i;

for(i=0;i

}

/*****************************************************

函数功能:向1302写一个字节数据

入口参数:x

***************************************************/

void Write1302(unsigned char dat)

{

unsigned char i;

SCLK=0; //拉低SCLK,为脉冲上升沿写入数据做好准备

delaynus(2); //稍微等待,使硬件做好准备

for(i=0;i<8;i++) //连续写8个二进制位数据

{

DATA=dat&0x01; //取出dat的第0位数据写入1302 低位在前

,高位在后

delaynus(2); //稍微等待,使硬件做好准备

SCLK=1; //上升沿写入数据

delaynus(2); //稍微等待,使硬件做好准备

SCLK=0; //重新拉低SCLK,形成脉冲

dat>>=1; //将dat的各数据位右移1位,准备写入

下一个数据位

}

}

/*****************************************************

函数功能:根据命令字,向1302写一个字节数据

入口参数:Cmd,储存命令字;dat,储存待写的数据

***************************************************/

void WriteSet1302(unsigned char Cmd,unsigned char dat)

{

RST=0; //禁止数据传递

SCLK=0; //确保写数居前SCLK被拉低

RST=1; //启动数据传输

delaynus(2); //稍微等待,使硬件做好准备

Write1302(Cmd); //写入命令字

Write1302(dat); //写数据

SCLK=1; //将时钟电平置于高电平状态

RST=0; //禁止数据传递

}

/*****************************************************

函数功能:从1302读一个字节数据

入口参数:x

***************************************************/

unsigned char Read1302(void)

{

unsigned char i,dat;

delaynus(2); //稍微等待,使硬件做好准备

for(i=0;i<8;i++) //连续读8个二进制位数据

{ dat>>=1;

if(DATA==1) //如果读出的数据是1

dat|=0x80; //将1取出,写在dat的最高位

SCLK=1; //将SCLK置于高电平,为下降沿读出

delaynus(2); //稍微等待

SCLK=0; //拉低SCLK,形成脉冲下降沿

delaynus(2); //稍微等待

}

return dat; //将读出的数据返回

}

/*****************************************************

函数功能:根据命令字,从1302读取一个字节数据

入口参数:Cmd

***************************************************/

unsigned char ReadSet1302(unsigned char Cmd)

{

unsigned char dat;

RST=0; //拉低RST

SCLK=0; //确保写数居前SCLK被拉低

RST=1; //启动数据传输

Write1302(Cmd); //写入命令字

dat=Read1302(); //读出数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值