標(biāo)題: 基于51單片機(jī)實鐘、土壤濕度檢測、空氣溫度檢測程序 [打印本頁]

作者: 長風(fēng)__靜    時間: 2019-12-26 16:28
標(biāo)題: 基于51單片機(jī)實鐘、土壤濕度檢測、空氣溫度檢測程序
項目是在相應(yīng)環(huán)境中檢測土壤濕度,以及檢測空氣溫度。
軟件環(huán)境:Keil C51軟件     硬件環(huán)境:KST 51開發(fā)( 自帶 溫度、顯示器模塊)
使用模塊:
土壤濕度傳感器    PCF8591 AD轉(zhuǎn)換模塊 DS1302時鐘模塊

土壤濕度傳感器
1.傳感器適用于土壤的濕度檢測
2.比較器采用LM393芯片,工作性能穩(wěn)定
3.工作電壓3.3V-5V
4.模塊中藍(lán)色的電位器是用于土壤濕度的閥值調(diào)節(jié),順時針調(diào)節(jié),控制的濕度會越大,逆時針越;
5.數(shù)字量輸出D0可以與單片機(jī)直接相連,通過單片機(jī)來檢測高低電平,由此來檢測土壤濕度;
6.小板模擬量輸出AO可以和AD模塊相連,通過AD轉(zhuǎn)換,可以獲得土壤濕度更精確的數(shù)值;
PCF8591 AD轉(zhuǎn)樣模塊
PCF8591 是具有I2C 總線接口的8 A/D D/A 轉(zhuǎn)換器。有4 A/D 轉(zhuǎn)換輸入,1 D/A 模擬輸出。這就是說,它既可以作A/D 轉(zhuǎn)換也可以作D/A 轉(zhuǎn)換。A/D 轉(zhuǎn)換為逐次比較型。電源電壓典型值為5V。
  AIN0AIN3:模擬信號輸入端。
  A0A3:引腳地址端。
  VSS:電源負(fù)極。
  SDA、SCLI2C 總線的數(shù)據(jù)線、時鐘線。
  OSC:外部時鐘輸入端,內(nèi)部時鐘輸出端。
  EXT:內(nèi)部、外部時鐘選擇線,使用內(nèi)部時鐘時EXT 接地。
  AGND:模擬信號地。
  VREF:基準(zhǔn)電源端。
  AOUTD/A 轉(zhuǎn)換輸出端。
  VDD:電源端。(2.56V

本模塊左邊和右邊分別外擴(kuò)2路排針接口,分別說明如下:
  左邊 AOUT 芯片DA輸出接口
       AINO芯片模擬輸入接口0  我在使用的時候接的時A0,接的是光敏傳感器的AO口;
       AIN1芯片模擬輸入接口1
       AIN2芯片模擬輸入接口2
       AIN3芯片模擬輸入接口3
  右邊 SCL  IIC時鐘接口  KST 51開發(fā)板的SCL
       SDA IIC數(shù)字接口  KST 51開發(fā)板的SDA
       GND 模塊地       外接地
       VCC 電源接口     外接3.3v-5v  我用的是3.3

我用的是pcf8591模塊。包含了熱敏和光敏電阻。
  模塊共有3個紅色短路帽,分別作用如下:
P4   接上P4短路帽,選擇熱敏電阻接入電路

P5   接上P5短路帽,選擇光敏電阻接入電路

P6   接上P6短路帽,選擇0-5V可調(diào)電壓接入電路

土壤濕度傳感器主程序:
unsigned int val;
         unsignedchar str[10];
         EA= 1;
         ConfigTimer0(10);
         lcd1602Init();
         while(1)
         {
                   if(flag300ms)
                   {
                            flag300ms= 0;
                            GetADCValue(3);//獲取土壤濕度
//                        str = *INT8UtostrHEX(val);
                            lcd1602Display(0,1,INT8UtostrHEX(val));//顯示到液晶上
                   }
         }
PCF8591 AD轉(zhuǎn)樣模塊主程序:
/*讀取當(dāng)前的ADC轉(zhuǎn)換值,、chn-ADC通道號0-3*/
unsigned char GetADCValue(unsigned charchn)
{
         unsignedchar val;
         Start_I2c();
         if(!writeI2C(0x91<<1))//尋址PCF8591,如未答應(yīng),則停止操作并返回0
         {
                   Stop_I2c();
                   return0;
         }
         writeI2C(0x40|chn);//寫入控制字節(jié),選擇轉(zhuǎn)換通道
         Start_I2c();
         writeI2C((0x48<<1)|0x01);//尋址PCF8591,指定后續(xù)為讀操作
         NoAckI2c();//先空讀一個字節(jié),提供采樣轉(zhuǎn)換時間
         *str= ReadADC();//讀取剛剛轉(zhuǎn)換完的值
         Stop_I2c();
         returnval;        


項目源碼.rar

62.19 KB, 下載次數(shù): 51, 下載積分: 黑幣 -5


作者: -Frank-    時間: 2020-2-9 14:41
MAIN.C(102): warning C206: 'GetADCValue': missing function-prototype
MAIN.C(102): error C267: 'GetADCValue': requires ANSI-style prototype
Target not created
編譯不了啊,兄弟你解決了嗎
作者: 懶得想    時間: 2020-7-24 22:12
我需要一個能用的程序





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1