久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1997|回復: 0
打印 上一主題 下一主題
收起左側

51溫控程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:117626 發表于 2016-4-30 09:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include"reg52.h"
#include"intrins.h"
#include"math.h"
#define uchar unsigned char
#define uint unsigned int
#define Lcd_Data P0
uchar code dispbuf[33]={"Temperature:`CSX: `C XX: `C"};
uchar numcode[10]={'0','1','2','3','4','5','6','7','8','9'};
uint num[30]={0};
uchar count=0;//10秒記次數
sbit RS=P2^0;//lcdrs
sbit RW=P2^1;//lcdrw
sbit E=P2^2;//lcde
sbit Busy=P0^7;//lcd忙
sbit LED=P3^4;
sbit BUZZER=P3^5;
sbit jidianqi=P3^6;
sbit K0=P1^0;
sbit K1=P1^1;
sbit ON=P1^2;
sbit OFF=P1^3;
uchar bdata flag;
sbit DQ  =P2^7;
uint temp,shangxian,xiaxian,xianwen;

void delay(void);
void Init_LCD(void);
void Write_Comm(uchar);
void Write_Data(uchar);
void Read_Busy(void);

void Init_18B20(void);
uchar ReadOneChar(void);
void WriteOneChar(uchar dat);
void tessttemp(void);
uint wd(void);
void Delay(uint time);

sbit sta_flag=flag^0;
sbit fuhao=flag^1;
void timer1(void);
void delay1ms(void);
void sys_init(void);
void display(void);
void hextobcd(bit flag,uchar num);
void bm(void);
void delay15(uchar us);
void keyscan(void);
void delay3(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}

void main(void)
{LED=0;
BUZZER=0;
shangxian=99,xiaxian=5;
delay1ms();
sys_init();
delay1ms();
TR0=1;
ET0=1;
testtemp();
while(!ON)
{
if(OFF==0) break;
while(1)
{if(OFF==0)break;
xianwen=temp*0.0625;
keyscan();
if(15==count)
{
temp=wd();
count=0;
testtemp();
display();
}
hextobcd();
if(xianwen<xiaxian)
{
LED=1;
jidianqi=0;
}
if(xianwen>=shangxian)
{LED=0;
jidianqi=1;
BUZZER=1;
delay3(5);
BUZZER=0;
}
}
}
Write_Comm(0x01);
}
void keyscan()
{uchar num;
if(K0=0)
{delay3(150);
if(K0=0)
{
num++;
if(num==5)num=0;
}
}
if(K1==0)
{delay3(150);
if(num==0)
{xiaxian++;
if(xiaxian==50)
   xiaxian=5;
}
}
}
void timer0(void)interrupt 1 using 0
{
TH0=0x15;
TL0=0xA0;
TH1=0;
TL1=0;
count++;
_nop_();
_nop_();
_nop_();
_nop_();
}
void sys_init(void)
{
uchar i;
for(i=0;i<29;i++)
{
num[i]=0;}
TMOD=0x11;
TH0=0x15;
TL0=0xA0;
P0=0;
EA=1;
}
void hextobcd(void)
{
float tp;
unsigned long int tmp;
fuhao=0;
if(temp<0x8000)
tp=temp*0.0625;
else
{
bm();
tp=temp*0.0625;
fuhao=1;
}
tp*=10;
tmp=tp;
num[12]=tmp/100;
if(fuhao)
num[12]=num[12]|0x80;
num[13]=tmp/10-(tmp/100)*10;
num[19]=shangxian/10;
num[20]=shangxian%10;
num[28]=xiaxian/10;
num[29]=xiaxian%10;
}

void tessttemp(void)
{
Init_18B20();
if(flag)
{
WriteOneChar(0xCC);
WriteOneChar(0x44);
}
}

uint wd(void)
{
unsigned int a=0,b=0,t=0;
Init_18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);

a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
return(t);
}
void Init_18B20(void)
{
DQ=1;
Delay(10);
DQ=0;
Delay(80);
DQ=1;
Delay(10);
if(DQ)
flag=0;
else
flag=1;
Delay(20);
}
uchar ReadOneChar(void)
{
uchar i=0;
uchar dat=0;
for(i=8;i>0;i--)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
Delay(15);
}
return(dat);
}

void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
Delay(5);
DQ=1;
dat>>=1;
}
}

void bm(void)
{
temp=~temp;
temp+=1;
}

void display(void)
{
{
uchar a,b,d;
Init_LCD();
Write_Comm(0x01);
Write_Comm(0x80);
for(a=0;a<16;a++)
{
d=dispbuf[a];
if((a>11)&&(a<14))
{
d=numcode[num[a]];
}
if(14==a)
{
d=0xdf;
}
Write_Data(d);
}
Write_Comm(0xc0);
for(b=16;b<33;b++)
{
d=dispbuf[b];
if((b>18)&&(b<21))
{
d=numcode[num[b]];
}
if((b>27)&&(b<30))
{
d=numcode[num[b]];
}
if(b==21)
{
d=0xdf;
}
if(30==b)
{
d=0xdf;
}
Write_Data(d);
}
}
}
void Read_Busy(void)
{
do{
Lcd_Data=0xff;
RS=0;
RW=1;
E=0;
delay();
E=1;
}while(Busy);
}
void Write_Comm(uchar lcdcomm)
{
Lcd_Data=lcdcomm;
RS=0;
RW=0;
E=0;
Read_Busy();
E=1;
}

void Write_Data(uchar lcddata)
{
Lcd_Data=lcddata;
RS=1;
RW=0;
E=0;
Read_Busy();
E=1;
}
void Init_LCD(void)
{
delay();
Write_Comm(0x01);
Write_Comm(0x38);
Write_Comm(0x06);
Write_Comm(0x0c);
}
void delay15(uchar us)
{
do
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
us--;
}
while(us);
}
void Delay(uint time)
{
while(time--);
}
void delay1ms(void)
{
uchar i,j;
for(i=0;i<2;i++)
   for(j=0;j<255;j++);
}
void delay()
{
uchar y;
for(y=0;y<0xff;y++);
}

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99在线资源 | 免费国产成人av | 一区二区三区精品视频 | 黄色网址大全在线观看 | 国产精品电影在线观看 | 国产伦精品一区二区三区高清 | 欧美日韩久久精品 | 亚洲天堂久久新 | www日本在线播放 | 一区二区三区久久 | 久久精品高清视频 | 中文字幕日韩欧美 | 在线免费国产视频 | 中文区中文字幕免费看 | 精产国产伦理一二三区 | 呦呦在线视频 | 亚洲精品二区 | 成人精品在线视频 | 一二三四av | 一级片在线观看 | 日韩精品在线视频免费观看 | 色网站在线免费观看 | 日日草夜夜草 | 日韩一区二区福利视频 | 国产美女在线精品免费 | 欧美二级 | 国产91视频一区二区 | 亚洲韩国精品 | 九九伦理片 | 秋霞av国产精品一区 | 精品国产区 | 中文字幕欧美在线观看 | 久草热线 | h视频网站在线观看 | 日韩精品在线观看视频 | 亚洲欧美日韩在线 | 亚洲精品片 | 中文字幕啪啪 | 亚洲精品久久久一区二区三区 | 午夜国产一区 | 日韩精品在线视频 |