




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于DS12C887的多功能電子鐘設計的說明書摘要本系統名為基于DS12C887的多功能電子鐘,以STC公司的STC89C5xRC系列單片機作為主控芯片。采用了實時時鐘芯片DS12C887,走時精確,具有鬧鐘等多種功能。采用12864 LCD作為顯示輸出,可以同時顯示時間、日期、室溫、節日等內容,可視化的圖形菜單便于操作。同時采用了ISD4002語音芯片,實現了語音報時功能。一、方案的設計與選擇方案一:DS1302+數碼管這屆電子設計大賽其實在暑假前就已經開始,當時決定參賽的我在大賽的指定課題中選擇了電子鐘這個題目,并嘗試制作。我當時選擇的方案就是DS1302+數碼管。在暑假中我完成了這個設計
2、。基于數碼管+DS1302設計的多功能電子鐘應該說這個方案在電子鐘制作中應用最多。DS1302的使用非常方便,而且價格也不貴。而數碼管顯示的也很清楚,特別是顯示時間時很直觀。但在制作過程中我發現了這個方案的一些問題。DS1302是不自帶電池,雖然可以通過外接紐扣電池來達到斷電走時繼續的目的,但在實際調試中會發現這是比較困難的。因為DS1302上電需要復位,而復位就會把正確的走時清零。如果不復位,DS1302會出現各種各樣的問題,如不走時、讀出亂碼等。要解決這個問題需要增加如2402等存儲器,上電后先存儲時間值,再復位。這么做無疑增加了電路設計和軟件設計的復雜度。而使用數碼管顯示,雖然價格便宜,
3、顯示效果好,但多位的數碼管在動態掃描的時候會出現閃爍。如果少用幾位,用切換的方法查看日期,溫度等信息又顯得麻煩。方案二:DS12C887+液晶屏采用DS12C887作為實時時鐘芯片,12864 LCD作為顯示輸出。DS12C887不僅自帶鋰電池而且內部帶有晶振,無需外接,使用方便。走時精度較高,帶有自動閏年補償功能。12864 LCD顯示的信息量很大,可以同時顯示時間、日期、室溫、節日等信息,而且和單片機的接口簡單。但DS12C887價格較高,管腳多,占用的IO口較多,不適合IO口數量緊缺的系統。而12864液晶屏的顯示響應較慢,編程較為復雜。方案三:單片機定時器+數碼管這種設計如今基本已被淘
4、汰,最大的問題在于一旦斷電就無法繼續走時。而且由于是依靠軟件編程利用定時器實現走時,所以走時精度不高。當然這個方案也有它的優點,就是價格便宜。為了達到最好的走時顯示的效果,同時為了鍛煉自己我選擇了方案二實現多功能電子設計鐘。二、硬件設計1.總體方案為了實現精確時鐘走時,室溫顯示,語音報時功能,系統運用了DS12C887,DS18B20,ISD4002等芯片。采用了51內核的STC89C5xRC作為控制芯片,應用12864液晶顯示屏作為顯示輸出。系統硬件原理框圖如下:單片機實時時鐘電路室溫采集電路鍵盤輸入語音報時電路顯示電路2.單元電路設計2.1 控制模塊電子鐘對控制器的要求并不高,51系列的單
5、片機完全可以勝任??紤]到下載程序的方便和價格等因素,我這次選擇了STC公司的51單片機作為系統的控制芯片。STC的STC89C5x系列全面兼容51單片機,價格便宜,抗干擾強。與其他51單片機相比它最大的特色是具有ISP下載功能,通過一片MAX232就可以很方便的實現程序的下載??紤]到程序較大的問題最后我使用了STC89C54RC。單片機最小系統:2.2 液晶顯示模塊本設計采用了12864 點陣的漢字圖形型液晶顯示模塊作為顯示輸出。此模塊的控制器為ST7920,可顯示漢字及圖形,內置 8192 個中文漢字(1616 點陣)、128 個字符(816 點陣)及64256點陣顯示RAM(GDRAM)
6、。可與 CPU 直接接口,提供兩種界面來連接微處理機:8-位并行及串行兩種連接方式。為了節省接口,我這次采用了串行連接方式,和單片機連接總共只需3根線,使用非常方便。此外,我還在對比度調整端加上了電位器,可以根據需要調節屏幕的對比度。液晶顯示模塊連接圖:2.3 實時時鐘模塊本設計采用DS12C887作為實時時鐘模塊芯片。DS12C887是美信公司生產的一鐘精確的實時時鐘芯片。在+25攝氏度的環境下運行每月誤差不超過1分鐘。內部集成了鋰電池和晶振,在沒有外部電源的情況下可工作10年。可計算到2100年前的秒、分、小時、星期、日期、月、年七種日歷信息并帶閏年補償。用二進制碼或BCD碼代表日歷和鬧鐘
7、信息。定時鬧鐘中斷輸出可以直接與單片機外部中斷相連,方便實現硬件鬧時中斷。此外DS12C887還有12和24小時兩種制式,12小時制式有AM和PM提示。而IO口支持MOTOROLA和INTEL兩種總線模式。本次設計采用MOTOROLA總線時序與單片機進行連接。使用時需將1腳懸空或接+5。實時時鐘模塊連接圖:2.4 室溫采集模塊室溫采集模塊中我們使用DS18B20來采集溫度信息。DS18B20應該說在如今的簡單溫度測量,溫度控制中使用最為廣泛的器件。它不同于普通的傳感器,輸出的是模擬量,需要通過ADC轉換來接口控制器。它是數字傳感器,可以直接輸出數字量,直接輸出溫度值給單片機,無需轉換和計算。相
8、比其他器件,DS18B20適應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數據線供電。DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。測量溫度范圍55125,在-10+85時精度為0.5可編程的分辨率為912位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫。在9位分辨率時最多在 93.75ms內把溫度轉換為數字,12位分辨率時最多在750ms內把溫度值轉換為數字,速度更快。此外DS18B20具有獨特的單線接口方式,在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。室
9、溫采集模塊連接圖:2.5 語音報時模塊為了實現語音報時功能,使用的語音芯片就必須可以和控制器配合使用實現尋址錄放功能。而且還要滿足一定的存儲容量和分段數目的要求。在查閱了大量資料,做了大量比較、篩選的基礎上,我選擇了ISD4002這款語音芯片。美國ISD公司生產的4002系列單片語音錄放芯片采用直接模擬量存貯技術,音質好,信息存放在芯片內部FLASHRAM中,抗斷電,無需專用語音開發工具,能隨意更改內容。采用2.73.3V電源,耗電量低,具有120s的錄放時間,可以和單片機通過SPI串行接口通訊。ISD4002是2.73.3V供電,所以我用了一片KIA1117-3.3對輸入的5V電壓進行穩壓。
10、又由于ISD4002音頻輸出端的驅動能力較弱,所以我用L386在輸出端加了級語音放大電路,以驅動一個4W的小喇叭。而為是實現音頻的錄入,我在輸入端又加了咪頭以及相應的放大電路。語音報時模塊連接圖:三、軟件設計1.主程序本次設計以STC89C54RC單片機為控制器,在Keil uVision2開發環境中,采用C語言對單片機進行編程。主程序主要起導向和決策的作用,它控制整個系統協調穩定的運作。系統各種功能主要通過調用具體的底層驅動函數和子程序來實現。系統程序流程圖:開始鬧鐘提示,蜂鳴器響語音報時系統初始化有無按鍵按下時間調整按鍵1讀取時間、溫度、鬧鐘時間、溫度顯示判斷鍵值NOYES菜單按鍵6判斷選
11、項日歷鬧鐘設置返回定時器2外部中斷12.底層驅動函數2.1 12864 LCD底層驅動程序本次使用的12864 液晶模塊采用的控制器為ST7920,自帶漢字庫。支持并行、串行兩種數據傳輸方式。為了減少管腳的使用數量,我們采用了串行傳輸方式和單片機進行通訊。一個完整的串行傳輸周期由一下部分組成:首先送入啟動字節,送入 5 個連續的“1”用來啟動一個周期,此時傳輸計數被重置,并且串行傳輸被同步。緊接的兩個位指定傳輸方向(RW,確定讀還是寫)和傳輸性質(RS,確定是命令寄存器還是數據寄存器) ,最后的第八位是一個“0” 。 送完啟動字節之后,可以送入指令或是顯示數據(或是字型代碼) 。指令或者代碼是
12、以字節為單位的,每個字節的內容(指令或數據)在被送入時分為兩個字節來處理: 高四位放在第一個字節的高四位, 低四位放在第二個字節的高四位。無關位都補“0” 。串行通訊時序圖:12864 LCD的底層驅動分為驅動子函數和功能子函數(需要說明的是,后面的驅動程序都可以分成這兩種類型。前一種是最底層,硬件層,根據相應的協議,時序編程控制單片機引腳實現和單片機的通訊。后一種是功能層,是在前一種的基礎上加上相應的指令使之具有具體功能)。驅動子程序根據時序嚴格編寫就可以。功能子程序根據液晶模塊控制器ST7920的指令編寫,可以供主程序直接調用。ST7920控制器的指令分為基本指令和擴充指令兩種,不同指令的
13、組合既可以實現相應的功能。液晶模塊底層驅動的功能子函數共有以下7個。LcmInit(void);/液晶復位函數LcmClearTXT(void);/文字清除函數LcmClearBMP(void);/圖片清除函數WriteCommand(unsigneg int);/ 寫命令函數PutStr(unsigned char row,unsigned char col,unsigned char *puts);/字符顯示函數PutStrone(unsigned char row,unsigned char col,unsigned char *puts);/字節顯示函數PutBMP(unsigned
14、char n,unsigned char m,unsigned char z,unsigned char y,unsigned char *put);/圖片顯示函數在主程序中調用這些子程序,實現時鐘、溫度、圖標、菜單、文字提示信息在液晶屏上的顯示。部分代碼如下: /鬧鐘頁面LcmClearBMP();LcmClearTXT();PutBMP(16,2,0x90,0x82,Temp_Alarm);PutBMP(16,2,0x90,0x84,Temp_Alarm);PutStr(0,0,Show_alarm1);PutStr(2,0,Show_alarm2);PutStr(3,0,Show_bac
15、k);PutStr(3,6,Show_next);2.2 DS12C887底層驅動程序DS12C887是一款非常好用的時鐘芯片,由于數據是并行傳輸方式,所以操作十分簡單,對時序的要求也不是很嚴格。DS12C887與單片機的通信支持MOTOROLA和INTEL兩種總線模式。我們使用了MOTOROLA模式。共需AS、CS、DS、R/W四個端口。AS為地址選通輸入,CS為片選信號輸入,DS為數據選通脈沖,R/W為讀/寫輸入。對四個端口的具體操作要求如下:根據操作要求編寫相應的寫數據、讀數據函數就可以用單片機操作DS12C887了。DS12C887部分底層驅動代碼如下:void write_ds(uc
16、har add,uchar date)/在DS12C887相應地址寫入命令或數據cs=0;as=1;ds=1;rw=1;P1=add;as=0;rw=0;P1=date;rw=1;as=1;cs=1;uchar read_ds(uchar add)/讀出DS12C887的數據,如時、分、秒uchar ds_date;cs=0;ds=1;as=1;rw=1;P1=add;as=0;ds=0;P1=0xff;ds_date=P1;ds=1;as=1;cs=1;return ds_date;DS12C887的時鐘、日歷信息存放在對應的寄存器中,共有BCD和二進制兩種數據模式,根據需要對其進行讀寫操作
17、即可。在實際應用我們讀取的是二進制模式下的數據。DS12C887上電即可自動走時,不需要對其進行初始化。但必須注意的是,在首次使用DS12C887時,即使A、B寄存器的默認設置滿足使用要求也必須對其重新設置一遍,以后就不必了。2.3 DS18B20底層驅動程序DS18B20是一款單總線結構的數字傳感器,和單片機連接時僅需要一條口線即可實現單片機與DS18B20的雙向通訊。所以對DS18B20的操作時序要求就比較高了。根據DS18B20的通訊協議,單片機控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行復位操作,復位成功后發送一條ROM指令,最后發送RAM指令
18、,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數據線下拉500微秒,然后釋放,當DS18B20收到信號后等待1660微秒左右,后發出60240微秒的存在低脈沖,主CPU收到此信號表示復位成功。DS18B20的ROM、RAM指令如下:ROM指令表指 令 約定代碼功 能讀ROM33H讀DS1820溫度傳感器ROM中的編碼(即64位地址) 符合 ROM55H發出此命令之后,接著發出 64 位 ROM 編碼,訪問單總線上與該編碼相對應的 DS1820 使之作出響應,為下一步對該 DS1820 的讀寫作準備。 搜索 ROM0FOH用于確定掛接在同一總線上 DS1820 的個數和識別 64
19、位 ROM 地址。為操作各器件作好準備。 跳過 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 發溫度變換命令。適用于單片工作。告警搜索命令0ECH執行后只有溫度超過設定值上限或下限的片子才做出響應。RAM指令表溫度變換44H啟動DS1820進行溫度轉換,12位轉換時最長為750ms(9位為93.75ms)。結果存入內部9字節RAM中。 讀暫存器0BEH讀內部RAM中9字節的內容 寫暫存器4EH發出向內部RAM的3、4字節寫上、下限溫度數據命令,緊跟該命令之后,是傳送兩字節的數據。 復制暫存器48H將RAM中第3 、4字節的內容復制到EEPROM中。 重調EEPROM0B8H
20、將EEPROM中內容恢復到RAM中的第3 、4字節。讀供電方式0B4H讀DS1820的供電模式。寄生供電時DS1820發送“ 0 ”,外接電源供電 DS1820發送“ 1 ”。DS18B20共有9位、10位、11位、12位四種溫度精度,默認12位,我們使用了默認的12位。從DS18B20高速暫存存儲器讀取到的數據的第0個,第1個字節分別對應溫度值的低位和高位,處理后即可得到實際溫度值。DS18B20底層驅動部分代碼如下:/讀一個字節unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0
21、;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; delay2(5); return(dat);/寫一個字節void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay2(5); DQ = 1; dat=1; delay2(5);2.4 ISD4002底層驅動程序ISD4002與單片機按SPI總線方式進行連接。由于51單片機不帶SPI總線接口。所以需要通過模擬SPI總線接口進行通
22、訊。SPI通訊時序如下:在實際編程中,為了降低程序復雜度,我沒有使用MISO來進行校驗,只是通過延時來控制時序。從應用效果來看,程序的穩定性還是很高的。ISD4002底層驅動部分代碼如下:void delayus(unsigned int t) /延遲n毫秒 int i; for(i=0;it;i+); /*/ISD4002 spi串行發送子程序,8位數據/*void spi_send(unsigned char isdx) unsigned char isx_counter;SS=0; /ss=0,打開spi通信端SCLK=0;for(isx_counter=0;isx_counter1;
23、SCLK=1; delayus(25); SCLK=0; delayus(25); 由于ISD4002里的語音信息需要錄制,所以我另外編寫了一段ISD4002燒寫程序,這段代碼不在單片機中。需要更改ISD4002內的語音信息時,單獨燒寫使用。為了實現語音報時功能,我把時間信息分成了15段分別錄制在ISD4002中,它們分別是:“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“十”“點”“分”“整”“北京時間”。報時時根據時間計算出相應的地址組合,調出ISD4002中對應的語音信息。部分報時代碼如下:switch (shi1) case 0: break; case 1: isd_pu(); isd_setplay(0x64,0x00); delayus(5); /發送0x0000h地址的setplay指令 isd_play(); /發送rec指 delayms(190); isd_stop(); delayms(25); break; case 2: isd_pu(); isd_setplay(0x14,0x00); delayus(5); /發送0x0000h地址的setplay指令 isd_play(); /發送rec指 delayms(190);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年尾礦綜合利用技術突破與生態修復模式探索報告
- 2025年制造業智能化生產線生產數據安全研究報告
- 內蒙古興安盟2025屆七下英語期末調研模擬試題含答案
- 江蘇省淮安市清江浦區2025年英語八年級第二學期期末聯考試題含答案
- 閱讀教育實施成果與策略優化
- 家庭教育促進法解讀(小學生版)
- 公正主題班會課課件
- 2024版經導管主動脈瓣置換術臨床路徑專家共識解讀
- 2020年內蒙古自治區消防應急燈具產品質量監督抽查方案
- 八年級家長會課件教學
- 2025年湖北高考真題化學試題(解析版)
- 2025-2030年中國停車場行業市場現狀供需分析及投資評估規劃分析研究報告
- 林業碳匯項目開發流程與審核要點
- 安徽宣城職業技術學院招聘筆試真題2024
- 2025西山煤電井下崗位高校畢業生招聘500人(山西)筆試參考題庫附帶答案詳解
- 排污許可證申請流程
- 藥具培訓培訓試題及答案
- 重慶市大渡口區2023-2024學年四年級下學期數學期末測試卷(含答案)
- 2025年高考全國一卷寫作范文4篇
- 2025年人教版七年級下冊生物期末檢測試卷及答案
- 2024年貴州省貴陽市中考生物試題(含答案逐題解析)
評論
0/150
提交評論