微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32F103V 模拟IO 读取DS1302 程序

STM32F103V 模拟IO 读取DS1302 程序

时间:11-18 来源:互联网 点击:

/********************************************************************/
void all_data_rst(void) //时间复位成初始设置的值
{
Delay1ms(50);
send(0x8E,0x00); //打开写保护
send(0x80,0x00); //写入秒
send(0x82,0x00); //写入分
send(0x84,0x12); //写入小时
send(0x86,0x13); //写入日期
send(0x88,0x12); //写入月
send(0x8c,0x07); //写入年
send(0x8a,0x04); //写入星期
send(0x8E,0x80); //关闭写保护
}

/******************参数初始化**********************/
void main_int(void)
{

/**************初始化设置***********************/

adjust_mode=0; //时间调节模式,0-6,用来切换调节的范围。
sec_h=0x30; //设置秒高位
sec_l=0x30; //设置秒低位
min_h=0x30; //设置分高位
min_l=0x30; //设置分低位
hour_h=0x31; //设置小时高位
hour_l=0x32; //设置小时低位
date_h=0x31; //设置日期高位
date_l=0x33; //设置日期低位
month_h=0x31; //设置月份高位
month_l=0x32; //设置月份低位
day_h=0x30; //设置星期高位
day_l=0x35; //设置星期低位
year_h=0x30; //设置年份高位
year_l=0x37; //设置年份低位
tem_h=0x30; //设置温度高位
tem_l=0x30; //设置温度低位
/********************************************/
}

///rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
void resume_all_data(void)
{
/*****************出厂设置********************/
/*****************DS1302数据的写入***********************/
send(0x8E,0x00); //打开写保护
send(0x80,0x00); //写入秒
send(0x82,0x08); //写入分
send(0x84,0x10); //写入小时
send(0x86,0x31); //写入日期
send(0x88,0x01); //写入月
send(0x8c,0x13); //写入年
send(0x8a,0x04); //写入星期
send(0xc0,0x01); //写入闹钟小时H
send(0xc2,0x02); //写入闹钟小时L
send(0xc4,0x00); //写入闹钟分钟H
send(0xc6,0x00); //写入闹钟分钟L
send(0x8E,0x80); //关闭写保护
// ram_hour_h=0x01; //闹钟初始值为12:00
// ram_hour_l=0x02;
// ram_min_h=0x00;
// ram_min_l=0x00;
}
///rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

/****************************************************/
void trickle_charge_open(void) //涓流充电开启
{ /////Trickle Charge start/////
send(0x8E,0x00); //打开写保护
send(0x90,0xa9); //10101001B选2个二极管电阻是2K
send(0x8E,0x80); //关闭写保护

} /////Trickle Charge end //////
/*****************************************************/

/****************************************************/
void trickle_charge_close(void) //涓流充电关闭
{ /////Trickle Charge start/////
send(0x8E,0x00); //打开写保护
send(0x90,0x80); //10101001B选2个二极管电阻是2K
send(0x8E,0x80); //关闭写保护

} /////Trickle Charge end //////
/*****************************************************/

/***************************1秒延时子程序start***************************/
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;ifor(j=0;j<1200;j++);
}

/***************************1秒延时子程序end***************************/

#endif

///////////////////////////////////////////////////////读取时间部分程序////////////////////////////////////////////////////

//////////////////从DS1302读取时间/////////////////////////
void Get_DS1302time(void) //从DS1302读取时间
{
NOW_time[2]=rec(0x8d)/16+0x30;//年
NOW_time[3]=rec(0x8d)%16+0x30;//

NOW_time[5]=rec(0x89)/16+0x30;//月
NOW_time[6]=rec(0x89)%16+0x30;

NOW_time[8]=rec(0x87)/16+0x30;//日
NOW_time[9]=rec(0x87)%16+0x30;

NOW_time[11]=rec(0x85)/16+0x30;//小时
NOW_time[12]=rec(0x85)%16+0x30;

NOW_time[14]=rec(0x83)/16+0x30;//分钟
NOW_time[15]=rec(0x83)%16+0x30;

NOW_time[17]=rec(0x81)/16+0x30;//秒
NOW_time[18]=rec(0x81)%16+0x30;
}
////////////////////////////////////////////////

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top