聚豐項目 > 冰箱濕度顯示與預警系統
冰箱濕度顯示與預警系統是以89C52單片機為數據處理與外設控制核心,外接有IDT濕度傳感器模塊、液晶顯示模塊、按鍵控制模塊與報警模塊。IDT濕度傳感器具有精度高(14位)、轉換速率快、集成度高(內部集成14位AD轉換與并轉串電路)等特點。裝置可根據用戶需要設定相應的預警值,報警模塊聲光并用,增大了被用戶感知的概率。
沉迷于電路板
分享沉迷于電路板
團隊成員
周俊 焊工
1、傳感器HS3001
HS300x系列是一款高精度,完全校準的相對濕度和溫度傳感器。 MEMS傳感器具有專有的傳感器級保護功能,可確保高可靠性和長期穩定性。集成校準和溫度補償邏輯通過標準I2C輸出提供完全校正的濕度值和溫度值。無需用戶校準輸出數據。高精度,快速測量響應時間和長期穩定性以及小封裝尺寸使HS300x系列成為從便攜式設備到專為惡劣環境設計的產品的廣泛應用的理想選擇。 HS300x系列數字傳感器可精確測量相對濕度和溫度水平。測量數據經過內部校正和補償,可在很寬的溫度和濕度范圍內進行精確操作 - 無需用戶校準。
2、IIC通信協議
當主機發送0 START位(S)時,啟動傳感器傳輸。當主機發送1個STOP位(P)時,傳輸終止。這些位僅在SCL線為高電平時發送(波形見圖)。主機一旦設置START條件,就以規定的數據速率切換SCL線,為后續數據傳輸提供時鐘。SDA線上的數據始終在SCL線的上升沿采樣,并且在SCL為高電平時必須保持穩定,以防止錯誤的START或STOP條件。
啟動傳感器需要寫命令將HS300x從休眠模式喚醒。通過發送7位從地址,然后發送第8位= 0(WRITE)來啟動測量請求。傳感器測量周期包括濕度和溫度轉換,然后是數字信號處理器(DSP)校正計算。傳感器在測量周期結束時,數字輸出寄存器將在斷電前更新。輸出始終縮放為14位。位的順序是big-endian。
在測量周期結束時,可以獲取有效數據。 DF結果的狀態位可用于檢測數據是有效還是失效(參見第6.7節);否則,在執行DF之前等待測量完成。 DF命令以7位從地址開始,后跟第8位= 1(READ)。作為從機的HS300x發送表示成功的確認(ACK)。 HS300x返回的數據字節數由主機發送NACK和STOP條件時確定。在前兩個字節中提取全部14位濕度數據。第一個字節的兩個MSB是狀態位。rn14位溫度數據跟隨濕度數據。第四個數據字節的最后兩位(LSB)未確定,應該被屏蔽掉。在不需要溫度數據的情況下,可以通過在第二字節之后發送NACK來終止讀取。
3、數據處理
HS300x的整個輸出為4個字節。相對濕度(百分比)和溫度(攝氏度)分別用等式1和等式2計算。
4、89C5單片機
89C52是一種帶8K字節閃爍可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。
5、液晶顯示模塊
LCD12864帶中文字庫的128X64 是一種具有4 位/8 位并行、2 線或3 線串行多種接口方式,內部含有國標一級、二級簡體 中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內置8192 個16*16 點漢字,和128 個16*8 點ASCII 字符 集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面。可以顯示8×4 行16×16 點 陣的漢字。 也可完成圖形顯示。低電壓低功耗是其又一顯著特點。
6、報警模塊
呼吸燈和蜂鳴器構成聲光報警電路。
#include
#define uchar unsigned char
#define uint unsigned int
sbit led=P2^2;
unsigned char num=0;
unsigned char num1=0;
unsigned char num2=0;
unsigned char num3=0;
unsigned char code dis1[]= {"日期:2019.1.1"};
unsigned char code dis2[]= {"濕度:"};
unsigned char code dis3[]= {"溫度:"};
unsigned char code dis4[]= {"濕度預警值:"};
unsigned char code s[13]= {"0123456789.%"};
unsigned char dis5[7];
unsigned char dis6[8];
unsigned char dis7[3];
unsigned char dis8[4];
unsigned char key;
unsigned int c,d,m;
void delay_1ms(int x);
void read(); //IIC數據讀取函數(四個字節)
void lcd_start();
void lcd_shuju(); //數據顯示函數
void shujuchuli(); //數據處理函數
void Timer0();
void Timer0Init();
void lcd_yjz(); //預警值顯示函數
void yjz();
void main()
{
unsigned int i=0,n=0;
lcd_init(); //LCD12864初始化
lcd_start(); //LCD基本顯示內容
Timer0Init();
while(1) //按鍵輸入
{
key=KeyDown();
if(key==12)
{
n=1;
TR0=0; //打開定時器
delay_1ms(10);
}
if(key==15)
{
TR0=1;
delay_1ms(10);
n=0;
}
if(n==1)
{
if(key!=0)
{
dis8[i]=s[key];
delay_1ms(10);
lcd_yjz();
i++;
if(i==3)
{
n=0;
i=0;
}
}
}
if(m==5)
{
shujuchuli();
wela=0;
dula=0;
delay_1ms(1);
lcd_init1();
lcd_shuju();
yjz();
m=0;
}
}
}
使用的開發平臺:Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。
(0.00 MB)下載
沉迷于電路板: 太丑了
回復