




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、實用文檔電子設計自動化實訓報告題 目:多點溫度監(jiān)測系統(tǒng)學生姓名:宋安邦學生學號:2104020685學院:工學院專業(yè):電子信息工程班級:2021級指導教師:林君副教授一、實訓目的和意義通過對多點溫度檢測系統(tǒng)的設計,可以更深入的了解MC5.2單片機的特點以 及應用技巧,對單片機的應用可以溫習其中的結構以及原理. 而且proteus的強 大功能也能通過此次試驗反響出來, 熟悉其界面的風格以及各種應用, 又重新的 熟悉了 proteus在單片機方面的強大功能.二、實訓設計內(nèi)容要求1. 實現(xiàn)4點溫度實時采集,溫度傳感器采用 DS18B202. 采用LCD1602顯示4個采集點溫度3. 具有溫度上下限報
2、警功能:上限 90° C,下限20° C4. 聲音和光報警2種模式:光報警采用4只發(fā)光LED聲音報警采用揚聲器,報警音調(diào)采用 2KHz方波.三、系統(tǒng)設計1 .方案設計相應的報警燈光 或蜂鳴器A*SVLCD1602-riRir|R:)r1 Rm<rM'-'LI II1 ;IJ£ETT1R5 lRer 硏 14L- 佃馬rVCC §RSTFT QMDO PO.IWDI PJ2UD2 PA屈J PftJMLm PCiilAD5 F4ELIADE PClWMTAT09C51P?.ftW9 pi 2*1 n FI 3.W I P2>W!
3、2 P25W13 FJEIAI* P1T.IA13PJ.ftflMD P: l ' ITS P3 Z醴皿 P3M4T1 piwm P3ML PH-® P3 7.rRDTL:19.5 T2S20.5T3I91.9 T4J23.5F<5帥r宮D*ClJCTNJPBENDS16B20GND -V r:si;=;RXi甜«HD Mi;- /Vtc: TGND &ND(1) 工作原理:(a) 通過四個溫度采集器采集數(shù)字溫度輸入到單片機的p2.0p2.3 口.(b) 初始化LCD1602使1602能夠接受數(shù)據(jù),并分配其顯示位置,此處采用兩行 兩列式顯示.(c) 單
4、片機讀取信號.(d) 單片機向LCD1602寫信號,并延時.(e) 判斷是否有數(shù)據(jù)高于90度或低于20度,如果有 點亮相應的led,并啟動 蜂鳴器.(2) 硬件系統(tǒng)組成(a) 80C52(b) 晶振電路(c) 復位電路(d) LED燈電路(e) LCD1602(f)溫度檢測ds18b203.軟件設計(1)時間的設定:從此采用中斷T0方式延時,而且是根本單位,無論蜂鳴器還是led,或是顯示溫 度都用到此延時程序.延時程序如下:void tmpDelay(i nt num)while( num-);void Time0(void) in terrupt 1 using 0sound=sound;T
5、H0=(65536-5000)/256;TL0=(65536-5000)%256;(2)信號的讀入與寫出:讀字節(jié)程序如下 un sig ned char Read On eChar1() un sig ned char i=0;un sig ned char dat1 = 0;for (i=8;i>0;i-)DQ1 = 0; /給脈沖信號dat1>>=1;DQ1 = 1; /給脈沖信號if(DQ1)dat1|=0x80;tmpDelay(4);return(datl);一共讀四個字節(jié),接下來是寫字節(jié)程序如下void WriteO neChar1(u nsig ned char
6、 dat1) un sig ned char i=0;for (i=8; i>0; i-)DQ1 = 0;DQ1 = dat1 &0x01;tmpDelay(5);DQ1 = 1;dat1>>=1;注意度字節(jié)的返回值.讀取溫度un sig ned int Readtemp1()un sig ned char a=0;un sig ned char b=0;un sig ned int t=0;float tt=0;In it_DS18B201();WriteO neChar1(0xCC);WriteO neChar1(0x44);In it_DS18B201();Wr
7、iteO neChar1(0xCC);WriteO neChar1(0xBE);a=Read On eChar1();b=Read On eChar1(); t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10;if(t>900)|(t<200)LED1=0;EA=1;TR0=1;elseLED1=1;EA=0;TR0=0;return(t); (3) 蜂鳴器以及l(fā)ed的顯示 程序如下void delay(uchar z) uchar x,y;for(x=1000;x>1;x-) for(y=z;y>1;y-);void write_co
8、m(uchar com)/寫命令函數(shù) lcdrs=0;PO=com;delay(5);Icde n=1;delay(5);/寫數(shù)據(jù)函數(shù)Icde n=0; void write_date(uchar date) lcdrs=1;P0=date;delay(5);Icde n=1;delay(5);lcde n=0; void ini t_lcd() lcde n=0;lcdrw=0;/初始化函數(shù)默認開始狀態(tài)為關使能端,見時序圖/選擇狀態(tài)為寫write_com(0x0f);write_com(0x38);II顯示模式設置,默認為0x38,不用變write_com(0x01);II顯示清屏,將上次的
9、內(nèi)容去除write_com(0x0c);II顯示功能設置0x0f為開顯示,顯示光標,爍;0x0c為開顯示,不顯光標,光標不閃write_com(0x06); II設置光標狀態(tài)默認0x06,為讀一個字符光標加光標閃1.write_com(0x80); II設置初始化數(shù)據(jù)指針for(i=0;i<16;i+) II 顯示 The temperaturewrite_date(t0i);delay(0);write_com(0x80+0x40);for(i=0;i<16;i+)/顯示isCwrite_date(t1i);delay(O);4程序流程圖如下列圖所示:方法是翻開調(diào)試工具后新建.C
10、,然后加載到環(huán)境中,四、調(diào)試方法及步驟1.用軟件調(diào)試工具先調(diào)試設計好的程序, 工程,設計開發(fā)環(huán)境,選擇單片機種類,建立編寫程序,生成 HEX把他放虛擬單片機中,調(diào)試2出現(xiàn)錯誤,就要修改錯誤,編譯全部通過后再接外圍硬件電路,接 上仿真頭,硬件電路供電后再開啟仿真頭,然后正確設置好仿真器,最 后全速運行,查看硬件電路顯示結果是否與原設計思想一致.3. 顯示結果正確后結束仿真,先停止運行程序,再關掉仿真頭開關, 最后斷電,撬開仿真器.五、結果與討論查看結果是否與自己想的一樣,如果不一樣,可以向同學和老師討教,如果一樣就記錄下.六、實訓心得通過本次試驗學會了如何使用虛擬工具來進行單片機的編輯,通過寫c
11、語言又溫習了以前的所學,回味看單片機和 c語言的魅力.通過調(diào)試程序鍛煉了個人的耐心恒,恒心,毅力,和理論聯(lián)系實際的水平通過學習使得懂得了開發(fā)工具的使用, 多了一門吃飯的的本領,多了一門學 習其他學科的實踐根底.經(jīng)過這次實訓課程設計,我學到了很多書本上沒有的,比擬實際、實用的東 西,學會了怎樣將理論知識運用到實際設計當中, 對實驗設備和設計軟件的使用 和分析問題解決問題的水平也有了很大的提升. 同時也明白了電路焊接和作品調(diào) 試時,需要更多的耐心.通過這次實訓課程設計,不僅可以在專業(yè)上可以學到更 多的知識,同時也對平時的學習和工作中產(chǎn)生了影響, 那就是認認真真的去完成 每一件事.附錄程序清單#i
12、nclude<reg52.h> /包含52單片機存放器定義的頭文件程序功能:LCD1602顯示溫度*/*#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit lcdrs=P2A6;sbit lcdrw=P2A5;sbit lcden=卩2人7;sbit LED仁 P1A0;sbit LED2=P1A1;sbit LED3=P1A2;sbit LED4=P"3;sbit sou nd=P1A4;/數(shù)據(jù)命令選擇限制/讀/寫選擇限制/使能信號uchar code tO="T1:T2:uchar c
13、ode t1="T3:T4:uchar code digital="0123456789" sbit DQ 仁P2A0;/sbit DQ2=P2A1;/sbit DQ3=P2A2;/sbit DQ4=P2A3;/定義溫度DS18B20接口,詳情見原理圖 定義溫度DS18B20接口,詳情見原理圖 定義溫度DS18B20接口,詳情見原理圖 定義溫度DS18B20接口,詳情見原理圖uchar i;/* 函數(shù)功能:DS18B20相關函數(shù)*/ void tmpDelay(i nt num)/ 延時函數(shù) while( num-); void TimeO(void) in te
14、rrupt 1 using 0sound=sound;TH0=(65536-5000)/256; / 定時器T0的高8位重新賦初值TL0=(65536-5000)%256; / 定時器T0的高8位重新賦初值 初始化ds1820void In it_DS18B201() un sig ned char x=0;復位稍做延時單片機將DS拉低精確延時大于480usDQ1 = 1; /DS tmpDelay(8); /DQ1 = 0;/tmpDelay(80); /初始化ds1820復位稍做延時單片機將DS拉低精確延時拉高總線DQ1 = 1; /拉高總線tmpDelay(14);x=DQ1;/稍做延時
15、后如果x=0那么初始化成功tmpDelay(20);void In it_DS18B202()un sig ned char x=0;DQ2 = 1; /DStmpDelay(8); /DQ2 = 0;/大于480ustmpDelay(80); /DQ2 = 1;/tmpDelay(14);如果x=0那么初始化成功稍做延時后x=DQ2; / tmpDelay(20);初始化ds1820void In it_DS18B203()un sig ned char x=0;DQ3 = 1; /DStmpDelay(8); /DQ3 = 0; / tmpDelay(80); /DQ3 = 1; /tmp
16、Delay(14);如果x=0那么初始化成功稍做延時后x=DQ3; / tmpDelay(20);初始化ds1820void In it_DS18B204()un sig ned char x=0;DQ4 = 1; /DStmpDelay(8); /DQ4 = 0;/tmpDelay(80); /DQ4 = 1;/tmpDelay(14);稍做延時后如果x=0那么初始化成功x=DQ4; /x=1那么初始化失敗x=1那么初始化失敗x=1那么初始化失敗x=1那么初始化失敗復位稍做延時單片機將DS拉低精確延時拉高總線大于480us復位稍做延時單片機將DS拉低精確延時大于480us拉高總線tmpDel
17、ay(20);un sig ned char ReadO neChar1()讀一個字節(jié)un sig ned char i=0;un sig ned char datl = 0;for (i=8;i>0;i-)DQ1 = 0; II 給脈沖信號dat1>>=1;DQ1 = 1; II 給脈沖信號if(DQ1)dat1|=0x80; tmpDelay(4);return(datl);un sig ned char ReadO neChar2()讀一個字節(jié)un sig ned char i=0;un sig ned char dat2 = 0;for (i=8;i>0;i-)
18、DQ2 = 0; II 給脈沖信號dat2>>=1;DQ2 = 1; II 給脈沖信號if(DQ2)dat2|=0x80;tmpDelay(4);return(dat2);un sig ned char ReadO neChar3()讀一個字節(jié)un sig ned char i=0;un sig ned char dat3 = 0;for (i=8;i>0;i-)DQ3 = 0; II 給脈沖信號dat3>>=1;DQ3 = 1; II 給脈沖信號if(DQ3)dat3|=0x80;tmpDelay(4);return(dat3);un sig ned char
19、ReadO neChar4()讀一個字節(jié)un sig ned char i=0;un sig ned char dat4 = 0;for (i=8;i>0;i-)DQ4 = 0; II給脈沖信號dat4>>=1;DQ4 = 1; II給脈沖信號if(DQ4)dat4|=0x80; tmpDelay(4);return(dat4);void WriteO neChar1(u nsig ned char dat1)II寫一個字節(jié)un sig ned char i=0;for (i=8; i>0; i-)DQ1 = 0;DQ1 = datl &0x01;tmpDela
20、y(5);DQ1 = 1;dat1>>=1;void Write On eChar2(u nsig ned char da t2)II寫一個字節(jié)un sig ned char i=0;for (i=8; i>0; i-)DQ2 = 0;DQ2 = dat2&0 x01;tmpDelay(5);DQ2 = 1;dat2>>=1;void Write On eChar3(u nsig ned char da t3)II寫一個字節(jié)un sig ned char i=0;for (i=8; i>0; i-)DQ3 = 0;DQ3 = dat3&0 x
21、01; tmpDelay(5);DQ3 = 1;dat3>>=1;寫一個字節(jié)void WriteO neChar4(u nsig ned char dat4)un sig ned char i=0;for (i=8; i>0; i-)DQ4 = 0;DQ4 = dat4&0 x01;tmpDelay(5); DQ4 = 1;dat4>>=1;讀取溫度un sig ned int Readtemp1() un sig ned char a=0; un sig ned char b=0;un sig ned int t=0;float tt=0;讀低8位讀高8
22、位In it_DS18B201();WriteO neChar1(0xCC); /WriteO neChar1(0x44); / In it_DS18B201();WriteO neChar1(0xCC); /WriteO neChar1(0xBE); / a=ReadO neChar1(); / b=ReadO neChar1();t=b;跳過讀序號列號的操作啟動溫度轉(zhuǎn)換跳過讀序號列號的操作讀取溫度存放器連續(xù)讀兩個字節(jié)數(shù)據(jù)/t<<=8; t=t|a; tt=t*0.0625;/兩字節(jié)合成一個整型變量./得到真實十進制溫度值, 由于DS18B20可以精確到0.0625度,所以讀回數(shù)
23、據(jù)的最低位代表的是0.0625度t= tt*10;/放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時進行一個四舍五入操作.if(t>900)|(t<200)LED1=0;EA=1;TR0=1;elseLED1=1;EA=0;TRO=O; return(t); un sig ned int Readtemp2() 讀取溫度 un sig ned char a=0;un sig ned char b=0;un sig ned int t=0;讀低8位讀高8位float tt=0;In it_DS18B202();WriteO neChar2(0xCC); /WriteO
24、neChar2(0x44); / In it_DS18B202();WriteO neChar2(0xCC); /WriteO neChar2(0xBE); / a=ReadO neChar2(); / b=ReadO neChar2();t=b;t<<=8;跳過讀序號列號的操作啟動溫度轉(zhuǎn)換跳過讀序號列號的操作讀取溫度存放器連續(xù)讀兩個字節(jié)數(shù)據(jù)/t=t|a;/兩字節(jié)合成一個整型變量.DS18B20可以精確到 0.0625度,tt=t*0.0625;/得到真實十進制溫度值,由于所以讀回數(shù)據(jù)的最低位代表的是0.0625度t= tt*10;/放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可
25、顯示數(shù)字,同時進行一個四舍五入操作.if(t>900|t<200)LED2=0;EA=1;TR0=1; elseLED2=1;EA=0;TR0=0;return(t); 讀取溫度un sig ned int Readtemp3() un sig ned char a=0;un sig ned char b=0;un sig ned int t=0;float tt=0;In it_DS18B203();讀低8位讀高8位WriteO neChar3(0xCC); /WriteO neChar3(0x44); / In it_DS18B203();WriteO neChar3(0xCC
26、); /WriteO neChar3(0xBE); / a=ReadO neChar3(); / b=ReadO neChar3();跳過讀序號列號的操作啟動溫度轉(zhuǎn)換跳過讀序號列號的操作讀取溫度存放器連續(xù)讀兩個字節(jié)數(shù)據(jù)/t<<=8; t=t|a; tt=t*0.0625;/兩字節(jié)合成一個整型變量./得到真實十進制溫度值, 由于DS18B20可以精確到0.0625度,t=b;所以讀回數(shù)據(jù)的最低位代表的是0.0625度t= tt*10;/放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時進行一個四舍五入操作.if(t>900|t<200)LED3=0;EA=1;
27、TR0=1; elseLED3=1;EA=0;TR0=0;return(t); un sig ned int Readtemp4()/un sig ned char a=0;un sig ned char b=0;un sig ned int t=0; float tt=0;In it_DS18B204();WriteO neChar4(0xCC); /讀取溫度WriteO neChar4(0x44); /跳過讀序號列號的操作啟動溫度轉(zhuǎn)換In it_DS18B204();WriteO neChar4(0xCC); /跳過讀序號列號的操作WriteO neChar4(0xBE); /讀取溫度存放
28、器a=ReadO neChar4(); /連續(xù)讀兩個字節(jié)數(shù)據(jù)讀低8位b=ReadO neChar4();/讀咼8位t=b;t<<=8;t=t|a;/兩字節(jié)合成一個整型變量.tt=t*0.0625;/得到真實十進制溫度值,由于DS18B20可以精確到 0.0625度,所以讀回數(shù)據(jù)的最低位代表的是0.0625 度t= tt*10;/放大十倍,這樣做的目的將小數(shù)點后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時進行一個四舍五入操作.if(t>900|t<200)LED4=0;EA=1;TR0=1;elseLED4=1;EA=0; TRO=O;return(t); /*函數(shù)功能:LCD相關函數(shù)
29、*/void delay(uchar z) uchar x,y;for(x=1000;x>1;x-) for(y=z;y>1;y-);void write_com(uchar com)/寫命令函數(shù) lcdrs=0;P0=com;delay(5);lcde n=1;delay(5);lcde n=0; void write_date(uchar date)/ 寫數(shù)據(jù)函數(shù) lcdrs=1;P0=date;delay(5);Icden=1;delay(5);lcden=O; void init_lcd() Icde n=0; lcdrw=0;/初始化函數(shù)默認開始狀態(tài)為關使能端,見時序圖/
30、選擇狀態(tài)為寫write_com(0x0f); write_com(0x38); write_com(0x01); write_com(0x0c);/顯示模式設置,默認為0x38,不用變./顯示清屏,將上次的內(nèi)容去除/顯示功能設置0x0f為開顯示,顯示光標,光標閃爍;0x0c為開顯示,不顯光標,光標不閃write_com(0x06);write_com(0x80);/設置光標狀態(tài)默認 0x06,為讀一個字符光標加1./設置初始化數(shù)據(jù)指針for(i=0;i<16;i+)/ 顯示 The temperaturewrite_date(t0i); delay(0); write_com(0x80+
31、0x40); for(i=0;i<16;i+)/顯示is Cwrite_date(t1i); delay(0);void display1() uint num;/uint shi,ge,xiaoshu; / num=Readtemp1(); shi=num/100;ge=num/10%10; xiaoshu=nu m%10; write_com(0x80+3); write_date(digitalshi);write_com(0x80+4); write_date(digitalge);write_com(0x80+5); write_date(0x2e);/顯示函數(shù)定義的時候用uc
32、har宏定義就會出錯 定義的時候用uchar宏定義就會出錯/顯示溫度十位/顯示溫度個位/ 顯示“ 這個符號write_com(0x80+6);write_date(digitalxiaoshu); /顯示溫度小數(shù)位void display2() uint num;/uint shi,ge,xiaoshu; /num=Readtemp2();shi=num/100;ge=num/10%10; xiaoshu=nu m%10; write_com(0x80+12); write_date(digitalshi);write_com(0x80+13); write_date(digitalge);write_com(0x80+14); write_date(0x2e);write_com(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度私人房產(chǎn)全款買賣合同(帶家具家電)
- 二零二五年度兒童樂園加盟經(jīng)營協(xié)議
- 2025年度門面房租賃與物業(yè)管理責任合同
- 2025年度跨境貿(mào)易合同終止的多種國際法律適用情形
- 人才獵頭服務與委托協(xié)議書
- 股權轉(zhuǎn)讓協(xié)議承債
- 智慧城市基礎設施升級改造合同
- 網(wǎng)絡教育培訓平臺開發(fā)協(xié)議
- 個人生活用品買賣合同
- 數(shù)學課本中的幾何之旅教案設計
- 第22課《陳涉世家》課件(共71張)
- 新能源汽車產(chǎn)業(yè)專利分析綜述
- 2010年4月自考00371公安決策學試題及答案含解析
- 實驗室儀器借用登記表
- 單肺通氣與肺保護通氣策略護理課件
- 規(guī)培出科小結呼吸內(nèi)科
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 《房地產(chǎn)行政管理》課件
- 北京垃圾分類管理制度
- 人力資源招聘與企業(yè)培訓培訓資料
- 電工學(第8版)(上冊 電工技術) 課件全套 秦曾煌 第1-14章 電路的基本概念與基本定律- 傳感器
評論
0/150
提交評論