找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于太陽能熱水器控制器仿真疑問

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
5黑幣
數(shù)碼管不亮為什么?程序如下 求大神指導(dǎo)



/***************************************************/
#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;//加熱標(biāo)志位
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延時函數(shù)*************************/
voiddelay(uint t)
{
  for (;t>0;t--);
}
/******************1ms延時函數(shù)*****************************/
voiddelay1ms(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
         for(y=110;y>0;y--);      
}
/****************發(fā)音函數(shù)***************************/
voidplay(uchar t)
{
  uchar i;
  for(i=0;i<1000;i++)
  {
         beet=~beet;
         delay1ms(t);
  }
  beet=0;
}
/****************顯示掃描函數(shù)***************************/
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;
}
/*********************預(yù)置溫度******************************/
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復(fù)位函數(shù)************************/
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寫命令函數(shù)************************/
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字節(jié)函數(shù)************************/
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);
}
/****************讀出溫度函數(shù)************************/
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;                 
}
/****************溫度數(shù)據(jù)處理函數(shù)************************/
work_temp(uinttem)        
{
  temp_data[2]=tem>>4;
  temp_data[0]=temp_data[2]%10;
  temp_data[1]=temp_data[2]/10;
}
/****************加熱子函數(shù)************************/
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;}
}
/****************上水子函數(shù)************************/
voidadding(void)
{
  if(add==0)
  {lock1=0;}
  if(lock1==0)
  {p14=0;}
  else
  {p14=1;}
  if(p20==1||qxss==0)
  {lock1=1;p14=1;}
}
/****************主函數(shù)************************/
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(設(shè)定溫度+)**************************/
voidwdxg(void) interrupt 0
{              
         uchari;
         a=a+1;
         delay1ms(50);
         if(a>99)
         {a=30;}   
     for(i=0;i<100;i++)
         {yzwd(a);}            
}
/********************外部中斷1(設(shè)定溫度-)**************************/
voidwdxg1(void) interrupt 2
{              uchari;
         a=a-1;
         delay1ms(50);
         if(a<30)
         {a=99;}
         for(i=0;i<100;i++)
         {yzwd(a);}     
}
/********************結(jié)束**************************/

QQ圖片20160523022240.png (32.96 KB, 下載次數(shù): 192)

QQ圖片20160523022240.png

QQ圖片20160523022240.png (32.96 KB, 下載次數(shù): 181)

QQ圖片20160523022240.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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