久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機智慧大棚監測程序-18b20實驗
[打印本頁]
作者:
zx173
時間:
2024-12-4 22:49
標題:
單片機智慧大棚監測程序-18b20實驗
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //段碼表
unsigned char code table1[]={0x7f,0xbf,0xdf,0xef,0xf7};
bit DS18B20_Reset();
void DS18B20_WriteData(uchar dat);
uchar DS18B20_RadeData();
void Seg7_Display(uint val);
void delayms(uint xms);
void system_Ini();
void InitMotor();
void SetMotor();
uchar tempL;
sbit CS88=P2^2;
uint tempH;
uint temp;
sbit LED=P1^1;
sbit DS=P2^4; //引腳定義
sbit DU=P2^0;
sbit WE=P2^1;
sbit beep = P2^3;
sbit A = P3^4; //定義管腳
sbit b = P3^5;
sbit C = P3^6;
sbit D = P3^7;
//步進電機驅動
unsigned char MotorStep=0; //步進馬達步序
unsigned int MotorDelay,Speed=1,TIM,CT;
#define speed 12 // 調整速度 數值不要設的太低 低了會引起震動。
void main()
{
system_Ini();
InitMotor();
while(1)
{
CS88=0;
DS18B20_Reset();
DS18B20_WriteData(0xcc); //跳過ROM檢測
DS18B20_WriteData(0x44); //啟動溫度轉換
DS18B20_Reset();
DS18B20_WriteData(0xcc); //跳過ROM檢測
DS18B20_WriteData(0xbe); //讀暫存器
tempL=DS18B20_RadeData(); //讀溫度地位
tempH=DS18B20_RadeData();
tempH=(tempH<<8)|tempL; //16位
if((tempH&0xf8)==0xf800) //如果溫度是負值,取反加一
tempH=~tempH+1;
temp=tempH*0.0625*1000; //25 25360
//顯示讀取到的溫度
Seg7_Display(temp); //25.360
//判斷溫度是否超過29度
if (temp>34000)
{
LED=0;
beep=0;
SetMotor();
}
else
{
LED=1;
beep=1;
A = 0;
b = 0;
C = 0;
D = 0;
}
//靜態顯示小數點
DU=1;
P0=0x80;
DU=0;
P0=0xff;
WE=1;
P0=0xef;
WE=0;
}
}
bit DS18B20_Reset()
{
bit flag;
uchar i;
DS=0;
for(i=240;i>0;i--); //每執行一次,是兩個機器周期 240X2=480
DS=1;
for(i=40;i>0;i--); //延時80us
flag=DS;
for(i=200;i>0;i--); //延時400us
return flag;
}
void DS18B20_WriteData(uchar dat)
{
uchar i,j;
for(j=0;j<8;j++)
{
DS=0;
for(i=2;i>0;i--);
DS=dat&0x01; //取出最低位
for(i=30;i>0;i--); //延時約60us
DS=1; //釋放總線
dat = dat>>1;
}
}
uchar DS18B20_RadeData()
{
uchar i,j,rdata;
for(j=0;j<8;j++)
{
rdata>>=1;
DS=0;
for(i=2;i>0;i--);
DS=1;
for(i=3;i>0;i--);
if(DS==1)
rdata=rdata|0x80;
for(i=30;i>0;i--);
DS=1;
}
return rdata;
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void Seg7_Display(uint val)
{
uint i=4;
uint dis_data[5]={0};
dis_data[0]=val%10;
dis_data[1]=val/10%10;
dis_data[2]=val/100%10;
dis_data[3]=val/1000%10;
dis_data[4]=val/10000%10;
for (i=0;i<5;i++)
{
P0=0xff;
DU=1;
P0=table[dis_data[i]];
DU=0;
P0=0xff;
WE=1;
P0=table1[i];
WE=0;
delayms(1);
}
}
void InitMotor()
{
A = 1;
b = 1;
C = 1;
D = 1;
}
void SetMotor()
{
MotorDelay=Speed; //調整速度
switch(MotorStep)
{
case 0:
if(TIM) // A
{
A = 0; //0xf1
b = 1;
C = 1;
D = 1;
MotorStep = 1;
TIM=0;
}
break;
case 1: // AB
if(TIM)
{
A = 0; //0xf3
b = 0;
C = 1;
D = 1;
MotorStep = 2;
TIM=0;
}
break;
case 2: //B
if(TIM)
{
A = 1;
b = 0; //0xf2
C = 1;
D = 1;
MotorStep = 3;
TIM=0;
}
break;
case 3: //BC
if(TIM)
{
A = 1;
b = 0; //0xf6
C = 0;
D = 1;
MotorStep = 4;
TIM=0;
}
break;
case 4: //C
if(TIM)
{
A = 1;
b = 1; //0xf4
C = 0;
D = 1;
MotorStep = 5;
TIM=0;
}
break;
case 5: //CD
if(TIM)
{
A = 1;
b = 1; //0xfc
C = 0;
D = 0;
MotorStep = 6;
TIM=0;
}
break;
case 6: //D
if(TIM)
{
A = 1;
b = 1; //0xf8
C = 1;
D = 0;
MotorStep = 7;
TIM=0;
}
break;
case 7: //DA
if(TIM)
{
A = 0;
b = 1; //0xf9
C = 1;
D = 0;
MotorStep = 0;
TIM=0;
}
break;
}
}
void system_Ini()
{
TMOD|= 0x11;
TH0=0xDC; //11.0592M
TL0=0x00;
IE = 0x8A;
TR0 = 1;
}
void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;
if( CT++==speed)
{TIM=1;
CT=0;
}
}
復制代碼
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕第2页
|
91国产视频在线观看
|
国产日韩精品在线
|
中文字幕一区在线观看
|
久久精品视频99
|
在线播放亚洲
|
久插视频
|
亚洲黄色在线
|
日韩久久一区
|
久久夜色精品国产欧美乱极品
|
欧美一区二区
|
成人激情视频网
|
人与拘一级a毛片
|
天天射av
|
日韩精品视频网站
|
欧美69式性猛交
|
性色av浪潮av
|
欧美日韩小视频
|
日本丰满少妇裸体自慰
|
91久久国产综合久久91精品网站
|
国产欧美精品一区二区
|
欧美激情一区二区三区
|
天天爱天天色
|
精品一区二区在线播放
|
免费观看一级毛片
|
久久精品福利
|
欧美三级三级三级爽爽爽
|
久久久夜
|
亚洲欧美在线一区
|
国产99页
|
亚洲精品中文字幕乱码三区91
|
午夜视频在线看
|
国产欧美日韩在线
|
视频在线观看一区
|
亚洲午夜在线
|
九九热免费视频
|
成人久久av
|
国产91在线观看
|
成人动态视频
|
日本在线免费观看
|
香蕉视频在线免费看
|