/**************************
文件所用资源
1.端口:P0.4,P0.5,P0.6
2.调用delay_ms函数
**************************/
/***********************
1302引脚定义
***********************/
sbit T_RST = P0^4;
sbit T_DAT = P0^5;
sbit T_CLK = P0^6;
/********************************
1302子程序区
********************************/
/*******************************
DS1302写入1字节数据
*******************************/
void write_1302_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if(dat&0x01)T_DAT=1;
else T_DAT=0;
T_CLK=1;
dat=dat>>1;
T_CLK=0;
}//for
}
/*******************************
从DS1302读出1字节数据
*******************************/
uchar read_1302_byte()
{
uchar i,dat;
T_DAT=1;
for(i=0;i<8;i++)
{
dat=dat>>1;
if(T_DAT==1)dat=dat|0x80;
T_CLK=1;
T_CLK=0;
}//for
return dat;
}
/********************************
DS1302写入指令或数据
********************************/
void write_1302(uchar addr,uchar dat)
{
T_RST=0; //RST=0
T_CLK=0; //CLK=0
T_RST=1; //RST=1,启动数据传输
write_1302_byte(addr);
write_1302_byte(dat);
T_RST=0; //RST=0
}
/********************************
读DS1302里对应寄存器的数据
*********************************/
uchar read_1302(uchar addr)
{
uchar dat;
T_RST=0; //RST=0
T_CLK=0; //CLK=0
T_RST=1; //RST=1,启动数据传输
write_1302_byte(addr);
dat=read_1302_byte();
T_RST=0; //RST=0
return dat;
}
/******************************
读取1302的时间
时间数据放在形参数组里,依次为
年、星期、月、日、时、分、秒
*******************************/
void read_time(uchar *p)
{
uchar i;
for(i=0x8d;i>=0x81;i--)
{
*p++=read_1302(i);
i--;
}
}
/*****************************
初始化1302时间
时间数据放在形参数组里,依次为
年、星期、月、日、时、分、秒
******************************/
void write_time(uchar *p)
{
uchar i;
write_1302(0x8e,0x00); //允许写操作
for(i=0x8c;i>=0x80;i--)
{
write_1302(i,*p++);
i--;
}
write_1302(0x8e,0x80); //禁止写操作
}
关键字:DS1302 读写驱动
引用地址:
DS1302读写驱动程序
推荐阅读最新更新时间:2024-03-16 15:21
51单片机做的智能时钟具有闹钟功能(DS1302+DS18B20+LCD1602)
本贴针对学完单片机并且有读懂代码的非新手同学。本人目前放寒假,这个是本人在上个学期的单片机课上要求做的综合实验,现在重新修改了下增加了菜单目前测试毫无问题可以完美使用。有志向做闹钟的同学可以参考一下,原码上由本人写的大量注释可以方便看懂。 使用了LCD1602、DS1302、DS18B20用来测试温度、内部含闹钟系统但本人没有做EEPROM有需要的同学可以自行添加。 单片机源程序如下: #include reg52.h #include key.h #include LCD1602.h #include DS1302.h #include music.h #include DS18B20.H #define no
[单片机]
51单片机学习:DS1302时钟实验
实验名称:DS1302时钟实验 接线说明: 实验现象:下载程序后,数码管上显示电子时钟时分秒,格式为“XX-XX-XX” 注意事项: ***************************************************************************************/ #include public.h #include smg.h #include ds1302.h /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 *
[单片机]
PIC16F84A读取时钟芯片DS1302的简单示例
//引入文件*********************************************************** #include delay.h #include delay.c #include pic.h #include pic1684.h //熔丝配置*********************************************************** __CONFIG(XT & WDTDIS & PWRTEN & PROTECT); //引脚定义*******************************************************
[单片机]
80C51单片机通过模拟SPI口驱动UZZ9001读写操作
#include reg51.h #include absacc.h #include intrins.h #include math.h sbit CS = P2^0; sbit CLK = P2^1; sbit DATA= P2^2; /*宏定义8155的A口,B口和控制口*/ #define PA8155 XBYTE #define PB8155 XBYTE #define COM8155 XBYTE //显示 的代码; unsigned char code Table ={0X0FC,0X60,0X0DA,0X0F2,0X66,0X0B6,0X0BE,0X0E0,0X0FE,0X0F6
[单片机]
AVR+DS1302时钟芯片测试程序
#include iom16v.h #include macros.h #include delay.h #include lcd.h #define uchar unsigned char #define uint unsigned int #define DS1302_RST_SET PORTA |= ( 1 0 ) #define DS1302_RST_CLR PORTA &=~ ( 1 0 ) #define DS1302_SCLK_SET PORTA |= ( 1 1 ) #define DS1302_SCLK_CLR PORTA &=~ ( 1 1 ) #define DS1302_DATA_SET
[单片机]
PIC18+DS1302程序设计
1、ds1302芯片使用相对简单,其采用spi三接口同步通信。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此可应用于测量系统中。ds1302内部读写寄存器存放的数据格式为bcd码,在读取后的数据转换时除以16得到相应10进制数。 2、部分核心程序: 发送地址及数据(向芯片里面写入数据): void write1302(unsigned char addr,unsigned dat){ RST=0;//不让数据传输进ds1302 SCLK=0;//初始化时钟总线 RST=1; for(int i=8;i 0;i--){ SCLK=0;
[单片机]
基于单片机的实时时钟芯片DS1302驱动程序
本程序实现了时间与日历的轮换显示。 由于是2011年1月5日调试的,初始时间设置为11:59:58,日历11-01-05 // 标题: 试验数码管显示时钟 // // 通过本例程了解 DS1302时钟芯片的基本原理和使用 ,理解并掌握DS1302时钟芯片 // 驱动程序的编写以及实现数字字符在数码管中的显示。 // 请学员认真消化本例程,懂DS1302在C语言中的操作 #include reg52.h //包含头文件,一般情况不
[单片机]
DS1302读写一体化C51源程序
DS1302读写一体化C51源程序 (hotpower) /*---------------------------------------------- DS1302读写一体化C51源程序 HotPower@126.com ------------------------------------------------*/ //打开DS1302 void TimeSpiOpen(void) { TIMECLK = 0; TIMERST = 0;//禁止DS1302 TIMEIO = 1;//释放数据总线 TIMERST = 1;//使能DS1302 } //关闭DS1302 void TimeSpiClose(v
[单片机]