找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4365|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

基于51單片機實鐘、土壤濕度檢測、空氣溫度檢測程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:457999 發(fā)表于 2019-12-26 16:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
項目是在相應(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可以與單片機直接相連,通過單片機來檢測高低電平,由此來檢測土壤濕度;
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

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:690490 發(fā)表于 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
編譯不了啊,兄弟你解決了嗎
回復(fù)

使用道具 舉報

板凳
ID:619412 發(fā)表于 2020-7-24 22:12 | 只看該作者
我需要一個能用的程序
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表