【正文】
個位十進(jìn)制數(shù),通過查詢 LED 共陽極的顯示代碼程序,分時選通即可顯示當(dāng)前的溫度值。本程序使用 的通用串口控件 MSComm 來對發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。H amp。采集的溫度數(shù)據(jù)還通過 Data 控件存入數(shù)據(jù)庫中。在整個采集系統(tǒng)中,包括溫度采集程序,串口通信程序,和上位機 VB 的程序,數(shù)據(jù)庫等等幾個部分,為了避免干擾,當(dāng)上位機 VB 界面點擊“采集溫度 ”時,向下位機發(fā)送特定字符,當(dāng)下位機識別正確字符,才將溫度數(shù)據(jù)傳送給上位機。參考文獻(xiàn)[1] 黃仁欣.單片機原理及應(yīng)用技術(shù)[M] .北京:清華大學(xué)出版社,2021:5662.[2] 馬忠梅,籍順心等.單片機的 C 語言應(yīng)用程序設(shè)計 [M] .北京:航空航天大學(xué)出版社,2021:98101.27[3] 劉文濤.Visual Basic + Access 數(shù)據(jù)庫開發(fā)與實例[M] .北京:清華大學(xué)出版社,2021: 3234,5153.[4] 李敏業(yè), 王穎.Visual Basic + Access 完全解析[M] .北京:人民郵電出版社,2021: 102110.[5] 占維, 劉偉. 數(shù)據(jù)庫實用編程 100 例[M] .北京:中國鐵道出版社,2021: 120125[6] 張靖武 , 周靈彬.單片機系統(tǒng)的 PROTEUS 設(shè)計與仿真[M] .北京:電子工業(yè)出版社,2021:96105.致 謝本學(xué)位論文是在我的指導(dǎo)老師謝明華的耐心指導(dǎo)下完成的。**********************************************************/include define XTAL 11059200 // CUP 晶振頻率define baudrate 9600 // 通信波特率define uchar unsigned chardefine uint unsigned intsbit DQ = P3^3。 sbit DIN = P0^7。 // 精確延時 大于 480us DQ = 1。for (i = 8。}/**********************************************************/void WriteOneChar(unsigned char dat)// 寫一個字節(jié){ unsigned char i = 0。 dat=1。 WriteOneChar(0xCC)。長沙學(xué)院畢業(yè)設(shè)計32if(temp_data[0]=0) { temp_data[1]= temp_data[1]+1。display[1]=display[4]%100。 }P0 = 0xc6。 // 顯示小數(shù)位P2 = 0xfb。P0 =LEDData[display[3]]。 BEEP=!BEEP。= 0x00。}}/*********************************************************/void main(void){uchar receive。 // 傳送采集的溫度}} }}/*********************************************************/長沙學(xué)院畢業(yè)設(shè)計35附錄 2 上位機程序39。 溫度采集39。 設(shè)置串口 Call tabinit 39。Sub setAcquiescence() = 200 39。 停止采集 If mark = True Then If = True Then = False mark = False = False = 繼續(xù)采集 = amp。Private Sub Form_Load()On Error GoTo err: = 1 39。 調(diào)用表格初始化子程序 Call ScaleSys 39。39。 停止溫度采集39。39。, 49, 溫度采集系統(tǒng) Call setAcquiescence 39。 暫停標(biāo)志Dim strSql As StringPrivate Sub cmd_Search_Click() strSql = select * from Tbl_wD where 1=1 Set Rs = New = adUseClient strSql, Db, adOpenKeyset, adLockReadOnly If 1 Then MsgBox (數(shù)據(jù)庫中沒有數(shù)據(jù)!) Exit Sub End If Set = Rs End Sub39。receive = SBUF。 // 等特數(shù)據(jù)傳送TI = 0。 // 定時器 0 賦初值SCON = 0x50。i100。 // 顯示十位P2 = 0xef。 // 選中 口Delay(300)。} //溫度為負(fù)數(shù)時第二個數(shù)碼管顯示負(fù)號 if(!display[3]) // 高位為 0,不顯示 { display[3]=0x0a。0x0f)4)。 // 所測溫度為負(fù)時,要進(jìn)行轉(zhuǎn)換 temp_data[1]=!( temp_data[1]); temp_data[0]=!( temp_data[0])。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 Delay(5)。 Delay(4)。 // 返回信號, 0=presence,1= no presence}/**********************************************************/uchar ReadOneChar(void) // 讀一個字節(jié){unsigned char i = 0。 // 稍做延時 DQ = 0。unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}。很慶幸這些年來我遇到了許多恩師益友,無論在學(xué)習(xí)上、生活上還是工作上都給予了我無私的幫助和熱心的照顧,讓我在許多方面都有所成長。就個人而言,在這次畢業(yè)設(shè)計鍛煉了個人意志以及在克服困難的毅力,培養(yǎng)了我在一定的壓力下進(jìn)行研究和設(shè)計的心理素質(zhì),獨立處理問題的能路,提高了我查找運用各種參考資料以及與其他人溝通交流解決問題的能力。讀數(shù)方便,測量范圍廣,測溫準(zhǔn)確。 Mid(buffer, 1, 2)) * End If 39。此外程序還添加了接收溫度數(shù)據(jù)的判定,接收到的溫度數(shù)據(jù)應(yīng)為兩字節(jié),且低位在前,當(dāng)接收到的數(shù)據(jù)不是兩字節(jié)時,表示接收錯誤,跳出此程序。其他延時子程序以及 DS18B20 的讀寫子程序,可見附錄 1 的完整的 DS18B20 溫度采集系統(tǒng)程序設(shè)計,在這里不做詳細(xì)介紹了。display[2]=display[1]/10。由于每一位變化為 ℃/LSB,通過移位操作,即可獲得一個新的關(guān)于溫度整數(shù)部分的數(shù)據(jù),部分設(shè)計顯示轉(zhuǎn)化程序如下:display[4]=temp_data[0]amp。TH1=(unsigned char)(256 (XTAL / (32L * 12L * baudrate)))。 }} }}主程序為一無限循環(huán),單片機不斷從 DS18B20 的數(shù)據(jù)口采集數(shù)據(jù)信號,用 flash標(biāo)志 DS18B20 是否正常,當(dāng) flash=1 時表示 DS18B20 不正常,就由軟件設(shè)置及時關(guān)閉LED 顯示并由蜂鳴器報警。 while(1) { Read_Temperature()。19圖 實時溫度曲線顯示及查詢圖串口的波特率,串口號都采用下拉選擇的方式,在使用中可跟據(jù)情況選擇讀串口數(shù)據(jù)的原理是,只要當(dāng)有數(shù)據(jù)向串口發(fā)數(shù)據(jù)來時,計算機就會自動將其數(shù)據(jù)寫到一個特定的緩沖區(qū),我們只要寫程序去讀那個特定的緩沖區(qū)就可以了。這些串口在 CPU 和外設(shè)之間充當(dāng)解釋器的角色。圖 顯示數(shù)據(jù)刷新流程圖 上位機軟件設(shè)計上位機是應(yīng)用 VB 進(jìn)行編寫的,它把下位機傳送上來是兩字節(jié)的十六進(jìn)制數(shù)據(jù)進(jìn)行解碼顯示出來。 主程序主程序的主要功能是負(fù)責(zé)溫度的實時顯示、讀出并處理 DS18B20 的測量的當(dāng)前溫度值,溫度測量每 1s 進(jìn)行一次。12 系統(tǒng)硬件設(shè)計系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,報警電路,單片機主板電路等,如圖 所示。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。系統(tǒng)對 DS18B20 的各種操作按協(xié)議進(jìn)行。在 64 位 ROM 的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC) 。當(dāng) DS18B20 接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。第 5 個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。在掉電模式下,保存 RAM 的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止 [2]。石晶振蕩和陶瓷振蕩均可采用。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN 信號將不出現(xiàn)。因此它可用作對外部輸出的脈沖或用于定時目的。當(dāng) P3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。在 FLASH 編程和校驗時,P1 口作為第八位地址接收。片內(nèi)振蕩器和時鐘電路 管腳說明: VCC:供電電壓。全靜態(tài)工作:0Hz24HzAT89C2051 是一種帶 2K 字節(jié)閃爍可編程可擦除只讀存儲器的單片機。 。如今,計算機的使用領(lǐng)域已經(jīng)擴展到了各行各業(yè),甚至介入個人家庭。此技術(shù)主要包括:傳感器,模數(shù)轉(zhuǎn)換,單片機與 PC 機接口,串行通訊,VB 等部分。該系統(tǒng)涵蓋了傳感器技術(shù),信息處理技術(shù),計算機通信技術(shù)等幾個方面的技術(shù)。關(guān)鍵詞:溫度,編碼,單片機,實時曲線,DS18B20, IIABSTRACT Temperature is a very important physical quantity which used in production and life .For the different applications, it is necessary to produce the proper system of measuring temperature. In this article I will discuss the system of measuring close quarters temperature.This system involves sensor technic, information processing technic, munication technic and so on .The design mainly includes the sensor part , analogdigital conversion ,the interface between the microcontroller and PC ,serial munication and so on .The main theoretical base is theory of data collection . The temperature signals measured by 18B20 sensors transform to the voltage signals .The single chip transforms the voltage code to 16M code which is the basic of munication .I design the interface circuit between the single chip and PC .The temperature signals are received and described by VB and then displayed on the screen .All the signals can be Realtime memory in order to analyze them .Form the result the metrical signals and the theoretical signals have the linearity relation .the result indicates that the has high precision an