在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

帶你使用51單片機做一款簡易的電子時鐘

嵌入式悅翔園 ? 來源:嵌入式悅翔園 ? 2023-02-23 11:50 ? 次閱讀

一、前言

今天給大家推薦一個51單片機小實驗,帶你使用51單片機做一款簡易的電子時鐘,其中計時模塊采用DS1302硬件模塊,顯示采用LCD顯示屏,具體怎么實現開來一起看看吧!

二、DS1302模塊介紹

DS1302 是 DALLAS 公司推出的涓流充電時鐘芯片,內含有一個實時時鐘和31字節靜態 RAM,通過簡單的串行接口單片機進行通信。實時時鐘、日歷電路提供秒、分、時、日、周、月、年的信息,每月的天數和閏年自動補償等多種功能。時鐘操作可通過 AM/PM 指示,DS1302 與單片機之間能簡單地采用同步串行的方式進行通信,簡易三線SPI通信模式:

RES 復位

I/O 數據線

SCLK 串行時鐘

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

DS1302時鐘芯片的工作原理如下:

DS1302芯片內部有一組定時器寄存器,通過這些寄存器可以實現時鐘的讀寫操作。

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

DS1302,DAT引腳用于數據傳輸,CLK引腳用于時鐘信號

DS1302芯片使用BCD碼表示時間信息,即用4位二進制數表示一個十進制數。例如,分的BCD碼為00H到59H。

三、驅動DS1302的代碼

以下是使用51單片機驅動DS1302時鐘芯片的代碼,具體實現步驟如下:

3.1 初始化DS1302時鐘芯片

voidDS1302Init(){
//初始化DS1302時鐘芯片
DS1302WriteByte(0x8E,0x00);
//關閉寫保護
DS1302WriteByte(0x90,0x00);
}

3.2 讀取DS1302時鐘芯片的時間

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

3.3 設置DS1302時鐘芯片的時間

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

3.4 讀取DS1302時鐘芯片的RAM

//從DS1302讀取一個字節的數據
voidDS1302ReadByte(uchar*dat){
uchari;

for(i=0;i

四、讀取DS1302時鐘芯片的RAM

DS1302時鐘芯片有31個字節的RAM空間,可以用來存儲一些數據。在實際應用中,我們可能需要讀取這些存儲的數據。讀取DS1302的RAM和讀取寄存器類似,也需要先向DS1302發送讀取RAM的命令,然后再讀取RAM的內容。

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

4.1 發送讀取RAM的命令

向DS1302寫入讀取RAM的命令:0x61。DS1302會自動切換到RAM讀取模式,準備將RAM中的數據傳輸給單片機。

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

4.2 讀取RAM的內容

發送讀取RAM命令后,就可以讀取RAM中的數據了。讀取RAM的數據需要先讀取DS1302的數據引腳(IO引腳)上的高電平脈沖,然后再讀取8個位的數據。具體的讀取過程可以使用DS1302ReadByte函數實現,該函數會讀取一個字節的數據。

for(i=0;i

讀取完RAM后,我們可以將其存儲到一個數組中,方便后續的使用。

4.3 讀取部分單獨代碼實現(注重邏輯)

#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 函數接收一個參數 address,用于指定要讀取的 RAM 地址,返回一個字節表示該地址處的 RAM 數據。

該函數的具體實現過程如下:

置 CE 為低電平,并延遲一段時間。

置 SCLK 為低電平,并延遲一段時間。

置 CE 為高電平,并延遲一段時間。

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

置 SCLK 為低電平,并延遲一段時間。

置 SCLK 為高電平,并延遲一段時間。

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

依次進行 8 次時鐘上升沿,在每個上升沿時讀取數據位。

置 CE 為低電平。

返回讀取到的數據。

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

五、整體代碼實現

下面是使用51單片機和DS1302時鐘芯片實現的簡易電子時鐘的代碼實現。代碼中包含了DS1302的初始化、時鐘讀取、RAM讀寫等基本功能。

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

#defineucharunsignedchar
#defineuintunsignedint

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

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

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

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

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

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

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

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

六、顯示效果

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






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 51單片機
    +關注

    關注

    277

    文章

    5710

    瀏覽量

    126599
  • 時鐘芯片
    +關注

    關注

    2

    文章

    263

    瀏覽量

    40591
  • DS1302
    +關注

    關注

    8

    文章

    451

    瀏覽量

    51542
  • 電子時鐘
    +關注

    關注

    11

    文章

    202

    瀏覽量

    24993

原文標題:使用51單片機和DS1302時鐘芯片做一個簡易的電子時鐘

文章出處:【微信號:嵌入式悅翔園,微信公眾號:嵌入式悅翔園】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于51單片機電子時鐘設計資料分享

    基于51單片機電子時鐘設計目錄基于51單片機電子時鐘設計
    發表于 11-10 08:00

    89C51 單片機仿真_電子時鐘作業

    89C51 單片機仿真_電子時鐘作業,感興趣的可以下載看看。
    發表于 10-28 17:05 ?0次下載

    51單片機帶鬧鐘可調時間的電子時鐘程序設計-keil工程-dsz

    51單片機帶鬧鐘可調時間的電子時鐘程序設計-keil工程。
    發表于 05-09 10:59 ?73次下載

    基于C51單片機的桌面型真人播報電子時鐘設計

    校企合作項目單片機設計時鐘,基于C51單片機的桌面型真人播報電子時鐘設計
    發表于 05-19 16:40 ?18次下載

    使用51單片機進行電子時鐘的設計程序免費下載

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

    基于51單片機電子時鐘

    基于51單片機電子時鐘設計目錄基于51單片機電子時鐘設計
    發表于 11-05 09:21 ?186次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>電子時鐘</b>

    基于51單片機的數字電子時鐘

    51單片機實現數字電子時鐘基于51單片機的數字電子時鐘功能按鍵仿真圖代碼基于
    發表于 11-13 09:06 ?93次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的數字<b class='flag-5'>電子時鐘</b>

    基于51單片機的LCD1602電子時鐘

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

    基于51單片機電子時鐘設計

    基于51單片機電子時鐘
    發表于 06-29 14:25 ?70次下載

    基于STC89C51單片機電子時鐘

    基于STC89C51單片機電子時鐘課程設計包含源碼仿真還有PCB工程文件
    發表于 12-05 11:51 ?55次下載

    使用51單片機和DS1302時鐘芯片做簡易電子時鐘

    今天給大家推薦51單片機小實驗,帶你使用51單片機
    的頭像 發表于 02-23 11:49 ?7443次閱讀

    基于51單片機的數碼管顯示電子時鐘例程源代碼

    基于51單片機的數碼管顯示電子時鐘例程源代碼
    發表于 05-12 16:33 ?49次下載

    基于51單片機簡易時鐘設計

    基于51單片機簡易時鐘設計
    的頭像 發表于 08-01 01:09 ?4368次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>簡易</b><b class='flag-5'>時鐘</b>設計

    基于51單片機的多功能電子時鐘設計

    基于51單片機的多功能電子時鐘設計(仿真)
    發表于 01-02 09:39 ?42次下載

    基于51單片機的多功能電子時鐘設計

    電子發燒友網站提供《基于51單片機的多功能電子時鐘設計.rar》資料免費下載
    發表于 01-12 10:03 ?19次下載
    主站蜘蛛池模板: se94se最新网站 | 国产精品久久久久久久久免费 | 免费一级毛片不卡在线播放 | 男女刺激性视频大片 | 欧美黑人性色黄在线视频 | 一级片a级片 | 天天色影视综合网 | 天天干夜夜拍 | 国产天天操| 康熙古代高h细节肉爽文全文 | 九九热精品在线观看 | 成人午夜大片免费视频77777 | 久久综合操 | 国产精品va在线观看不 | 一二三区在线视频 | 日韩高清性爽一级毛片免费 | 五月婷婷激情在线 | 国产精品久久久久久久久 | 天堂网中文在线最新版 | 亚洲一一在线 | 在线观看免费视频国产 | 视频精品一区二区三区 | 国产综合视频在线观看 | 国产偷窥女洗浴在线观看亚洲 | 亚洲mv在线观看 | 色免费视频 | 欧洲国产精品精华液 | 免费播放一区二区三区 | 亚洲高清资源 | 黄色超污网站 | 天天激情| 伊人久久大香线蕉综合亚洲 | 欧美aaaaa性bbbbb小妇 | 日本在线不卡一区 | 国产伦精品一区二区三区在线观看 | 久草老司机 | 美女免费视频是黄的 | 手机看片自拍自自拍日韩免费 | 日本大片免aaa费观看视频 | 亚洲午夜视频在线观看 | 欧美午夜性刺激在线观看免费 |