藍橋杯STC基礎代碼-時鐘芯片

上一章-藍橋杯STC基礎代碼-串口通信

文章地址

時鐘芯片-DS1302

時鐘芯片在比賽的時候使用基本沒有什麼難度,利用好主辦方給的函數

void Write_Ds1302_Byte(unsigned  char temp) ;

void Write_Ds1302( unsigned char address,unsigned char dat )  ;

unsigned char Read_Ds1302 ( unsigned char address );

配置過程

一般來說,我們只需要配置 時 分 秒 這三個就可以了。

寫數據

這裏是引用

根據芯片手冊上的寄存器。
可以看到 秒 - 0x80 ,分 - 0x82 ,秒 -0x84
在寫入寄存器的時候要把數據分成 個位跟十位 ,分別寫進寄存器的低位跟高位。

注意
在寫入數據之前要關閉寫保護。
寫完之後要打開寫保護。

打開寫保護
把數據分成個位跟十位
寫入數據
關閉寫保護
void Set_time(u8 hour, u8 min ,u8 sec)
{
	u8 temp;
	
	Write_Ds1302(0x8e,0);
	
	temp = ( hour / 10 ) << 4 | hour% 10;
	Write_Ds1302(0x84,temp);
	
	temp = ( min / 10 ) << 4 | min% 10;
	Write_Ds1302(0x82,temp);

	temp = ( sec / 10 ) << 4 | sec% 10;
	Write_Ds1302(0x80,temp);	
	
	Write_Ds1302(0x8e,0x80);	
}

寄存器記不住沒關係,打開芯片手冊一查就好了。

讀數據

在程序初始化的時候我們就把我們設定的時間寫入,之後需要用到時間就讀一下就好了。
在這裏,我用三個全局變量來存儲時間。

u8 d_hour,d_min,d_sec;

然後我們回到芯片手冊的寄存器

這裏是引用

可以看到讀數據的話
秒-0x81,分-0x83,時-0x85
然後要注意的是讀取之後還要對讀取到的數據進行處理。
跟寫數據一樣,我們讀到的數據 十位對應高四位 ,個位對應低四位

根據寄存區讀取數據
數據處理
數據存儲

代碼如下

u8 d_hour,d_min,d_sec;
void Read_time(void)
{
	u8 temp;
	
	temp = Read_Ds1302(0x81);
	d_sec = (temp >> 4 ) *10 + (temp & 0x0f);

	temp = Read_Ds1302(0x83);
	d_min = (temp >> 4 ) *10 + (temp & 0x0f);

	temp = Read_Ds1302(0x85);
	d_hour = (temp >> 4 ) *10 + (temp & 0x0f);	
}

代碼下載

代碼下載地址

下一章-溫度芯片-ds18b20

文章地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章