基于51單片檢測 電子萬年歷的畢業(yè)設(shè)計崔曉_第1頁
基于51單片檢測 電子萬年歷的畢業(yè)設(shè)計崔曉_第2頁
基于51單片檢測 電子萬年歷的畢業(yè)設(shè)計崔曉_第3頁
基于51單片檢測 電子萬年歷的畢業(yè)設(shè)計崔曉_第4頁
基于51單片檢測 電子萬年歷的畢業(yè)設(shè)計崔曉_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機控制技術(shù)課程設(shè)計說明書論文題目:基于51單片機溫濕度檢測+電子萬年歷的設(shè)計院 系 電氣工程與自動化學(xué)院專 業(yè) 電氣工程及其自動化班 級 b150331 學(xué)生姓名 崔曉敏 學(xué) 號 b15033101 指導(dǎo)教師 張 娟 梅 2016年12月25日 第1章 緒論 隨著人們生活水平的提高和生活節(jié)奏的加快,對時間的要求越來越高,精準(zhǔn)數(shù)字計時的消費需求也是越來越多。二十一世紀(jì)的今天,最具代表性的計時產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機械鐘或表。第二次革命是石英晶體

2、振蕩器的應(yīng)用,發(fā)明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機數(shù)碼計時技術(shù)的應(yīng)用(電子萬年歷),使計時產(chǎn)品的走時日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計時的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計時業(yè)界跨躍性的進步我國生產(chǎn)的電子萬年歷有很多種,總體上來說以研究多功能電子萬年歷為主,使萬年歷除了原有的顯示時間,日期等基本功能外,還具有鬧鈴,報警等功能。商家生產(chǎn)的電子萬年歷更從質(zhì)量,價格,實用上考慮,不斷的改進電子

3、萬年歷的設(shè)計,使其更加的具有市場。本設(shè)計為軟件,硬件相結(jié)合的一組設(shè)計。在軟件設(shè)計過程中,應(yīng)對硬件部分有相關(guān)了解,這樣有助于對設(shè)計題目的更深了解,有助于軟件設(shè)計?;镜囊私庖恍┲饕骷幕竟δ芎妥饔?。除了采用集成化的時鐘芯片外,還有采用mcu的方案,利用stc89c52rc單片微機制成萬年歷電路,采用軟件和硬件結(jié)合的方法,控制lcd1602輸出,分別用來顯示年、月、日、時、分、秒,還有溫度和濕度,其最大特點是:硬件電路簡單,安裝方便易于實現(xiàn),軟件設(shè)計獨特,可靠。stc89c52是stc公司生產(chǎn)的一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash存儲器。stc89c52

4、使用經(jīng)典的mcs-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得stc89c52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 本文介紹了基于stc89c52rc單片機設(shè)計的電子萬年歷。第2章 設(shè)計要求與方案2.1設(shè)計要求2.1.1 基本要求 具有年、月、日、星期、時、分、秒等功能;2.1.2 擴展功能 具有溫濕度檢測功能;2.2 電路設(shè)計最終方案 綜上各方案所述,對此次作品的方案選定: 采用stc89c52rc作為主控制系統(tǒng); ds1302提供時鐘; 溫濕度傳感器sht10檢測溫濕度;lcd1206

5、液晶顯示屏作為顯示。第3章 硬件設(shè)計與原理 以stc89c52rc單片機為核心,起著控制作用。系統(tǒng)包括lcd1602液晶顯示電路、復(fù)位電路、時鐘電路、溫濕度采集電路、按鍵調(diào)整子函數(shù)、按鍵提示音電路、報警指示燈電路和時鐘芯片電路。設(shè)計思路分為九個模塊:復(fù)位電路、晶振電路模塊、stc89c52rc、lcd1602液晶顯示電路、溫濕度采集電路、按鍵調(diào)整子函數(shù)、按鍵提示音電路、報警指示燈電路和時鐘芯片電路這九個模塊。3.1 系統(tǒng)設(shè)計方框圖3.2 硬件設(shè)計分析3.2.1 顯示系統(tǒng) lcd1602分為帶背光和不帶背光兩種,基控制器大部分為hd44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,

6、兩者尺寸差別如下圖3-2-1所示:圖3-2-1 lcd1602尺寸圖 lcd1602的主要技術(shù)參數(shù): 1、顯示容量:162個字符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液晶顯示偏壓11d4數(shù)據(jù)4rs數(shù)據(jù)/命令選擇12d5數(shù)據(jù)5r/w讀/寫選擇13d6數(shù)據(jù)6e使能信號14d7數(shù)據(jù)7d0數(shù)據(jù)15bla背

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

8、,液晶模塊執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。3.2.2 lcd1602的指令說明及時序序號指令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ù)存貯器地址9讀忙標(biāo)志或地址01bf計數(shù)器地址10寫數(shù)到cgram或ddram)10要寫的數(shù)據(jù)內(nèi)容11從cgram或ddram讀

9、數(shù)11讀出的數(shù)據(jù)內(nèi)容圖3-2-3控制命令表1602液晶模塊內(nèi)部的控制器共有11條控制指令,如圖3-2-3所示: 1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(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)移動方向,高電平右移,低電平左移s:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。d:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示c:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)b:控制光標(biāo)是否

10、閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位s/c:高電平時移動顯示的文字,低電平時移動光標(biāo)。指令6:功能設(shè)置命令dl:高電平時為4位總線,低電平時為8位總線 n:低電平時為單行顯示,高電平時雙行顯示f: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器ram地址設(shè)置。指令8:ddram地址設(shè)置。指令9:讀忙信號和光標(biāo)地址bf:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。3.2.3 lcd1602的ram地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確

11、認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖3-2-4是1602的內(nèi)部顯示地址。圖3-2-4 lcd1602內(nèi)部顯示地址例如第二行第一個字符的地址是40h,那么是否直接寫入40h就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位d7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000b(40h)+10000000b(80h)=11000000b(c0h)。在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的

12、狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(cgrom)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時模塊把地址41h中的點陣字符圖形顯示出來,我們就能看到字母“a”。圖3-2-5 液晶顯示電路3.2.4 時鐘電路模塊(1) 時鐘芯片ds1302的工作原理ds1302在每次進行讀、寫程序前都必須初始化,先把sclk端置 “0”,接著把rst端置“1”,最后才給予sclk脈沖;讀/寫時序如下圖4所示。圖5為ds1302的控制字,此控制字的位

13、7必須置1,若為0則不能把對ds1302進行讀寫數(shù)據(jù)。對于位6,若對程序進行讀/寫時ram=1,對時間進行讀/寫時,ck=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作。控制字節(jié)總是從最低位開始輸入/輸出的。表6為ds1302的日歷、時間寄存器內(nèi)容:“ch”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,ds1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運行。“wp”是寫保護位,在任何的對時鐘和ram的寫操作之前,wp必須為0。當(dāng)“wp”為1時,寫保護位防止對任一寄存器的寫操作。圖3-2-6時鐘芯片ds1302電路圖(2) ds1302

14、的控制字節(jié)ds1302的控制字如表3-2-7所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出 ram rd 1 a4 a3 a2 a1 a0 / ck /wr圖3-2-7 ds1302的控制字格式(3) 數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個sclk時鐘的上升沿時,數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的

15、下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖3-2-8所示圖3-2-8 ds1302讀/寫時序圖(4) ds1302的寄存器ds1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制字見圖3-2-9。圖3-2-9 ds1302的日歷、時間寄存器此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 ds1302與ram相關(guān)的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控

16、制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)。 圖 2-3示出ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。ds1302由vcc1或vcc2兩者中的較大者供電。當(dāng)vcc2大于vcc1+0.2v時,vcc2給ds1302供電。當(dāng)vcc2小于vcc1時,ds1302由vcc1供電。x1和x2是振蕩源,外接32.khz晶振。rst是復(fù)位/片選線,通過把rst輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種

17、功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進行操作。如果在傳送過程中rsts置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電動行時,在vcc大于等于2.5v之前,rst必須保持低電平。中有在sclk 為低電平時,才能將rst置為高電平,i/o為串行數(shù)據(jù)輸入端(雙向)。sclk始終是輸入端。3.2.5 溫濕度采集模塊圖3-2-10 溫濕度采集系統(tǒng)3.2.6 按鍵調(diào)整電路圖3-2-11 按鍵調(diào)整電路3.2.7 按鍵提示音電路圖3-2-12 按鍵提示音電

18、路3.2.8 報警指示燈電路圖3-2-13 報警指示燈電路第4章 程序設(shè)計4.1 程序設(shè)計的組成該系統(tǒng)由延時子函數(shù)、檢查lcd1602液晶忙位子函數(shù)、lcd1602液晶寫指令子函數(shù)、lcd1602液晶寫數(shù)據(jù)子函數(shù)、lcd1602液晶初始化子函數(shù)、sht10寫字節(jié)子函數(shù)、sht10讀字節(jié)子函數(shù)、sht10啟動傳輸子函數(shù)、sht10連接復(fù)位子函數(shù)、sht10溫濕度檢測子函數(shù)、sht10溫濕度值標(biāo)度變換及溫度補償子函數(shù)、溫濕度顯示子函數(shù)、lcd1602液晶寫參數(shù)子函數(shù)、按鍵提示音子函數(shù)、按鍵掃描子函數(shù)、主函數(shù)和數(shù)據(jù)定義這幾部分組成。4.2 部分程序分析4.2.1 檢查lcd1602液晶忙位子函數(shù)/檢

19、查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ù)/lcd1602液晶寫數(shù)據(jù)子函數(shù)void write_date(uchar date)lcd1602_busy();rs=1;rw=0

20、;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;i0;i=1) /高位為1,循環(huán)右移 if(i&value) data=1;/和要發(fā)送的數(shù)相與,結(jié)果為發(fā)送的位 else d

21、ata=0; sck=1; _nop_();_nop_();_nop_();/延時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 通訊錯誤4.2.6 sht10讀字節(jié)子函數(shù)/sht10讀字節(jié)子函數(shù)char s_read_byte(uchar ack) uchar i,val=0;data=1; /釋放數(shù)據(jù)線for(i=0x80;i0;i=1) /高位為1,循環(huán)右移 sck=1; if(data) val=(v

22、al|i); /讀一位數(shù)據(jù)線的值 sck=0; data=!ack; /如果是校驗,讀取完后結(jié)束通訊;sck=1; _nop_();_nop_();_nop_();/延時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) unsigned error=0;uint i;s_transstart(); /啟動傳輸switch(mode) /選擇

23、發(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ù)據(jù)線沒有拉低,說明測量錯誤 *(p_value)=s_read_byte(1); /讀第一個字節(jié),高字節(jié) (msb)*(p_value+1)=s_read_byte(1); /讀第二個字節(jié),低字節(jié) (lsb)*p_

24、checksum=s_read_byte(0);/read crc校驗碼return error;/ error=1 通訊錯誤第5章 電路仿真5.1 仿真圖 通過總設(shè)置鍵進入日期、時鐘畫面。點擊設(shè)置鍵進入設(shè)置狀態(tài),通過上調(diào)、下調(diào)鍵實現(xiàn)對年、月、日、時、分、秒、星期的設(shè)置。圖6-2-1 電路仿真總 結(jié)通過理論分析和電路驗證,現(xiàn)在對此次課程設(shè)計的溫濕度系統(tǒng)設(shè)計結(jié)果進行總結(jié)。通過硬件我們可以看到結(jié)果和理論分析是相符合的,也即此次設(shè)計的系統(tǒng)能夠在一定的條件下達到課程設(shè)計目的,實現(xiàn)對外界溫濕度的測量,電路結(jié)構(gòu)簡單。同時,在本次設(shè)計中,也深刻體會到理論和實踐相集合的重要性。雖然之前收集了大量的資料但在實際

25、應(yīng)用中卻有很大差異,出現(xiàn)了許多意想不到的問題。但經(jīng)過長時間的摸索最終還是設(shè)計出達到要求的系統(tǒng)。課程設(shè)計是既是對學(xué)校所學(xué)知識的全面總結(jié)和綜合應(yīng)用,又為今后走向社會的實際操作應(yīng)用鑄就了一個良好開端,課程設(shè)計是我對所學(xué)知識理論的檢驗與總結(jié),能夠培養(yǎng)和提高設(shè)計者獨立分析和解決問題的能力;是我在校期間向?qū)W校所交的最后一份綜和性作業(yè),其次,課程設(shè)計的指導(dǎo)是老師檢驗其教學(xué)效果,改進教學(xué)方法,提高教學(xué)質(zhì)量的絕好機會。在不斷的努力下我的課程設(shè)計終于完成了。在沒有做課程設(shè)計以前覺得課程設(shè)計只是對這幾年來所學(xué)知識的大概總結(jié),但是真的面對課程設(shè)計時發(fā)現(xiàn)自己的想法基本是錯誤的。課程設(shè)計不僅是對前面所學(xué)知識的一種檢驗,而

26、且也是對自己能力的一種提高。通過這次課程設(shè)計使我明白了自己原來知識太理論化了,面對單獨的課題的是感覺很茫然。自己要學(xué)習(xí)的東西還太多,以前老是覺得自己什么東西都會,什么東西都懂,有點眼高手低。通過這次課程設(shè)計,我才明白學(xué)習(xí)是一個長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。在此要感謝我的指導(dǎo)老師對我悉心的指導(dǎo),感謝老師們給我的幫助。在設(shè)計過程中,我通過查閱大量有關(guān)資料,與同學(xué)交流經(jīng)驗和自學(xué),并向老師請教等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個設(shè)計中我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后

27、的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。雖然這個設(shè)計做的也不太好,但是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我終身受益。參考文獻1李群芳,張士軍,黃建.單片微型計算機與接口技術(shù). 北京:電子工業(yè)出版社,20082李群芳.單片機原理接口與應(yīng)用.北京:清華大學(xué)出版社,20053張迎新.單片微型計算機原理、應(yīng)用及接口技術(shù).北京:國防工業(yè)出版社,19994高峰.單片微機應(yīng)用系統(tǒng)設(shè)計及使用技術(shù).北京:機械工業(yè)出版社,20075彭偉.單片機c語音程序設(shè)計實例基于protues仿真.北京:電子工業(yè)出版社,20077張

28、冬林,李鑫,戴梅.基于dht11的低成本蠶室溫濕度自動控制系統(tǒng)設(shè)計j.現(xiàn)代農(nóng)業(yè)科技,2010,(18):14-15 .8 徐春河.淺談at89s51j.制造業(yè)自動化,2010,(12):80-82.9吳漢清.常用的典型單片機資料j.無線電,2007,(11):72-80.10葉健斌.基于單片機嵌入式系統(tǒng)的gps應(yīng)用j.電子質(zhì)量,2008,(7):16-24.11 劉寶元,張玉虹,姜旭,段存麗.基于單片機的溫濕度監(jiān)控系統(tǒng)設(shè)計j.國外電子測量技術(shù),2009,(12):77-80,83.12王靜.通用庫房溫濕度測控系統(tǒng)d.中國海洋大學(xué),2009.13陳汝全.實用微機與單片機控制技術(shù)m電子科技大學(xué)出版

29、社1995.7 12.14 張廣軍,黃俊欽.溫度傳感器現(xiàn)場動態(tài)校準(zhǔn)方法與實驗研究j 北京航空航天大學(xué)學(xué)報 1997年23卷3期 311-315.15 李建民單片機在溫度控制系統(tǒng)中的應(yīng)用m江漢大學(xué)學(xué)報,1996.6 210-215.16. 薛玲,孫曼,張志會,夏莉麗,魏希文.基于單片機at89s51的溫濕度控制儀j.2010,37, (7):66-69附圖原理圖:附表元件清單:附程序總程序:#include/定義函數(shù)#includetypedef unsigned char uchar;/無符號8位整型變量 typedef unsigned int uint;/無符號16位整型變量 sbit r

30、s=p27;/lcd1602數(shù)據(jù)/命令選擇端(h/l) sbit rw=p26;/lcd1602讀/寫選擇端(h/l)sbit e=p25;/lcd1602使能信號端sbit data=p36;sbit sck=p37;sbit k1=p32;/總設(shè)置按鍵sbit k2=p33;/設(shè)置按鍵sbit k3=p34;/+按鍵sbit k4=p35;/-按鍵sbit beep=p20;sbit d1=p10;/高溫報警指示燈sbit d2=p11;/低溫報警指示燈sbit d3=p12;/高濕度報警指示燈sbit d4=p13;/低濕度報警指示燈sbit acc0=acc0;sbit acc7=ac

31、c7;sbit io=p15; sbit sclk=p16; sbit rst=p17;uchar idata wendu6; uchar idata shidu6;uchar code table1= 2013-08-30 ;uchar code table2= qq:383459194 ;uchar code table3= gaowenbaojing ;uchar code table4= diwenbaojing ;uchar code table5=gaoshidubaojing ;uchar code table6= dishidubaojing ;uchar code table

32、7=gaowen+gaoshidu ;uchar code table8= gaowen+dishidu ;uchar code table9= diwen+gaoshidu ;uchar code table10= diwen+dishidu ;uchar code table11= this is ok ;uchar code table12= ;uchar code table13= : : ;enum temp,humi;typedef union /定義共用同類型 uint i;float f; value;uchar a,b,c,d,num,flag=0,m=0,num1=0;ch

33、ar miao,shi,fen;uchar ccc,ri,yue,nian,zhou,flag1;/延時子函數(shù)void delay(uint z) uint x,y;for(x=z;x0;x-)for(y=120;y0;y-);/按鍵提示音子函數(shù)void di()beep=0;delay(100);beep=1;/往ds1302時鐘芯片寫入一字節(jié)子函數(shù)void inputbyte(uchar add) uchar i; acc=add; for(i=8;i0;i-) io=acc0; sclk=1; sclk=0; acc=acc1; /ds1302時鐘芯片輸出一字節(jié)子函數(shù)uchar outp

34、utbyte() uchar i; for(i=8;i0;i-) acc=acc1; acc7=io; sclk=1; sclk=0; return acc;/往ds1302時鐘芯片寫入數(shù)據(jù)子函數(shù)void write_ds(uchar add,uchar ucda) rst=0; sclk=0; rst=1; inputbyte(add); inputbyte(ucda); sclk=1; rst=0;/從ds1302時鐘芯片讀出數(shù)據(jù)子函數(shù)uchar read_ds(uchar add) uchar ucda; rst=0; sclk=0; rst=1; inputbyte(add); ucd

35、a=outputbyte(); sclk=1; rst=0; return(ucda);/設(shè)置ds1302時鐘芯片子函數(shù)void write_setds(uchar addr,uchar date) write_ds(0x8e,0x00); write_ds(addr,date); write_ds(0x8e,0x80);/檢查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; /lcd1602液晶寫指令子函數(shù)void write

36、_com(uchar com)lcd1602_busy();rs=0;rw=0;p0=com;e=1;e=0;/lcd1602液晶寫數(shù)據(jù)子函數(shù)void write_date(uchar date)lcd1602_busy();rs=1;rw=0;p0=date; e=1;e=0;/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;i0;i=1) /高位為1,循環(huán)右移 if(i&value) dat

溫馨提示

  • 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

提交評論