吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

帶你使用51單片機(jī)做一款簡(jiǎn)易的電子時(shí)鐘

嵌入式悅翔園 ? 來(lái)源:嵌入式悅翔園 ? 2023-02-23 11:50 ? 次閱讀

一、前言

今天給大家推薦一個(gè)51單片機(jī)小實(shí)驗(yàn),帶你使用51單片機(jī)做一款簡(jiǎn)易的電子時(shí)鐘,其中計(jì)時(shí)模塊采用DS1302硬件模塊,顯示采用LCD顯示屏,具體怎么實(shí)現(xiàn)開來(lái)一起看看吧!

二、DS1302模塊介紹

DS1302 是 DALLAS 公司推出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘和31字節(jié)靜態(tài) RAM,通過簡(jiǎn)單的串行接口單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘、日歷電路提供秒、分、時(shí)、日、周、月、年的信息,每月的天數(shù)和閏年自動(dòng)補(bǔ)償?shù)榷喾N功能。時(shí)鐘操作可通過 AM/PM 指示,DS1302 與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信,簡(jiǎn)易三線SPI通信模式:

RES 復(fù)位

I/O 數(shù)據(jù)線

SCLK 串行時(shí)鐘

SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議,比如MSP430單片機(jī)系列處理器

DS1302時(shí)鐘芯片的工作原理如下:

DS1302芯片內(nèi)部有一組定時(shí)器寄存器,通過這些寄存器可以實(shí)現(xiàn)時(shí)鐘的讀寫操作。

DS1302通過三根引腳與外部設(shè)備連接,分別是RST、DAT和CLK。RST引腳用于復(fù)位

DS1302,DAT引腳用于數(shù)據(jù)傳輸,CLK引腳用于時(shí)鐘信號(hào)

DS1302芯片使用BCD碼表示時(shí)間信息,即用4位二進(jìn)制數(shù)表示一個(gè)十進(jìn)制數(shù)。例如,分的BCD碼為00H到59H。

三、驅(qū)動(dòng)DS1302的代碼

以下是使用51單片機(jī)驅(qū)動(dòng)DS1302時(shí)鐘芯片的代碼,具體實(shí)現(xiàn)步驟如下:

3.1 初始化DS1302時(shí)鐘芯片

voidDS1302Init(){
//初始化DS1302時(shí)鐘芯片
DS1302WriteByte(0x8E,0x00);
//關(guān)閉寫保護(hù)
DS1302WriteByte(0x90,0x00);
}

3.2 讀取DS1302時(shí)鐘芯片的時(shí)間

voidDS1302ReadTime(unsignedchar*p){
//讀取DS1302時(shí)鐘芯片的時(shí)間
unsignedchari;
DS1302WriteByte(0xBF,0x00);
for(i=0;i

3.3 設(shè)置DS1302時(shí)鐘芯片的時(shí)間

voidDS1302WriteTime(unsignedchar*p){
//設(shè)置DS1302時(shí)鐘芯片的時(shí)間
unsignedchari;
DS1302WriteByte(0xBE,0x00);
for(i=0;i

3.4 讀取DS1302時(shí)鐘芯片的RAM

//從DS1302讀取一個(gè)字節(jié)的數(shù)據(jù)
voidDS1302ReadByte(uchar*dat){
uchari;

for(i=0;i

四、讀取DS1302時(shí)鐘芯片的RAM

DS1302時(shí)鐘芯片有31個(gè)字節(jié)的RAM空間,可以用來(lái)存儲(chǔ)一些數(shù)據(jù)。在實(shí)際應(yīng)用中,我們可能需要讀取這些存儲(chǔ)的數(shù)據(jù)。讀取DS1302的RAM和讀取寄存器類似,也需要先向DS1302發(fā)送讀取RAM的命令,然后再讀取RAM的內(nèi)容。

讀取DS1302的RAM需要使用到DS1302的另一個(gè)引腳——CE(片選使能)引腳,該引腳在讀寫DS1302的RAM時(shí)需要保持為低電平。讀取RAM的過程如下:

4.1 發(fā)送讀取RAM的命令

向DS1302寫入讀取RAM的命令:0x61。DS1302會(huì)自動(dòng)切換到RAM讀取模式,準(zhǔn)備將RAM中的數(shù)據(jù)傳輸給單片機(jī)。

DS1302Write(0x61);//發(fā)送讀取RAM命令

4.2 讀取RAM的內(nèi)容

發(fā)送讀取RAM命令后,就可以讀取RAM中的數(shù)據(jù)了。讀取RAM的數(shù)據(jù)需要先讀取DS1302的數(shù)據(jù)引腳(IO引腳)上的高電平脈沖,然后再讀取8個(gè)位的數(shù)據(jù)。具體的讀取過程可以使用DS1302ReadByte函數(shù)實(shí)現(xiàn),該函數(shù)會(huì)讀取一個(gè)字節(jié)的數(shù)據(jù)。

for(i=0;i

讀取完RAM后,我們可以將其存儲(chǔ)到一個(gè)數(shù)組中,方便后續(xù)的使用。

4.3 讀取部分單獨(dú)代碼實(shí)現(xiàn)(注重邏輯)

#include
#include

#defineucharunsignedchar
#defineuintunsignedint

sbitSCLK=P2^0;
sbitIO=P2^1;
sbitCE=P2^2;

uchards1302_read_ram(ucharaddress)
{
uchari,dat;

CE=0;
_nop_();
SCLK=0;
_nop_();
CE=1;
_nop_();

IO=0;//寫指令
SCLK=0;
_nop_();
SCLK=1;
_nop_();
IO=address|0xc0;//選擇地址并讀取RAM
for(i=0;i>=1;
if(IO)dat|=0x80;
SCLK=0;
_nop_();
SCLK=1;
_nop_();
}
CE=0;

returndat;
}

在上述代碼中,ds1302_read_ram 函數(shù)接收一個(gè)參數(shù) address,用于指定要讀取的 RAM 地址,返回一個(gè)字節(jié)表示該地址處的 RAM 數(shù)據(jù)。

該函數(shù)的具體實(shí)現(xiàn)過程如下:

置 CE 為低電平,并延遲一段時(shí)間。

置 SCLK 為低電平,并延遲一段時(shí)間。

置 CE 為高電平,并延遲一段時(shí)間。

置 IO 為低電平,表示寫指令。

置 SCLK 為低電平,并延遲一段時(shí)間。

置 SCLK 為高電平,并延遲一段時(shí)間。

置 IO 為 address | 0xc0,即選擇地址并讀取 RAM。

依次進(jìn)行 8 次時(shí)鐘上升沿,在每個(gè)上升沿時(shí)讀取數(shù)據(jù)位。

置 CE 為低電平。

返回讀取到的數(shù)據(jù)。

需要注意的是,讀取 RAM 數(shù)據(jù)時(shí)需要將地址的最高位(即 bit7)置為 1,以表示要讀取 RAM。另外,在讀取數(shù)據(jù)位時(shí)需要依次進(jìn)行 8 次時(shí)鐘上升沿,且每次讀取時(shí)需要先右移數(shù)據(jù),再將新數(shù)據(jù)左移并或上讀到的數(shù)據(jù)位。

五、整體代碼實(shí)現(xiàn)

下面是使用51單片機(jī)和DS1302時(shí)鐘芯片實(shí)現(xiàn)的簡(jiǎn)易電子時(shí)鐘的代碼實(shí)現(xiàn)。代碼中包含了DS1302的初始化、時(shí)鐘讀取、RAM讀寫等基本功能。

#include
#include"LCD1602.h"
#include"DS1302.h"

#defineucharunsignedchar
#defineuintunsignedint

sbitbeep=P3^6;//定義蜂鳴器接口

voidmain()
{
ucharyear,month,day,hour,minute,second;//年月日時(shí)分秒
ucharstr_data[11],str_time[11];//用于存放LCD上顯示的日期和時(shí)間

LCD_Init();//初始化LCD顯示屏
DS1302_Init();//初始化DS1302時(shí)鐘芯片

//將時(shí)間初始化為2023年2月21日0時(shí)0分0秒
DS1302_Write(0x8e,0);//關(guān)閉寫保護(hù)
DS1302_Write(0x80,0x23);//年份
DS1302_Write(0x82,0x02);//月份
DS1302_Write(0x84,0x21);//日期
DS1302_Write(0x86,0x00);//時(shí)鐘
DS1302_Write(0x88,0x00);//分鐘
DS1302_Write(0x8a,0x00);//秒鐘
DS1302_Write(0x8e,0x80);//開啟寫保護(hù)

while(1)
{
//讀取DS1302時(shí)鐘芯片中的年月日時(shí)分秒
year=DS1302_Read(0x80);
month=DS1302_Read(0x82);
day=DS1302_Read(0x84);
hour=DS1302_Read(0x86);
minute=DS1302_Read(0x88);
second=DS1302_Read(0x8a);

//將年月日時(shí)分秒轉(zhuǎn)換成字符串
sprintf(str_data,"Data:20%02x-%02x-%02x",year,month,day);
sprintf(str_time,"Time:%02x:%02x:%02x",hour,minute,second);

//在LCD上顯示日期和時(shí)間
LCD_Write_String(0,0,str_data);
LCD_Write_String(0,1,str_time);

Delay_Ms(1000);//延時(shí)1秒
}
}

六、顯示效果

5d037f88-b32c-11ed-bfe3-dac502259ad0.png






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    124294
  • 時(shí)鐘芯片
    +關(guān)注

    關(guān)注

    2

    文章

    253

    瀏覽量

    39972
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    449

    瀏覽量

    50807
  • 電子時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    197

    瀏覽量

    24604

原文標(biāo)題:使用51單片機(jī)和DS1302時(shí)鐘芯片做一個(gè)簡(jiǎn)易的電子時(shí)鐘

文章出處:【微信號(hào):嵌入式悅翔園,微信公眾號(hào):嵌入式悅翔園】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于51單片機(jī)電子時(shí)鐘設(shè)計(jì)資料分享

    基于51單片機(jī)電子時(shí)鐘設(shè)計(jì)目錄基于51單片機(jī)電子時(shí)鐘設(shè)計(jì)
    發(fā)表于 11-10 08:00

    89C51 單片機(jī)仿真_電子時(shí)鐘作業(yè)

    89C51 單片機(jī)仿真_電子時(shí)鐘作業(yè),感興趣的可以下載看看。
    發(fā)表于 10-28 17:05 ?0次下載

    51單片機(jī)帶鬧鐘可調(diào)時(shí)間的電子時(shí)鐘程序設(shè)計(jì)-keil工程-dsz

    51單片機(jī)帶鬧鐘可調(diào)時(shí)間的電子時(shí)鐘程序設(shè)計(jì)-keil工程。
    發(fā)表于 05-09 10:59 ?73次下載

    基于C51單片機(jī)的桌面型真人播報(bào)電子時(shí)鐘設(shè)計(jì)

    校企合作項(xiàng)目單片機(jī)設(shè)計(jì)時(shí)鐘,基于C51單片機(jī)的桌面型真人播報(bào)電子時(shí)鐘設(shè)計(jì)
    發(fā)表于 05-19 16:40 ?18次下載

    使用51單片機(jī)進(jìn)行電子時(shí)鐘的設(shè)計(jì)程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)進(jìn)行電子時(shí)鐘的設(shè)計(jì)程序免費(fèi)下載。
    發(fā)表于 04-15 18:24 ?25次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>電子時(shí)鐘</b>的設(shè)計(jì)程序免費(fèi)下載

    基于51單片機(jī)電子時(shí)鐘

    基于51單片機(jī)電子時(shí)鐘設(shè)計(jì)目錄基于51單片機(jī)電子時(shí)鐘設(shè)計(jì)
    發(fā)表于 11-05 09:21 ?186次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>電子時(shí)鐘</b>

    基于51單片機(jī)的數(shù)字電子時(shí)鐘

    51單片機(jī)實(shí)現(xiàn)數(shù)字電子時(shí)鐘基于51單片機(jī)的數(shù)字電子時(shí)鐘功能按鍵仿真圖代碼基于
    發(fā)表于 11-13 09:06 ?92次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的數(shù)字<b class='flag-5'>電子時(shí)鐘</b>

    基于51單片機(jī)的LCD1602電子時(shí)鐘

    摘要:51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的種。由RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于體的微控制器。本次設(shè)計(jì)的
    發(fā)表于 11-20 18:51 ?50次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的LCD1602<b class='flag-5'>電子時(shí)鐘</b>

    基于51單片機(jī)電子時(shí)鐘設(shè)計(jì)

    基于51單片機(jī)電子時(shí)鐘
    發(fā)表于 06-29 14:25 ?70次下載

    基于STC89C51單片機(jī)電子時(shí)鐘

    基于STC89C51單片機(jī)電子時(shí)鐘課程設(shè)計(jì)包含源碼仿真還有PCB工程文件
    發(fā)表于 12-05 11:51 ?55次下載

    使用51單片機(jī)和DS1302時(shí)鐘芯片做個(gè)簡(jiǎn)易電子時(shí)鐘

    今天給大家推薦個(gè)51單片機(jī)小實(shí)驗(yàn),帶你使用51單片機(jī)
    的頭像 發(fā)表于 02-23 11:49 ?6740次閱讀

    基于51單片機(jī)的數(shù)碼管顯示電子時(shí)鐘例程源代碼

    基于51單片機(jī)的數(shù)碼管顯示電子時(shí)鐘例程源代碼
    發(fā)表于 05-12 16:33 ?48次下載

    基于51單片機(jī)簡(jiǎn)易時(shí)鐘設(shè)計(jì)

    基于51單片機(jī)簡(jiǎn)易時(shí)鐘設(shè)計(jì)
    的頭像 發(fā)表于 08-01 01:09 ?3848次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>簡(jiǎn)易</b><b class='flag-5'>時(shí)鐘</b>設(shè)計(jì)

    基于51單片機(jī)的多功能電子時(shí)鐘設(shè)計(jì)

    基于51單片機(jī)的多功能電子時(shí)鐘設(shè)計(jì)(仿真)
    發(fā)表于 01-02 09:39 ?41次下載

    基于51單片機(jī)的多功能電子時(shí)鐘設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)的多功能電子時(shí)鐘設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-12 10:03 ?13次下載
    金贊娱乐城| 百家乐官网看不到视频| 百家乐官网室系统软件| 百家乐官网www| 打百家乐官网最好办法| 百家乐官网缩水工具| 百家乐开户最快的平台是哪家| 金满堂百家乐的玩法技巧和规则| 百家乐德州| 漾濞| 百家乐官网策略大全| 大三元百家乐官网的玩法技巧和规则| 海威百家乐赌博机| 大发888相关资讯| 百家乐官网开户送百元| 南宁百家乐官网赌机| 哪个百家乐网站最大| 大发888软件下载| 一路发娱乐城| 百家乐官网可以算牌么| 万人迷百家乐官网的玩法技巧和规则 | 利来国际娱乐网| 作弊百家乐官网赌具| 百家乐能破解| 百家乐牌路分析仪| 百家乐秘籍下注法| 邮箱| 百家乐视频大厅| 大发888在线娱乐二十一点 | 大发888游戏场下载| 百家乐官网斗地主在哪玩| 百家乐官网桌子黑色| 威尼斯人娱乐城会员注册| 金冠娱乐城最新网址| 至尊百家乐官网节目单| 百家乐群博爱彩| 大发888下载亚洲城| 百家乐官网投注最好方法| 百家乐时时彩网站| 田东县| 网上百家乐赌钱|