51_單片機多功能電子時鐘的設(shè)計_第1頁
51_單片機多功能電子時鐘的設(shè)計_第2頁
51_單片機多功能電子時鐘的設(shè)計_第3頁
51_單片機多功能電子時鐘的設(shè)計_第4頁
51_單片機多功能電子時鐘的設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

51單片機多功能電子時鐘的設(shè)計 摘要: 本設(shè)計開發(fā)了一款具有日期、時間、星期和氣溫同步顯示功能的電子時鐘 .工作原理是主控 MCU 讀取實時時鐘芯片 DS12C887,獲取時間信息,由全數(shù)字單總線結(jié)構(gòu)溫度傳感器 DS18B20 讀取溫度信息,經(jīng) MCU 處理,送 LCD 顯示, 關(guān)鍵字 : DS12C887 DS18B20 電子時鐘 1. 課題分析 隨著電子技術(shù)的發(fā)展,電子技術(shù)為人們的生活帶來了越來越大的方便 .本課題旨在借助實時時鐘芯片 DS12C887和溫度傳感器 DS18B20 和 51單片機設(shè)計一個多功能的電子時鐘 .由于 DS12C887 芯片內(nèi)附加鋰電池,在上電情況下可以通過電源充電,斷電后可以利用內(nèi)部鋰電池供電繼續(xù)工作,在掉電重新上電后,不影響時間數(shù)據(jù),不需重新對時,方便可靠 . 2. 方案論證 當(dāng)下,日歷芯片很多,萬年歷實現(xiàn)方案很多,我們根據(jù)自己實際情況,提出如下方案 . 2.1 時間部分: 方案一、利用單片機內(nèi)部定時器產(chǎn)生秒信號,通過軟件處理得到時間信息,送 LCD 顯示 . 方案二、利用通用串行實時時鐘芯片 DS1302 產(chǎn)生時間信息,利用 MCU 讀取時間信息,送LCD 顯示 . 方案三、通過實時時 鐘芯片 DS12887,獲取時間信息,經(jīng) MCU 處理,送 LCD 顯示 . 方案一電路結(jié)構(gòu)簡單,可控性強,但斷電后時間數(shù)據(jù)完全消失,再次上電后需重新設(shè)定,且由于電路本身缺陷和附加干擾較多,時間誤差較大 .方案二電路結(jié)構(gòu)簡單,時間精度較高,由于使用串行數(shù)據(jù)傳輸,節(jié)省 MCU 資源,但 DS1302 無內(nèi)置電池,掉電后,數(shù)據(jù)丟失,重新上電后需對時 .方案三采用實時時鐘芯片 DS12C887,其內(nèi)部具有內(nèi)置鋰電池,在掉電的情況下可以正常工作 10 年以上,且?guī)в蟹且资?RAM,可以保證在掉電的情況下,用戶的定時信息不會丟失;帶有溫度補償,保 證時間數(shù)據(jù)的準(zhǔn)確 .經(jīng)過綜合考慮,我們認為方案三滿足設(shè)計需求 . 2.2 溫度部分 由于只是測量氣溫,用數(shù)字溫度傳感器單總線結(jié)構(gòu) DS18B20 即可滿足要求,該器件采用單總線結(jié)構(gòu),且數(shù)字傳輸,可以與 CPU 直接接口,電路結(jié)構(gòu)簡便,可靠性好 . 2.3 主控部分 選用單片微控制器 AT89C52 作為主控 .系統(tǒng)方案方框圖如圖 2.1 所示 . 圖 2.1 系統(tǒng)方案 3.方案實現(xiàn) 3 1 器件簡介 (1)AT89C52 AT89C52 是 ATMEL 公司生產(chǎn)的通用低功耗 8位 CMOS 微控器,具有 8051 內(nèi)核和 8KB 的可編程 Flash 程序存儲空間以及 256 字節(jié) RAM.有 32 個通用 IO 口線和全雙工串口,兩個數(shù)據(jù)指針、兩個 16 位可編程計數(shù)器 /定時器、 8 個 2 級優(yōu)先級中斷源,具有片內(nèi)時鐘電路,通過簡單的外接器件即可實現(xiàn)時鐘電路 . (2)DS12C887 引腳結(jié)構(gòu)及其功能如圖 3.1. 圖 3.1 DS12C887 引腳結(jié)構(gòu) AD0-AD7:地址 /數(shù)據(jù)總線 NC :空腳 MOT :總線模式選擇 CS :片選信號 AS :地址鎖存信號 R/W :寫信號( intel 總線模式下) DS :讀信號( intel 總線模式下) RESET :復(fù)位信號 IRQ : 中斷請求輸岀 VCC : +5V 電源 GND :電源地 DS12C887是美國 DALLAS半導(dǎo)體公司生產(chǎn)的實時時鐘芯片 .采用 24 引腳雙列直插式的封裝形式 .芯片的晶體振蕩器、振蕩電路、充電電路和可充電鋰電池等一起封裝在芯片內(nèi)部,組成一個加厚的集成電路模塊 .電路通電時,其內(nèi)部充電電路便自動對其內(nèi)部電池充電 .可保證時鐘數(shù)據(jù) 10 年內(nèi)不會丟失 .DS12C887內(nèi)部設(shè)有方便的接口電路,接口設(shè)計簡便,使其與各種微處理器的接口大大簡化 .使用時無需外圍電路元件,通過對 MOT 引腳的電平控制,可以實現(xiàn)與不同的計算機總線連接 .DS12C887 能夠自 動存取并更新當(dāng)前的時間, CPU 可通過讀取 DS12C887 的內(nèi)部時標(biāo)寄存器得到當(dāng)前的時間和日歷,也可通過選擇二進制碼或 BCD 碼初始化芯片的 10 個時標(biāo)寄存器 .其中 114 字節(jié)的非易失性靜態(tài) RAM 可供用戶使用,可以在控制器掉電的情況下,保存一些重要的數(shù)據(jù) .DS12C887 的 4 個狀態(tài)寄存器用來控制和指出 DS12C887 模塊當(dāng)前的工作狀態(tài),除數(shù)據(jù)更新周期外,程序可隨時讀寫這 4 個寄存器 .其內(nèi)部結(jié)構(gòu)如下圖 3.2. 圖 3.2 DS12C887 內(nèi)部結(jié)構(gòu) (3)DS18B20 DS18B20 是美國 DALLAS 半導(dǎo)體公司生產(chǎn)的可組網(wǎng)數(shù)字式溫度傳感器,在其內(nèi)部使用了在板( ON-B0ARD)專利技術(shù) .全部傳感元件及轉(zhuǎn)換電路僅集成在形如三極管的一個集成電路內(nèi) .DS18B20 采用單總線接口方式,與微處理器連接時僅需要一條總線即可實現(xiàn)微處理器與 DS18B20 的雙向通訊;支持多點組網(wǎng)功能,多個 DS18B20 可以并聯(lián)在一條總 線上,即可實現(xiàn)多點測溫;在使用中不需要任何外圍元件 .測溫范圍為 55 125,結(jié)果以 9 位數(shù)字量方式串行傳送 .DS18B20 測溫原理如圖 3.3 所示 . 圖 3.3 DS18B20 內(nèi)部結(jié)構(gòu) 圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器 1.高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn) 生的信號作為計數(shù)器 2 的脈沖輸入 .計數(shù)器 1和溫度寄存器被預(yù)置在 55所對應(yīng)的一個基數(shù)值 .計數(shù)器 1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)計數(shù)器 1 的預(yù)置值減到 0 時,溫度寄存器的值將加 1 ,計數(shù)器 1 的預(yù)置將重新被裝入,計數(shù)器 1 重新開始對低溫度系數(shù)晶體振蕩器產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器 2 計數(shù)到 0 時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度 .其內(nèi)部帶有非線性修正,確保溫度數(shù)據(jù)的準(zhǔn)確性 .DS18B20的測溫分辨率為 0.5以 9位數(shù)據(jù)格式表示,其中最低有效位( LSB)由比較器進行 0.25比較,當(dāng)計數(shù)器 1 中的余值轉(zhuǎn)化成溫度后低于 0.25時,清除溫度寄存器的最低位( LSB),當(dāng)計數(shù)器 1 中的余值轉(zhuǎn)化成溫度后高于 0.25,置位溫度寄存器的最低位( LSB), DS18B20 溫度數(shù)據(jù)格式如表 3.1 所示 . 表 3.1 DS18B20 溫度數(shù)據(jù)格式 DS18B20 采用 12 位二進制數(shù)據(jù)表示溫度,分成兩 個字節(jié),低字節(jié)低四位為小數(shù)位,低字節(jié)高四位和高字節(jié)低四位組成溫度信息的 8 位整數(shù)位,其中第一位為符號位,為 0表示溫度為正值,為 1 表示溫度為負值 .當(dāng)溫度為負值時,數(shù)據(jù)采用補碼存放 .高字節(jié)高四位無效,與符號位保持一致 .溫度與數(shù)據(jù)對應(yīng)關(guān)系如表 3.2 所示 . 表 3.2 部分溫度對應(yīng)數(shù)據(jù) 3.2 硬件電路設(shè)計 本課題涉及電路原理圖和 PCB 圖均由 Altium Designer Summer 09 繪制 . (1)電源部分 圖 3.7 整機電源電路 由于電路微控器供電電壓為 5V, osyno6188 供電電壓為 3V 或 4.5V, osyno6188 對電源電壓精度要求不高,決定整機采用 5V 電源供電,在電源處串聯(lián)一只 1N4003 二極管,為osyno6188 供電, 1N4003 為硅管,正向?qū)▔航翟?0.7V 左右,經(jīng)過二極管后,得到約 4.3V電壓,為 osyno6188 供電 .電源電路為普通穩(wěn)壓電源電路,由于不是本項目主要方面,不再贅述 . (2)AT89C52 最小系統(tǒng)電路 圖 3.8 AT89C52 單片機最小系統(tǒng) 電路由震蕩電路,復(fù)位電路和單片 機構(gòu)成最小系統(tǒng) .震蕩電路為單片機提供工作時鐘,由石英晶體和補償電容構(gòu)成 .由于語音部分需要 1200bps 波特率,石英晶體選取11.0592MHz,保證波特率零誤差,補償電容選取 30pF 瓷片電容 .復(fù)位電路在上電時為單片機提供復(fù)位信號,由 10uF 電容和 10K 電阻構(gòu)成的 RC 充電電路構(gòu)成,當(dāng)系統(tǒng)復(fù)位上電瞬間,電源通過電阻 R 為電容充電,在電阻上得到下降的指數(shù)充電電壓,由高電平經(jīng)過一段時間到達低電平,提供單片機需要的高脈沖復(fù)位信號 .電源部分電容為去耦電容 .EA 拉高, MCU上電后,從內(nèi)部程序存儲器開始執(zhí)行 . (3)osyno6188 及外圍電路設(shè)計 . 圖 3.9 osyno6188 及外圍電路 系統(tǒng)采用 4.5V 電源供電模式,電源 VDD 由電源電路中 VCC 串接二極管后獲得 .電源電路、復(fù)位電路以及時鐘電路參考 osyno6188 用戶手冊 .RXD、 TXD 為串行總線接口,分別連接主控 MCU 的 TXD、 RXD 端 . (4)DS12C887 與 AT89C52 接口電 路設(shè)計 . 圖 3.10 DS12C887 接口電路 DS12C887 的 AD0-AD7 為地址 數(shù)據(jù)復(fù)用總線,與控制器地址 數(shù)據(jù)總線 (P0 口 )直接連接, R2 為上拉電阻; MOT 為總線模式選擇引腳,接地選擇 INTEL 總線連接方式; R/W 在 INTEL總線模式下位寫使能,接控制器讀信號 WR(P3.6)端; DS 在 INTEL 總線模式下為讀使能信號,接控制器讀信號 RD(P3.6)端; AS 為地址鎖存,接控制器地址鎖存信號 ALE(30 腳 )端;RST 接電源拉高 ,片選 CS 直接接地使能。 由于液晶顯示器、 DS18B20 與控制器接口比較簡單,不再分開論述。 整機電路圖如圖 3.11 所示 . 電路板采用單面板制作,電路板圖由 Altium Designer Summer 09 繪制 . 將 PCB 文件底層打印到轉(zhuǎn)印紙磨光面上,并按電路板大小留 1cm 左右邊緣裁剪備用 .把比電路板略大的覆銅板用細砂紙打磨干凈,并將轉(zhuǎn)印紙帶墨一面覆蓋到覆銅面上,一邊用膠帶粘牢,然后將粘膠帶一邊送入轉(zhuǎn)印機轉(zhuǎn)印,轉(zhuǎn)印完成后打孔,放入三氯化鐵溶液中腐蝕,大約 15 分鐘左右腐蝕完成,用清水沖洗,將焊盤處用小刀將油墨小心刮開,其余部分油墨不再處理,一是比較美觀,二是對銅膜具有保護作用,防止氧化 .焊接經(jīng)過檢測過的電子元件,制作完成 . 3.3 軟件設(shè)計 (1)功能分析 根據(jù)課題要求,軟件應(yīng)該能 實現(xiàn)以下功能: 1)驅(qū)動 LCD1602 顯示 . 2)從 DS12C887 中讀取時間數(shù)據(jù),并寫入調(diào)時信息和鬧鐘信息 . 3)掃描鍵盤,實現(xiàn)人機交互,滿足用戶調(diào)時、定鬧的需求 . 4)實現(xiàn)控制器與 DS18B20 單總線接口,讀取溫度信息 . (2)設(shè)計流程 本課題所有程序均由 C 語言編寫 .開發(fā)環(huán)境為 keil uvision2. 1)主程序設(shè)計 主程序流程圖如圖所示 圖 3.13 主程序流程圖 主程序作用是當(dāng)系統(tǒng)上電后,首先對系統(tǒng)進行初始化(包括 MCU 的串行通信設(shè)置和 LCD 的初始化)然后讀取時間信息和溫度信息,檢查是否需要更新時間緩沖存儲區(qū) ,如果系統(tǒng)處于正常顯示模式,則更新時間緩存區(qū),并同步顯示,若系統(tǒng)處于調(diào)整時間模式下,則停止對時間緩沖區(qū)的更新,顯示時間與時間緩存區(qū)同步,當(dāng)退出調(diào)時模式時,更新到 DS12C887的時標(biāo)寄存器中 .主程序還負責(zé)檢測當(dāng)前時間是否為整點或等于設(shè)定報時時間,在整點或定時時間調(diào)用報時函數(shù),實現(xiàn)整點報時和定時 2)DS12C887 接口程序 . DS12C887 與控制器通過總線連接,主控器采取讀寫外部存儲器的方法讀取時間信息和寫入調(diào)時和定時信息 .DS12C887 的時標(biāo)寄存器地址為 0-13 字節(jié) ,具體分布如圖所示 . 圖 3.14 DS12C887 存儲器結(jié)構(gòu) 其中 10-13 字節(jié)分別為寄存器 A-D.其中寄存器 C、 D 為只讀 . 寄存器 A 機構(gòu)如圖所示: 表 3.5 DS12C887 寄存器 A 結(jié)構(gòu) UIP 為更新標(biāo)志位,標(biāo)志芯片是否即將進行更新 .當(dāng) UIP 為 1 時,表明更新即將開始 ;為 0 時,表示在至少 244 s 內(nèi)芯片不會進行更新,此時可以通過讀寫相應(yīng)字節(jié)獲取時間信息和設(shè)置信息 .UIP 位為只讀位且不受復(fù)位信號 影響,通過把 B 寄存器中的 SET 位置 1將 UIP 位清零并禁止時間更新 .DV0-DV2 用來開關(guān)晶體振蕩器和復(fù)位分頻器 ,本課題中不需設(shè)置 .RS0-RS3 用于控制分頻器輸出,設(shè)置成不同的值可以在 SQW 引腳得到不同的分頻輸出或得到周期性的中斷 (通過控制寄存器 B 實現(xiàn) ).由于本設(shè)計不涉及,具體設(shè)置值與對應(yīng)頻率請參考 DS12C887 技術(shù)文檔 ,不在列舉 . 寄存器 B 結(jié)構(gòu)如圖所示 . 表 3.6 DS12C887 寄存器 B 結(jié)構(gòu) 當(dāng) SET位為 0時,時間正常更新;當(dāng) SET位置 1時,停止更新 ,此時, MUC可以對 DS12C887進行初始化,該位不受復(fù)位信號影響 .PIE 位為周期性中斷使能位,該位為 1 時,周期性中斷使能;為 0 時禁止中斷 .本課題中此位置 0.AIE 位為鬧鐘中斷使能位本課題中由于沒有使用中斷,該位置 0.UIE 為更新完成中斷使能位,本設(shè)計中不考慮 .SQWE 為方波使能信號,本設(shè)計不予處理 .DM 位為數(shù)據(jù)格式選擇位,置 1 時時間數(shù)據(jù)以二進制格式存放,清 0 后,數(shù)據(jù)以 BCD 碼格式存放 .24/12 位為時間格式設(shè)置位,該位為 1 時,時間為 24 小時格式,為 0 時,時間為 12 小時格式,該位不受復(fù)位信號影響 .DSE 為夏令時使能位,本設(shè)計不予考慮 寄存器 C 結(jié)構(gòu)如圖所示 . 表 3.7 DS12C887 寄存器 C 結(jié)構(gòu) 其中 4 個有效位均為中斷標(biāo)志,本設(shè)計不予考慮 ,但當(dāng)初始化完成并 禁止中斷時,應(yīng)將該寄存器讀取清 0. 寄存器 D 結(jié)構(gòu)如圖所示 表 3.8 DS12C887 寄存器 D 結(jié)構(gòu) VRT 位指示片內(nèi)鋰電池狀態(tài),當(dāng)為 0 時,說明內(nèi)部鋰電池耗盡,不能保證內(nèi)部 RAM 中數(shù)據(jù)和時間數(shù)據(jù)的正確性 .該位只讀 . 3)DS18B20 接口程序設(shè)計 . DS18B20 設(shè)置寄存器結(jié)構(gòu)如圖 3.9 所示 表 3.9 DS18B20 設(shè)置寄存器結(jié)構(gòu) 通過設(shè)置該寄存器中 R1、 R0 的不同狀態(tài),可以得到不同的溫度分辨率,分辨率越高,轉(zhuǎn)換所需時間也越長 (見圖 ).為簡便起見,本課題中采用系統(tǒng)復(fù)位后的默認值,即 R1R0=11,分辨率為 12 位數(shù)據(jù) .其余位為傳感器內(nèi)部使用,不能進行操作 . 表 3.9 DS18B20 控制寄存器 R0、 R1 設(shè)置與分辨率對應(yīng)關(guān)系 由于 DS18B20數(shù)據(jù)傳送采取單總線方式,所以對操作時序和操作步驟有著嚴格的要求,任何不符合步驟的操作,都可能造成 DS18B20 不響應(yīng) .每次在對 DS18B20 進行操作時,都要進行初始化 .初始化時序如圖所示: 圖 3.15 DS18B20 初始化時序圖 首先,控制器將總線拉低并保持 480 s,釋放總線,等待 15-60 s 后,如果復(fù)位成功, DS18B20 會將總線拉低,產(chǎn)生一個 60-240 s 的低脈沖,控制器通過檢測低脈沖信號確定復(fù)位是否成功 .復(fù)位成功后,在上拉電阻的作用下, DS18B20 會恢復(fù)到高電平靜止?fàn)顟B(tài) . 在靜止?fàn)顟B(tài),總線在內(nèi)部上拉電阻作用下,保持高電平 .當(dāng)控制器進行讀寫操作時,先將總線拉低 1 s 以 上, DS18B20 回應(yīng)一個高電平應(yīng)答信號,控制器檢測到應(yīng)答信號后,即可對總線進行操作 . 向 DS18B20 讀寫一位數(shù)據(jù)時序如圖所示: 圖 3.16 DS18B20 讀寫數(shù)據(jù)時序圖 寫” 0”時,控制器將總線拉低 30 s 以上即可,寫” 1”時,控制器將總線拉低 15 s,然后釋放總線 .讀數(shù)據(jù)時,控制器將總線拉低 15 s,然后 釋放總線并讀取總線上的數(shù)據(jù) . 4)LCD 顯示驅(qū)動程序 a.基本操作時序: 讀狀態(tài) : 輸入 :RS=L,RW=H,E=H 輸出 :D0-D8=狀態(tài)字 寫指令 : 輸入 :RS=L,RW=L,D0-D7=指令碼, E=高脈沖 輸出 :無 讀數(shù)據(jù) : 輸入 :RS=H,RW=H,E=H 輸出: D0-D7 數(shù)據(jù) 寫數(shù)據(jù):輸入: RS=H,RW=L,D0-D7=數(shù)據(jù), E=高脈沖 輸出 : 無 b.狀態(tài)字說明 STA7 STA6 STA5 STA4 STA3 STA2 STA1 STA0 D7 D6 D5 D4 D3 D2 D1 D0 表 3.10 LCD 狀態(tài)字寄存器結(jié)構(gòu) STA0-STA6:當(dāng)前數(shù)據(jù)地址指針的數(shù)值 STA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論