中原工學(xué)院信息商務(wù)學(xué)院?jiǎn)纹瑱C(jī)課設(shè)_第1頁(yè)
中原工學(xué)院信息商務(wù)學(xué)院?jiǎn)纹瑱C(jī)課設(shè)_第2頁(yè)
中原工學(xué)院信息商務(wù)學(xué)院?jiǎn)纹瑱C(jī)課設(shè)_第3頁(yè)
中原工學(xué)院信息商務(wù)學(xué)院?jiǎn)纹瑱C(jī)課設(shè)_第4頁(yè)
中原工學(xué)院信息商務(wù)學(xué)院?jiǎn)纹瑱C(jī)課設(shè)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子時(shí)鐘目錄1設(shè)計(jì)任務(wù)與要求22系統(tǒng)的主要功能與方案設(shè)計(jì)23電路硬件及軟件設(shè)計(jì)43.1硬件設(shè)計(jì)原理及電路原理圖43.2主要元器件清單73.3軟件設(shè)計(jì)流程73. 4源程序代碼93. 5其它(proteus仿真結(jié)果圖)144課程設(shè)計(jì)體會(huì)錯(cuò)誤!未定義書(shū)簽。參考文獻(xiàn) 錯(cuò)誤!未定義書(shū)簽。溫度控制器目錄1設(shè)計(jì)任務(wù)與要求錯(cuò)誤!未定義書(shū)簽。2系統(tǒng)的主要功能與方案設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。3電路硬件及軟件設(shè)計(jì)錯(cuò)誤!未定義書(shū)簽。3. "i硬件設(shè)計(jì)原理及電路原理圖錯(cuò)誤!未定義書(shū)簽。3. 2主要元器件清單錯(cuò)誤!未定義書(shū)簽。3. 3軟件設(shè)計(jì)流程錯(cuò)誤!未定義書(shū)簽。3.4源程序代碼錯(cuò)誤!未定義書(shū)簽。3. 5其它(pr

2、oteus仿真結(jié)果圖)錯(cuò)誤!未定義書(shū)簽。4課程設(shè)計(jì)體會(huì)錯(cuò)誤!未定義書(shū)簽。參考文獻(xiàn)錯(cuò)誤!未定義書(shū)簽。<->電子時(shí)鐘課程設(shè)計(jì)1設(shè)計(jì)任務(wù)與要求請(qǐng)?jiān)O(shè)計(jì)一個(gè)基于單片機(jī)的電子時(shí)鐘,畫(huà)出硬件電路圖、編寫(xiě)相應(yīng)的軟件,完 成電子時(shí)鐘的任務(wù),并進(jìn)行proteus仿真。該控制任務(wù)應(yīng)該完成下列功能:(1) 電子時(shí)鐘顯示用led數(shù)碼管顯示,格式為:xx xx xx,由左向右分別 為:時(shí)、分、秒,比如:23 20 40表示23時(shí)20分40秒,剛開(kāi)始工作時(shí)應(yīng)該 顯示為:年月日和學(xué)號(hào);(2) 實(shí)現(xiàn)對(duì)時(shí)、分、秒進(jìn)行校準(zhǔn);(3) 設(shè)計(jì)電子時(shí)鐘原理圖,學(xué)習(xí)用pr0tel畫(huà)出該原理圖,并用proteus 進(jìn)行仿真;設(shè)計(jì)和

3、繪制軟件流程圖,編寫(xiě)程序,進(jìn)行調(diào)試。2系統(tǒng)的主要功能與方案設(shè)計(jì)(1) 系統(tǒng)主要功能 電子時(shí)鐘采用6位led數(shù)碼管; 從左到右先顯示制作者學(xué)號(hào),再顯示吋、分、秒,也可顯示年、月、日; 可以通過(guò)按鈕對(duì)吋、分、秒校準(zhǔn)。(2) 方案設(shè)計(jì)根據(jù)系統(tǒng)主要功能,設(shè)計(jì)系統(tǒng)整體框圖如下:按 鍵 模 塊電源模塊時(shí)鐘模塊單片機(jī)模塊驅(qū)動(dòng)模塊tled顯示模塊圖1系統(tǒng)整體框圖整個(gè)系統(tǒng)用單片機(jī)作為中央控制器,由單片機(jī)執(zhí)行采集芯片內(nèi)部時(shí)鐘信號(hào), 時(shí)鐘信號(hào)通過(guò)單片機(jī)i/o 口傳給單片機(jī),單片機(jī)模塊控制驅(qū)動(dòng)模塊驅(qū)動(dòng)顯示模塊,通過(guò)顯示模塊來(lái)實(shí)現(xiàn)信號(hào)的輸岀、led的顯示及相關(guān)的控制功能。系統(tǒng)設(shè)有 按鍵模塊用于對(duì)時(shí)間進(jìn)行調(diào)整及擴(kuò)展多個(gè)小

4、鍵盤(pán)。單片機(jī)at89c52和基本結(jié)構(gòu)at89c52是一個(gè)低電壓,高性能cmos 8位單片機(jī),片內(nèi)含8k bytes的可反 復(fù)擦寫(xiě)的flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(ram)。主 要性能有:兼容mcs51指令系統(tǒng)、32個(gè)雙向1/0 口、256x8bit內(nèi)部ram、3個(gè) 16位可編程定時(shí)/計(jì)數(shù)器中斷、時(shí)鐘頻率0-24mhz、2個(gè)串行中斷、可編程uart 串行通道、2個(gè)外部中斷源、6個(gè)中斷源、2個(gè)讀寫(xiě)中斷口線(xiàn)、3級(jí)加密位、低功 耗空閑和掉電模式、軟件設(shè)置睡眠和喚醒功能。8052單片機(jī)包含中央處理器、程序存儲(chǔ)器(rom)、數(shù)據(jù)存儲(chǔ)器(ram)、定時(shí)/ 計(jì)數(shù)器、并行接口、

5、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線(xiàn)、地址總線(xiàn)和控 制總線(xiàn)等三大總線(xiàn)。t2/p1.0t2ex/pl.1pl. 2pl. 3pl. 4p 1. 5p 16p 1. 7rstrxd/p3.0txd/p3,1int0/p3, 2int1/p3. 3t0/p3.4t1/p3.5wr/p3,6rd/p3.7xtal2xtal1vss111111111111111111匚86612 35171913 41 1o24 50 127 8 9 1 1 1pdit400 9 8 7 6 54 3 3 3 3 38 72 26 5 4 3 2 12 2 2 2 2 2vccpo. o/adopo. 1/adlpo

6、. 2/ad2po. 3/ad3po.4/ad4po. 5/ad5po.6/ad6po.7/ad7ea ale/progpsenp2 7/a15p2 6/a14p2. 5/a13p2. 4/a12p2. 3/a1 1p2.2/a1op2.1/a9p2. 0/a8圖2 89c52引腳圖數(shù)碼顯示方案一:靜態(tài)顯示。靜態(tài)顯示,即當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二 極管恒定導(dǎo)通或截止。該方式每一位都需要一個(gè)8位輸出口控制。靜態(tài)顯示時(shí) 較小電流能獲得較高的亮度,且字符不閃爍。但因當(dāng)所需顯示的位數(shù)較多時(shí),靜 態(tài)顯示所需的i/o 口數(shù)較大,造成資源的浪費(fèi)。方案二:動(dòng)態(tài)顯示。即各位數(shù)碼管輪流點(diǎn)亮,對(duì)于顯示器各

7、位數(shù)碼管,每隔 一段延時(shí)時(shí)間循環(huán)點(diǎn)亮一次。顯示器的亮度與導(dǎo)通電流、點(diǎn)亮?xí)r間及間隔時(shí)間的 比例有關(guān)動(dòng)態(tài)顯示節(jié)省了 i/o 口,降低了能耗。從節(jié)省單片機(jī)芯片i/o 口和降低 能耗角度出發(fā),電子鐘數(shù)碼管顯示選擇設(shè)計(jì)采用方案二。3電路硬件及軟件設(shè)計(jì)3. 1硬件設(shè)計(jì)原理及電路原理圖根據(jù)系統(tǒng)功能,電路包括以下小系統(tǒng)(電路)(1)單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng):?jiǎn)纹瑱C(jī)的最小系統(tǒng)是由電源、復(fù)位、晶振、/ra=1組成。 以下介紹主要部分: 1.電源引腳vcc 40電源端gnd 20接地端工作電壓為5v 外接晶體引腳xtal1是片內(nèi)振蕩器的反相放大器輸入端,xtal2則是輸出端,如晶振為 12mhz,時(shí)鐘頻率就為6

8、mhzo電容取30pf左右。系統(tǒng)的吋鐘電路設(shè)計(jì)是采用的 內(nèi)部方式,引腳xtal1和xtal2分別是此放大器的輸入端和輸岀端。xtal2懸空xtal2xtal1 外部振蕩xtal1信號(hào)gndgnd2 外藏方式圖3品振連接的內(nèi)部、外部方式圖(2) ds1302時(shí)鐘芯片電路圖4 ds1302時(shí)鐘芯片最小系統(tǒng)電路(3) led顯示電路對(duì)于多位led顯示器,通常都是采用動(dòng)態(tài)掃描的方法進(jìn)行顯示,其碩件連接 方式如下圖所示。stc89c52圖5數(shù)碼管的硬件連接示意圖(4) 位碼用74ls245芯片驅(qū)動(dòng)(5) 電路原理圖f :十十h> 三屋 rsi rzri u 西 w iiq imwr:cinof-j

9、sa> *w>-« - il: ;m h 訂:hl h 訝:;u9 隔官-go甘lo pc13卜r 9 q ,y £ iz l:;.: <.:二;.:<.:fe譽(yù)“乂 ” y x£j . 已 目廚"bib!眄【.;m.lgc> h*isikv3.2主要元器件清單序號(hào)名稱(chēng)(型號(hào))數(shù)量(個(gè))132. 768khz 晶振一個(gè)212mhz晶振一個(gè)3四腳按鈕五個(gè)4at89c52一個(gè)530pf電容兩個(gè)622uf電容一個(gè)774ls245一個(gè)8npn(8050)一個(gè)9ds1302一個(gè)10上拉電阻一個(gè)1110kq電阻一個(gè)12報(bào)警器一個(gè)133.

10、 6v肓流電源一個(gè)14ledmpx6位數(shù)碼管一個(gè)15導(dǎo)線(xiàn)若干3. 3軟件設(shè)計(jì)流程1初始化定時(shí)器.led及ds1302.開(kāi)中斷圖7主程序流程圖日期寫(xiě)入ds1302; 進(jìn)入主程序vxz3.4源程序代碼圖9時(shí)間調(diào)整流程圖日期寫(xiě)入ds1302 進(jìn)入主程序include <rcg52. h>ttinclude <intrins. h>/*編譯預(yù)處理*/#dcfinc uchar unsigned char/ 無(wú)符號(hào)字符型#define uint unsigned int/無(wú) 符號(hào)基本整型uchar data_7seg10 = oxco, 0xf9, 0xa4,ox bo, 0x9

11、9, 0x92, 0x82, 0xf8, 0x80, 0x90 ,;/共陽(yáng)數(shù)碼管碼表,表示0-9 ucharhour, min, sec, year, mon, day; sbit tj=pro;/定義操作線(xiàn) sbit shinian=pl 1; sbit fcnyuc二p12 sbit miaori=pl 3;sbit rst=p3 5;/定義 dsl302 芯 片操作線(xiàn)sbit sck二p3飛;/串行時(shí)鐘控制 數(shù)據(jù)輸入與輸出sbit io二p3八4;/雙向數(shù)據(jù)線(xiàn) sbit fm=p30;/定義整點(diǎn)報(bào)時(shí)端 口void write_dsl302_byte(uchar dat) ;/函數(shù)聲明vo

12、id write_dsl302(ucharadd, uchar dat) ;/無(wú)返回值uchar read dsl302(uchar add); void read_shi jian();void read riqi ();void set_shijian();void set_riqi ();void display_shijian();void display riqi ();void delay(int n);void show();void fmzz ();/*ds1302單字節(jié)寫(xiě)入:*/void write_dsl302_byte(uchar clat)uchar i;for (i=

13、0;i8;i+)sck=0;/保持低電平,時(shí) 鐘變動(dòng)前設(shè)置數(shù)據(jù),變動(dòng)后讀取數(shù)據(jù)io=clat&0x01;/按位與運(yùn) 算clat=clat»l; /clat 各位右 移一位sck=l;/寫(xiě)入有效ads1302多字節(jié)寫(xiě)入:*/void write_dsl302(uchar acid, uchar dat) rst=0;_nop_() ;/空操作 sck=0; nop (); rst=l ;_nop_(); write_dsl302_byte (add); write cis 1302 byte (clat);rst二0 ;_nop_();io=l;sck=l;ads 1302 讀

14、?。?/uchar read dsl302(uchar add)uchar i,value; rstp; nop (); sck=0;_nop_();rst二 1; nop ();write dsl302 byte (add); for (i=0;i<8;i+)valuc=valuc>>l; sck二0;if (io) value=value | 0x80; /按位或sck二1;rstp; nop ();sck=0;_nop_();sck=l;io=l;return value;/*調(diào)整日期*/void set_riqi ()if (shinian=0)delay (100)

15、;if (shinianno)year= (year>>4)*10+(year&oxof);year+;if (year=99) year=0;ycar= (year/10) «4) + (year%10);write_dsl302(0x8c, year);/0x8c 為 年寫(xiě)寄存器辻(fenyue=0) delay (100);if (fcnyue=0)mon= (mon»4) *10+ (mon&oxof);mon+;if (mon二=12) mon=0;mon= (mon/10)<<4) + (mon%10);write_dsl

16、302(0x8& mon);/0x88 為 月寫(xiě)寄存器if (miaori=0) delay(100);if (miaori=0)day= (day»4) *10+ (day&oxof);day+;if (clay=31) clay=0;day=(day/10)<<4)+(day%10);write_dsl302 (0x86,day);/0x86 為fl寫(xiě)寄存器/*調(diào)整時(shí)間:*/void set shijian()if (shinian=0) delay (100);if (shinian=0)hour= (hour»4) *10+ (hour&

17、amp;oxof);hour+;if (hour二二24) hour=0;hour= (hour/10)<<4) + (hour%10);write dsl302(0x84, hour);/0x84 為 小時(shí)寫(xiě)寄存器if (fenyue=0) delay(100);if (fenyue二二0)min= (min»4) *10+ (min&oxof);min+;if (min=60) min=0;min= (min/10) «4) + (min%10);write_dsl302(0x82, min);/0x82 為 分鐘寫(xiě)寄存器if (miaori=0)

18、delay(100);if (miaori=0) sec= (sec»4) *10+ (sec&oxof);scc+;if (scc=60) scc=0;sec=(sec/10)4) + (sec%10);write_dsl302 (0x80,sec);/0x80 為 秒寫(xiě)寄存器/*讀取日期*/void read _riqi ()year=read_dsl302 (0x8d);/ 括號(hào)內(nèi)為讀寄存器mon=reacl ds 1302 (0x89);day=read_dsl302 (0x87);/*讀取時(shí)間:*/void read_shijian()hour=rcacl dsl3

19、02 (0x85); min=read_dsl302 (0x83); sec=read_dsl302 (0x81);/*顯示日期*/void display_riqi()unsigned int b=l;p2=0x01;p0=data_7segyear /16;delay (b);p2=0x02;p0=data_7segyear%16;delay (b);p2=0x04;p0=data 7segmon/ 16;delay (b);p2=0x08;p0=data 7scgmon%16;delay (b);p2=0xl0;p0=data 7scgday/16;delay (b);p2=0x20;p

20、0=data 7segday%16;delay (b);/*顯示時(shí)間:*/void display shijian()unsigned int a=l;/*p2控制位,po輸出數(shù)*/p2=0x01;p0=data_7seghour /16 ; delay (a) ;/左數(shù)第一位p2=0x02;p0=data 7scghour %16;delay(a);p2=0x04;p0=data_7segmin/ 16;delay (a);p2=0x08;p0=data_7segmin%16 ;delay(a);p2=0xl0;p0=data 7segsec/16;delay(a);p2=0x20;p0=d

21、ata_7 segsec%16;delay (a);/*蜂鳴:*/void fmzz ()uint i;for (i=0;i<100;i+)delay(2);/*延時(shí)程序:*/void delay (int n)unsigned int i,j; for(i=0;in;i+)for(j二0;j121;j+)汀/*顯示學(xué)號(hào):*/void show()unsigned int m;for (in二0; m<20; m+)uint a=10;p2=0x01;p0=data_7seg0;d elay (a);p2=0x02; p0=clata _7seg 2 ;cl elay (a);p2

22、=0x04;p0=data_7seg4;d clay (a);p2=0x08;p0=data_7seg2;d elay (a);p2=0xl0;p0=clata _7seg2 ;cl elay (a);p2=0x20;p0=data_7seg7;d elay (a);fm=!fm;/*主程序:*/void main()show();write dsl302(0x8e, 0x00);/ /禁止寫(xiě)保護(hù),控制寄存器位7是寫(xiě)保 護(hù)位write dsl302(0x84, 0x12);/ /初始化,小時(shí)write dsl302(0x82, 0x12);/ /分鐘write_dsl302(0x80, 0x1

23、2) ;/ /秒write dsl302(0x86, 0x03);/ /日write dsl302(0x88, 0x06);月write_dsl302 (0x8c, 0x12);年write dsl302(0x8e, 0x80);/ /開(kāi)保護(hù)while (1)/橫執(zhí)行if(tj=o) set riqi ();/調(diào)整日期read riqi (); display_riqi (); rcad_shi jian();elsesct_shi jian() ; /調(diào)整 時(shí)間rcad_shi jian(); clisplay_shi jian(); read_riqi ();if(min=0)/整點(diǎn)蜂鳴

24、if(sec=0) fmzz() ;3.5其它(proteus仿真結(jié)果圖)h ihb8c1cmg-亠 二 二ll o k0z cyo ££££p2.cwep2.1/zc p2 2/a10p2.3/a11p2.4/a12p2.5/a13p2.wa14p2.7/a15 a*> a/ovnolni/j cd axuredut£.5 c-zl cl<*>cl0d9dgclrs- a.u1.80c«2 <tb<r啊 12mhz | c2 *i iduf30pfxi c3厶u2 <text> 100 ls

25、1 2ds1302 <tect> rjo sci wc2x1ffstsclk1/0x2.52 768hzj、 '30px2.tlc5te>j>圖10 proteus仿真結(jié)果圖4課程設(shè)計(jì)體會(huì)木次單片機(jī)應(yīng)用課程設(shè)計(jì)安排在大三即將結(jié)束之時(shí),是對(duì)過(guò)去所學(xué)知識(shí)的回 顧,更是總結(jié)!這次課程設(shè)計(jì)安排兩個(gè)科目,第一個(gè)科目即為電子時(shí)鐘設(shè)計(jì)。我 在這一次數(shù)字電子鐘的設(shè)計(jì)過(guò)程中受益匪淺。通過(guò)對(duì)自己在大學(xué)三年時(shí)間里所學(xué) 的知識(shí)的回顧,并充分發(fā)揮對(duì)所學(xué)知識(shí)的理解和對(duì)畢業(yè)設(shè)計(jì)的思考及書(shū)面表達(dá)能 力,最終完成了。首先,木次課設(shè)的內(nèi)容是用protel 99 se畫(huà)出各單元電路sch圖,根據(jù)單

26、電路要求,進(jìn)行微處理器選型,進(jìn)行pcb版設(shè)計(jì),然后利用proteus軟件進(jìn)行 仿真,最后連接實(shí)物電路。在畫(huà)圖時(shí)遇到很多困難,例如在用protcl 99se 畫(huà)sch圖時(shí),有一些元器件沒(méi)有而且有的元器件庫(kù)在一些電腦系統(tǒng)上無(wú)法 加載上去,于是又做了自己的元器件庫(kù),包含了 stc89c52單片機(jī)、ds18b20 溫度傳感器、四位一體數(shù)碼管、四腳按鍵等。這樣才可以加載上去。在畫(huà) pcb板時(shí),也遇到了同樣的問(wèn)題,沒(méi)有所需器件的pcb封裝圖,最后畫(huà)好原 理圖。感謝孫老師的嚴(yán)格要求,我可以隨時(shí)說(shuō)出電路中每個(gè)元件的參數(shù),對(duì) 各個(gè)部件有了更深理解!參考文獻(xiàn)1 倪曉軍,章韻單片機(jī)原理與接口技術(shù)教程.北京:清華大學(xué)

27、出版社,2009. 92 王華祥.現(xiàn)代傳感技術(shù)及應(yīng)用.北京:化學(xué)工業(yè)出版社,2008. 73 康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分).第五版.北京:高等教育出版社,2006. 14 康華光.電子技術(shù)基礎(chǔ)(模擬部分).第五版.北京:高等教育出版社,2006. 15 楊學(xué)昭,王東云.單片機(jī)原理、接口技術(shù)與應(yīng)用西安:電子科技大學(xué)出版社,2009. 26 馮博琴,吳寧.微型計(jì)算機(jī)原理與接口技術(shù)北京:清華大學(xué)出版社,2007. 8<->度控制器課程設(shè)計(jì)1設(shè)計(jì)任務(wù)與要求請(qǐng)?jiān)O(shè)計(jì)一個(gè)基于單片機(jī)的溫度控制器。課程設(shè)計(jì)要求:(1) 9v供電;(2) 溫度采集采用ds18b20;(3) 4位led顯示;(4)

28、 4個(gè)按鍵(5) 設(shè)計(jì)溫度控制器原理圖,學(xué)習(xí)用protel畫(huà)出該原理圖,并用 proteus進(jìn)行仿真;設(shè)計(jì)和繪制軟件流程圖,編寫(xiě)程序;焊接碩件電路,進(jìn) 行調(diào)試。2系統(tǒng)的主要功能與方案設(shè)計(jì)(1) 系統(tǒng)主要功能: 運(yùn)用ds18b20溫度傳感器測(cè)出實(shí)時(shí)溫度,并予以顯示; 4個(gè)按鍵分別控制復(fù)位、切換、溫度加、減; 超出溫度設(shè)置范圍紅燈閃爍(報(bào)警)。(2) 方案設(shè)計(jì):按 鍵 模 塊報(bào) 警 模 塊電源模塊單片機(jī)模塊驅(qū)動(dòng)模塊溫度模塊led顯zj模塊圖1系統(tǒng)整體框圖整個(gè)系統(tǒng)用單片機(jī)作為屮央控制器,由單片機(jī)執(zhí)行采集芯片內(nèi)部溫度信號(hào), 溫度信號(hào)通過(guò)單片機(jī)i/o 口傳給單片機(jī),單片機(jī)模塊控制驅(qū)動(dòng)模塊驅(qū)動(dòng)顯示模 塊,

29、通過(guò)顯示模塊來(lái)實(shí)現(xiàn)信號(hào)的輸岀、led的顯示及相關(guān)的控制功能。系統(tǒng)設(shè)有 按鍵模塊用于對(duì)溫度進(jìn)行調(diào)整及進(jìn)行切換溫度范圍與實(shí)時(shí)溫度以及復(fù)位。與第一個(gè)課程設(shè)計(jì)一樣,仍用at89c52作為主控制器,用4位數(shù)碼管動(dòng)態(tài)顯示(最 后一位是小數(shù)),用ds18b20溫度傳感器采集溫度,仍用12mhz晶振振蕩電路, 當(dāng)超出設(shè)置的溫度范圍時(shí)小紅燈亮。3電路硬件及軟件設(shè)計(jì)3. 1硬件設(shè)計(jì)原理及電路原理圖at89c52基本結(jié)構(gòu),單片機(jī)最小系統(tǒng)前面已經(jīng)介紹,這里不再贅述,重點(diǎn) 介紹ds18b20及7805穩(wěn)壓屯路和sr410561k數(shù)碼管。(1) ds18b20溫度傳感器ds18b20是美國(guó)dallas半導(dǎo)體公司推出的第一

30、片支持“一線(xiàn)總線(xiàn)”接口電 路的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配微處理 器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供處理器處理。其特性如下: 適應(yīng)電壓范圍寬,電壓范圍在3. 0-5. 5v,在寄牛電源方式下可有數(shù)據(jù) 線(xiàn)供電。 獨(dú)特的單總線(xiàn)接口方式,它與微處理器連接時(shí)僅需要一條口線(xiàn)即可實(shí)現(xiàn)微 處理器與ds18b20的雙向通信。 支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20 nj以并聯(lián)在唯一的三線(xiàn)上,實(shí)現(xiàn)組網(wǎng)多 點(diǎn)測(cè)溫。 在使用中不需要任何外圍元件,全部傳感器及轉(zhuǎn)換電路集成在一只形如三 極管的集成電路內(nèi)。 測(cè)溫范圍-55°c-+125°c,在-10°c

31、-+85°c時(shí)精度為±0. 5°c。 測(cè)量參數(shù)可配置。ds18b20的測(cè)量分辨率可通過(guò)程序設(shè)定為9-12位。 負(fù)壓特性。電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。 掉電保護(hù)功能。ds18b20內(nèi)部含有eepr0m,在系統(tǒng)掉電以后,它仍可保存 分辨率及報(bào)警溫度的設(shè)定值。 每片ds18b20上有唯一的64bit識(shí)別碼,可輕松組建分布式溫度測(cè)量測(cè)量 網(wǎng)絡(luò)??稍O(shè)定非易失的報(bào)警上下限值,一旦測(cè)量溫度超過(guò)此設(shè)定值,即可給出報(bào)警ds18b20123gnd i/o uddi/onc 一nc 一1827ds18b203645gnd一一 ncsosi封裝圖2ds18b2

32、0管腳圖(2) 7805穩(wěn)壓電路nc一 nc7805<text>vocvcoc4 丄 c5丄c6 丄 c7 100uf- 0.33 uf -r tup - ni wouf <text> 1 <text>-ii' <text>-i <text>圖37805穩(wěn)壓電路圖(3) sr410561k 數(shù)碼管i(r半a/1.35dic1 dic2 dic3 dig*? 306一ewlvfc°o712.盟:12-9-8-6為依次為從左至右數(shù)碼管的公共端atib-7c-4 d-2 e-l f-1o g5 dp-3ark s工4 20

33、 56 lk共陰極ark sx410561k 共陽(yáng)極圖4 sr410561k引腳圖$ o -y-p"17 "ispio mlm2 m3pl* pl/ pl.pl' psi xdp" !:<dp)1 nufpj: nul-pn !0?k ilj> 匹p: 6 1dp37 xi?j2 :ji gwdcoc'2uc woma 兇初久dh inw ux jojti ;jjpi8ptp:n pwxihp2>aj1»p22.m0.phm p? oias»c 310v ifj917j«.11hr. »jc

34、jhre“fiiain丄d0± miwjc礦認(rèn)cn n n n on.n.o.ji dp on 出2三v32)jj?12vc11t.11/1/tbelll/2ivkphrcu1jjlds18w20i圖5電路原理圖3. 2主要元器件清單表1主要元器清單序號(hào)名稱(chēng)(型號(hào))數(shù)量(個(gè))1510 q電阻三個(gè)212mhz晶振一個(gè)3四腳按鈕四個(gè)4at89c52一個(gè)530pf電容兩個(gè)622uf電容一個(gè)77805芯片一個(gè)8npn(8050)五個(gè)9db18b20一個(gè)10上拉電阻一個(gè)1120k q電阻一個(gè)12報(bào)警紅燈一個(gè)13220uf電容兩個(gè)14sr410561k 4位數(shù)碼管一個(gè)15導(dǎo)線(xiàn)若干16lkq一個(gè)1

35、74. 7k q一個(gè)18接電源端口一個(gè)3. 3軟件設(shè)計(jì)流程初始化讀取溫度k丿讀出溫度值,溫度計(jì)算處理 顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開(kāi)始命令/ 調(diào)用顯示子程序圖6主程序流程圖廠設(shè)置報(bào)警溫度set鍵按下n調(diào)用顯示子程序丿圖7按鍵掃描處理子程序3. 4源程序代碼/ds18b20 的讀 寫(xiě)程序,數(shù)據(jù)腳p2. 7 /溫度傳感器18b20匯編程序, 采用器件默認(rèn)的12位轉(zhuǎn)化/最大轉(zhuǎn)化時(shí)間750微秒,顯示 溫度-55至ij+125度,顯示精度/為0. 1度,顯示采用4位led 共陽(yáng)顯示測(cè)溫值/p0 口為段碼輸入,p20p23為 位選/#inelude ,zreg52. h#inelude "stdlib

36、. h#inelude "intrins. h#inelude "intrins. h/_nop_();延時(shí)函數(shù)用#define dm p0 /段碼輸出口#define uchar unsigned char#define uint unsigned int sbit dq二p2"5; /溫度輸入口 sbit wo=p2"3; /數(shù)碼管 4 sbit wl=p22; /數(shù)碼管 3 sbit w2二p21; /數(shù)碼管 2 sbit w3二p2 0; /數(shù)碼管 1 sbit beep二p3"7; /蜂鳴器和指 示燈sbit set二p4; /溫度設(shè)

37、置切換 鍵sbit add二p5; /溫度加sbit dec二p6; /溫度減int tempi二0; /顯示當(dāng)前溫度和 設(shè)置溫度的標(biāo)志位為0時(shí)顯示當(dāng)前溫 度uint h;uint temp;uchar r;uchar high=40, low=15, highl;uchar sign;uchar q二0;uchar tt二0;uchar scale;/*溫度小數(shù)部分 用查表法 */uchar codeditab16 = 0x00, 0x01, 0x01, 0x02, 0 x03, 0x03, 0x04, 0x04, 0x05, 0x06, 0x0 6, 0x07, 0x08, 0x08, 0

38、x09, 0x09;小數(shù)斷碼表uchar codetable_dm12 = 0x3f, 0x06, 0x5b, 0x4 f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00,0x40;uchar code duanmaya = oxco, 0xf9, 0xa4, oxbo, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, ox ff, "0x40;/共陽(yáng)led段碼表o i 2 3 4律憑行紹 9 不亮 uchar table_dml = oxbf, =0x86, =oxdb, oxcf, 0xe6, oxed, oxfd, 0

39、x87, ox ff, "oxef ; /個(gè)位帶小數(shù)點(diǎn)的斷碼表uchar datatemp data2 = 0x00, 0x00; /讀出溫度暫放uchar datadisplay5 = 0x00, 0x00, 0x00, 0x00, 0x00 ; /顯示單元數(shù)據(jù),共4個(gè)數(shù)據(jù) 和一個(gè)運(yùn)算暫用void delay (uint t)for (;t>0;t一一);void scan()int j;for(j=0;j<4;j+)switch (j)case 0:dm=duanmayadisplay0;w0二0;del ay (50);w0=l;/xiaoshucase 1:dm=

40、table_dmldisplay1;wl=0;de lay (50);wl=l;/geweicase 2:dm=duanmayadisplay 2 ;v2=0; del ay (50);w2=l;/shiweicase 3:dm=duanmayadisplay3;w3=0;del ay (50);w3=l;/baiwei/elsedm=table_dmb3;w3=0;delay (50);w3=l;/*ds18b20 復(fù)void ow_reset()char prescncc=l;while (presenee)while (presence)dq=l;_nop_() ;_nop_();/從高

41、拉 倒低dq二0;delay (50); /550 us dq二 1;delay(6); /66 us presence二dq;/presence二0復(fù)位成功,繼續(xù)下一步delay (45) ; /延時(shí) 500 us presence=dq;dq二1; /拉高電平/*ds18b20 寫(xiě) 命令函數(shù)/向1-w1re總線(xiàn)上寫(xiě)1個(gè)字節(jié) void write bytc(uchar val) uchar i;for(i=8;i>0;i)dq=l;_nop_() ;_nop_();/從高拉倒低tcturn (value);dq二0; _nop_ () ; _nop_ () ; _nop_ (); _n

42、op_ () ; /5 usdq=val&0x01; /最低位 移出delay (6); /66 us val=val/2; /右移 1 位dq二 1;delay (1);/*ds18b20 讀 1 字節(jié)函數(shù)/嚇、/從總線(xiàn)上取1個(gè)字節(jié)uchar read bytc(void)uchar i;uchar value=0;for(i=8;i>0;i-)dq=1 ;_nop_() ; _nop_ ();value>>=l;dq=0; _nop_ () ; _nop_ () ; _nop_ (); _nop_ () ; /4 usdq=1 ;_nop_() ; _nop_ (

43、) ; _nop_ (); _nop_ () ; /4 usif (dq)value|=0x80;delay (6); /66 us/* 讀 出 溫度函*/read temp ()ow_rcsct () ; /總線(xiàn)復(fù)位 delay (200);write_byte(oxcc) ; /發(fā)命令 write,byte (0x44) ; /發(fā)轉(zhuǎn)換 命令ow_reset ();delay (1);write byte (oxcc) ; /發(fā)命令 write_byte (oxbe);temp _data0=:rcad bytc();/讀溫度值的第字節(jié)temp_data1=read_byte ();讀溫度值

44、的高字節(jié)temp二temp clatal;temp«=8;temp二temp|temp_data0; /兩字節(jié)合成一個(gè)整型變量。return temp; /返回溫度值/二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后, 就是溫度值的百、十、個(gè)位值,而剩dq二 1;十進(jìn)制后,就是溫度值的小數(shù)部分/下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成void work tcmp(uint tcm)uchar n=0;if(tem>6348) /溫度值正負(fù) 判斷tem=65536-tem;n=l; / 負(fù) 溫度求補(bǔ)碼,標(biāo)志位置1display4=tcm&0x0f; /

45、 取 小數(shù)部分的值display0=ditabdi splay4; /存入小數(shù)部分顯示值display4 =tem>>4; / 取中 間八位,即整數(shù)部分的值display3=display4/100; /取百位數(shù)據(jù)暫存displayl=display4%100;/取后兩位數(shù)據(jù)暫存display2=display1/10; /取十位數(shù)據(jù)暫存di splay l=di splay 1%10; /個(gè)位數(shù)據(jù)r=displayl+display2*1 0+display3*100;/符號(hào)位顯示判斷/if(!display3)display3=0x0a; /最 高位為0時(shí)不顯示if (!display2)display2=0x0a; /次高位為0時(shí)不顯示if(n)display3=0x0b; / 負(fù)溫度時(shí)最高位顯示-void beep()if(r>=high&&r<129)|r<lo w)bcep=!bcep;elsebeep=0;/*設(shè)置溫度顯示轉(zhuǎn)換f / /void xianshi (int horl)int n二0;if(horl>128)horl=256-horl;n二1;display3=hor1/100;display3=display3 &0x0 f;dis

溫馨提示

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

評(píng)論

0/150

提交評(píng)論