一、系統(tǒng)方案 本設(shè)計采用STC89C52單片機作為主控制器,液晶1602顯示溫濕度,按鍵設(shè)置溫濕度閥值,實際溫濕度低于設(shè)置下限或者大于上限,蜂鳴器報警,LabView上位機通信,上位機顯示溫濕度,同時上位機可以設(shè)置溫濕度閥值,實現(xiàn)下位機和上位機的雙向通訊。
二、硬件設(shè)計 原理圖如下: 三、單片機軟件設(shè)計 單片機代碼主要是串口初始化、串口中斷服務(wù)程序。首先是串口初始化: void Uart_init() { TMOD=0x21; //波特率發(fā)生器T1的工作方式為2,自動填裝初值 TH0=(65536-50000)/256; //重裝初值50ms中斷一次 TL0=(65536-50000)%256; ET0=1; TR0=1; EA=1; TH1=0xfd; TL1=0xfd; TR1=1; ET1=0; SM0=0; SM1=1; REN=1; ES=1; beep=1; } 貼上51單片機負責串口發(fā)送的兩個函數(shù): void mcu_pc(unsigned char x)//串口發(fā)送程序 發(fā)送單個字節(jié) { SBUF=x; while(TI==0); TI=0; } void Send2_Str(char *s)//發(fā)送字符串 { while (*s) //Check the end of the string { mcu_pc(*s++); //Send current char and increment string ptr } } 在串口中斷中處理接收到的數(shù)據(jù): void Usart() interrupt 4 { if(RI==1) { receiveData=SBUF;//出去接收到的數(shù)據(jù) RI = 0;//清除接收中斷標志位 } } 四、上位機軟件設(shè)計 上位機是借助LabView來開發(fā)的,界面比較簡單,首先前面板設(shè)計UI界面,之后后面板通過圖形化編程完成軟件開發(fā),放上一個上位機前面板的截圖:
后面板截圖如下:
|