一、設計題目
SHT75溫濕度檢測系統
二、設計目的
在工業現場,特別是那些環境因素對生產過程影響比較大的車間,對現場環境因素的監測很重要,而隨著工業自動化的迅速發展,工業以太網在工業中應用的普及,它能使用戶對現場的一些環境因素實現一個遠程的監測,突顯其便利性和適時性。本系統就是基于SHT75溫濕度傳感器,利用工業以太網技術,實現對工業現場的溫濕度的遠程監測。
三、設計原理
在工業現場中使用溫濕度傳感器,為了達到遠程監測的目的,就少不了與工業以太網或其它工業現場總線網絡相連,本系統就利用工業以太網技術,由傳感器SHT75采集工業現場的溫濕度,經過CPU處理,通過工業以太網進行通信,實現上位機對現場環境溫濕度的數據采集、監測。
本溫濕度測量系統包含了微處理器(C8051F120)、存儲器、傳感器模塊、網絡通信接口、串口通信等重要組成部分。在該設計中,電源使用了以太網供電設備,該設備除了用于網口通信,還提供設計中所需要的電源。該電源經過電平轉換,為微處理器、存儲器、傳感器模塊等提供所需的+5V和+3.3V電壓。微處理器C8051F120通過I/O口與傳感器模塊進行數據交換。溫濕度測量系統的硬件框圖如圖1所示。
圖1 溫濕度測量系統框圖
由proteus畫出的原理圖如下:
圖2 原理圖
四、流程圖
主程序結構主要由CPU與SHT75之間的數據傳遞和傳感器與上位機的數據傳遞并在上位機顯示兩部分組成。在數據傳遞部分,首先需要對CPU與SHT75對應I/O口以及相關寄存器的初始化,然后通過CPU發送命令啟動數據的傳輸,之后,傳感器開始進行信號的采集和數據的交換,CPU對數據進行處理,當進行完一次采集和傳遞后,再通過通信復位來循環工作;在上位機顯示部分,只需找一入口地址,把CPU處理好的數據傳給上位機,再通過EPA組態軟件來對數據進行客觀的顯示。程序結構如圖3所示。
圖3 程序結構
在本系統數據傳遞過程中,主要經過的是啟動傳輸、字節的讀與寫、狀態寄存器的讀與寫、最終數據的讀取和通信的復位幾部分。
五、主要組成部分5.1單片機晶振電路:
單片機系統里都有晶振,如下圖所示(左圖為內部振蕩方式,右圖為外部振蕩方式)在單片機系統里晶振作用非常大,全程叫晶體振蕩器,他結合單片機內部電路產生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執行都是建立在單片機晶振提供的時鐘頻率。
圖4 晶振電路
5.2單片機復位電路:
復位是單片機的初始化操作。單片機啟運運行時,都需要先復位,其作用是使CPU和系統中其他部件處于一個確定的初始狀態,并從這個狀態開始工作。因而,復位是一個很重要的操作方式。但單片機本身是不能自動進行復位的,必須配合相應的外部電路才能實現。
圖5 Protues仿真的晶振及復位圖
5.3 溫濕度采集模塊的內部設計5.3.1處理器C8051F120
C8051F120是美國Cygnal公司的一款控制芯片,它使用 Silicon Lab 的專利 CIP-51 微控制器內核,具有64個數字I/O 引腳、片內VDD 監視器、看門狗定時器和時鐘振蕩器,它使C8051F120器件成為真正能獨立工作的片上系統;FLASH 存儲器具有在系統重新編程能力,可用于非易失性數據存儲,并允許現場更新8051固件;片內 JTAG 調試電路允許使用安裝在最終應用系統上的產品 MCU 進行非侵入式(不占用片內資源)、全速、在系統調試,該調試系統支持觀察和修改存儲器和寄存器,支持斷點、觀察點、單步及運行和停機命令;它能在工業溫度范圍(-45℃到+85℃)處工作,這些完全滿足在工業現場使用的要求。
微處理器部分的設計包含系統硬件的啟動與復位、地址總線、數據總線的分配和定義、與外設傳感器的連接等;系統由外部的22M鐘振作為時鐘源向CPU輸入時鐘信號;復位電路由10μF的電容、10K電阻組成低電平復位電路,該復位電路可實現上電低電平自動復位。
5.3.2 傳感器模塊
SHTxx 系列單芯片傳感器是由瑞士Sensirion的一款含有已校準數字信號輸出的溫濕度復合傳感器。傳感器包括一個電容式聚合體測濕元件和一個能隙式測溫元件,并與一個 14 位的 A/D 轉換器以及串行接口電路在同一芯片上實現無縫連接。SHTxx采用串行接口,它的分辨率可以根據對現場的采集速率而進行調整,一般情況下默認的測量分辨率分別為 14bit(溫度)、12bit(濕度),如果在高速采集中就可分別降至 12bit 和 8bit,對溫度的量程范圍:-40~123.8℃,濕度的量程范圍:0~100%RH。它操作比較簡單,只需用一組“ 啟動傳輸”時序,就能實現傳感器數據傳輸的初始化,同時,在測量和通訊結束后,SHTxx 會自動轉入休眠模式,這大大的減少了功耗。我們選擇的是SHT75,它的結構框圖如圖6所示。
圖6 SHT75結構框圖
SHT75與微處理器的連接,是通過C8051F120的兩個I/O口來分別與傳感器SHT10的SCK引腳和DATA引腳相連,來實現數據的交換;VDD與3.3V電壓相連。為避免信號沖突,微處理器應驅動DATA 在低電平,所以還必須在I/O電路中,DATA引腳上加上一個上拉電阻將信號提拉至高電平,用一個10KΩ的電阻接至3.3V電壓。原理圖如圖7所示
圖7 溫濕度傳感器電路連接
5.3.3 網絡通信接口
在設計中采用網絡接口將溫濕度傳感器接入工業以太網,數據由以太網傳遞到上位機中,實現工業現場的設備和上位機的通信。網絡隔離器采用的是HR61H50L,網卡芯片使用的是RTL8019AS。
RTL8019AS 是REALTEK公司的高度集成以太網控制器,它能夠簡單的解答即插即用 NE2000兼容適配器,這種適配器具有二重和功率下降特性。通過三電平控制特性,RTL8019AS是對網絡設備 GREEN PC 理想的選擇。全二重功能能夠模擬傳播和接收在雙絞線到全二重以太網交換機。這個特性不僅使帶寬從10到20MBPS,而且避免了由于以太網頻道爭奪特性導致的讀出多路存取協議的問題。為了提供完全解決即插即用方案,RTL8019AS集成10BASET收發器,BNC,和AUI接口之間的自動檢測功能。此外,8條IRQ 總線和16條基本地址總線為大資源情況下提供了寬松的環境。RTL8019AS用 16k字節SRAM 設計在單片芯片上,它的設計不僅提供了更友好的功能,而且節省了 SRAM 存儲資源。RTL8019AS的地址總線SA[7:0]與數據總線SD[7:0]分別與C8051F120的地址/數據總線相連。
5.4顯示屏顯示設計:5.4.1液晶顯示原理:
液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規模集成電路直接驅動、易于實現全彩色顯示的特點,目前已經被廣泛應用在便攜式電腦、數字攝像機、PDA移動通信工具等眾多領域。
5.4.2字符的顯示:
用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區的8字節,還要使每字節的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據在LCD上開始顯示的行列號及每行的列數找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。
圖8 液晶顯示模塊仿真圖
六、總結
本方案使用瑞士SENSIRION公司生產的溫濕度傳感器SHT75進行溫濕度實時監測,該傳感器具有體積小、功耗低,使用電池供電可以長期穩定運行,防浸泡等特性,使其在高濕度條件下也可以正常工作,該實驗對該器件進行仿真測試,所讀取的溫濕度數據用液晶屏刷新顯示。
從這次的設計中,我們真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我們在這次設計中的最大收獲。
#include <reg52.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>
#define LCD_DB P0
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;
#define uchar unsigned char
#define uint unsigned int
void LCD_init(void);
void LCD_write_command(uchar command);
void LCD_write_data(uchar dat);
void LCD_disp_char(uchar x,uchar y,uchardat);
voidLCD_disp_str(uchar x,uchar y,uchar *str);
void delay_n10us(uint n);
void LCD_init(void)
{
delay_n10us(10);
LCD_write_command(0x38);//設置8位格式,2行,5x7
delay_n10us(10);
LCD_write_command(0x0c);//整體顯示,關光標,不閃爍
delay_n10us(10);
LCD_write_command(0x06);//設定輸入方式,增量不移位
delay_n10us(10);
LCD_write_command(0x01);//清除屏幕顯示
delay_n10us(100); //延時清屏,延時函數,延時約n個10us
}
void LCD_write_command(uchar dat)
{
delay_n10us(10);
LCD_RS=0; //指令
LCD_RW=0; //寫入
LCD_E=1; //允許
LCD_DB=dat;
delay_n10us(10); //實踐證明,我的LCD1602上,用for循環1次就能完成普通寫指令。
LCD_E=0;
delay_n10us(10); //實踐證明,我的LCD1602上,用for循環1次就能完成普通寫指令。
}
void LCD_write_data(uchar dat)
{
delay_n10us(10);
LCD_RS=1; //數據
LCD_RW=0; //寫入
LCD_E=1; //允許
LCD_DB=dat;
delay_n10us(10);
LCD_E=0;
delay_n10us(10);
}
void LCD_disp_char(uchar x,uchar y,uchardat)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
void LCD_disp_str(uchar x,uchar y,uchar*str)
{
uchar address;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
while(*str!='\0')
{
LCD_write_data(*str);
str++;
限于篇幅,后續程序在附件中下載
51hei下載地址:
溫濕度檢測.docx
(20.04 KB, 下載次數: 52)
2018-12-27 20:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|