亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 太陽能熱水器智能控制系統程序.c

?? 本程序是一個太陽能熱水器智能控制系統的程序。它以89C52單片機為核心
?? C
字號:


//太陽能熱水器智能控制系統程序:
//定義頭文件和各個輸入管腳以及變量聲明
#include <reg52.h>
#include <absacc.h>
#include <stdio.h>
#include <intrins.h>

#define uint unsigned int//定義變量類型名
#define uchar unsigned char

/*定義8255a字符型字位口*/
#define DIGPORT XBYTE[0x1FFF]//PA口地址,位選碼地址
#define WORDPORT XBYTE[0X3FFF]//PB口地址,斷選碼地址
#define CCOM XBYTE[0X7FFFF]//控制字寄存器地址
#define KPORT XBYTE[0X5FFF]//PC口,鍵盤掃描地址

//DS1302_RST=1//定義DS1302時鐘芯片引腳操作
#define Set_DS1302_RST DS1302_RST=1
//DS1302_RST=0
#define Clr_DS1302_RST DS1302_RST=0
//DS1302_SDA=1
#define Set_DS1302_SDA DS1302_SDA=1        
//DS1302_SDA=0
#define Clr_DS1302_SDA DS1302_SDA=0
//DS1302_SCLK=1
#define Set_DS1302_SCLK DS1302_SCLK=1
//DS1302_SCLK=0
#define Clr_DS1302_SCLK DS1302_SCLK=0
//定義讀時間控制字
#define DS1302_SEC_Reg 0x80
#define DS1302_MIN_Reg 0x82
#define DS1302_HR_Reg 0x84
#define DS1302_DATE_Reg 0x86
#define DS1302_MONTH_Reg 0x88
#define DS1302_DAY_Reg 0x8a
#define DS1302_YEAR_Reg 0x8c
#define DS1302_CONTROL_Reg 0x8e
#define DS1302_CHARGER_Reg 0x90
#define DS1302_CLKBURST_Reg 0xbe
            //全局變量
            //為了方便,我把個位和十位分開了
uchar year1=0x88;
uchar year0=0x88;
uchar month=0x88;
uchar date=0x88;
uchar day=0x88;
uchar hour=0x88;
uchar minute=0x88;
uchar second=0x88;

/*定義P1口各管腳*/
sbit L0=P2^0;
sbit L1=P2^1;
sbit L2=P2^2;
sbit L3=P2^3;
sbit K0=P2^4;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit Hig=P1^4;
sbit DS1302_SDA=P1^5;//定義DS1302時鐘引腳與單片機引腳的連接
sbit DS1302_SCLK=P1^6;
sbit DS1302_RST=P1^7;

/*聲明調用函數*/
void inital(void);
void timer1_svr(void);
void display(void);
void delay(uchar j);
void DS1302_Write(uchar reg,uchar dat);
uchar DS1302_Read(uchar reg);
void DS1302_Init(void);
void ReadTime(void);
void WtTmCr();
void LvRead();
void TmRead();
void key(void);
uchar kbscan(void);
void DS1302(void);
void int0_int(void);
void int1_int(void);

/*定義調用存儲單元*/
/*顯示緩沖區(依次為高位低位)*/

uchar BUFFER[3]={0,0,0};
uchar WTLV;//水位值
uchar TMP;//水溫值
uchar WTLVSET;//水位設定值
uchar TMPSET;//水溫設定值
uchar buf[4]={0,0,0,0};
/*數碼管顯示編碼"0"-"9","A","-"*/
uchar code TABLE[]={0x7B,0x30,0xEA,0xF8,0xB1,0xD9,0xDB,0x70,0xFB,0xF9,0xF3,0x80};

main()
{
      inital();//初始化中斷、定時器、I/O口
		kbscan();//鍵盤掃描
	   key();//鍵盤處理
		TmRead();//讀取溫度
		LvRead();//讀取水位
		DS1302();//讀取時間
	   display();//顯示

}

void inital()
{
P1_0= P1_1= P1_2=K0=0;//初始化外部驅動口
DS1302_Init();
       EA=1;//開外部中斷
	   IT0=1;//外部中斷下降沿觸發
       EX0=1;//允許外部中斷0
       Hig=1;P1.3輸出高電平
       TMOD=0x11;定時器工作于方式1
       TH1=0X8A;//定時器1賦初值
       TL1=0XD0;
	    ET1=1;定時器1開定時中斷
		 TR1=1;//開啟定時器1
	    CCOM=0X80;//初始化8255A,送控制字,工作方式0
     
}

uchar kbscan(void)
{
     uchar recode;
		  if((KPORT&0X0F)!=0X0F)                  //若有鍵按下
	  {
	       delay(2);                           //延時抖動
          
          if((KPORT&0X0F)!=0X0F)            
			 {
			        recode=KPORT;
					  return(recode);
			 }
		}
		else
		return(0);
}

void key(void)

{    
     uchar key;
    key=kbscan();
	 delay(2);
	 if(key==0x01) 
				{
				   
					P1_1=1;//上水
         		
				}
			if(key==0x02) //設置水位
				{
				   if(WTLVSET==4)
					WTLVSET=0;
					else 
					WTLVSET+=WTLVSET;
         		   BUFFER[0]=WTLVSET;//顯示設置水位
                   display();
				   
				}
		if(key==0x04)//電加熱
				        {
				          P1_0=1;
				        }  
		if(key==0x08)//設置溫度
				      {

				        if(TMPSET>=80)
					     TMPSET=30;
					    else 
					     TMPSET=TMPSET+10;//增加十度
         	        	BUFFER[0]=TMPSET; 顯示設置水溫
                        display();
				       }  
}

void timer1_svr() interrupt 1
{
   TH1=0X8A;//重新給定時器1賦值
   TL1=0XD0;
   Hig=!Hig;//充放電變換
	if(Hig)//充電開始時啟動定時器0
	{
	    TL0=TH0=0X00;//定時器0賦初值0
       TR0=1;//啟動定時器0
	 }
}

void int0_int(void) interrupt 0//外部中斷0,測水位
{
  EX0=0;
  EX1=1;
  TR0=0;
  buf[0]=TL0;
  buf[1]=TH0;
}

void int1_int(void) interrupt 2//外部中斷1,測水溫
{
   EX1=0;
   EX0=1;
   TR0=0;
	buf[2]=TL0;
	buf[3]=TH0;
}

void TmRead()//水溫值處理
{
  uint val;
  val=buf[3]*256+buf[2];
   if(val<7549)
     TMP=97-int(val*8/1000);
  else  
      if(val<20000)
           TMP=50-int(val/1000);
      else
           TMP=30-int(val*5/10000);
       
}

void LvRead()//水位值處理
{
     if(buf[1]>60)
         {
	      WTLV=1;//
			L3=0;L2=1;L1=1;L0=1;
			}
	  else if(buf[1]>45)
	      {
			WTLV=2;
         L3=1;L2=0;L1=1;L0=1;
			}
	  else if(buf[1]>36)
	      {
			WTLV=3;
         L3=1;L2=1;L1=0;L0=1;
			}
	  else 
	      {
			WTLV=4;
         L3=1;L2=1;L1=1;L0=0;
			}
}

void WtTmCr()//水位、水溫控制
{
      if(WTLV==4)
		P1_1=0;
		if(WTLV==1)
		P1_1=1;
		if(TMP>=TMPSET)
		P1_0=0;
		if(TMP<TMPSET&&hour==0x19)
		P1_0=1;

}

void  display(void)
{
      uchar i;           //顯示緩沖區首址
      uchar delay;       //顯示延時
      uchar disp;        //顯示內容
      uchar digit;       //定義數碼管顯示位
      digit=0x0200;
      for(i=2;i>=0;i--)
      {
          if(BUFFER[i]>100) disp=BUFFER[i]%10+10;//顯示高位
          else disp=BUFFER[i]%10;

          DIGPORT=digit;
          WORDPORT=TABLE[disp];
          for(delay=0;delay<=200;delay++);
          digit=digit>>1;//顯示低位
          disp=BUFFER[i]/10;

          DIGPORT=digit;
          WORDPORT=TABLE[disp];

          for(delay=0;delay<=200;delay++);
          digit=digit>>1;
       }
}
    
void delay(uchar j)//延時程序
{
    uchar a,b;
	 for(a=0;a<j;a++)
	    for(b=0;b<200;b++)
		         ;
}

void DS1302()//時間程序
{
      ReadTime();
      BUFFER[1]=second;
	  BUFFER[2]=hour;
}

void DS1302_Write(uchar reg,uchar dat)//寫入時間
       {
            uchar i;
            Clr_DS1302_RST;
				_nop_();
            _nop_();            
            Clr_DS1302_SCLK;
            _nop_();
            _nop_();
            Set_DS1302_RST;
            _nop_();
            _nop_();
            for(i=8;i>0;i--)
            { 
            if(reg&0x01) Set_DS1302_SDA;
            else Clr_DS1302_SDA;
            _nop_();
            _nop_();
            Set_DS1302_SCLK; 
            _nop_();
            _nop_();
            Clr_DS1302_SCLK;
            _nop_();
            _nop_();
            reg>>=1;
            }
            for(i=8;i>0;i--)
            { 
            if(dat&0x01) Set_DS1302_SDA;
            else Clr_DS1302_SDA;
            _nop_();
            _nop_();
            Set_DS1302_SCLK;
            _nop_();
            _nop_();
            Clr_DS1302_SCLK;
            _nop_();
            _nop_();
            dat>>=1;
            }
            Clr_DS1302_RST;
            _nop_();
            _nop_();
       }
uchar DS1302_Read(uchar reg)//讀取時間
            {
            uchar dat=0,i;
            Clr_DS1302_RST;
            _nop_();
            _nop_();
            Clr_DS1302_SCLK;
            _nop_();
            _nop_();
            Set_DS1302_RST;
            _nop_();
            _nop_();
            for(i=8;i>0;i--)
            {

            if(reg&0x01) Set_DS1302_SDA;
            else Clr_DS1302_SDA;
            _nop_();
            _nop_();
            Set_DS1302_SCLK; 
            _nop_();
            _nop_(); 
            Clr_DS1302_SCLK;
            _nop_();
            _nop_();
            reg>>=1;
            }
            
            for(i=8;i>0;i--)
            { 
            dat>>=1;
            if(DS1302_SDA) dat|=0x80;
            Set_DS1302_SCLK;
            _nop_();
            _nop_();
            Clr_DS1302_SCLK;
            _nop_();
            _nop_(); 
            }
            Clr_DS1302_RST;
            _nop_();
            _nop_();
            return(dat);
            }

void DS1302_Init(void)//初始化DS1302
            {
            DS1302_Write(DS1302_CONTROL_Reg,0x00);//關閉寫保護 
            DS1302_Write(DS1302_SEC_Reg,0x80);//暫停 
            DS1302_Write(DS1302_CHARGER_Reg,0xa9);//涓流充電
            DS1302_Write(DS1302_YEAR_Reg,0x04); //年
            DS1302_Write(DS1302_MONTH_Reg,0x12); //月
            DS1302_Write(DS1302_DATE_Reg,0x09); //日
            DS1302_Write(DS1302_DAY_Reg,0x04); //周
            DS1302_Write(DS1302_HR_Reg,0x10); //時
            DS1302_Write(DS1302_MIN_Reg,0x25); //分
            DS1302_Write(DS1302_SEC_Reg,0x00); //秒
            DS1302_Write(DS1302_CONTROL_Reg,0x80);//打開寫保護
            }
void ReadTime(void)//讀取時間
            {
            uchar dat;
            dat=DS1302_Read(DS1302_YEAR_Reg);//年
            year0=dat&0x0f;
            year1=dat>>4;
            dat=DS1302_Read(DS1302_MONTH_Reg);//月
            month=dat;
            dat=DS1302_Read(DS1302_DATE_Reg);//日
            date=dat;
            dat=DS1302_Read(DS1302_DAY_Reg);//周
            day=dat;
            dat=DS1302_Read(DS1302_HR_Reg);//時
            hour=dat;
            dat=DS1302_Read(DS1302_MIN_Reg);//分
            minute=dat;
            dat=DS1302_Read(DS1302_SEC_Reg);//秒
            second=dat;
            }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩在线免费视频| voyeur盗摄精品| 亚洲成人中文在线| 亚洲女人小视频在线观看| 中文字幕一区二区三区不卡在线| 国产婷婷色一区二区三区 | 中文字幕综合网| 欧美国产一区视频在线观看| 久久九九国产精品| 中文字幕精品三区| 亚洲激情图片小说视频| 亚洲乱码国产乱码精品精的特点| 国产精品国产精品国产专区不蜜 | 久久成人18免费观看| 日韩va亚洲va欧美va久久| 免费成人你懂的| 老司机精品视频线观看86| 国产一区二区主播在线| 成人午夜激情片| 久久久久久久久久久99999| 久久亚洲综合色一区二区三区| 精品1区2区在线观看| 亚洲国产精品99久久久久久久久| 亚洲欧洲三级电影| 亚洲成人免费av| 精品亚洲国产成人av制服丝袜| 国产精品99久久久久久有的能看| 成人精品视频.| 欧美色老头old∨ideo| 欧美电影免费观看高清完整版在线 | 激情综合亚洲精品| av成人老司机| 日韩一级黄色大片| 国产精品人妖ts系列视频| 一区二区三区精密机械公司| 日韩电影在线看| 成人高清免费观看| 欧美精品少妇一区二区三区| 久久久噜噜噜久久人人看| 亚洲精品中文在线影院| 精品一区免费av| 91成人看片片| 中文字幕精品一区二区精品绿巨人| 亚洲综合丝袜美腿| 成人一区二区视频| 欧美一卡二卡三卡| 亚洲激情图片一区| 国产成人综合亚洲91猫咪| 欧美日韩激情在线| 国产精品的网站| 激情综合网激情| 欧美日韩一区二区三区在线看| 久久久亚洲午夜电影| 五月天网站亚洲| 色综合天天在线| 久久精品日韩一区二区三区| 日日摸夜夜添夜夜添精品视频 | 亚洲午夜免费电影| av电影在线观看一区| 国产亚洲成年网址在线观看| 日本在线观看不卡视频| 日本道免费精品一区二区三区| 国产视频在线观看一区二区三区 | 精品久久久久一区二区国产| 亚洲一级不卡视频| 色88888久久久久久影院按摩| 国产人成亚洲第一网站在线播放| 日韩经典中文字幕一区| 在线精品视频小说1| 综合在线观看色| 欧美日韩另类一区| 洋洋成人永久网站入口| 99久精品国产| 国产精品久久久久久福利一牛影视 | 日韩国产欧美在线播放| 色婷婷综合五月| 亚洲免费高清视频在线| av电影在线观看一区| 国产精品国产三级国产a| 成人免费va视频| 国产精品久久久久久久久快鸭 | 日本系列欧美系列| 欧美肥妇free| 免费成人av资源网| 久久先锋影音av鲁色资源| 国产资源精品在线观看| 久久久亚洲精品一区二区三区| 国产又粗又猛又爽又黄91精品| 精品成人佐山爱一区二区| 国产精品一区二区三区乱码| www精品美女久久久tv| 国产91丝袜在线播放九色| 国产精品久久久久久久久动漫 | 99精品一区二区| 亚洲人成在线播放网站岛国| 欧美伊人精品成人久久综合97 | 成人欧美一区二区三区| 91在线播放网址| 亚洲成人资源在线| 精品999久久久| 97精品久久久久中文字幕 | 精品国产伦一区二区三区观看体验| 国内精品视频666| 国产精品成人在线观看| 欧美伊人久久久久久午夜久久久久| 五月天一区二区| 国产视频一区二区在线观看| 色综合久久久久综合体| 日本人妖一区二区| 日本一区二区在线不卡| 欧美性猛交xxxxxxxx| 狠狠网亚洲精品| 一区二区三区免费| 精品国产污网站| 色综合天天综合| 99视频热这里只有精品免费| 一区二区三区四区乱视频| 日韩一区二区不卡| 91国偷自产一区二区三区成为亚洲经典| 日韩国产在线一| 亚洲色图20p| 久久久久国产精品人| 欧美日本在线视频| av欧美精品.com| 国模冰冰炮一区二区| 亚洲va天堂va国产va久| 国产欧美久久久精品影院| 欧美日本高清视频在线观看| 成人免费黄色在线| 蜜臀久久99精品久久久久久9| 亚洲欧美另类小说视频| 久久亚洲精精品中文字幕早川悠里| 色先锋aa成人| 成人精品一区二区三区四区| 麻豆一区二区99久久久久| 夜夜嗨av一区二区三区四季av | 91在线视频免费91| 久久精品国产99国产| 五月天激情综合网| 亚洲欧美日本韩国| 国产精品三级视频| 国产亚洲一区二区三区四区| 日韩一二三区视频| 制服丝袜成人动漫| 欧美网站一区二区| 在线日韩av片| 色综合一区二区三区| 成人av电影在线播放| 国产成a人无v码亚洲福利| 国产在线精品国自产拍免费| 日韩av在线发布| 香港成人在线视频| 日韩电影在线一区| 99视频精品免费视频| 国产成人免费网站| 丰满岳乱妇一区二区三区| 国产精品自产自拍| 成人黄色软件下载| heyzo一本久久综合| 99re6这里只有精品视频在线观看| 成人黄色在线网站| 91视频www| 欧美日韩精品一区二区天天拍小说 | 国产欧美一区二区精品秋霞影院 | 亚洲女同女同女同女同女同69| 成人免费小视频| 一区二区三区 在线观看视频| 一区二区在线免费| 亚洲国产成人av网| 麻豆精品久久精品色综合| 国内精品写真在线观看| 国产成人高清视频| 91免费版在线| 69堂亚洲精品首页| 久久久九九九九| 亚洲精品国产无天堂网2021 | 久久久久成人黄色影片| 国产精品久久毛片a| 亚洲国产一区二区三区青草影视 | 欧美成人在线直播| 中文字幕av一区二区三区高| 一区二区久久久久| 欧美a级理论片| 成人午夜视频在线| 欧美日韩成人高清| 日本一区免费视频| 亚洲大片免费看| 国产精品自拍三区| 欧美性生活久久| 久久久久久影视| 一区av在线播放| 国产成人精品一区二| 欧美亚洲综合色| 久久久国产午夜精品| 一二三区精品视频| 成人精品国产福利| 欧美一级高清片在线观看| 中文字幕亚洲一区二区av在线| 三级久久三级久久| 一本色道久久综合亚洲精品按摩|