版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 一、設計目的</b></p><p> 設計一個計算機溫度巡回檢測程序控制系統(tǒng),可以對糧倉的溫度進行多點巡回檢測。通過設計,掌握數據采集系統(tǒng)的工作原理、掌握計算機控制系統(tǒng)的設計原理、設計步驟,進一步提高綜合運用知識的能力。</p><p><b> 二、設計內容和要求</b></p><p&g
2、t; (1)選擇傳感器,設計接口電路,對八點的溫度進行巡回檢測,要求溫度測量范圍是0~50℃,精度±1℃。</p><p> (2)編寫控制程序,在屏幕上顯示八點溫度的實測值。</p><p> (3)寫出設計說明書。</p><p><b> 三、系統(tǒng)設計方案</b></p><p> 該系統(tǒng)由硬
3、件和軟件兩大塊組成,硬件部分分為:1、控制芯片,是該系統(tǒng)的核心;2、檢測環(huán)節(jié),即溫度傳感器,用于采集環(huán)境溫度;3、顯示部分,用于顯示當前環(huán)境溫度;4、分時采集部分,用于對八點溫度進行分時采集。軟件部分分為三塊:1、數據處理;2、液晶顯示;3、分時尋采集控制。</p><p><b> 下面是具體方案:</b></p><p><b> 1、硬件部分<
4、;/b></p><p> 1.1控制芯片:選用常用的89c52可滿足需要。</p><p> 1.2溫度檢測環(huán)節(jié):</p><p> 方案一、使用熱敏電阻通過matlab對溫度和電阻之間的非線性關系進行數據擬合得到相應關系式。但熱敏電阻器是敏感元件的一類,按照溫度系數不同分為正溫度系數熱敏電阻器(PTC)和負溫度系數熱敏電阻器(NTC)。熱敏電阻器的典
5、型特點是對溫度敏感,不同的溫度下表現出不同的電阻值。正溫度系數熱敏電阻器(PTC)在溫度越高時電阻值越大,負溫度系數熱敏電阻器(NTC)在溫度越高時電阻值越低,它們同屬于半導體器件。其最大的缺點就在于:阻值與溫度的關系非線性嚴重。不易通過程序進行精確控制,誤差較大;</p><p> 方案二、使用DS18B20溫度傳感器。該芯片具有獨特的單線借口方式,它與微處理器連接時僅需要一條口線即可實現微處理器與DS18B
6、20的雙向通信,測溫范圍-55℃~+125℃,精度為0.5±℃而且在使用中不需要任何外圍元件,接線簡單。</p><p> 綜合以上分析上,選用DS18B20溫度傳感器,將其I/O口與單片機的I/O口相接,在單片機中寫入處理程序即可。</p><p><b> 顯示部分</b></p><p> 方案一、用數碼管顯示溫度,程序簡
7、單,缺點是只能顯示數字,不能顯示字母,功能局限性太大;</p><p> 方案二、用1602LCD,既可顯示字母也可顯示數字,操縱靈活多變,可滿足本課題需要;</p><p><b> 綜上、選用方案二。</b></p><p><b> 分時采集部分</b></p><p> 方案一、CD
8、4051單8通道數字控制模擬電子開關,有三個二進控制輸入端A、B、C</p><p> 和INH輸入,具有低導通阻抗和很低的截止漏電流。當INH輸入端=“1”時,所有的通道截止。三位二進制信號選通8通道中的一通道,可連接該輸入端至輸出。</p><p> 方案二、繼電器+3/8譯碼器,通過譯碼器的三個地址段選通8個繼電器中的任意一個,但接線復雜,成本高;</p><
9、p> 綜合以上分析,選擇方案一。</p><p><b> 2、軟件部分</b></p><p> #include<reg52.h></p><p> #include<stdio.h></p><p> #define uchar unsigned char</p>
10、<p> #define uint unsigned int</p><p> sbit ds=P2^3;//溫度傳感器18B20I/O口</p><p> sbit inh=P2^4;//譯碼器使能端</p><p> sbit A=P1^0;//3/8譯碼器地址選擇端</p><p> sbit B=P1^1;&l
11、t;/p><p> sbit C=P1^2;</p><p> sbit lcd_en=P2^6;//液晶LCD使能端</p><p> sbit lcd_rs=P2^4;//液晶LCD數據/命令選擇端</p><p> sbit lcd_wr=P2^5;//讀寫選擇端</p><p> uchar data t
12、able_temp[12];//存放顯示的字符和溫度</p><p> uchar num;</p><p> uint temp;</p><p> uchar i,j,k,l;</p><p> float f_temp;</p><p> sbit led0=P1^0;</p><p
13、> void delay1()//延時函數</p><p><b> {</b></p><p> uchar i,j;</p><p> for(j=5;j>0;j--)</p><p> for(i=125;i>0;i--);</p><p><b>
14、}</b></p><p> void delay(uint z)//帶參數的延時</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> f
15、or(y=110;y>0;y--);</p><p><b> }</b></p><p> void dsreset(void)//對18B20進行初始化</p><p><b> {</b></p><p><b> uint i;</b></p>
16、<p><b> ds=0;</b></p><p><b> i=103;</b></p><p> while(i>0)</p><p><b> i--;</b></p><p><b> ds=1;</b></p
17、><p><b> i=4;</b></p><p> while(i>0)</p><p><b> i--;</b></p><p><b> }</b></p><p> bit tempreadbit(void)//讀一位溫度
18、</p><p><b> {</b></p><p><b> uint i;</b></p><p><b> bit dat;</b></p><p><b> ds=0;i++;</b></p><p> ds=1
19、;i++;i++;</p><p><b> dat=ds;</b></p><p> i=8;while(i>0)i--;</p><p> return(dat);</p><p><b> }</b></p><p> uchar tempread(vo
20、id)//讀8位溫度即一個字節(jié)的溫度</p><p><b> {</b></p><p> uchar i,j,dat;</p><p><b> dat=0;</b></p><p> for(i=1;i<=8;i++)</p><p><b>
21、 {</b></p><p> j=tempreadbit();</p><p> dat=(j<<7)|(dat>>1);</p><p><b> }</b></p><p> return(dat);</p><p><b> }<
22、;/b></p><p> void tempwritebyte(uchar dat)//寫指令函數</p><p><b> {</b></p><p><b> uint i;</b></p><p><b> uchar j;</b></p>
23、<p> bit testb;</p><p> for(j=1;j<=8;j++)</p><p><b> {</b></p><p> testb=dat&0x01;</p><p> dat=dat>>1;</p><p><b>
24、 if(testb)</b></p><p><b> {</b></p><p><b> ds=0;</b></p><p><b> i++;i++;</b></p><p><b> ds=1;</b></p>&
25、lt;p> i=8;while(i>0)i--;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> ds=0;</b></p>
26、<p> i=8;while(i>0)i--;</p><p><b> ds=1;</b></p><p><b> i++;i++;</b></p><p><b> }</b></p><p><b> }</b><
27、;/p><p><b> }</b></p><p> void tempchange(void)//數值轉換</p><p><b> {</b></p><p> dsreset();</p><p><b> delay(1);</b><
28、;/p><p> tempwritebyte(0xcc); //跳過rom地址選擇</p><p> tempwritebyte(0x44); //啟動溫度轉換,將數據存入ram</p><p><b> }</b></p><p> uint get_temp()//將寄存器中的溫度數據轉換初來</p>
29、<p><b> {</b></p><p> uchar a,b;</p><p> dsreset();</p><p><b> delay(1);</b></p><p> tempwritebyte(0xcc);</p><p> temp
30、writebyte(0xbe);//讀ram的溫度數據</p><p> a=tempread();//讀第八位</p><p> b=tempread();//讀高八位</p><p><b> temp=b;</b></p><p><b> temp<<=8;</b><
31、;/p><p> temp=temp|a;//得到16位溫度數據</p><p> f_temp=temp*0.0625;//得到溫度</p><p> temp=f_temp*10+0.5;//四舍五入</p><p> return temp;</p><p><b> }</b><
32、;/p><p> void init_com(void)//初始化</p><p><b> {</b></p><p> TMOD=0x20;//模式二</p><p> PCON=0x00;//正常工作狀態(tài)&正常波特率</p><p> SCON=0x50;//異步收發(fā)(8位)&
33、lt;/p><p> TH1=0xFd;//波特率9600</p><p><b> TL1=0xFd;</b></p><p> TR1=1;//定時器一運行控制打開</p><p> lcd_wr=0;//寫數據</p><p><b> inh=0;</b><
34、;/p><p><b> }</b></p><p> void write_com(uchar com)//液晶寫指令函數</p><p><b> {</b></p><p><b> lcd_rs=0;</b></p><p><b>
35、; P0=com;</b></p><p><b> delay1();</b></p><p><b> lcd_en=1;</b></p><p><b> delay1();</b></p><p><b> lcd_en=0;</b
36、></p><p><b> }</b></p><p> void write_data(uchar date)//液晶寫數據函數</p><p><b> {</b></p><p><b> lcd_rs=1;</b></p><p>
37、;<b> P0=date;</b></p><p><b> delay1();</b></p><p><b> lcd_en=1;</b></p><p><b> delay1();</b></p><p><b> lcd_e
38、n=0;</b></p><p><b> }</b></p><p> void dis_temp(uint t)//液晶顯示函數</p><p><b> {</b></p><p><b> i=t/1000;</b></p><p
39、> j=t%1000/100;</p><p> k=t%100/10;</p><p><b> l=t%10;</b></p><p> table_temp[0]='W';</p><p> table_temp[1]='E';</p><p&
40、gt; table_temp[2]='N';</p><p> table_temp[3]='D';</p><p> table_temp[4]='U';</p><p> table_temp[5]=':';</p><p> table_temp[6]=i
41、;</p><p> table_temp[7]=j;</p><p> table_temp[8]=k;</p><p> table_temp[9]='.';</p><p> table_temp[10]=l;</p><p> table_temp[11]='C';
42、</p><p><b> lcd_en=0;</b></p><p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);</p><p> write_com(0x01);</p>&
43、lt;p> write_com(0x80);</p><p> for(num=0;num<12;num++)</p><p><b> {</b></p><p> if(num==8||num==6||num==7||num==10)</p><p> write_data(table_temp
44、[num]+0x30);</p><p><b> else</b></p><p> write_data(table_temp[num]);</p><p><b> }</b></p><p><b> }</b></p><p> v
45、oid main()</p><p><b> {</b></p><p><b> uint t;</b></p><p> uint dr=0x07;</p><p> uchar i,j;</p><p> init_com();</p><
46、;p><b> while(1)</b></p><p><b> {</b></p><p><b> j=0;</b></p><p> while(j<dr)//八路巡回檢測</p><p><b> {</b></p&g
47、t;<p><b> P1=j++;</b></p><p> tempchange();</p><p> for(i=10;i>0;i--)</p><p><b> {</b></p><p> t=get_temp();//數據轉換</p><
48、;p> dis_temp(t);//顯示</p><p> delay(10);//</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
49、}</b></p><p><b> 四、原理圖</b></p><p><b> 五、PCB圖</b></p><p><b> 結論</b></p><p> 通過軟硬件設計,用STC89C52為核心來控制整個系統(tǒng),實現了溫度正負號,三位整數和一位小數的
50、顯示,了解了液晶,溫度傳感器的使用規(guī)律。本次選用的DS18B20芯片測溫范圍 -55℃~+125℃,精度為±0.5度達到了系統(tǒng)的基本要求,但由于硬件條件的限制,僅用一路溫度傳感器進行信號采集,八路巡回檢測僅從原理上進行了闡述,另外顯示等基本功能還不夠強大,如89c51的頻率還不夠快,肉眼可清楚看見刷屏,系統(tǒng)還有待改進。</p><p><b> 參考文獻</b></p>
51、;<p> 1 李朝青.單片機原理及接口技術.北京航空航天大學出版社.2006.12</p><p> 2 郭天祥.新概念51單片機c語言教程.北京:電子工業(yè)出版社.2009.1</p><p> 4 趙山林.c程序設計.北京:人民郵電出版社,2004.8</p><p> 5 張艷兵,王忠慶,鮮浩.計算機控制技術.北京:國防工業(yè)出版社.200
52、6.8</p><p> 6 畢滿清.模擬電子技術基礎.北京:電子工業(yè)出版社,2008.6</p><p><b> 致謝</b></p><p> 通過這次課程設計,我深切的認識到自己不足的一面,我一定要在以后好好彌補。這次課程設計加深了我對計算機控制技術的了解,感謝老師給了我們這次機會,同時也感謝同學的幫助和任課老師在課堂上精辟的講解
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機溫度控制系統(tǒng)課程設計
- 計算機溫度控制系統(tǒng)課程設計
- 計算機控制課程設計--啤酒發(fā)酵計算機溫度控制系統(tǒng)設計
- 溫度控制系統(tǒng)計算機控制課程設計
- 計算機輔助課程設計說明書
- 溫度控制系統(tǒng)設計-計算機控制技術課程設計
- 溫度控制系統(tǒng)設計——計算機控制技術課程設計
- 計算機溫度控制課程設計
- 計算機控制課程設計---電加熱爐計算機溫度控制系統(tǒng)設計
- 計算機控制技術課程設計-溫度控制系統(tǒng)設計
- 課程設計---電加熱爐計算機溫度控制系統(tǒng)
- 計算機控制課程設計(電阻爐溫度控制系統(tǒng))
- 計算機控制課程設計(溫度控制系統(tǒng)的設計與實現)
- 計算機控制課程設計(電阻爐溫度控制系統(tǒng))
- 計算機組成原理課程設計說明書
- 計算機控制課程設計溫度控制系統(tǒng)的設計與實現
- 計算機控制課程設計---水位控制系統(tǒng)
- 計算機控制系統(tǒng)課程設計報告
- 計算機控制課程設計--電阻爐溫度控制系統(tǒng)的設計
- 計算機組成原理課程設計--微程序控制器的設計
評論
0/150
提交評論