标题: 关于太阳能热水器控制器仿真疑问 [打印本页]
作者: z15651913780 时间: 2016-5-23 02:26
标题: 关于太阳能热水器控制器仿真疑问
数码管不亮为什么?程序如下 求大神指导
/***************************************************/
#include<reg51.h>
#include<intrins.h>
#define Disdata P0
#define uchar unsigned char
#define uint unsigned int
sbit b20=P3^7;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
sbit p24=P2^4;
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
sbit beet=P1^5;
sbit heat=P1^0;
sbit p11=P1^1;
sbit qxjr=P1^2;
sbit add=P1^3;
sbit p14=P1^4;
sbit qxss=P1^6;
uchar a=35;
uint temp,b,wd,h;
bit lock0=1;//加热标志位
bitlock1=1;
uchar codedis[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
uchar datatemp_data[3]={0x00,0x000,0x00};
uintkey_[2]={5,0};
/*****************11us延时函数*************************/
voiddelay(uint t)
{
for (;t>0;t--);
}
/******************1ms延时函数*****************************/
voiddelay1ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/****************发音函数***************************/
voidplay(uchar t)
{
uchar i;
for(i=0;i<1000;i++)
{
beet=~beet;
delay1ms(t);
}
beet=0;
}
/****************显示扫描函数***************************/
scan()
{
uint k=0;
Disdata=~dis[temp_data[k]];
p26=0;
p27=1;
delay1ms(5);
k++;
Disdata=~dis[temp_data[k]];
p26=1;
p27=0;
delay1ms(5);
p26=1;
p27=1;
}
/*********************预置温度******************************/
voidyzwd(uint b)
{
Disdata=~dis[b%10];
p26=0;
p27=1;
delay1ms(5);
Disdata=~dis[b/10];
p26=1;
p27=0;
delay1ms(5);
p26=1;
p27=1;
}
/****************DS18B20复位函数************************/
ow_reset(void)
{
char presence=1;
while(presence)
{
while(presence)
{
b20=1;_nop_();_nop_();
b20=0;
delay(50);
b20=1;
delay(6);
presence=b20;
}
delay(45);
presence=~b20;
}
b20=1;
}
/****************DS18B20写命令函数************************/
voidwrite_byte(uchar val)
{
uchar i;
for(i=8;i>0;i--)
{
b20=1;_nop_();_nop_();
b20=0;_nop_();_nop_();_nop_();_nop_();
b20=val&0x01;
delay(6);
val=val/2;
}
b20=1;
delay(1);
}
//
/****************DS18B20读1字节函数************************/
ucharread_byte(void)
{
uchar i;
ucharvalue=0;
for(i=8;i>0;i--)
{
b20=1;_nop_();_nop_();
value>>=1;
b20=0;_nop_();_nop_();_nop_();_nop_();
b20=1;_nop_();_nop_();_nop_();_nop_();
if(b20)value|=0x80;
delay(6);
}
b20=1;
return(value);
}
/****************读出温度函数************************/
uintread_temp()
{
ow_reset();
delay(200);
write_byte(0xcc);
write_byte(0x44);
ow_reset();
delay(1);
write_byte(0xcc);
write_byte(0xbe);
temp_data[0]=read_byte();
temp_data[1]=read_byte();
temp=temp_data[1];
temp<<=8;
temp=temp|temp_data[0];
returntemp;
}
/****************温度数据处理函数************************/
work_temp(uinttem)
{
temp_data[2]=tem>>4;
temp_data[0]=temp_data[2]%10;
temp_data[1]=temp_data[2]/10;
}
/****************加热子函数************************/
voidheating(void)
{
if(heat==0)
{lock0=0;}
if(lock0==0)
{p11=0;}
else
{p11=1;}
work_temp(read_temp());
wd=temp_data[1]*10+temp_data[0];
if(wd>=a||qxjr==0)
{lock0=1;p11=1;}
}
/****************上水子函数************************/
voidadding(void)
{
if(add==0)
{lock1=0;}
if(lock1==0)
{p14=0;}
else
{p14=1;}
if(p20==1||qxss==0)
{lock1=1;p14=1;}
}
/****************主函数************************/
void main()
{
P0=0xff;
p26=1;
p27=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
ow_reset();
write_byte(0xcc);
write_byte(0x44);
while(1)
{
heating();
adding();
work_temp(read_temp());
scan();
wd=temp_data[1]*10+temp_data[0];
if(wd<80)
{
while(p22==0)
{
p14=0;
delay1ms(1);
work_temp(read_temp());
scan();
}
}
if(wd>=80)
{
while(p24==1)
{
p14=0;
work_temp(read_temp());
scan();
}
while(p24==0)
{
play(2);
p14=1;
work_temp(read_temp());
scan();
}
}
}
}
/********************外部中断0(设定温度+)**************************/
voidwdxg(void) interrupt 0
{
uchari;
a=a+1;
delay1ms(50);
if(a>99)
{a=30;}
for(i=0;i<100;i++)
{yzwd(a);}
}
/********************外部中断1(设定温度-)**************************/
voidwdxg1(void) interrupt 2
{ uchari;
a=a-1;
delay1ms(50);
if(a<30)
{a=99;}
for(i=0;i<100;i++)
{yzwd(a);}
}
/********************结束**************************/
-
QQ图片20160523022240.png
(32.96 KB, 下载次数: 192)
-
QQ图片20160523022240.png
(32.96 KB, 下载次数: 181)
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |