版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 設(shè)計題目:溫度檢測系統(tǒng)設(shè)計</p><p><b> 一、實驗內(nèi)容</b></p><p> 利用板載模擬溫度傳感器TC1047A實現(xiàn)一溫度采集系統(tǒng);</p><p> 間隔1--5s采集一次(步進1 s,可以預設(shè)),在液晶屏第一行顯示連續(xù)的3個采集溫度值;</p><p> 當最新采集的溫
2、度大于這三個溫度的平均值溫度1℃時,蜂鳴器報警,當溫度降低后,解除報警;</p><p> 記錄報警次數(shù),在LCD上顯示,,并將結(jié)果存入24LC024。</p><p> 電路原理圖以及各功能模塊的工作原理</p><p><b> 1、驅(qū)動蜂鳴器</b></p><p> APP001開發(fā)板上的BUZZER是由
3、RC2控制一個三極管來驅(qū)動的,當JP4的跳線開關(guān)短路時,RC2管腳輸出高電平便會使蜂鳴器發(fā)出聲音,RC2管腳輸出低電平便禁止蜂鳴器發(fā)聲。</p><p><b> 2.字符LCD</b></p><p> APP001開發(fā)板配置了一個2*16的字符LCD,它和PIC18F452的接口是RD0-RD3連接到LCD模塊的DB4-DB7,用來向LCD模塊寫入命令和數(shù)據(jù),
4、其中DB7可以用來作為LCD模塊控制器的忙標志位;RD5是讀寫控制位;RD4是命令和數(shù)據(jù)標志位。RD=0時,RD0-RD3是讀取和寫入數(shù)據(jù)到LCD的命令寄存器;RD=1時,RD0-RD3讀取和寫入的是要顯示的數(shù)據(jù)。</p><p><b> 3.溫度測量</b></p><p> 使用模擬溫度傳感器TC1047A,利用模數(shù)轉(zhuǎn)換,將模擬電壓轉(zhuǎn)換為數(shù)字電壓。對應(yīng)于相應(yīng)
5、的溫度。</p><p><b> 4.鍵盤</b></p><p> 使用開發(fā)板上的2組按鍵SW2和SW3</p><p><b> 5. RTC</b></p><p> 采用Timer 1外接32.768kHz的晶振可以產(chǎn)生精確的1秒計時,從而實現(xiàn)RTC。</p><
6、;p><b> 6.24LC024</b></p><p> 7.LCD、LED&ADC按鍵讀取</p><p> 三、主要函數(shù)程序流程圖</p><p> 1.Main函數(shù)流程圖</p><p> 2.LCD__EEPROM 更新</p><p> 3.溫度比較和蜂鳴器
7、</p><p><b> 四、實驗主要源碼</b></p><p> ?。?)Main函數(shù):</p><p> void main(void)</p><p><b> {</b></p><p> int AlarmNum;</p><p>
8、; /*首先初始化*/ </p><p> InitializePORT( );</p><p> InitializeINTs( );</p><p> InitializeAD( );</p><p> InitializeTMR1( );</p><p> Initialize_I2C_Master(
9、 );</p><p> /*lcd初始化*/ </p><p> OpenLCD( );</p><p><b> while(1)</b></p><p><b> {</b></p><p> Key_Press_Check();</p><
10、;p> if (Flagbits.Timer1_Flag)// update Temperature on LCD every 1 Sec</p><p><b> {</b></p><p> Flagbits.Timer1_Flag=0;</p><p> get_key_flag++;</p><p&g
11、t; if(get_key_flag>=Time_count)</p><p><b> {</b></p><p> get_key_flag=0;</p><p> LCD_Temp_Update() ;// update Temperature</p><p> Temp_Compare();&l
12、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b></p><p><b> ?。?)讀取溫度:</b>
13、;</p><p> int Read_TC1047_Temperature(void)</p><p> {intAD_Temp;</p><p> ADCON0bits.CHS0=1;</p><p> for (AD_Temp=0;AD_Temp<5;AD_Temp++);</p>&
14、lt;p> ADCON0bits.GO=1;// Start to convert the A/D</p><p> while(ADCON0bits.GO);// Waiting A/D until done</p><p> AD_Temp = ReadADC( );// Get 10 bits A/D result</p>&
15、lt;p> return AD_Temp;</p><p><b> }</b></p><p> ?。?)LCD__EEPROM 更新</p><p> void LCD_Temp_Update (void)</p><p><b> {</b></p><p&g
16、t;<b> int i;</b></p><p> LCD_Set_Cursor(0,0);// 清理lcd </p><p> for (i=0;i<16;i++)putcLCD(' ');</p><p> /****顯示第一個溫度值******/</p><p> LC
17、D_Set_Cursor(0,0);//定位光標</p><p> T2_buffer[0]=T2_buffer[1];//從后面向前傳遞溫度參數(shù) </p><p> if(T2_buffer[0]!=0)//如果是零,不要顯示 </p><p><b> {</b></p><p> Buffer_LCD
18、(T2_buffer[0]);</p><p> LCD_Set_Cursor(0,4);//定位光標 </p><p> putcLCD(0xDF);//顯示 ”度 “ 這個標志 </p><p><b> }</b></p><p> /****顯示第二個溫度值******/</p><
19、p> LCD_Set_Cursor(0,5);</p><p> if(T2_buffer[1]!=0)</p><p><b> {</b></p><p> Buffer_LCD(T2_buffer[1]);</p><p> LCD_Set_Cursor(0,9);</p>&l
20、t;p> putcLCD(0xDF);</p><p><b> }</b></p><p> /****顯示第三個溫度值******/</p><p> LCD_Set_Cursor(0,10);</p><p> T2_buffer[2]=T2_buffer[3];</p><
21、p> if(T2_buffer[2]!=0)</p><p><b> {</b></p><p> Buffer_LCD(T2_buffer[2]);</p><p> LCD_Set_Cursor(0,14);</p><p> putcLCD(0xDF);</p><p
22、><b> }</b></p><p> T2_Buffer=Read_TC1047_Temperature( );// Get Current Temperature from TC1047A</p><p> T2_buffer[3]=T2_Buffer; </p><p> EEPROM.Word=EERandomRead(
23、0xA0,0x30);</p><p> //顯示累積溫度報警次數(shù) </p><p> LCD_Set_Cursor(1,13);</p><p> NUM=EEPROM.Byte[0];</p><p> itoa(EEPROM.Byte[0],ASCII_String);</p><p> putsLCD
24、(ASCII_String);</p><p> //顯示當次溫度報警次數(shù)</p><p> LCD_Set_Cursor(1,11);</p><p> itoa(alarm_count,ASCII_String);</p><p> putsLCD(ASCII_String);</p><p> EEBy
25、teWrite(0xA0, 0x30, (NUM+NUMN));</p><p> EEAckPolling(0xA0);</p><p><b> NUMN=0;</b></p><p><b> }</b></p><p><b> 溫度比較和蜂鳴器</b><
26、/p><p> void Temp_Compare(void)</p><p><b> {</b></p><p> int i,range;</p><p> unsigned int alarm_value=0;</p><p> //當所有的溫度采集完畢之后 才能正常比較 </
27、p><p> if(T2_buffer[0]!=0)</p><p><b> {</b></p><p> for(i=0;i<=2;i++)</p><p><b> {</b></p><p> alarm_value+=T2_buffer[i];</
28、p><p><b> }</b></p><p> range=alarm_value/3.0;</p><p> LCD_Set_Cursor(1,0);</p><p> Buffer_LCD(range);</p><p> LCD_Set_Cursor(1,4);</p&
29、gt;<p> putcLCD(0xDF);</p><p> if ((T2_Buffer)>(range+0x000A))//溫度值超過告警值時報警</p><p><b> {</b></p><p> PORTCbits.RC2=1;//開蜂鳴器</p><p>
30、 PORTDbits.RD7=1;//點LED D8</p><p> alarm_count++;</p><p><b> NUMN++;</b></p><p><b> }</b></p><p><b> else </b></p>
31、<p><b> {</b></p><p> PORTCbits.RC2=0;//觀蜂鳴器</p><p> PORTDbits.RD7=0;//關(guān) LED D8</p><p> //T2_Buffer_Flag=1;</p><p><b> }<
32、/b></p><p><b> }</b></p><p><b> }</b></p><p><b> 按鍵查詢</b></p><p> void Key_Press_Check(void)</p><p><b> {
33、</b></p><p><b> if(!SW2)</b></p><p><b> {</b></p><p> PIE1bits.TMR1IE=0;</p><p> Delay10KTCYx(100);</p><p> if(Time_cou
34、nt>4)</p><p><b> {</b></p><p> Time_count=1;</p><p><b> }</b></p><p><b> else</b></p><p> Time_count++;</p&g
35、t;<p> PIE1bits.TMR1IE=1;</p><p><b> }</b></p><p><b> if(!SW3)</b></p><p><b> {</b></p><p> EEByteWrite(0xA0, 0x30, 0);&
36、lt;/p><p> EEAckPolling(0xA0);</p><p> LCD_Set_Cursor(1,13);</p><p> putcLCD(' ') ;</p><p> LCD_Set_Cursor(1,14);</p><p> putcLCD(' ') ;&
37、lt;/p><p> LCD_Set_Cursor(1,15);</p><p> putcLCD(' ') ;</p><p><b> }</b></p><p> LCD_Set_Cursor(1,6);</p><p> WriteDataLCD('T'
38、;);</p><p> LCD_Set_Cursor(1,7);</p><p> WriteDataLCD('=');</p><p> LCD_Set_Cursor(1,8);</p><p> itoa(Time_count,ASCII_String);</p><p> putsLC
39、D(ASCII_String);</p><p> LCD_Set_Cursor(1,9);</p><p> WriteDataLCD('s');</p><p><b> }</b></p><p><b> 五、心得體會</b></p><p>
40、 通過本次實驗,我學會了溫度檢測系統(tǒng),整個過程如下:首先利用傳感器去采集溫度,接著將采集過來的溫度通過一定的公式轉(zhuǎn)化成電壓,然后又通過一定的公式將其轉(zhuǎn)化成電路板上合適的電壓值,用AD將其進行編碼,最后將其轉(zhuǎn)化成溫度顯示出來。 </p><p> 接著講講主程序的編寫主要包括以下部分:首先是程序的初始化,接著跳入循環(huán)while(1)中,接著調(diào)用Key_Press_Check()對按鍵進行判斷,如果有按鍵按下則處
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計報告---多點溫度檢測系統(tǒng)設(shè)計
- 電子裝置與系統(tǒng)設(shè)計課程設(shè)計報告
- 微機課程設(shè)計報告--溫度巡回檢測系統(tǒng)
- 多點溫度檢測系統(tǒng)課程設(shè)計
- 溫度檢測課程設(shè)計
- 電子信息工程課程設(shè)計--溫度測量系統(tǒng)設(shè)計
- 溫度檢測課程設(shè)計--工廠自動溫度檢測控制系統(tǒng)
- 電子信息工程課程設(shè)計--溫度測量系統(tǒng)設(shè)計
- 多機溫度檢測課程設(shè)計
- 溫度檢測顯示器設(shè)計仿真與實現(xiàn)-《模擬電子電路》課程設(shè)計報告
- 電子裝置與系統(tǒng)設(shè)計課程設(shè)計--基于pic單片機的脈搏檢測
- 電子技術(shù)課程設(shè)計報告----峰值檢測系統(tǒng)
- 電子技術(shù)課程設(shè)計報告---溫度控制器設(shè)計報告
- 溫度采集系統(tǒng)課程設(shè)計
- 電子課程設(shè)計報告
- 微機原理課程設(shè)計---溫度采集系統(tǒng)報告
- 單片機課程設(shè)計報告---溫度監(jiān)控系統(tǒng)設(shè)計
- 溫度巡檢系統(tǒng)課程設(shè)計
- 電子線路cad課程設(shè)計報告---環(huán)境溫度監(jiān)測系統(tǒng)
- 電子裝置與系統(tǒng)設(shè)計課程設(shè)計報告 e08610308 - 基于pic單片機的脈搏檢測
評論
0/150
提交評論