|
51單片機(jī) DS1302電子鐘 帶仿真和源程序
0.png (24.91 KB, 下載次數(shù): 79)
下載附件
2016-6-5 00:43 上傳
0.png (68.89 KB, 下載次數(shù): 62)
下載附件
2016-6-5 00:42 上傳
部分程序預(yù)覽:
- /*****************************************************************
- 介紹:DS1302模塊程序文件,調(diào)用時(shí)請根據(jù)你所接的IO口不同修改io sclk rst的值
- 使用說明:調(diào)用時(shí),只用調(diào)用
- (1)ds1302_init_time()初始化時(shí)鐘函數(shù)
- (2)ds1302_get_time(uint8 *dat)獲取時(shí)間函數(shù) 定義一個(gè)數(shù)組data[7],形參即為data
- (3)ds1302_write_data(uint8 addr,uint8 dat)寫入數(shù)據(jù)函數(shù) addr值參見ds1302.h中定義的命令
- 作者:方正電子工作室 聯(lián)系QQ:1959635216
- 時(shí)間:20150323 淘寶店鋪:
- *****************************************************************/
- #include<reg52.h>
- #include"common.h"
- #include"ds1302.h"
- sbit io = P1^0;
- sbit sclk = P1^1;
- sbit rst = P1^2;
- /******************DS1302寫入命令***********************
- 輸入?yún)?shù):地址addr
- *************************************************************/
- void ds1302_write_cmd(uint8 addr)
- {
- uint8 i;
- rst = 0;
- sclk = 0;
- rst = 1;
- for(i=0;i<8;i++)
- {
- io = addr & 0x01;
- sclk = 1;
- sclk = 0;
- addr >>= 1;
- }
- }
- /******************DS1302指定地址讀數(shù)據(jù)***********************
- 輸入?yún)?shù):地址addr
- 輸出參數(shù):時(shí)間dat
- *************************************************************/
- void ds1302_read_data(uint8 addr,uint8 *dat)
- {
- uint8 i;
- ds1302_write_cmd(addr);
- for(i=0;i<8;i++)
- {
- *dat >>= 1;
- if(io == 1)
- *dat |= 0x80;
- sclk = 1;
- sclk = 0;
- }
- *dat = *dat/16*10 + *dat%16;
- }
- /******************DS1302指定地址寫數(shù)據(jù)***********************
- 輸入?yún)?shù):地址addr 時(shí)間dat
- *************************************************************/
- void ds1302_write_data(uint8 addr,uint8 dat)
- {
- uint8 i;
- dat = dat/10*16 + dat%10;
- ds1302_write_cmd(addr);
- for(i=0;i<8;i++)
- {
- io = dat & 0x01;
- sclk = 1;
- sclk = 0;
- dat >>= 1;
- }
- }
- /******************DS1302初始化時(shí)間***********************
- 初時(shí)化時(shí)間為 2015-03-26 星期四 23:59:50
- *************************************************************/
- void ds1302_init_time()
- {
- uint8 temp;
- ds1302_read_data(0xc1,&temp);
- if(temp!= 0xaa)
- {
- ds1302_write_data(write_wp,0); //允許寫操作
- ds1302_write_data(write_sec,50);
- ds1302_write_data(write_min,59);
- ds1302_write_data(write_hour,23);
- ds1302_write_data(write_date,26);
- ds1302_write_data(write_mon,3);
- ds1302_write_data(write_year,15);
- ds1302_write_data(write_week,3);
- ds1302_write_data(0xc1,0xaa); //寫入初始化標(biāo)志RAM
- }
- }
- /******************DS1302獲取時(shí)間***********************
- 輸出參數(shù):時(shí)間dat
- *************************************************************/
- void ds1302_get_time(uint8 *dat)
- {
- uint8 i,addr = 0x81;
- for(i=0;i<7;i++)
- {
- ds1302_read_data(addr,dat);
- addr += 2;
- dat++;
- }
- }
復(fù)制代碼
|
評分
-
查看全部評分
|