国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

8051單片機(jī)Proteus仿真與開(kāi)發(fā)實(shí)例-DS1302 RTC驅(qū)動(dòng)仿真

arashicage / 1153人閱讀

摘要:它通過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。對(duì)于少于天的月份,月末日期會(huì)自動(dòng)調(diào)整,包括閏年的更正。通過(guò)使用同步串行通信簡(jiǎn)化了與微處理器的接口。否則寫(xiě)入將被禁用。讀取操作后立即發(fā)送的附加脈沖,數(shù)據(jù)將再次可供讀取。

DS1302 RTC驅(qū)動(dòng)仿真

1、DS1302介紹

DS1302 涓流充電計(jì)時(shí)芯片包含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和 31 字節(jié)的靜態(tài) RAM。它通過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、小時(shí)、日、日、月和年信息。對(duì)于少于 31 天的月份,月末日期會(huì)自動(dòng)調(diào)整,包括閏年的更正。時(shí)鐘以 24 小時(shí)或 12 小時(shí)格式運(yùn)行,帶有 AM/PM 指示器。

通過(guò)使用同步串行通信簡(jiǎn)化了 DS1302 與微處理器的接口。與時(shí)鐘/RAM 通信只需要三根線:CE( R S T /over RST RST?)、I/O(數(shù)據(jù)線)和 SCLK(串行時(shí)鐘)。數(shù)據(jù)可以一次 1 個(gè)字節(jié)或最多 31 個(gè)字節(jié)的突發(fā)傳輸?shù)綍r(shí)鐘/RAM 或從時(shí)鐘/RAM 傳輸。 DS1302 旨在以極低的功耗運(yùn)行,并以低于 1μW 的功率保留數(shù)據(jù)和時(shí)鐘信息。 DS1302 是 DS1202 的后繼產(chǎn)品。除了 DS1202 的基本計(jì)時(shí)功能外,DS1302 還具有用于主電源和備用電源的雙電源引腳、用于 VCC1 的可編程涓流充電器和七個(gè)額外字節(jié)的暫存器存儲(chǔ)器的附加功能。

1)DS1302的命令組成

  • Bit7 必須始終為邏輯 1。否則寫(xiě)入 DS1302 將被禁用。
  • Bit6 指定時(shí)鐘/日歷或 RAM 選擇。 如果它是 logic0 我們與時(shí)鐘交談,或者如果它是 logic1 我們與 RAM 交談。
  • 位 5 至 1 指定要輸入或輸出的指定寄存器。 (地址)
  • Bit0 指定對(duì) DS1302 的寫(xiě)或讀操作。 如果是邏輯 0 則執(zhí)行寫(xiě)操作,如果是邏輯 1 則執(zhí)行讀操作。
  • 命令字節(jié)總是從 LSB 開(kāi)始(Bit0)。

2)DS1302數(shù)據(jù)傳輸過(guò)程

  • 在開(kāi)始傳輸任何內(nèi)容之前,必須將 CE 引腳拉高,以便與芯片通話。 (選擇)

  • 之后,發(fā)送命令字節(jié),通知 DS1302 將進(jìn)行的操作。 (無(wú)論是讀還是寫(xiě),對(duì)時(shí)鐘還是 RAM。)

  • 然后,如果執(zhí)行寫(xiě)操作,則將要寫(xiě)入的數(shù)據(jù)發(fā)送到 RAM 或時(shí)鐘中,或者如果執(zhí)行讀操作,則可以
    從時(shí)鐘或 RAM 中讀取數(shù)據(jù)。

如果從 DS1302 讀取數(shù)據(jù),則在寫(xiě)入命令字節(jié)的最后一位后的第一個(gè)下降沿上,數(shù)據(jù)將可用。相反,寫(xiě)入 DS1302 發(fā)生在命令字節(jié)傳輸后的低電平到高電平轉(zhuǎn)換。要記住的四個(gè)注意事項(xiàng),是所有發(fā)送和接收字節(jié)都是 LSB 優(yōu)先,在命令字節(jié)和數(shù)據(jù)字節(jié)之后的寫(xiě)操作中發(fā)送到 DS1302 的附加 SCLK 脈沖將被忽略。

讀取操作后立即發(fā)送的附加 SCLK 脈沖,數(shù)據(jù)將再次可供讀取。最后,當(dāng)與 DS1302 通信時(shí),微控制器的時(shí)鐘應(yīng)處于 2MHZ 的最大速度,如下面的數(shù)據(jù)表所示。如果使用不同的速度,那么必須校準(zhǔn)頻率以滿足 DS1302 的需要,并將其重新校準(zhǔn)為之前的頻率。

3)DS1302設(shè)置

DS1302的寄存器如下:

從左邊開(kāi)始,前兩列是指命令字節(jié)。 是否要讀取或?qū)懭?RTC 或 RAM。從 (bit7 到 bit0) 的列是指它將在 RTC 或 RAM 中傳輸?shù)臄?shù)據(jù)字節(jié)。

2、仿真電路原理圖

3、仿真代碼實(shí)現(xiàn)

1)發(fā)送數(shù)據(jù)

// 發(fā)送一位節(jié)數(shù)據(jù)void ds1302_send(unsigned char byte_t) {		unsigned char mask = 0x01;					IO_OUT(DS1302_DDR, DS1302_SIO);				do {		IO_CLR(DS1302_PORT, DS1302_SCK);				if (byte_t & mask) IO_SET(DS1302_PORT, DS1302_SIO);			else IO_CLR(DS1302_PORT, DS1302_SIO);						IO_SET(DS1302_PORT, DS1302_SCK);			mask = mask << 1;						} while (mask);	IO_CLR(DS1302_PORT, DS1302_SCK);}// 向指定寄存寫(xiě)數(shù)據(jù)void ds1302_write(unsigned char ch, unsigned char byte_t) {	ds1302_select(DS1302_CS);					ds1302_send(ch | DS1302_CMD_WRITE);			ds1302_send(byte_t);	ds1302_deselect(DS1302_CS);				}

2)讀數(shù)據(jù)

// 讀取一位數(shù)據(jù)unsigned char ds1302_get(void) {				unsigned char mask = 0x01;					unsigned char tmp = 0x00;					IO_IN(DS1302_DDR, DS1302_SIO);				do {		IO_CLR(DS1302_PORT, DS1302_SCK);			NOP(); NOP();		if (DS1302_PORT_IN & DS1302_SIO) tmp |= mask;			else tmp |= 0x00;							IO_SET(DS1302_PORT, DS1302_SCK);			mask = mask << 1;						} while (mask);	IO_CLR(DS1302_PORT, DS1302_SCK);	return tmp;}// 讀指定寄存器數(shù)據(jù)unsigned char ds1302_read(unsigned char ch) {	unsigned char tmp;	ds1302_select(DS1302_CS);					ds1302_send(ch | DS1302_CMD_READ);			tmp = ds1302_get();	ds1302_deselect(DS1302_CS);					return tmp;				}

3)年、月、日、時(shí)、分秒設(shè)置與讀取

// 秒設(shè)置與讀取#define ds1302_sec_write(n)					ds1302_write(DS1302_SEC, (n))	#define ds1302_sec_read()					ds1302_read(DS1302_SEC)	// 分設(shè)置與讀取#define ds1302_min_write(n)					ds1302_write(DS1302_MIN, (n))	#define ds1302_min_read()					ds1302_read(DS1302_MIN)			// 時(shí)設(shè)置與讀取#define ds1302_hour_write(n)				ds1302_write(DS1302_HOUR, (n))#define ds1302_hour_read()					ds1302_read(DS1302_HOUR)		// 一個(gè)月的日設(shè)置與讀取#define ds1302_mdat_write(n)				ds1302_write(DS1302_MDAT, (n))	#define ds1302_mdat_read()					ds1302_read(DS1302_MDAT)		// 月讀取與設(shè)置#define ds1302_mon_write(n)					ds1302_write(DS1302_MON, (n))	#define ds1302_mon_read()					ds1302_read(DS1302_MON)			// 一周的日設(shè)置與讀取#define ds1302_wday_write(n)				ds1302_write(DS1302_WDAY, (n))#define ds1302_wday_read()					ds1302_read(DS1302_WDAY)// 年的設(shè)置與讀取#define ds1302_year_write(n)				ds1302_write(DS1302_YEAR, (n))#define ds1302_year_read()					ds1302_read(DS1302_YEAR)

4)主程序

//#include 							//we use keil c51#include "gpio.h"#include "delay.h"#include "ds1302.h"#include "uart.h"#include "i2c_sw.h"#include unsigned int year,month,day,hours,minutes,seconds;void mcu_init(void) {	uart_init();	ds1302_init();	// 初始讀取	year = ds1302_year_read();  month = ds1302_mon_read();  day = ds1302_mdat_read();  hours = ds1302_hour_read();  minutes = ds1302_min_read();  seconds = ds1302_sec_read();}int main(void) {	mcu_init();								//reset the mcu	uart_send_str("****DS1302****/r/n");	while (1) {		year = ds1302_year_read();    month = ds1302_mon_read();    day = ds1302_mdat_read();    hours = ds1302_hour_read();    minutes = ds1302_min_read();    seconds = ds1302_sec_read();				printf("%d-%d-%d %d:%d:%d/r/n",BCD2DEC(year),BCD2DEC(month),BCD2DEC(day),BCD2DEC(hours),BCD2DEC(minutes),BCD2DEC(seconds));				delay_ms(1000);	}}

4、仿真結(jié)果

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/122501.html

相關(guān)文章

  • 華南理工大學(xué)基地二輪作品制作——藍(lán)牙電子時(shí)鐘

    摘要:當(dāng)小于時(shí),由供電讀數(shù)據(jù)工作時(shí)序單字節(jié)寫(xiě)入上升沿置高電平,下降沿置低電平。當(dāng)總線控制器把數(shù)據(jù)線從高電平拉到低電平時(shí),讀時(shí)序開(kāi)始,數(shù)據(jù)線必須至少保持然后總線被釋放見(jiàn)圖。因此,總線控制器在讀時(shí)序開(kāi)始后必須停止把腳驅(qū)動(dòng)為低電平以讀取腳狀態(tài)。 目錄 一、前言 二、總體的設(shè)計(jì)思路 (一)使用器材 (二...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 片機(jī)的一些入門(mén)知識(shí)學(xué)習(xí)資料

    摘要:現(xiàn)在,單片機(jī)的名稱不再是特指公司推出的系列單片機(jī),而是對(duì)兼容英特爾指令系統(tǒng)的單片機(jī)的統(tǒng)稱。單片機(jī)主要品牌及其產(chǎn)品英特爾,等艾特梅爾,,等飛利浦華邦達(dá)拉斯西門(mén)子等公司的許多產(chǎn)品宏晶系列系列系列等。 ...

    wwq0327 評(píng)論0 收藏0
  • 基于藍(lán)牙的超聲波無(wú)線測(cè)距系統(tǒng)

    摘要:設(shè)計(jì)簡(jiǎn)介本設(shè)計(jì)是基于藍(lán)牙的超聲波無(wú)線測(cè)距的設(shè)計(jì),主要實(shí)現(xiàn)以下功能實(shí)現(xiàn)通過(guò)測(cè)量當(dāng)前溫度值實(shí)現(xiàn)通過(guò)溫差補(bǔ)償法公式修改超聲波在當(dāng)前空氣中的傳播速度實(shí)現(xiàn)通過(guò)超聲波傳感器測(cè)量距離值。 設(shè)計(jì)簡(jiǎn)介: 本設(shè)計(jì)是基于藍(lán)牙的超聲波無(wú)線測(cè)距的設(shè)計(jì),主要實(shí)現(xiàn)以下功能: ① 實(shí)現(xiàn)通過(guò)DS18B20測(cè)量當(dāng)前溫度值 ② ...

    zxhaaa 評(píng)論0 收藏0
  • 片機(jī)驅(qū)動(dòng)能力對(duì)點(diǎn)亮LED燈的影響

    摘要:可是在現(xiàn)實(shí)操作過(guò)程中總有一種方式出現(xiàn)問(wèn)題,這就不得不提到現(xiàn)實(shí)情況下單片機(jī)的驅(qū)動(dòng)能力對(duì)實(shí)驗(yàn)結(jié)果的影響。但是在現(xiàn)實(shí)中由于單片機(jī)驅(qū)動(dòng)能力的影響往往第一種是無(wú)法點(diǎn)亮燈的。 一、LED燈與單片機(jī)的連接方式 ? ? ? ? ?在proteus仿真中,無(wú)論LED燈是負(fù)極連接IO端口,正極通過(guò)電阻連接VCC...

    learning 評(píng)論0 收藏0
  • 基于片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng)

    摘要:設(shè)計(jì)簡(jiǎn)介本設(shè)計(jì)是基于單片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng),主要實(shí)現(xiàn)以下功能可通過(guò)顯示溫濕度光照強(qiáng)度窗簾狀態(tài)和模式可通過(guò)按鍵調(diào)整光照強(qiáng)度最小值可通過(guò)藍(lán)牙連接手機(jī)進(jìn)行遠(yuǎn)程控制可通過(guò)獲取溫濕度可通過(guò)光敏電阻獲取光照強(qiáng)度。 設(shè)計(jì)簡(jiǎn)介: 本設(shè)計(jì)是基于單片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng),主要實(shí)現(xiàn)以下功能: 可通過(guò)LC...

    lowett 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<