【文件属性】:
文件名称:使用AVR单片机在LCD1602上显示DS1302时间数据
文件大小:7KB
文件格式:RAR
更新时间:2021-05-24 03:51:06
c语言 DS1302
/* ************************************************
* File name: Display_DS1302.c
* Function: 设置初始时间并从DS1302中读取时间并且在LCD21602中显示
* Description:
* ************************************************/
#include
#include
#include
#include
#define SET_1(a,b) a|=(1<0; i-- ) //循环8次移位
{
SCLK_0;
temp = addr;
if(temp&0x01;)
DIO_1; //每次传输低字节
else
DIO_0;
addr>>= 1; //右移一位
SCLK_1;
}
//发送数据
for (i=8;i>0;i-- )
{
SCLK_0;
temp=dat;
if(temp&0x01;)
DIO_1;
else
DIO_0;
dat>>=1;
SCLK=1;
}
RST_0;
}
/*******************************************
*函数名称: Read1302 ( )
*说 明:
*功 能: 数据读取子程序
*参 数:读取的地址
*返回值 : 时间数据
*注意事项:
********************************************/
unsigned char Read1302(unsigned char addr)
{
unsigned char i,temp,dat1,dat2;
RST_0;
SCLK_0;
RST_1;
//发送地址
for(i=8;i>0;i-- ) //循环8次移位
{
SCLK_0;
temp=addr;
if(temp&0x01;)
DIO_1; //每次传输低字节
else
DIO_0;
addr>>=1; //右移一位
SCLK_1;
}
//读取数据
for( i=8;i>0;i--)
{
if(OUT)
tempdate|=0x80;
else
tempdate&=0x70;
SCLK_0;
tempdate>>=1;
SCLK_1;
}
RST_0;
dat1=tempdate;
dat2=dat1/16; //数据进制转换
dat1=dat1; //十六进制转十进制
dat1=dat1+dat2*10;
return (dat1);
}
/*******************************************
*函数名称: Initial()
*说 明:
*功 能: DS1302时间初始化
*参 数:
*返回值 : 无
*注意事项:
********************************************/
void Initial(void)
{
Write1302 (WRITE_PROTECT,0X00); //禁止写保护
Write1302 (WRITE_SECOND,0x56); //秒位初始化
Write1302 (WRITE_MINUTE,0x34); //分钟初始化
Write1302 (WRITE_HOUR,0x12); //小时初始化
Write1302 (WRITE_PROTECT,0x80); //允许写保护
}
【文件预览】:
Display_DS1302
----Display_DS1302.c(3KB)
----.dep()
----Makefile(17KB)