基于51單片機(jī)溫濕度檢測+電子萬年歷的畢業(yè)設(shè)計(jì)論文_第1頁
基于51單片機(jī)溫濕度檢測+電子萬年歷的畢業(yè)設(shè)計(jì)論文_第2頁
基于51單片機(jī)溫濕度檢測+電子萬年歷的畢業(yè)設(shè)計(jì)論文_第3頁
基于51單片機(jī)溫濕度檢測+電子萬年歷的畢業(yè)設(shè)計(jì)論文_第4頁
基于51單片機(jī)溫濕度檢測+電子萬年歷的畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于51單片機(jī)溫濕度檢測+電子萬年歷的設(shè)計(jì)摘要:溫濕度檢測是生活生產(chǎn)中的重要的參數(shù)。本設(shè)計(jì)為基于51單片機(jī)的溫濕度檢測與控制系統(tǒng),采用模塊化、層次化設(shè)計(jì)。用新型的智能溫濕度傳感器sht10主要實(shí)現(xiàn)對溫度、濕度的檢測,將溫度濕度信號通過傳感器進(jìn)行信號的采集并轉(zhuǎn)換成數(shù)字信號,再運(yùn)用單片機(jī)stc89c52rc進(jìn)行數(shù)據(jù)的分析和處理,為顯示提供信號,顯示部分采用lcd1602液晶顯示所測溫濕度值。系統(tǒng)電路簡單、集成度高、工作穩(wěn)定、調(diào)試方便、檢測精度高,具有一定的實(shí)用價(jià)值。關(guān)鍵字:stc89c52rc sht10 lcd1602 按鍵 指示燈 蜂鳴器 電子萬年歷based on 51 single chi

2、p microcomputer temperature and humidity detection + electronic calendar design abstract:temperature and humidity detection is important parameters in the production of life. this design is based on 51 single chip microcomputer temperature and humidity detection and control system, adopting modular,

3、 hierarchical design. with new type of intelligent temperature and humidity sensor sht10 main realization about the detection of temperature, humidity, temperature humidity signal acquisition is converted into digital signals through the sensor signal, using scm stc89c52rc for data analysis and proc

4、essing, provides the signal for display, display part adopts lcd1602 lcd display the measured temperature and humidity values. simple circuit, high integration, work stability, convenient debugging, high detection precision, has certain practical value. key words:stc89c52rc sht10 lcd1602 key indicat

5、or light buzzer the electronic calendar 目 錄第1章 緒論 1第2章 設(shè)計(jì)要求與方案論證 2 2.1 設(shè)計(jì)要求 2 2.1.1基本要求 2 2.1.2擴(kuò)展功能 2 2.2 系統(tǒng)基本方案選擇和論證 2 2.2.1單片機(jī)芯片 2 2.2.2顯示模塊 3 2.2.3時(shí)鐘芯片 3 2.2.4溫濕度傳感器 3 2.3 電路設(shè)計(jì)最終方案 4第3章 硬件設(shè)計(jì)與原理53.1 系統(tǒng)設(shè)計(jì)方框圖53.2 硬件設(shè)計(jì)分析53.2.1 顯示系統(tǒng)53.2.2 lcd1602的指令說明及時(shí)序73.2.3 lcd1602的ram地址映射及標(biāo)準(zhǔn)字庫表83.2.4 時(shí)鐘電路模塊103.2.5

6、 溫濕度采集模塊133.2.6 按鍵調(diào)整電路133.2.7 按鍵提示音電路143.2.8 報(bào)警指示燈電路14第4章 程序設(shè)計(jì)154.1 程序設(shè)計(jì)的組成154.2 部分程序分析154.2.1 檢查lcd1602液晶忙位子函數(shù)154.2.2 lcd1602液晶寫指令子函數(shù)154.2.3 lcd1602液晶寫數(shù)據(jù)子函數(shù)164.2.4 lcd1602液晶初始化子函數(shù)164.2.5 sht10寫字節(jié)子函數(shù)164.2.6 sht10讀字節(jié)子函數(shù) 174.2.7 sht10溫濕度檢測子函數(shù) 18第5章 keil c51編譯器 19 5.1 c51概述 19 5.2 keil c51編譯器的使用 19 5.2

7、.1 創(chuàng)建項(xiàng)目 19 5.2.2 新建一個(gè)源文件 21 5.2.3 增加和配置啟動(dòng)代碼、設(shè)置工具選項(xiàng) 21 5.2.4 build項(xiàng)目并生成hex文件 24第6章 電路仿真 25 6.1 proteus簡介 25 6.2 使用proteus進(jìn)行電路仿真設(shè)計(jì) 25 6.2.1 proteus功能特點(diǎn) 26 6.2.2 proteus快捷鍵大全 26 6.2.3 仿真圖 27第7章 pcb制圖 28 7.1 protel99se簡介 28 7.2 pcb設(shè)計(jì)的一般原則 28 7.3 pcb設(shè)計(jì) 30 7.3.1 創(chuàng)建pcb文件 30 7.3.2 元器件布局 32 7.3.3 自動(dòng)布局 32 7.3

8、.4 輸出光繪文件 32總 結(jié) 35致 謝 36參考文獻(xiàn) 37附 圖 38附 表 39附程序 40第1章 緒論 隨著人們生活水平的提高和生活節(jié)奏的加快,對時(shí)間的要求越來越高,精準(zhǔn)數(shù)字計(jì)時(shí)的消費(fèi)需求也是越來越多。二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表的走時(shí)月差從分級縮小到秒級。第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用(電子萬年歷),使計(jì)時(shí)產(chǎn)品的走時(shí)

9、日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費(fèi)者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步我國生產(chǎn)的電子萬年歷有很多種,總體上來說以研究多功能電子萬年歷為主,使萬年歷除了原有的顯示時(shí)間,日期等基本功能外,還具有鬧鈴,報(bào)警等功能。商家生產(chǎn)的電子萬年歷更從質(zhì)量,價(jià)格,實(shí)用上考慮,不斷的改進(jìn)電子萬年歷的設(shè)計(jì),使其更加的具有市場。本設(shè)計(jì)為軟件,硬件相結(jié)合的一組設(shè)計(jì)。在軟件設(shè)計(jì)過程中,應(yīng)對硬件部分有相關(guān)了解,這樣有助于對設(shè)計(jì)題目的更深了解,有助于軟

10、件設(shè)計(jì)。基本的要了解一些主要器件的基本功能和作用。除了采用集成化的時(shí)鐘芯片外,還有采用mcu的方案,利用stc89c52rc單片微機(jī)制成萬年歷電路,采用軟件和硬件結(jié)合的方法,控制lcd1602輸出,分別用來顯示年、月、日、時(shí)、分、秒,還有溫度和濕度,其最大特點(diǎn)是:硬件電路簡單,安裝方便易于實(shí)現(xiàn),軟件設(shè)計(jì)獨(dú)特,可靠。stc89c52是stc公司生產(chǎn)的一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash存儲器。stc89c52使用經(jīng)典的mcs-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得s

11、tc89c52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 本文介紹了基于stc89c52rc單片機(jī)設(shè)計(jì)的電子萬年歷。第2章 設(shè)計(jì)要求與方案論證2.1設(shè)計(jì)要求2.1.1 基本要求 具有年、月、日、星期、時(shí)、分、秒等功能;2.1.2 擴(kuò)展功能 具有溫濕度檢測功能;2.2 系統(tǒng)基本方案選擇和論證 2.2.1單片機(jī)芯片 pic單片機(jī)是microchip公司的產(chǎn)品,其突出的特點(diǎn)是體積小,功耗低,精簡指令集,抗干擾性好,可靠性高,有較強(qiáng)的模擬接口,代碼保密性好,大部分芯片有其兼容的flash程序存儲器的芯片。 emc單片機(jī)是臺灣義隆公司的產(chǎn)品,有很大一部分與pic 8位單片機(jī)兼容,且相兼容產(chǎn)品

12、的資源相對比pic的多,價(jià)格便宜,有很多系列可選,但抗干擾較差。 atmel單片機(jī)atmel公司的8位單片機(jī)有at89、at90兩個(gè)系列,at89系列是8位flash單片機(jī),與8051系列單片機(jī)相兼容,靜態(tài)時(shí)鐘模式;at90系列單片機(jī)是增強(qiáng)risc結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程flash的單片機(jī),也叫avr單片機(jī)。 phlipis 51plc系列單片機(jī)philips公司的單片機(jī)是基于80c51內(nèi)核的單片機(jī),嵌入了掉電檢測、模擬以及片內(nèi)rc振蕩器等功能,這使51lpc在高集成度、低成本、低功耗的應(yīng)用設(shè)計(jì)中可以滿足多方面的性能要求。 holtek單片機(jī)臺灣盛揚(yáng)半導(dǎo)體的單片機(jī),價(jià)格便宜,種類較

13、多,但抗干擾較差,適用于消費(fèi)類產(chǎn)品。 ti公司單片機(jī)德州儀器提供了tms370和msp430兩大系列通用單片機(jī).tms370系列單片機(jī)是8位cmos單片機(jī),具有多種存儲模式、多種外圍接口模式,適用于復(fù)雜的實(shí)時(shí)控制場合;msp430系列單片機(jī)是一種超低功耗、功能集成度較高的16位低功耗單片機(jī),特別適用于要求功耗低的場合。 方案一 采用89c51芯片作為硬件核心,采用flash rom,內(nèi)部具有4kb rom 存儲空間,能于3v的超低壓工作,而且與mcs-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備isp在線編程技術(shù), 當(dāng)在對電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰?/p>

14、程序時(shí),對芯片的多次拔插會(huì)對芯片造成一定的損壞。 方案二 采用stc89c52rc,片內(nèi)rom全都采用flash rom;能以3v的超低壓工作;同時(shí)也與mcs-51系列單片機(jī)完全該芯片內(nèi)部存儲器為8kb rom 存儲空間,同樣具有89c51的功能,且具有在線編程可擦除技術(shù)。 所以選擇采用stc89c52rc作為主控制系統(tǒng)。2.2.2 顯示模塊 方案一 采用液晶顯示屏(lcd),液晶顯示屏具有輕薄短小、低耗電量、無輻射危險(xiǎn),平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)等特點(diǎn)。 方案二 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示

15、文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對較高,所以不用此種作為顯示。所以采用了液晶顯示屏作為顯示。2.2.3時(shí)鐘芯片 方案一 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大。所以不采用此方案。 方案二 采用ds1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,ds1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的ram做為數(shù)據(jù)暫存區(qū),工作電壓2.5v5.5v范圍內(nèi),2.5v時(shí)耗電小于300na。 所以采用ds1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘。2.2.

16、4溫濕度傳感器 方案一 使用熱敏電阻作為傳感器,用熱敏電阻與一個(gè)相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個(gè)電阻變化的分壓值,并進(jìn)行a/d轉(zhuǎn)換。此設(shè)計(jì)方案需用a/d轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會(huì)產(chǎn)生較大的測量誤差。方案二 采用sht10作為溫度和濕度的檢測,該儀器具有測量精度較高、硬件電路簡單、并能很好的進(jìn)行顯示,可測試不同環(huán)境溫濕度的特點(diǎn)。另外和控制電路相連,可以進(jìn)行加濕電路和除濕電路的控制,使溫度和濕度參數(shù)在預(yù)先設(shè)定的范圍內(nèi),不需要人的直接參與。所以采用sht10溫濕度傳感器。2.3 電路設(shè)計(jì)最終方案 綜上各方案所述,對此

17、次作品的方案選定: 采用stc89c52rc作為主控制系統(tǒng); ds1302提供時(shí)鐘; 溫濕度傳感器sht10檢測溫濕度;lcd液晶顯示屏作為顯示。第3章 硬件設(shè)計(jì)與原理 以stc89c52rc單片機(jī)為核心,起著控制作用。系統(tǒng)包括lcd1602液晶顯示電路、復(fù)位電路、時(shí)鐘電路、溫濕度采集電路、按鍵調(diào)整子函數(shù)、按鍵提示音電路、報(bào)警指示燈電路和時(shí)鐘芯片電路。設(shè)計(jì)思路分為九個(gè)模塊:復(fù)位電路、晶振電路模塊、stc89c52rc、lcd1602液晶顯示電路、溫濕度采集電路、按鍵調(diào)整子函數(shù)、按鍵提示音電路、報(bào)警指示燈電路和時(shí)鐘芯片電路這九個(gè)模塊。3.1 系統(tǒng)設(shè)計(jì)方框圖3.2 硬件設(shè)計(jì)分析3.2.1 顯示系統(tǒng)

18、 lcd1602分為帶背光和不帶背光兩種,基控制器大部分為hd44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖3-2-1所示:圖3-2-1 lcd1602尺寸圖 lcd1602的主要技術(shù)參數(shù): 1、顯示容量:162個(gè)字符2、芯片工作電壓:4.55.5v3、工作電流:2.0ma(5.0v)4、模塊最佳工作電壓:5.0v5、字符尺寸:2.954.35(wh)mm引腳功能說明lcd1602采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如圖3-2-2所示:編號符號引腳說明編號符號引腳說明1vss電源地9d2數(shù)據(jù)2vdd電源正極10d3數(shù)據(jù)3vl液晶顯

19、示偏壓11d4數(shù)據(jù)4rs數(shù)據(jù)/命令選擇12d5數(shù)據(jù)5r/w讀/寫選擇13d6數(shù)據(jù)6e使能信號14d7數(shù)據(jù)7d0數(shù)據(jù)15bla背光源正極8d1數(shù)據(jù)16blk背光源負(fù)極圖3-2-2引腳接口說明 第1腳:vss為地電源。第2腳:vdd接5v正電源。第3腳:vl為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對比度。第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:r/w為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和r/w共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)rs為低電

20、平r/w為高電平時(shí)可以讀忙信號,當(dāng)rs為高電平r/w為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。3.2.2 lcd1602的指令說明及時(shí)序序號指令rsr/wd7d6d5d4d3d2d1d01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001i/ds4顯示開/關(guān)控制0000001dcb5光標(biāo)或字符移位000001s/cr/l*6置功能00001dlnf*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)

21、存貯器地址9讀忙標(biāo)志或地址01bf計(jì)數(shù)器地址10寫數(shù)到cgram或ddram)10要寫的數(shù)據(jù)內(nèi)容11從cgram或ddram讀數(shù)11讀出的數(shù)據(jù)內(nèi)容圖3-2-3控制命令表1602液晶模塊內(nèi)部的控制器共有11條控制指令,如圖3-2-3所示: 1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01h,光標(biāo)復(fù)位到地址00h位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00h。指令3:光標(biāo)和顯示模式設(shè)置i/d:光標(biāo)移動(dòng)方向,高電平右移,低電平左移s:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。d:控

22、制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示c:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)b:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位s/c:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令dl:高電平時(shí)為4位總線,低電平時(shí)為8位總線 n:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示f: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器ram地址設(shè)置。指令8:ddram地址設(shè)置。指令9:讀忙信號和光標(biāo)地址bf:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令1

23、1:讀數(shù)據(jù)。3.2.3 lcd1602的ram地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖3-2-4是1602的內(nèi)部顯示地址。圖3-2-4 lcd1602內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40h,那么是否直接寫入40h就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位d7恒定為高電平1所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是01000000b(40h)+10000000b(80h)=11000000b(c0h)。在對液晶模

24、塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(cgrom)已經(jīng)存儲了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時(shí)模塊把地址41h中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“a”。圖3-2-5 液晶顯示電路3.2.4 時(shí)鐘電路模塊(1) 時(shí)鐘芯片ds1302的工作原理ds1302在每次進(jìn)行讀、寫程序前都必須初始化,先把sclk

25、端置 “0”,接著把rst端置“1”,最后才給予sclk脈沖;讀/寫時(shí)序如下圖4所示。圖5為ds1302的控制字,此控制字的位7必須置1,若為0則不能把對ds1302進(jìn)行讀寫數(shù)據(jù)。對于位6,若對程序進(jìn)行讀/寫時(shí)ram=1,對時(shí)間進(jìn)行讀/寫時(shí),ck=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是寫操作??刂谱止?jié)總是從最低位開始輸入/輸出的。表6為ds1302的日歷、時(shí)間寄存器內(nèi)容:“ch”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行?!皐p”是寫保護(hù)位,在任何的對時(shí)鐘和ram的寫操作之前

26、,wp必須為0。當(dāng)“wp”為1時(shí),寫保護(hù)位防止對任一寄存器的寫操作。圖3-2-6時(shí)鐘芯片ds1302電路圖(2) ds1302的控制字節(jié)ds1302的控制字如表3-2-7所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出 ram rd 1 a4 a3 a2 a1 a0 / ck /wr圖3-2-7 ds1302的控制字格式(3) 數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個(gè)

27、sclk時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。如下圖3-2-8所示圖3-2-8 ds1302讀/寫時(shí)序圖(4) ds1302的寄存器ds1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時(shí)間寄存器及其控制字見圖3-2-9。圖3-2-9 ds1302的日歷、時(shí)間寄存器此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有

28、寄存器內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類:一類是單個(gè)ram單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個(gè)字節(jié),命令控制字為feh(寫)、ffh(讀)。 圖 2-3示出ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc1+0.2v時(shí),vcc2給ds1302供電。當(dāng)vcc2小于vcc1時(shí),ds1302由vcc1供電。x1

29、和x2是振蕩源,外接32.khz晶振。rst是復(fù)位/片選線,通過把rst輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對ds1302進(jìn)行操作。如果在傳送過程中rsts置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行時(shí),在vcc大于等于2.5v之前,rst必須保持低電平。中有在sclk 為低電平時(shí),才能將rst置為高電平,i/o為串行數(shù)據(jù)輸入端(雙向)。sclk始終是輸入端。3.2.5 溫濕度采集模塊圖3-2-

30、10 溫濕度采集系統(tǒng)3.2.6 按鍵調(diào)整電路圖3-2-11 按鍵調(diào)整電路3.2.7 按鍵提示音電路圖3-2-12 按鍵提示音電路3.2.8 報(bào)警指示燈電路圖3-2-13 報(bào)警指示燈電路第4章 程序設(shè)計(jì)4.1 程序設(shè)計(jì)的組成該系統(tǒng)由延時(shí)子函數(shù)、檢查lcd1602液晶忙位子函數(shù)、lcd1602液晶寫指令子函數(shù)、lcd1602液晶寫數(shù)據(jù)子函數(shù)、lcd1602液晶初始化子函數(shù)、sht10寫字節(jié)子函數(shù)、sht10讀字節(jié)子函數(shù)、sht10啟動(dòng)傳輸子函數(shù)、sht10連接復(fù)位子函數(shù)、sht10溫濕度檢測子函數(shù)、sht10溫濕度值標(biāo)度變換及溫度補(bǔ)償子函數(shù)、溫濕度顯示子函數(shù)、lcd1602液晶寫參數(shù)子函數(shù)、按鍵提

31、示音子函數(shù)、按鍵掃描子函數(shù)、主函數(shù)和數(shù)據(jù)定義這幾部分組成。4.2 部分程序分析4.2.1 檢查lcd1602液晶忙位子函數(shù)/檢查lcd1602液晶忙位子函數(shù)void lcd1602_busy() uchar i=0;rs=0; rw=1; e=1; p0=0xff;i=0; while(p0&0x80)=0x80)&i150)i+; e=0; 4.2.2 lcd1602液晶寫指令子函數(shù)/lcd1602液晶寫指令子函數(shù)void write_com(uchar com)lcd1602_busy();rs=0;rw=0;p0=com;e=1;e=0;4.2.3 lcd1602液晶寫數(shù)據(jù)子函數(shù)/lcd

32、1602液晶寫數(shù)據(jù)子函數(shù)void write_date(uchar date)lcd1602_busy();rs=1;rw=0;p0=date; e=1;e=0;4.2.4 lcd1602液晶初始化子函數(shù)/lcd1602液晶初始化子函數(shù)void lcd1602_init()/初始化設(shè)置uchar i;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(i=0;i16;i+)write_date(table1i);delay(500);write_com(0xc0);for(i=0

33、;i0;i=1) /高位為1,循環(huán)右移 if(i&value) data=1;/和要發(fā)送的數(shù)相與,結(jié)果為發(fā)送的位 else data=0; sck=1; _nop_();_nop_();_nop_();/延時(shí)3us sck=0;data=1; /釋放數(shù)據(jù)線sck=1; error=data; /檢查應(yīng)答信號,確認(rèn)通訊正常_nop_();_nop_();_nop_();sck=0; data=1;return error; /error=1 通訊錯(cuò)誤4.2.6 sht10讀字節(jié)子函數(shù)/sht10讀字節(jié)子函數(shù)char s_read_byte(uchar ack) uchar i,val=0;dat

34、a=1; /釋放數(shù)據(jù)線for(i=0x80;i0;i=1) /高位為1,循環(huán)右移 sck=1; if(data) val=(val|i); /讀一位數(shù)據(jù)線的值 sck=0; data=!ack; /如果是校驗(yàn),讀取完后結(jié)束通訊;sck=1; _nop_();_nop_();_nop_();/延時(shí)3us sck=0; _nop_();_nop_();_nop_(); data=1; /釋放數(shù)據(jù)線return val;4.2.7 sht10溫濕度檢測子函數(shù)/sht10溫濕度檢測子函數(shù)char s_measure(uchar *p_value,uchar *p_checksum,uchar mode

35、) unsigned error=0;uint i;s_transstart(); /啟動(dòng)傳輸switch(mode) /選擇發(fā)送命令 case temp: error+=s_write_byte(0x03); break; /測量溫度 case humi:error+=s_write_byte(0x05); break; /測量濕度 default: break; for(i=0;i65535;i+) if(data=0) break; /等待測量結(jié)束if(data) error+=1; / 如果長時(shí)間數(shù)據(jù)線沒有拉低,說明測量錯(cuò)誤 *(p_value)=s_read_byte(1); /讀第

36、一個(gè)字節(jié),高字節(jié) (msb)*(p_value+1)=s_read_byte(1); /讀第二個(gè)字節(jié),低字節(jié) (lsb)*p_checksum=s_read_byte(0);/read crc校驗(yàn)碼return error;/ error=1 通訊錯(cuò)誤第5章 keil c51編譯器5.1 c51概述 keil c51是美國keil software公司出品的51系列兼容單片機(jī)c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。keil提供了包括c編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(

37、uvision)將這些部分組合在一起。運(yùn)行keil軟件需要win98、nt、win2000、winxp等操作系統(tǒng)。如果你使用c語言編程,那么keil幾乎就是你的不二之選,即使不使用c語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。5.2 keil c51編譯器的使用uvision4包括一個(gè)項(xiàng)目管理器,他可以使用戶的8051單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)變得簡單。要?jiǎng)?chuàng)建一個(gè)應(yīng)用,需要按下列步驟進(jìn)行操作:(1) 啟動(dòng)uvision4,新建一個(gè)項(xiàng)目文件,并從器件庫選擇一個(gè)器件。(2) 新建一個(gè)源文件,并把它加入到項(xiàng)目中。(3) 增加并配置選擇的器件的啟動(dòng)代碼和針對目標(biāo)硬件設(shè)

38、置工具選項(xiàng)。(4) 編譯項(xiàng)目并生成可以編譯prom的hex文件。5.2.1 創(chuàng)建項(xiàng)目 啟動(dòng)uvision4如圖5-2-1所示并創(chuàng)建一個(gè)項(xiàng)目,uvision4是一個(gè)標(biāo)準(zhǔn)windows應(yīng)用程序,直接點(diǎn)擊程序圖標(biāo)就可以啟動(dòng)它。要?jiǎng)?chuàng)建一個(gè)項(xiàng)目文件,從uvision4的project菜單中選擇new project,這將打開一個(gè)標(biāo)準(zhǔn)的windows對話框(圖5-2-2),此對話框要求輸入項(xiàng)目文件名。圖5-2-1 uvision4啟動(dòng)畫面圖5-2-2 創(chuàng)建項(xiàng)目文件對話框 選擇所要的單片機(jī),這里我們選擇常用的ateml公司的at89c52。此時(shí)屏幕如圖5-2-3所示。圖中右邊簡單的介紹了ateml的功能。完

39、成上面步驟后,就可以進(jìn)行程序的編寫了。 圖5-2-3 選擇器對話框5.2.2 新建一個(gè)源文件單擊菜單選項(xiàng)filenew新建一個(gè)源文件,這將打開一個(gè)空的編輯窗口,要求輸入源代碼。當(dāng)把此文件另存為*.c的文件后,uvision4將高亮顯示c語言語法字符。一旦創(chuàng)建了源文件,如example.c,就可以把它加入到創(chuàng)建的項(xiàng)目中。uvision4提供了幾種手段把源文件加入到項(xiàng)目中。例如,可以鼠標(biāo)右鍵單擊project窗口下files頁中的文件組(source group),彈出快捷菜單,菜單中的add files to groups選項(xiàng)打開一個(gè)標(biāo)準(zhǔn)的文件對話框,從對話框中選擇剛剛生成的文件。加入后的結(jié)果如

40、圖5-2-4所示圖5-2-4 加入源文件后的項(xiàng)目管理窗5.2.3 增加和配置啟動(dòng)代碼、設(shè)置工具選項(xiàng)文件startup.a51是大多數(shù)不同的8051cpu準(zhǔn)備的啟動(dòng)代碼。啟動(dòng)代碼清除數(shù)據(jù)存儲器并初始化硬件和再人函數(shù)堆棧指針。另外,一些8051系列單片機(jī)派生產(chǎn)品要求初始化cpu來符合設(shè)計(jì)中的相應(yīng)的硬件。假如需要修改啟動(dòng)文件來符合目標(biāo)硬件,應(yīng)該把文件startup.a51復(fù)制一份到目標(biāo)文件夾中。為選擇的cpu的配置文件創(chuàng)建一個(gè)文件組是一個(gè)良好的習(xí)慣。通過projecttargets,groups,files打開對話框來添加一個(gè)名為system files的文件組到目標(biāo)中。也在此對話框中,單擊【add

41、 files to group】按鈕把文件startup.a51添加到項(xiàng)目中。在項(xiàng)目窗口中雙擊文件名startup.a51,就可以在編輯器中打開它,配置啟動(dòng)代碼。如果使用所選擇器件的片上ram,在啟動(dòng)代碼中的設(shè)置必須匹配options-target對話框中的設(shè)置。其設(shè)置方法如下:uvision4允許為目標(biāo)硬件設(shè)置選項(xiàng)。options for target對話框可以通過工具條圖標(biāo)打開。在目標(biāo)的各個(gè)選項(xiàng)卡中,可以定義和目標(biāo)硬件及所選器件的片上元件相關(guān)的所有參數(shù),如圖5-2-5、5-2-6、5-2-7所示。根據(jù)選擇的器件的不同,目標(biāo)對話框的內(nèi)容也會(huì)有所不同。圖5-2-5 目標(biāo)對話框的target選項(xiàng)

42、卡圖5-2-6 目標(biāo)對話框的c51選項(xiàng)卡圖5-2-7 目標(biāo)對話框的output選項(xiàng)卡5.2.4 build項(xiàng)目并生成hex文件通常情況下,在options-target對話框中的設(shè)置已經(jīng)足夠一個(gè)新的應(yīng)用。選擇菜單projectbuild target,對當(dāng)前工程進(jìn)行連接,如果當(dāng)前文件已修改,軟件就會(huì)先對該文件進(jìn)行編譯,然后連接以產(chǎn)生目標(biāo)代碼;如果選擇菜單projectrebuilt all target files,獎(jiǎng)會(huì)對當(dāng)前工程的所有文件重新進(jìn)行編譯,然后再連接,確保最終產(chǎn)生的目標(biāo)代碼是最新的,而translate.項(xiàng)則僅對該文件進(jìn)行編譯,不進(jìn)行連接。以上操作可以通過工具按鈕直接進(jìn)行。圖5-

43、2-8是有關(guān)編譯、連接、項(xiàng)目設(shè)置的工具按鈕,從左到右分別是編譯、編譯連接、全部重建、停止編譯和對工程進(jìn)行設(shè)置。圖5-2-8 有關(guān)編譯、連接、項(xiàng)目設(shè)置的工具條 編譯過程中的信息將出現(xiàn)在輸出窗口中的build選項(xiàng)卡中,如果源程序中有語法錯(cuò)誤,會(huì)有錯(cuò)誤報(bào)告出現(xiàn),雙擊該行,可以定位到出錯(cuò)的位置,對源程序反復(fù)修改之后,最終會(huì)得到如圖5-2-9所示的結(jié)果,提示獲得了hex文件,該文件即可被編譯器讀入并寫入芯片中,同時(shí)產(chǎn)生了一些相關(guān)文件,可被keil仿真與調(diào)試。圖5-2-9 正確編譯、連接后的結(jié)果第6章 電路仿真6.1 proteus簡介 proteus是世界上著名的eda工具(仿真軟件),從原理圖布圖、代

44、碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到pcb設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、pcb設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等,2010年又增加了cortex和dsp系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持iar、keil和mplab等多種編譯器。6.2 使用proteus進(jìn)行電路仿真設(shè)計(jì) 在proteus繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.hex,可以在proteus的原理圖中看到

45、模擬的實(shí)物運(yùn)行狀態(tài)和過程。proteus 是單片機(jī)課堂教學(xué)的先進(jìn)助手。proteus不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)是學(xué)生走向就業(yè)的重要實(shí)踐環(huán)節(jié)。由于proteus提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了

46、培養(yǎng)學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺隨著科技的發(fā)展,“計(jì)算機(jī)仿真技術(shù)”已成為許多設(shè)計(jì)部門重要的前期設(shè)計(jì)手段。它具有設(shè)計(jì)靈活,結(jié)果、過程的統(tǒng)一的特點(diǎn)。可使設(shè)計(jì)時(shí)間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險(xiǎn)。相信在單片機(jī)開發(fā)應(yīng)用中proteus也能茯得愈來愈廣泛的應(yīng)用。使用proteus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì),是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力;在單片機(jī)課程設(shè)計(jì)和全國大學(xué)生電子設(shè)計(jì)競賽中,我們使用 proteus 開發(fā)環(huán)境對學(xué)生進(jìn)行培訓(xùn),在不需要硬件投入的條件下,學(xué)生普遍反映,對單片機(jī)的學(xué)習(xí)比單純學(xué)習(xí)書本知識更容易接受,更容易提高。實(shí)踐證明,在使用 proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。因此,proteus 有較高的推廣利用價(jià)值。目前proteus的最新版為8.0,arm cortex處理器被增加,在7.10中已經(jīng)增加dsp系列(tms320)。6.2.1 proteus功能特點(diǎn) proteus軟件具有其它eda工具軟件(例:multisim)的功能。這些功能是:1原理布圖2pcb自動(dòng)或人工布線3spice電路仿真革命性的特點(diǎn)1互動(dòng)的電路仿真用戶甚至可以實(shí)時(shí)采用諸如ram,rom,鍵盤,馬達(dá),led,lcd,ad/da,部分spi器件,部分

溫馨提示

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

評論

0/150

提交評論