新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機和PC機的實時溫度控制系統設計

        基于單片機和PC機的實時溫度控制系統設計

        作者: 時間:2012-05-25 來源:網絡 收藏

        報警電路采用蜂鳴器作為報警器件,如圖2所示,只需很少的器件,就能實現與蜂鳴器的連接。當與蜂鳴器所連的I/O口輸出低電平時,蜂鳴器則能發出聲音,系統設計中,當溫度超過31℃時,蜂鳴器則發出聲音,實現報警功能。

        3.2 接口設計

        單片機要和實現串口通信,需要進行電平轉換,因為單片機使用的是TTL電平,而串口使用的是RS232電平。運用MAXIM公司生產的MAX232芯片實現TTL電平和RS232電平轉換,如圖3所示,通過其第11腳和第12腳分別與單片機的第11腳和第10腳連接,通過第13腳,第14腳分別與PC機串口的第2腳,第3腳進行連接,就能實現單片機和PC機的電平轉換、連接、和通信。單片機與PC機接口電路原理圖如圖3所示。

        基于單片機和PC機的實時溫度控制系統設計
        圖3 單片機與PC機串口通信接口電路

        4 軟件設計

        系統單片機程序采用C51進行編程,主要完成對DS18B20的調用中斷管理、測量溫度值的計算以及單片機與PC機的串口通信。上位機軟件采用VBMSComm控件制作,由于C51程序較長,此處只介紹上位機軟件編寫程序,VB程序如下:

        Private Sub Form_Load( ) ' . . . . . . . . 初始化設置
        MSComm1.CommPort = 1 '……使用Com1口
        MSComm1.Settings = "9600,n,8,1" '. 設置通訊參數
        MSComm1.InBufferSize = 4 ' 設置接收寄存器等待讀取的字符數為4
        MSComm1.RThre shold = 0 ' 初始化為不產生OnComm事件
        MSComm1.PortOpen = True ' .打開串口
        MSComm1.InputLen = 4 ' 設置并返回Input屬性從接收緩沖區讀取的字符數為4
        MSComm1.InputMode = comInputModeText ' 設置接收方式為文本方式
        Me.Caption = " 實時" ' 設置標題為" 實時"
        End Sub
        Private Sub Command1_Click( ) '. .自動讀取按鈕
        Timer1.Enabled = True ' . . . . . . . .開啟定時器
        MSComm 1 . RThreshold = 1 ' . . . . . . . . 開啟OnComm事件觸發
        End Sub
        Private Sub Command2_Click( ) '. .清空內容按鈕
        Timer1.Enabled = False ' . . . . . . . . 關閉定時器
        MSComm1.RThre shold = 0 ' . . . . . . . .停止產生OnComm事件
        Shape1 . FillColor = RGB(255,255,255)
        ' . . . . . . . . 設置信號指示燈的顏色為白色
        Text1. Text = " " ' . . . . . . . .清空文本框1的內容
        Text2. Text = " " ' . . . . . . . .清空文本框2的內容
        Text3. Text = " " ' . . . . . . . .清空文本框3的內容
        End Sub
        Private Sub Command3_Click( ) '. .關閉窗口按鈕
        Unload Me ' . . . . . . . . 卸載窗體
        End Sub
        Private Sub MSComm1_OnComm( ) '. . . . . .事件觸發
        Dim rec As String
        Select Case MSComm1.CommEvent
        Case comEvReceive
        rec = MSComm1. Input
        Text3.Text = rec
        MyResult = (Text3.Text "31")
        ' . . . . . . . . 判斷當前溫度是否達到31℃
        If MyResult = False Then ' . . . .達到31℃
        Shape1.FillColor = RGB(255,0 ,0 ) ' . . . . . . . . 信號燈為紅色
        Text1 . Text = " 產生報警"' . . . . . . . . 同時信息提示顯示" 產生報警"
        Else ' . . . . . . . . 未達到31℃
        Shape1.FillColor = RGB(0,128,0 ) ' . . . . . . . . 信號燈為綠色
        Text1 . Text = " 溫度正常"' . . . . . . . . 同時信息提示顯示" 溫度正常"
        End If
        Text3.Te xt = " "
        Text3.Text = rec + "℃"
        MSComm1. InBufferCount = 0 ' 清空接收緩沖區
        End Select
        End Sub
        Private Sub Timer1_Timer()
        Text2 . Text = Now ' . . . . . . . . 設置定時器產生時鐘,顯示當前時間
        End Sub

        5 系統調試

        系統實現功能包括,通過下位機(單片機)將DS18B20所測溫度值實時傳輸給上位機(PC機),通過上位機(PC機)監控環境溫度,并具有報警功能。

        1.在上位機軟件中點擊"自動讀取"按鈕實現自動讀取當前時間,溫度值。當正常溫度情況下,信號指示燈為綠色,同時信息提示為"溫度正常"。

        2.當溫度達到所設溫度極限時(本系統所設溫度極限為31℃) ,信號燈變為紅色,信息提示為"產生報警",同時硬件部分的蜂鳴器會報警,如圖4所示為產生報警時上位機顯示部分。

        基于單片機和PC機的實時溫度控制系統設計
        圖4 產生報警時上位機顯示部分

        6 結束語

        運用能直接得到數字信號的溫度傳感器DS18B20采集溫度,將溫度值通過單片機I/O口傳遞給單片機進行處理,傳輸和控制,當溫度值達到所設溫度極限時產生報警,通過串口數據線實現下位機(單片機)與上位機(PC機)通信,并運用VBMSComm控件制作上位機軟件,達到實時顯示環境溫度和提示信息。系統設計連接簡單,實現容易,使用方便。

        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 万宁市| 龙口市| 全南县| 遵义市| 怀化市| 光泽县| 庆阳市| 仙桃市| 林西县| 会同县| 中江县| 城步| 大化| 朔州市| 嘉定区| 蒙山县| 扶绥县| 云浮市| 湛江市| 安远县| 康平县| 岚皋县| 合阳县| 咸宁市| 东乌珠穆沁旗| 全椒县| 青海省| 云和县| 通道| 正阳县| 广灵县| 宜章县| 阿坝| 舒城县| 晋宁县| 大厂| 涟水县| 衡山县| 安西县| 景泰县| 郯城县|