久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
DS3231和AT24C64的Proteus仿真程序
[打印本頁]
作者:
51heizlxz
時間:
2019-12-10 20:40
標題:
DS3231和AT24C64的Proteus仿真程序
本帖最后由 51heizlxz 于 2019-12-14 11:40 編輯
使用proteus7.8 SP2,keil4,AT89C51RD2
實現DS3231的時間設置和讀取,AT24C64的寫入和讀取
5.gif
(1.04 MB, 下載次數: 88)
下載附件
2019-12-11 23:17 上傳
DS3231 源程序如下:
#include "ds3231.h"
#include "main.h"
#include "I2C.h"
//功能:BCD碼轉換為十進制
//參數:BCD碼
//返回值:十進制數
uchar BCDToDEC(uchar val)
{
return ((val>>4)*10)+(val&0x0f);
}
//功能:十進制數轉換為BCD碼
//參數:十進制數字
//返回值:BCD碼
uchar DECToBCD(uchar val)
{
return (((val%100)/10)<<4)|(val%10);
}
//功能:向DS3231的某個寄存器寫入數據
//參數:addr要寫入的寄存器地址,write_data 要寫入的數據
//返回值: 成功返回1,失敗返回0
uchar write_byte(uchar addr, uchar write_data)
{
I2CStart_I2C(); //1發送起始信號
I2CSendByte(DS3231_WriteAddress); //2.發送寫指令
if(I2CWaitACK()==NACK ) //如果為非應答
return 0;
I2CSendByte(addr); //3.發送寄存器地址
if(I2CWaitACK()==NACK) //如果為非應答
return 0;
I2CSendByte(write_data); //4.發送數據
if(I2CWaitACK()==NACK) //如果為非應答
return 0;
I2CStop_I2C(); //5.發送停止信號
delayus(4);
return 1; //發送正確返回1
}
//功能:從DS3231某個寄存器中讀取數據
//參數:寄存器地址
//返回值:讀取的數據
uchar read_random(uchar random_addr)
{
uchar idata read_data;
I2CStart_I2C(); //1.起始信號
I2CSendByte(DS3231_WriteAddress); //2.發送偽寫指令
if(I2CWaitACK()==NACK) //等待從機應答
return 0;
I2CSendByte(random_addr); //3.發送寄存器地址
if(I2CWaitACK()==NACK) //等待從機應答
return 0;
I2CStart_I2C(); //4.再次發送起始信號
I2CSendByte(DS3231_ReadAddress); //5.發送讀指令
if(I2CWaitACK()==NACK) //等待從機應答
return 0;
read_data = I2CReadByte(); //6.讀取數據
I2C_NACK(); //7.給出NACK信號
I2CStop_I2C(); //8.發送停止信號
return read_data;
}
//功能:設置DS3231時間,包括年/月/日/ 時:分:秒 周幾
//參數:Time型 t 注意,這里t中的值都是十進制的
//返回值:void
void ModifyTime(Time *t)
{
uchar temp=0;
temp=DECToBCD(t->year);
write_byte(DS3231_YEAR,temp); //修改年
temp=DECToBCD(t->month);
write_byte(DS3231_MONTH,temp); //修改月
temp=DECToBCD(t->day);
write_byte(DS3231_DAY,temp); //修改日
temp=DECToBCD(t->hour);
write_byte(DS3231_HOUR,temp); //修改時
temp=DECToBCD(t->minute);
write_byte(DS3231_MINUTE,temp); //修改分
temp=DECToBCD(t->second);
write_byte(DS3231_SECOND,temp); //修改秒
temp=DECToBCD(t->week);
write_byte(DS3231_WEEK,temp); //修星期
}
//功能:從DS3231讀取數據
//參數:Time 型變量t,讀出的結構成員都是十進制數
//返回值:void
void GetDS3231Time(Time *t)
{
t->year=read_random(DS3231_YEAR);
t->month=read_random(DS3231_MONTH);
t->hour=read_random(DS3231_HOUR);
t->minute=read_random(DS3231_MINUTE);
t->second=read_random(DS3231_SECOND);
t->year=BCDToDEC(t->year);
t->month=BCDToDEC(t->month);
t->day=BCDToDEC(t->day);
t->hour=BCDToDEC(t->hour);
t->minute=BCDToDEC(t->minute);
t->second=BCDToDEC(t->second);
}
復制代碼
所有資料51hei提供下載:
ds3231_2.rar
(166.34 KB, 下載次數: 202)
2019-12-14 11:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
whsbk
時間:
2020-2-26 15:08
謝謝分享,需要操作ds3231模塊上的eeprom, 下載參考下。
作者:
Duo2048
時間:
2020-2-26 16:31
謝謝樓主 非常需要
作者:
hzwl2007
時間:
2020-2-26 20:33
優秀 棒棒棒棒
作者:
xlyzhlq
時間:
2021-5-15 09:16
好 頂頂頂頂頂頂頂頂頂頂頂頂頂頂
作者:
yingalstom
時間:
2023-1-14 17:07
學習一下DS3231.
作者:
gzgy
時間:
2024-5-2 14:36
正在學習DS31231,謝謝分享!
作者:
huangjingjie
時間:
2024-5-24 15:37
感謝樓主共享
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产三级一区
|
日韩高清在线播放
|
欧美日韩
|
成年网站在线观看
|
日韩成人精品一区二区
|
国产小视频在线播放
|
激情高潮到大叫狂喷水
|
日本福利在线
|
91手机在线视频
|
欧美色图一区二区三区
|
人人看av
|
欧美三级欧美一级
|
超碰在线网站
|
五月婷婷丁香
|
精品国产乱码久久久久
|
久久新视频
|
成人在线一区二区
|
成人免费小视频
|
日韩一区在线播放
|
97中文字幕
|
日韩精品久久久久久免费
|
国产精品天美传媒入口
|
中文字幕在线免费观看
|
日皮视频在线观看
|
亚洲综合免费
|
欧美一区二区三区在线观看
|
日韩免费毛片
|
五月在线视频
|
色六月婷婷
|
国产精品免费一区二区三区
|
午夜精品视频
|
午夜国产在线
|
久久久久女人精品毛片九一
|
成人精品视频在线观看
|
美女国产精品
|
亚洲国产欧美在线
|
97精品国产97久久久久久免费
|
国产h在线
|
亚洲第一第二区
|
aa一级片
|
一级国产片
|