久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機倉庫監控系統濕度檢測電路+程序
[打印本頁]
作者:
哈哈哈我aa
時間:
2019-5-17 09:56
標題:
單片機倉庫監控系統濕度檢測電路+程序
內含仿真圖,程序源碼
0.png
(10.73 KB, 下載次數: 53)
下載附件
2019-5-18 03:23 上傳
單片機源程序如下:
//****************************************************
//SHT11溫度+濕度傳感器,測量結果用LCD1602顯示
//操作的關鍵部分是1.對照SHT11的時序圖操作
// 2.數值的轉換
// 3.對SHT11的誤差進行線性補償
//****************************************************
#include <AT89X52.h>
#include <intrins.h>
#include <stdio.h>
sbit SCK=P2^4;
sbit DATA=P2^5;
sbit LCD_RS=P2^0;
sbit LCD_EN=P2^2;
unsigned char RH_H,RH_L; //接收的濕度的高位數據和低位數據
unsigned int i,j;
unsigned char dispbuf[4];
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_GETRH(unsigned char GETRH)
{
LCD_RS=0;
P0=GETRH;
delay(1);
LCD_EN=1;
delay(1);
LCD_EN=0;
}
void write_DATA(unsigned char *date)
{
unsigned char n;
for(n=0;n<0x40;n++)
{
if(date[n]=='*')break; //檢測,如果字符輸入"*",就終止
LCD_RS=1;
P0=date[n];
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
}
void init()
{
LCD_EN=0;
write_GETRH(0x38);
write_GETRH(0x0c);
write_GETRH(0x06);
write_GETRH(0x01);
}
//在SCK上發送n個脈沖信號
void nSCKPulse(unsigned int n)
{
for(i=n;i>0;i--)
{
SCK=0;
SCK=1;
}
}
//啟動SHT11
void STARTSHT11()
{
SCK=1;
DATA=0;
SCK=0;
SCK=1;
DATA=1;
SCK=0;
}
//獲得濕度數據
void GETRH(unsigned char GETRH) //測量濕度
{
unsigned char bei=0x80;
DATA=1;
SCK=0; //下面可以開始
for(i=8;i>0;i--)
{
if(GETRH&bei)
{
DATA=1;
SCK=1;
SCK=0;
}
else
{
DATA=0;
SCK=1;
SCK=0;
}
bei=bei/2;
}
}
//對SHT11進行讀操作
void READSHT11()
{
unsigned char temp;
RH_H=0;
RH_L=0;
for(i=0;i<4;i++) //4個脈沖沒數據
{
SCK=1;
SCK=0;
}
for(i=4;i>0;i--) //接收RH高4位數據
{
SCK=1;
temp=0x01;
if(DATA==1)
{
temp=(temp<<(i-1)); //右移動
RH_H=RH_H+temp;
}
SCK=0;
}
DATA=0; //拉低
SCK=1;
SCK=0;
DATA=1; //釋放
for(i=8;i>0;i--) //接收RH低4位數據
{
SCK=1;
temp=0x01;
if(DATA==1)
{
temp=(temp<<(i-1)); //右移動
RH_L=RH_L+temp;
}
SCK=0;
}
P1=RH_H;
P3=RH_L;
DATA=0; //拉低
SCK=1;
SCK=0;
DATA=1; //釋放(不做CRC校驗,就此結束)
}
//階乘函數
long FACTORIAL(int n)
{
long nn=1;
for(;n>0;n--)
{
nn=10*nn;
}
return(nn);
}
//SHT11的補償算法
void COMPENSATIONSHT()
{
unsigned long ii;
char m;
ii=((((RH_H*256+RH_L)-221)*318878)/100000);
if(ii>5000)
{
ii=ii+((10000-ii)*620/5000);
}
else
{
ii=ii+ii*620/5000;
}
// printf("%f\n",ii);
for(m=4;m>=0;m--)
{
if(m==1)
{
write_DATA(".*");
}
LCD_RS=1;
P0=(int)(ii/FACTORIAL(m))+0x30;
if(m==4&P0==0x30)
{
P0=0x20;
}
if(m==4&P0==0x31)
{
write_DATA("100.00*");
break;
}
if(m==3&P0==0x30)
{
P0=0x20;
}
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
ii=ii-((int)(ii/FACTORIAL(m)))*FACTORIAL(m);
}
write_DATA("%*");
}
void InitUart(void)
{
SCON = 0x50; //工作方式1
TMOD = 0x21;
PCON = 0x00;
TH1 = 0xfd; //使用T1作為波特率發生器
TL1 = 0xfd;
TI = 1;
TR1 = 1; //啟動T1 //啟動T1
}
void main()
{
init();
InitUart();
write_GETRH(0x80+0x03); //放第一行字符的位置
write_DATA("Humidity*");
write_GETRH(0x80+0x42); //放第二行字符的位置
write_DATA("%RH*");
while(1)
{
nSCKPulse(10); //復位
STARTSHT11(); //啟動
GETRH(0x05); //測濕度命令
SCK=1;
while(DATA); //ack為低成功,繼續
SCK=0; //一直都為低
DATA=1;
while(DATA); //等待300毫秒
READSHT11();
write_GETRH(0x80+0x47); //放第二行字符的位置
COMPENSATIONSHT(); //數值轉換+顯示
putchar(0x02);
}
}
復制代碼
所有資料51hei提供下載:
濕度.zip
(67.69 KB, 下載次數: 19)
2019-5-17 09:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲国产成人av
|
中文字幕在线观看视频网站
|
亚洲综合一区二区三区
|
a免费视频
|
91网站在线观看视频
|
国产视频久久
|
天天精品在线
|
亚洲成人精品
|
成人高清在线视频
|
女女百合av大片一区二区三区九县
|
国产成人免费在线观看
|
亚洲精品三级
|
婷婷色在线播放
|
不卡一区二区三区四区
|
国产综合久久久
|
av资源中文在线天堂
|
欧美一级片在线
|
羞羞的视频在线观看
|
国产精品精品
|
亚洲激情一区二区
|
一区二区免费在线
|
黄视频网站免费观看
|
一区二区三区日韩
|
午夜欧美a级理论片915影院
|
日本福利视频免费观看
|
成人伊人
|
国产精品视频久久久
|
www.亚洲精品
|
九九在线精品视频
|
国产区久久
|
天堂av影院
|
精品一区二区三区不卡
|
天天夜天天操
|
亚洲精品一区二区
|
av无遮挡
|
日韩av福利在线观看
|
国产高清视频在线播放
|
免费的黄色片子
|
色吊丝2
|
久久精品久久久久久
|
久久免费精品
|