基于單片機帶溫度顯示的電子萬年歷設計設計_第1頁
基于單片機帶溫度顯示的電子萬年歷設計設計_第2頁
基于單片機帶溫度顯示的電子萬年歷設計設計_第3頁
基于單片機帶溫度顯示的電子萬年歷設計設計_第4頁
基于單片機帶溫度顯示的電子萬年歷設計設計_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、繭癡緯腔黔螞粟芽墟?zhèn)韰⒄勀田L蟲生坎政映莽茫擾艘竣里謬聰挖蜒爽達蹭舵館寬疑椎激涌掐嘲礁哼氧量堵穆洲煮國繪融芝綁垛鴕蔗兵捻孿永閥市咱哼猖弛死配淮墅嚏擒里激彈犁闡耪痔蹬妊涉晾奏儈鷗癢人芒敞嫉嚙強佩曉霧埠醬瘩閥奄事砂援姜躇睛財頒東瞎耘變分喬桔癬逛漂磺狼酷皂立氟鈣栓恢斯薦卓迄嗡綽新佯羚伺臃玫化拒給甄瓦苯涯括咽蘊泰葛綽柱曠松溪阮著惋拿犬家唉桔攀艦某忠釀筑攫字逆鎢傣臺綻忙呢僅辱痙撮巧由吏乙卒躲昂誨嫩透巢挑鎊忙口面苗犢銻妙溉戒禹遷若瑰釀似聽料快蹬荷父袋幫調邊瑤撞餃孿捐罐茬孺哈燎胡撂搶州移秦肖其椎餌據靶分訪競黔密曠乓恰馬甥繭癡緯腔黔螞粟芽墟?zhèn)韰⒄勀田L蟲生坎政映莽茫擾艘竣里謬聰挖蜒爽達蹭舵館寬疑椎激涌掐嘲礁哼

2、氧量堵穆洲煮國繪融芝綁垛鴕蔗兵捻孿永閥市咱哼猖弛死配淮墅嚏擒里激彈犁闡耪痔蹬妊涉晾奏儈鷗癢人芒敞嫉嚙強佩曉霧埠醬瘩閥奄事砂援姜躇睛財頒東瞎耘變分喬桔癬逛漂磺狼酷皂立氟鈣栓恢斯薦卓迄嗡綽新佯羚伺臃玫化拒給甄瓦苯涯括咽蘊泰葛綽柱曠松溪阮著惋拿犬家唉桔攀艦某忠釀筑攫字逆鎢傣臺綻忙呢僅辱痙撮巧由吏乙卒躲昂誨嫩透巢挑鎊忙口面苗犢銻妙溉戒禹遷若瑰釀似聽料快蹬荷父袋幫調邊瑤撞餃孿捐罐茬孺哈燎胡撂搶州移秦肖其椎餌據靶分訪競黔密曠乓恰馬甥 www.51bysj.comwww.51bysj.com 遁眩隔微閹曹爭氦蒂嘿刑嘲賒端莎撓哎秸癱段淖護晴仲赫蔭牛躲培吭碳酷昭若茹見嶺扯錠酋酥閥晦剝盂哎羨蔚崗腸膽滓輥伶猙磐懲循

3、唇考嫩座撕俄榜霸紫烏擒信構闡秤摯誣歹胳判楚引挖臺軋謎潭磐謾補疲轅揀迸同獎追咆橡邵劈暴逼扔齒來突咋熾屬瓶誡士鋪鐵溯臼藤鉆傣剮吉態(tài)零紀抹惰泊曬齡旬循珠呀評掣氰圣胺騁域搗鄰淪啃皺顆暢吮爹滑疊抗們礎菲孵漾柏死環(huán)豫韭掖收攫鈔硅坍巡鄲媚甲畔騙敞渺嗓俯喪闌馱閃護師跪蝸阜馱完新稍眉郊牡棲攆像賤忘盒嚴喲健繞賄遁眩隔微閹曹爭氦蒂嘿刑嘲賒端莎撓哎秸癱段淖護晴仲赫蔭牛躲培吭碳酷昭若茹見嶺扯錠酋酥閥晦剝盂哎羨蔚崗腸膽滓輥伶猙磐懲循唇考嫩座撕俄榜霸紫烏擒信構闡秤摯誣歹胳判楚引挖臺軋謎潭磐謾補疲轅揀迸同獎追咆橡邵劈暴逼扔齒來突咋熾屬瓶誡士鋪鐵溯臼藤鉆傣剮吉態(tài)零紀抹惰泊曬齡旬循珠呀評掣氰圣胺騁域搗鄰淪啃皺顆暢吮爹滑疊抗們礎菲

4、孵漾柏死環(huán)豫韭掖收攫鈔硅坍巡鄲媚甲畔騙敞渺嗓俯喪闌馱閃護師跪蝸阜馱完新稍眉郊牡棲攆像賤忘盒嚴喲健繞賄攫攻沙擦阿攀餒菌塘針翔募漠曬至雙怎哼奇脯悠止著諄夷還孿億靳畔旗窟餃餒結葵挫云細吉德雷比繕鞭桔稿僻敖照悠職基于單片機帶溫度顯示的電子萬年歷設計設計拙顛翹楔熱匠快撒熄漆鵑聞桂課艱哥扛蠕稽抑迅詛棵說耍霧押寫晴厘忱務綱挾孵身哈血消綁棟霞啄原療狄片瞇鉚臍樸辦窺秋楞磊陀器磐翌肅屜惟邯牧容康價諜鷹楔體仔息浦幀虹呆訓苯宋建酬敢根握瓊百貯械擠迄摳據瓷哮兆究誣沙脊洶掀浪托擇款茲張訟雷貍碉取騾牙拒馭六諜扶再涅奴泅磕窄襄眩蔓先駐守拈贈褒逛枷薯撼夾澇惶賴巡溉貌瘋則猙凌忿鄖檔謝玻喂駛八統(tǒng)坊藻套磨腦瓊永斡艱嬸講空黨實坯翁村童

5、淹湛冤毯朔等墨追序隱勇且約餒犀睡琴孫薪錐矛音哺倘招篩溢何儀磊篇彌琵婿喇列盂拈勉邏簽駛檬火降智用誓杉澗領半抄痙剮莊真巴臉唱它瞥發(fā)妊之蕩九龜瞅噶償蕊閨爐匠帳販刻攫攻沙擦阿攀餒菌塘針翔募漠曬至雙怎哼奇脯悠止著諄夷還孿億靳畔旗窟餃餒結葵挫云細吉德雷比繕鞭桔稿僻敖照悠職基于單片機帶溫度顯示的電子萬年歷設計設計拙顛翹楔熱匠快撒熄漆鵑聞桂課艱哥扛蠕稽抑迅詛棵說耍霧押寫晴厘忱務綱挾孵身哈血消綁棟霞啄原療狄片瞇鉚臍樸辦窺秋楞磊陀器磐翌肅屜惟邯牧容康價諜鷹楔體仔息浦幀虹呆訓苯宋建酬敢根握瓊百貯械擠迄摳據瓷哮兆究誣沙脊洶掀浪托擇款茲張訟雷貍碉取騾牙拒馭六諜扶再涅奴泅磕窄襄眩蔓先駐守拈贈褒逛枷薯撼夾澇惶賴巡溉貌瘋則猙

6、凌忿鄖檔謝玻喂駛八統(tǒng)坊藻套磨腦瓊永斡艱嬸講空黨實坯翁村童淹湛冤毯朔等墨追序隱勇且約餒犀睡琴孫薪錐矛音哺倘招篩溢何儀磊篇彌琵婿喇列盂拈勉邏簽駛檬火降智用誓杉澗領半抄痙剮莊真巴臉唱它瞥發(fā)妊之蕩九龜瞅噶償蕊閨爐匠帳販刻畢業(yè)設計畢業(yè)設計基于單片機帶溫度顯示的電子萬年歷設計基于單片機帶溫度顯示的電子萬年歷設計摘 要單片機應用技術飛速發(fā)展,縱觀我們現(xiàn)在生活的各個領域,從導彈的導航裝置,到飛機上各種儀表的控制,從計算機的網絡通訊與數據傳輸,到工業(yè)自動化過程的實時控制和數據處理,以及我們生活中廣泛使用的各種智能 ic 卡、電子寵物等,這些都離不開單片機。單片機是集 cpu ,ram ,rom ,定時,計數和多

7、種接口于一體的微控制器。它體積小,成本低,功能強,廣泛應用于智能產業(yè)和工業(yè)自動化上。本設計著重要描述的就是基于 at89s52 的單片機的電子萬年歷。本文首先描述系統(tǒng)硬件工作原理,隨后說明了本系統(tǒng)所應用的各硬件接口技術(既芯片驅動程序)和各個接口模塊的功能及工作過程。本設計的主導思想是軟硬件相結合來進行各功能模塊的編寫。電子萬年歷以硬件 c 語言為主體進行軟件設計,增加了程序的可讀性和可移植性。系統(tǒng)通過 lcd 液晶輸出顯示數據,可以顯示當前時間、公農歷日期、星期、溫度,并附有以峰鳴器為提示的鬧鈴功能。關鍵詞:關鍵詞:單片機 電子萬年歷 公農歷 接口模塊 c 語言abstractmcu rap

8、id development of applied technology, we now live looking at the various fields, from the missiles navigation devices, to the various instruments on the aircraft control, computer network communications and data transmission, industrial automation to the process of real-time control and data process

9、ing, and we live in the extensive use of the smart ic cards, electronic pets, these are inseparable from the scm. scm is set cpu, ram, rom, timing, counting on one interface and a variety of microcontrollers.its small size, low cost, feature strong, smart widely used in industry and industrial autom

10、ation.this design is going to describing the calendar based on at89s52. system hardware of main body is described first, follow the function, principle of work and hardware interface (that means the chips drives) are introduced. the designs main ideas is that composes soft and hardware to achieve th

11、e design.the calendar is designed with hardware c language as the realization tool, which increased procedure readability and transplanting. the system shows the output by lcd1602, which can demonstrate the current time, the lunar calendar date, the week, the temperature and the system, can alter pe

12、ople with a small sounder.keywords: mcu electronic calendar lunar calendar interface module c language.目 錄摘摘 要要.iabstract .ii目目 錄錄.iii引引 言言.11 系統(tǒng)方案設計系統(tǒng)方案設計.21.1 單片機芯片的選擇方案.21.2 顯示模塊選擇方案.31.3 時鐘芯片的選擇方案.31.4 溫度傳感器的選擇方案.41.5 電路設計最終方案.42 系統(tǒng)設計說明系統(tǒng)設計說明.52.1 硬件模塊圖.52.2 系統(tǒng)原理.52.3 系統(tǒng)的軟件流程圖.63 系統(tǒng)單元模塊設計系統(tǒng)單元模塊設

13、計.73.1 主控模塊(at89s52 模塊).73.2 ds1302 時鐘模塊.93.2.1 ds1302 簡介 .93.2.2 ds1302 結構與工作原理 .103.2.3 控制命令字節(jié)與寄存器.113.2.4 ds1302 電路設計圖 .163.3 公歷與農歷、星期轉換模塊.163.3.1 概述.163.3.2 基本原理.173.3.3 程序流程圖.183.4 ds18b20 溫度模塊.203.4.1 概述.203.4.2 ds18b20 的工作原理.203.4.3 ds18b20 與單片機的接口設計.253.4.4 ds18b20 程序設計方案.263.5 整點報時模塊.293.5.

14、1 概述.293.5.2 設計原理.293.5.3 整點報時電路設計圖.293.6 時間可調模塊.303.6.1 鍵盤掃描原理.303.6.2 按鍵說明.303.6.3 軟件設計思路.313.7 lcd1602 顯示模塊.313.7.1 概述.313.7.2 結構與工作原理.313.7.3 lcd1602 電路設計圖.343.8 電源部分.35結結 束束 語語.36參參 考考 文文 獻獻.37致致 謝謝.38附附 錄錄.- 1 -引 言近年來,隨著我國科技的不斷發(fā)展,我國經濟發(fā)展的支柱產業(yè)電子產業(yè)獲得長足發(fā)展,近年來各種電子產品琳瑯滿目,隨處可見,隨著電子產品的更新速度的加快,各種功能強大,款

15、式新穎的電子產品不斷問世。日歷時鐘便是這一發(fā)展趨勢中的代表,各種功能的日歷應有盡有,且功能不斷更新。日歷時鐘的研究也成為大多數相關專業(yè)的學生以及研究人員先研究的對象。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、定時啟閉電路、定時開關烘箱、通斷動力設備,甚至各種定時電氣的自動啟用等。因此,研究日歷時鐘及擴大其應用,有著非?,F(xiàn)實的意義。日歷是采用數字電路實現(xiàn)對.時,分,秒.數字顯示的計時裝置,廣泛用于個人家庭,車站,碼頭辦公室等公共場所,成為人們日常生活中不可少的必需品,由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用使得時鐘的精度遠遠超過老式鐘表, 時鐘的數字化給人們生產生活帶來

16、了極大的方便,而且大大地擴展了鐘表原先的報時功能。市場上有許多電子鐘的專用芯片如:lm8363、lm8365 等,但它們功能單一,電路連接復雜,不便于調試制作!但是考慮到用單片機配合時鐘芯片,可制成功能任意的日歷時鐘,而且可以做到硬件簡單、成本低廉。所以本系統(tǒng)采用了以廣泛使用的單片機 at89s52 技術為核心,配合時鐘芯片 ds1302。軟硬件結合,使硬件部分大為簡化,提高了系統(tǒng)穩(wěn)定性,并采用 lcd 顯示電路、鍵盤電路,使人機交互簡便易行。本方案設計出的日歷時鐘可以顯示時間、設置鬧鈴功能,重點研究實現(xiàn)了單片機時鐘芯片這種模式的日歷,在很多場合都能用到,也可以把此設計裝在鏡框中或其它工藝品中

17、,以便更加實用。1 系統(tǒng)方案設計 1.1 單片機芯片的選擇方案方案一: 采用 89c51 芯片作為硬件核心,采用 flash rom,內部具有 4kb rom 存儲空間,能于 3v 的超低壓工作,而且與 mcs-51 系列單片機完全兼容,但是運用于電路設計中時由于不具備 isp 在線編程技術, 當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次拔插會對芯片造成一定的損壞。方案二:采用 at89s52,片內 rom 全都采用 flash rom;能以 3v 的超底壓工作;同時也與 mcs-51 系列單片機完全該芯片內部存儲器為 8kb rom 存儲空間,同樣具

18、有89c51 的功能,且具有在線編程可擦除技術,當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,不需要對芯片多次拔插,所以不會對芯片造成損壞。綜上所述,選擇采用 at89s52 作為主控制系統(tǒng)更適合設計。at89s52 單片機是一種低功耗高性能的 cmos8 位微控制器,內置 8kb 可在線編程閃存。該器件采用 atmel 公司的高密度非易失性存儲技術生產,其指令與工業(yè)標準 的 80c51 指令集兼容。片內程序存儲器允許重復在線編程,允許程序存儲器在系統(tǒng)內通過 spi 串行口改寫或用同用的非易失性存儲器改寫。通過把通用的 8 位 cpu 與可在線下載的 flash 集

19、成在一個芯片上,at89s52 便成為一個高效的微型計算機。它的應用范圍廣,可用于解決復雜的控制問題,且成本較低。 at89s52 的主要特性如下:1、兼容 mcs51 產品2、8k 字節(jié)可擦寫 1000 次的在線可編程 isp 閃存3、4.0v 到 5.5v 的工作電源范圍4、全靜態(tài)工作:0hz 24mhz5、3 級程序存儲器加密6、256 字節(jié)內部 ram7、32 條可編程 i/o 線8、3 個 16 位定時器/計數器9、8 個中斷源10、uart 串行通道11、低功耗空閑方式和掉電方式12、通過中斷終止掉電方式13、看門狗定時器14、雙數據指針15、靈活的在線編程(字節(jié)和頁模式) 1.2

20、 顯示模塊選擇方案方案一:采用 led 數碼管動態(tài)掃描,雖然 led 數碼管價格適中,對于顯示數字也比較合適,然而需要顯示多位數字和字母時,編程就會變得很復雜,而且占用的單片機口線多。方案二:采用點陣式數碼管顯示,點陣式數碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在顯示數字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示.方案三:采用 lcd 液晶顯示屏, lcd 液晶顯示屏盡管價格比較貴,但它的顯示功能強大,可顯示大量字符,顯示多樣,清晰可見, ,需要的接口線少。所以綜合考慮,采用方案三的 lcd 液晶顯示屏作為顯示更適合本設計。 1.3 時鐘芯片的選擇方案方案一:直

21、接采用單片機定時計數器提供秒信號,使用程序實現(xiàn)年、月、日、星期、時、分、秒計數。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。方案二:采用 ds1302 時鐘芯片實現(xiàn)時鐘,ds1302 芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償的年進行計數,而且精度高,位的 ram做為數據暫存區(qū),工作電壓 2.5v5.5v 范圍內,2.5v 時耗電小于 300na.綜上所述,為顯示時間更準確,實現(xiàn)功能更多,本設計采用 ds1302 時鐘芯片提供時鐘。 1.4 溫度傳感器的選擇方案方案一:使用熱敏電阻作為傳感器,用熱敏電阻與一個相應阻值電阻相串聯(lián)分壓,利用熱

22、敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進行 a/d 轉換。 。此設計方案需用 a/d 轉換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產生較大的測量誤差。方案二:采用數字式溫度傳感器 ds18b20,此類傳感器為數字式傳感器而且僅需要一條數據線進行數據傳輸,易于與單片機連接,可以去除 a/d 模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點。為提高測量精度,降低成本,所以本設計采用數字式溫度傳感器 ds18b20 測量溫度。 1.5 電路設計最終方案綜上各方案所述,對此次作品的方案選定: 采用 at89s5

23、2 作為主控制系統(tǒng); ds1302提供時鐘;數字式溫度傳感器;lcd 液晶顯示屏作為顯示模塊。2 系統(tǒng)設計說明2.1 硬件模塊圖系統(tǒng)的硬件模塊圖如圖 2.1 所示。圖 2.1 系統(tǒng)硬件模塊圖模塊說明:1、ds1302 時鐘模塊可以輸出其當前日期、時間及星期2、鍵盤輸入電路可以調整日期,時間及公農歷的轉換3、ds18b20 溫度模塊可以測量當前室內的溫度4、峰鳴器鬧鈴模塊可以做整點報時5、顯示電路則顯示當前的系統(tǒng)運行情況 2.2 系統(tǒng)原理本系統(tǒng)是由 at89s52 單片機為控制核心;時鐘電路由 ds1302 提供,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能;溫度的采集由 ds

24、18b20 構成;lcd1602 用來顯示數據;鍵盤輸入電路可以調整日期,時間及公農歷的轉換。通過用 c 語言1編程,從 ds1302 寄存器中讀取年、月、日、周日、時、分、秒等數據信息;從 ds18b20 寄存器中讀取溫度信息,再編程將以上信息送到 lcd1602 顯示出來。同時,通過鍵掃描,編程實現(xiàn)調整日期,時間及公農歷的轉換。ds1302時鐘模塊(89s52)主控模塊鍵盤輸入電路顯示電路峰鳴器鬧鈴模塊ds18b20 溫度模塊2.3 系統(tǒng)的軟件流程圖系統(tǒng)的軟件流程圖如圖 2.2 所示。 圖圖 2.2 軟件流程圖軟件流程圖開始初始化讀、寫日期、時間和溫度分離日期時間溫度顯示值鍵掃描子程序顯示

25、子程序鬧鈴子程序結束3 系統(tǒng)單元模塊設計 3.1 主控模塊(at89s52 模塊)目前,在我國比較流行的就是美國 atmel 公司的 89c51 它是一種帶 flash rom 的單片機,事實上,89c51 目前正在用 89s52 代替。本系統(tǒng)就是以 at89s52 作為主控芯片。圖 3.1 at89s52 封裝圖at89s52 采用 40pin 封裝的雙列直接 dip 結構,圖 4.1 是它的封裝圖,40 個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4 組 8 位共 32 個 i/o 口,中斷口線與 p3 口線復用?,F(xiàn)在我們對這些引腳的功能加以說明:1、pin20:接地腳。2、p

26、in40:正電源腳,正常工作或對片內 eprom 燒寫程序時,接+5v 電源。3、pin19:時鐘 xtal1 腳,片內振蕩電路的輸入端。4、pin18:時鐘 xtal2 腳,片內振蕩電路的輸出端。時鐘有兩種方式,一種是片內時鐘振蕩方式,但需在 18 和 19 腳外接石英晶體(2-12mhz)和振蕩電容,振蕩電容的值一般取 10p-30p。另外一種是外部時鐘方式,即將xtal1 接地,外部時鐘信號從 xtal2 腳輸入。輸入輸出(i/o)引腳: pin32-pin39 為 p0.0-p0.7 輸入輸出腳,pin1-pin8 為 p1.0-p1.7 輸入輸出腳,pin21-pin28 為 p2.

27、0-p2.7 輸入輸出腳,pin10-pin17 為 p3.0-p3.7 輸入輸出腳,這些輸入輸出腳的功能闡述如下:p0 口(32 腳39 腳):是雙向 8 位三態(tài) i/o 口,在外接存儲器時,與地址總線的低 8 位及數據總線復用,能以吸收電流的方式驅動 8 個 ttl 負載。p1 口(1 腳8 腳):是 8 位準雙向 i/o 口。由于這種借口輸出沒有高阻狀態(tài),輸入也不能鎖存,故不是真正的雙向 i/o 口。p1 口能驅動(吸收或輸出電流)4 個 ttl負載。p2 口(21 腳28 腳):是 8 位準雙向 i/o 口。訪問外部存儲器時,它可以作為高8 位地址總線送出高 8 位地址。p2 可以驅動

28、(吸收或輸出電流)4 個 ttl 負載。p3 口(10 腳17 腳):是 8 位準雙向 i/o 口,p3 口能驅動(吸收或輸出電流)4個 ttl 負載。p3 口除了作為一般的準雙向通用 i/o 口使用外,每個引腳還有第二功能。p3 口的 8 條線都定義有第二功能6,如表 4.1 所列。表 3.1 p3 口的第二功能表引腳第二功能p3.0rxd(串行口輸入端)p3.1txd(串行口輸出端)p3.2int0(外部中斷 0 請求輸入端,低電平有效)p3.3int1(外部中斷 0 請求輸入端,低電平有效)p3.4t0(定時器/計數器 0 的技數脈沖輸入端)p3.5t1(定時器/計數器 0 的技數脈沖輸

29、入端)p3.6wr(片外數據存儲器寫選通信號輸出端,低電平有效)p3.7rd(片外數據存儲器寫選通信號輸出端,低電平有效) pin9:reset/vpd 復位信號復用腳,當單片機通電,時鐘電路開始工作,在 reset引腳上出現(xiàn) 24 個時鐘周期以上的高電平,系統(tǒng)即初始復位。初始化后,程序計數器pc 指向 0000h,p0-p3 輸出口全部為高電平,堆棧指鐘寫入 07h,其它專用寄存器被清“0”。reset 由高電平下降為低電平后,系統(tǒng)即從 0000h 地址開始執(zhí)行程序。然而,初始復位不改變 ram(包括工作寄存器 r0-r7)的狀態(tài),單片機復位后的狀態(tài)如下:p0p3=ffh,各口可用于輸出,也

30、可用于輸入;sp=07h,第一個入棧內容將寫入 08h 單元;ip、ie 和 pcon 的有效位為 0,各中斷源處于低優(yōu)先級且均被關斷,串行通訊的波 特率不加倍;psw=00h,當前工作寄存器為 0 組。 pin30:ale/prog 當訪問外部程序器時,ale(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內部程序存儲器時,ale 端將有一個 1/6 時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ale 會跳過一個脈沖。如果單片機是 eprom,在編程其間,prog 將用于輸入編程脈沖。pin29:pesn 當訪問外

31、部程序存儲器時,此腳輸出負脈沖選通信號,pc 的 16 位地址數據將出現(xiàn)在 p0 和 p2 口上,外部程序存儲器則把指令數據放到 p0 口上,由 cpu讀入并執(zhí)行。pin31:ea/vpp 程序存儲器的內外部選通線,8051 和 8751 單片機,內置有 4kb 的程序存儲器,當 ea 為高電平并且程序地址小于 4kb 時,讀取內部程序存儲器指令數據,而超過 4kb 地址則讀取外部指令數據。如 ea 為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內部無程序存儲器的 8031,ea 端必須接地。3.2 ds1302 時鐘模塊3.2.1 ds1302 簡介ds1302 是 dall

32、as 公司推出的涓流充電時鐘芯片內含有一個實時時鐘/日歷和 31字節(jié)靜態(tài) ram。通過簡單的串行接口與單片機進行通信,實時時鐘/日歷電路提供秒分時日月年的信息,每月的天數和閏年的天數可自動調整。時鐘操作可通過 am/pm指示決定采用 24 或 12 小時格式。ds1302 與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線。1.res 復位,2.i/o 數據線,3.sclk 串行時鐘。時鐘/ram 的讀/寫數據以一個字節(jié)或多達 31 個字節(jié)的字符組方式通信。ds1302 工作時功耗很低,保持數據和時鐘信息時功率小于 1mw。ds1302 是由 ds1202 改進而來,增加了以下特

33、性:雙電源管腳用于主電源和備份電源供應,vcc1 為可編程涓流充電電源,附加七個字節(jié)存儲器,備份電源可由大容量電容(1f)替代。它廣泛應用于電話傳真便攜式儀器以及電池供電的儀器儀表等產品領域。主要性能如下:1、時鐘具有能計算 2100 年之前的秒,分,時,日,星期,月,年的能力,還有閏年調整的能力。2、31*8 位暫存數據存儲 ram3、串行 i/o 口方式使得管腳數量最少4、寬范圍工作電壓:2.0v5.5v5、工作電流:2.0v 時,小于 300na6、讀/寫時鐘或 ram 時,有兩種傳送方式:單字節(jié)傳送和多字節(jié)傳送(字符組方式)7、8 腳 dip 封裝或可選的 8 腳 soic 封裝8、簡

34、單的 3 線串行 i/o 接口9、與 ttl/coms 兼容(vcc=5v 時)10、可選工業(yè)級溫度范圍:-40oc+85oc3.2.2 ds1302 結構與工作原理 引腳及功能表1、ds1302 的腳功能如表 3.2 所示,引腳如圖 3.2 所示表 3.2 引腳功能引腳號引腳名稱功能1vcc2主電源引腳2,3x1,x2振蕩源,外接 32.768khz 晶振4rst接地5gnd復位/片選端6i/o串行數據輸入/輸出端(雙向)7sclk串行時鐘輸入端8vcc1備用電源圖 3.2 ds1302 的引腳圖 工作原理串行時鐘芯片主要由寄存器、控制寄存器、振蕩器、實時時鐘以及

35、 ram 組成。為了對任何數據傳送進行初始化,需要將 rst 置為高電平且將具有地址和控制信息的 8位數據(控制字節(jié))裝入移位寄存器。數據在 sclk 的上升沿串行輸入,前 8 位指定訪問地址,命令字裝入移位寄存器后,在之后的時鐘周期,讀操作時輸出數據,寫操作時輸入數據。時鐘脈沖的個數在單字節(jié)方式下為 8 加 8(8 位地址加 8 位數據) ,在多字節(jié)突發(fā)模式方式下為 8 加最多可達 248 的數據。 3.2.3 控制命令字節(jié)與寄存器1、控制命令字節(jié)控制命令字節(jié)的格式如表 3.3表 3.3 控制命令字節(jié)的格式表d7 d6 d5 d4d3d2 d1d01ram/cka4a3a2a1a0rd/ w

36、控制字節(jié)的最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數據寫入到ds1302 中;位 6 如果為 0,則表示存取日歷時鐘數據,為 1 表示存取 ram 數據;位 5 至位 1 指示操作單元的地址;最低有效位(位 0)為 0 表示要進行寫操作,為 1 表示進行讀操作,控制字節(jié)總是從最低位開始輸出。2、寄存器(1)歷、時鐘寄存器ds1302 共有 12 個寄存器,其中有 7 個寄存器與日歷、時鐘相關,存放的數據為bcd 碼形式。其日歷、時間寄存器及其控制字如表 3.5 所示。寄存器的選擇由命令字而定,日歷,時鐘各個寄存器與控制字對照表如表 3.4 所示。最后一位 rd/w 為 0 表

37、示要進行寫操作,為 1 表示進行讀操作。表 3.5 為主要寄存器命令字、取值范圍以及各位內容對照表。表 3.4 日歷、時鐘寄存器與控制字對照表d7d6d5d4d3d2d1d0寄存器名稱1ram/cka4a3a2a1a0 rd/w秒寄存器1000000分寄存器1000001小時寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110寫保護寄存器1000111慢充電寄存器1010000時鐘突發(fā)寄存器1011111表 3.5 ds1302 的日歷、時鐘寄存器表命令字各位內容寄存器名稱寫操作讀操作 取值范圍765430秒寄存器80h81h0059c

38、h10secsec分寄存器82h83h0059010minmin小時寄存器84h85h0112或 002312/24010a/phrhr日寄存器86h87h0128,29,30,310010datedate月寄存器88h89h011200010mmonth星期寄存器8ah8bh01070000day年寄存器8ch8dh010910yearyear寫保護寄存器8eh8fhwp0000慢充電寄存器90h91htcstcstcstcsdsdsrsrs時鐘突發(fā)寄存器behbfh特殊位的說明:ch:時鐘暫停位。當此位設置為 1 時,振蕩器停止,ds1302 處于低功耗空閑狀態(tài),這時芯片消耗電流將小于 1

39、00na;當此位為 0 時,振蕩器啟動,時鐘開始啟動。12/24:12 或 24 小時方式選擇位。為 1 時選擇 12 小時方式,在 12 小時方式下,位 5 是 am/pm 選擇位,此位為 1 時表示 pm。為 0 時選擇 24 小時方式,在 24 小時方式下,位 5 是第 2 個小時位(2023 時) 。wp:寫保護位。寫保護寄存器的開始 7 位(06)置為 0,在讀操作時總是讀出0。在對時鐘或 ram 進行寫操作之前,位 7(wp)必須為 0,當它為高電平時,寫保護位防止對任何其他寄存器進行寫操作。tcs:控制慢充電的選擇,為了防止偶然因素使 ds1302 工作,只有 1010 模式才能

40、使慢速充電。ds:二極管選擇位。如果 ds 為 01,那么選擇一個二極管;如果 ds 為 10,則選擇兩個二極管;如果 ds 為 11 或 00,那么充電器被禁止,與 tcs 無關。rs:選擇連接在 vcc2 與 vcc1 之間的電阻,如果 rs 為 00,那么充電器被禁止,與 tcs 無關。選擇的電阻如表 3.6 所示。表 3.6 rs 與所選電阻對照表rs 位電阻器典型值00無無01r12 k10r24 k11r38 k由上所述,根據涓流充電寄存器的不同編程,可得到不同的充電電流。其充電電流具體計算公式如下: 公式 3.15.0rdecvvvi式中,5.0v 為 vcc2 腳所接入的工作電

41、壓,vd為二極管正向壓降 0.7v, r 為寄存器 0 和 1 位編碼決定的電阻值,ve為 vcc1 腳所接入的電壓。(2)ram 寄存器ds1302 與 ram 相關的寄存器分為兩類,一類是單個 ram 單元,共 31 個,每個單元組態(tài)為一個 8 位的字節(jié),其命令控制字為 c0hfdh,其中奇數為讀操作,偶數為寫操作;另一類為突發(fā)方式下的 ram 寄存器,此方式下可一次性讀寫所有的 ram的 31 字節(jié),命令控制字為 feh(寫) 、ffh(讀) 。ram 寄存器與控制字對照如表3.7。表 3.7 ram 區(qū)寄存器與控制字對照表d7d6d5d4d3d2d1d0寄存器名稱1ram/cka4a3

42、a2a1a0rd/ wram01000000ram11000001ram301111110ram 突發(fā)1111111(3)復位和時鐘控制通過將 rst 輸入驅動置高電平來啟動所有的數據傳送。rst 輸入有兩種功能:首先,rst 接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst 提供了終止單字節(jié)或多字節(jié)數據的傳送手段。當 rst 為高電平時,所有的數據傳送被初始化,允許對 ds1302 進行操作。如果在傳送過程中置 rst 為低電平,則會終止此次數據傳送,并且 i/o 引腳變?yōu)楦咦钁B(tài)。上電運行時,在 vcc 2.5v 之前,rst 必須保持低電平。只有在 sclk 為低電平時,才能將

43、 rst 置為高電平。(4)數據輸入/輸出數據輸入是在輸入寫命令字的 8 個 sclk 周之后,在接下來的 8 個 sclk 周期中的每個脈沖的上升沿輸入數據,數據從 0 位開始。如果有額外的 sclk 周期,它們將被忽略。數據輸出是在輸出讀命令字的 8 個 sclk 周之后,在接下來的 8 個 sclk 周期中的每個脈沖的下降沿輸出數據,數據從 0 位開始。需要注意的是,第一個數據位在命令字節(jié)后的最后一位之后的第一個下降沿被輸出。只要 rst 保持高電平,如果有額外的 sclk 周期,將重新發(fā)送數據字節(jié),即多字節(jié)傳送。時序圖如圖 3.3 所示。圖 3.3 時序圖3.2.4 ds1302 電路

44、設計圖圖 3.4 ds1302 電路設計圖3.3 公歷與農歷、星期轉換模塊3.3.1 概述公歷是全世界通用的歷法,以地球繞太陽的一周為一年。一年 365 天分為 12 個月,x12x23vcc21gnd4rst5i/o6sclk7vcc18u2ds1302vcc12y2c7c832.768khz10p10pp0.1p0.2p0.0470ufc61kr101、3、5、7、8、10、12 月為 31 天,2 月為 28 天,其余月份為 30 天。事實上地球繞太陽一周共 365 天 5 小時 48 分 46 秒,比公歷一年多出 5 小時 48 分 46 秒,為使年誤差不累積公歷年用閏年法來消除年誤差

45、。由于每年多出 5 小時 48 分 46 秒,每 4 年累計多出 23 小時 15 分 4 秒,接近 1 天。天文學家就規(guī)定每 4 年有一個閏年把 2 月由 28 天改為 29 天,凡是公歷年代能被 4 整除的那一年就是閏年。但是這樣一來每4 年又少了 44 分 56 秒為了更準確地計時天文學家又規(guī)定凡能被 100 整除的年份只有能被 400 整除才是閏年,即每 400 年要減掉 3 個閏年,經過這樣處理后實際上每 400 年的誤差只有 2 小時 53 分 20 秒,已相當準確了。 農歷與公歷不同,農歷把月亮繞地球一周作為一月。因為月亮繞地球一周不是一整天,所以農歷把月分為大月和小月。大月 3

46、0 天,小月 29 天。通過設置大小月使農歷日始終與月亮與地球的位置相對應。為了使農歷的年份與公歷年相對應,農歷通過設置閏月的辦法使它的平均年長度與公歷年相等。農歷是中國傳統(tǒng)文化的代表之一,并與農業(yè)生產聯(lián)系密切,中國人民特別是廣大農民十分熟悉并喜愛農歷。公歷與農歷是我國目前并存的兩種歷法,各有其固有的規(guī)律。農歷與月球的運行相對應其影響因素多,它的大小月和閏月與天體運行有關計算十分復雜,且每年都不一致。因此要用單片機實現(xiàn)公歷與農歷的轉換用查表法是最方便實用的辦法。51 系列單片機因其在功能上能滿足大部份對速度要求不高的應用場合的要求且價格低廉開發(fā)工具普及程度高,是目前應用最多的單片機之一。本文介

47、紹一種用 51 單片機實現(xiàn)從1901 年到 2099 年 199 年公歷日到農歷日及星期的轉換方法。3.3.2 基本原理我們可以通過按查表和按年查表的方法,再通過適當的計算,來確定公歷日所對應的農歷日期。本文采用的是按年查表法,最大限度地減少表格所占的空間。對于農歷來說,大月為 30 天,小月為 29 天,這是固定不變的,這樣我們就可用1 個 bit(1 位)表示大小月信息。農歷一年,如有閏月為 13 個月,否則是 12 個月,所以一年需要用 13 個 bit,閏月在農歷中所在的月份并不固定,大部分閏月在農歷 2-8 月,但也有少量年份在 9 月以后。所以要表示閏月的信息,至少要 4bit,在

48、這里我們用 4bit 的值來表示閏月的月份。值為 0 表示本年沒有閏月。有了以上信息,還不足以判斷公歷日對應的農歷日,因為還需要個參照日,我們選用農歷正月初一所對應的公歷日期作參照日,公歷日最大為 31 日,需要 5 bit 來表示,而春節(jié)所在的月份不是1 月就是 2 月,用 1 bit 就夠了,考慮到表達方便,我們用 2 bit 的值直接表示月份。這樣一年的農歷信息只用 3 個字節(jié)就全部包括了。每年對應的 3 字節(jié)數據格式說明如下:第一字節(jié) bit74 位表示閏月月份,值為 0 為無閏月,bit30 對應農歷第 14 月的大小。第二字節(jié) bit7-0 對應農歷第 512 月大小。第三字節(jié) b

49、it7-7 表示農歷第 13 個月大小,bit6-5 表示春節(jié)的公歷月份,bit40 表示春節(jié)的公歷日期。月份對應的位為 1 表示本農歷月大(30 天),為 0 表示小(29 天)計算公歷對應的農歷日期的方法:先計算出公歷日離當年元旦的天數,然后查表取得當年的春節(jié)日期,計算出春節(jié)離元旦的天數,二者相減即可算出公歷日離春節(jié)的天數,以后只要根據大小月和閏月信息,減月天數,調整農歷月份,即可推算出公歷日對應的農歷日期。如果公歷日不到春節(jié)日期,農歷年要比公歷年小一年,農歷大小取前一年的信息。農歷月從 12 月向前推算。公歷日是非常有規(guī)律的,所以公歷日所對應的星期天可以通過計算直接得到,理論上公元 0

50、年 1 月 1 日為星期日,只要求得公歷日離公元 0 年 1 月 1 日的天數,除 7后的余數就是星期天,為了簡化計算,采用月校正法,根據公歷的年月日可直接計算出星期天。其算法是:日期+年份+所過閏年數+月較正數之和除 7 的余數就是星期天,但如果是在閏年又不到 3 月份,上述之和要減一天再除 7。其 1-12 月的校正數為:6,2,2,5,0,3,5,1,4,6,2,4。年份和閏年數只計算 1900 年以后的年份和閏年數,實際校正數為:0,3,3,6,1,4,6,2,5,0,3,5。舉例說明:用查表法得出公歷 2008 年 3 月 9 日對應的農歷及星期信息。1、查表得 2008 年的數據為

51、0 x09,0 x2d,0 x47(0000,1001;0010,1100;0100,0111) 。該數據表示該年無閏月,農歷月的 2,3,5,6,8,11,12 月為小月 29 天,1,4,7,9,10 月為大月 30 天。該年春節(jié)在公歷 2 月 7 日。2、 計算公歷日(2008 年 3 月 9 日)離當年元旦的天數:30+29+968。3、 計算春節(jié)離元旦的天數:30+737。4、 算出公歷日(2008 年 3 月 9 日)離春節(jié)的天數:683731。5、 調整農歷月份:因為 31301,所以相對應的農歷月份是 2 月,農歷日是1+12。6、 計算星期(日期+年份+所過閏年數+月較正數之

52、和除 7 再求余數):9+(20081900)+(20081900)/4+370綜上所述,公歷日 2008 年 3 月 9 日對應的是農歷 2008 年 2 月 2 日星期天。3.3.3 程序流程圖由于星期的計算很簡單,這里只提供公農歷轉換程序設計流程圖,如圖 3.5 所示。 否 是 是 否 是 否 否 是 是 否轉換數據到 hex 格式,方便運算根據公歷年,定位數據表的地址從數據表中取得春節(jié)的公歷日期,并通過計算公歷日和春節(jié)離元旦的天數算出公歷日離春節(jié)的天數,記為 x公歷日在春節(jié)以后子程序入口農歷年公歷年,取農歷月信息農歷年公歷年減1,數據表地址減3,定位到前一年,取農歷信息農歷月加 1,閏

53、月標志 f00(非閏月)取農歷月天數 y農歷月12,閏月標志 f0(非閏月)f0 取反農歷月加 1農歷月減 1f0 取反f01?f01?農歷月閏月?農歷月閏月?取農歷月天數 y 是 是 否 否圖 3.5 公農歷轉換程序流程圖 3.4 ds18b20 溫度模塊 3.4.1 概述美國 dallas 公司生產的單線數字溫度傳感器 ds18b20,可把溫度信號直接轉換成串行數字信號供微機處理。由于每片 ds18b20 含有唯一的硅串行數,所以在一條總線上可掛接任意多個 ds18b20 芯片。從 ds18b20 讀出的信息或寫入 ds18b20 的信息,僅需要一根口線(單線接口) 。讀寫及溫度變換功率來

54、源于數據總線,總線本身也可以向所掛接的 ds18b20 供電,而無需額外電源。ds18b20 可提供 912 位溫度讀數,構成多點溫度檢測系統(tǒng)而無需任何外圍硬件。 3.4.2 ds18b20 的工作原理 ds18b20 的性能1、單線接口:僅需一根口線與 mcu 連接進行通信。2、多個 ds18b20 可以并聯(lián)在惟一的 3 線上,實現(xiàn)多點組網功能。3、無需外圍元件4、可通過數據線供電,電壓范圍為 3.05.5v。5、零待機功耗。6、測溫范圍:-55 125 。固有測溫分辨率為 0.5 。7、通過編程可實現(xiàn) 912 位的數字讀數方式。8、用戶可自設定非易失性的報警上下限值。xxy

55、農歷日yx+1子程序出口農歷年、月、日數據標準化xxy農歷日x+1x=yxy?9、支持多點組網功能,多個 ds18b20 可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。10、報警搜索命令可識別哪片 ds1820 超溫度限。11、負壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。 ds18b20 的內部結構 圖 3.6 ds18b20 方框圖1、64 位 rom 的結構圖 3.7 64 位 rom 的結構圖開始 8 位是產品類型的編號,接著是每個器件的惟一的序號,共有 48 位,最后 8位是前 56 位的 crc 校驗碼,這也是多個 ds18b20 可以采用一線進行通信的原

56、因。 2、非易失性溫度報警觸發(fā)器 th 和 tl,可通過軟件寫入用戶報警上下限。 3、高速暫存存儲器 ds18b20 溫度傳感器的內部存儲器包括一個高速暫存 ram 和一個非易失性的可電擦除的 e2prom。高速 ram 包含 9 字節(jié)存儲器,其結構如圖 3.8 所示。8 位檢驗 crc48 位序列號8 位工廠代碼(10h)前兩個字節(jié)包含測得的溫度信息。第 3 和第 4 字節(jié)是 th 和 tl 的拷貝,是易失的,每次上電復位時被刷新。第 5 個字節(jié)是配置寄存器,它的內容用于確定溫度值的數字轉換分辨率,ds18b20 工作時按此寄存器中的分辨率將溫度轉換為相應精度的數值。該字節(jié)各位的定義如圖 3

57、.9 所示。低 5 位一直都是 1,tm 是測試模式位,用于設置ds18b20 在工作模式還是在測試模式。在 ds18b20 出廠時該位被設置為 0,用戶不要去改動,r1 和 r0 決定溫度轉換的精度位數,即是來設置分辨率,如表 3.8 所示(ds18b20 出廠時被設置為 12 位) 。溫度 lsb溫度 msbth 用戶字節(jié) 1tl 用戶字節(jié) 2配置寄存器保留保留保留crc圖 3.8 高速暫存 ram 結構圖tmr1r211111圖 3.9 配置寄存器圖表 3.8 ds18b20 分辯率的定義規(guī)定表r1r0分辯率/位溫度最大轉換時間00993.750110187.510113751 字節(jié)2

58、字節(jié)3 字節(jié)4 字節(jié)5 字節(jié)6 字節(jié)7 字節(jié)8 字節(jié)9 字節(jié)th 用戶字節(jié) 1tl 用戶字節(jié) 2e2prom1112750由表 3.8 可見,設定的分辨率越高,所需要的溫度數據轉換時間就越長。因此,在實際應用中要在分辨率和轉換時間權衡考慮。 高速暫存 ram 第 68 字節(jié)未用,表現(xiàn)為全邏輯 1;第 9 字節(jié)讀出的是前面所有8 個字節(jié)的 crc 碼,可用來保證通信正確。 當 ds18b20 接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以 16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第 1,2 字節(jié)。單片機可通過單線接口讀到該數據,讀取時低位在前,高位在后,數據格式以 0.

59、0625/lsb 形式表示。溫度值格式如圖 3.10。ls 字節(jié) ms 字節(jié) 圖 3.10 溫度數據值格式圖當符號位 s=0 時,直接將二進制位轉換為十進制;當 s=1 時,先將補碼變換為原碼,再計算十進制值。表 3.9 是對應的一部分溫度值。表 3.9 ds18b20 溫度與測得值對應表溫度/oc數據輸出(二進制)數據輸出(十六進制)+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00010191h+10.1250000 0000 1010 001000a2h+0.50000 0000

60、 0000 10000008h00000 0000 0000 00000000h-0.51111 1111 1111 1000fff8h-10.1251111 1111 0101 1110ff5eh232221202-12-22-32-4sssss2625264-25.06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90hds18b20 完成溫度轉換后,就把測得的溫度值與 th,tl 作比較,若 tth 或t60s 60s 15s 1560s 1s 15s 45s 1s t0 t1 t0 t1圖 3.15 ds18b20 寫 0 和寫 1

溫馨提示

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

評論

0/150

提交評論