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

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

?? clock.c

?? 具有溫度控制功能的電子時鐘1302+1602
?? C
?? 第 1 頁 / 共 2 頁
字號:
//聲明:在“蘋果”兄的程序的基礎上增加溫度控制功能2005/6/6
//更新歷史:
//          增加溫度顯示,調整時閃動。12/1
//          增加零下溫度顯示          12/15

/*============================================================
使用1602液晶顯示DS1302+S51時鐘+溫度顯示  馬文壘   2004/12/01
============================================================== 
聲明:1. 1602驅動程序照搬 明皓 的,非常好用
      2. DS1302驅動程序是參考網友修改而來      

SMC1602A(16*2)模擬口線接線方式
連接線圖: 
---------------------------------------------------
|LCM-----51  | LCM-----51  | LCM------51 |
---------------------------------------------|
|DB0-----P1.0 | DB4-----P1.4 | RS-------P2.0 |
|DB1-----P1.1 | DB5-----P1.5 | RW-------P2.1 |
|DB2-----P1.2 | DB6-----P1.6 | E--------P2.2 |
|DB3-----P1.3 | DB7-----P1.7 | VLCD接1K電阻到GND|
---------------------------------------------------
DS1302 接線圖

         Vcc2  CLK I/O  /RST 
           
            |   |   |   |
           --------------
          | 8   7   6   5|
          |   DS1302     |
          |              |
          | 1   2   3   4|
           --------------
            |   |   |   |
         VCC1           GND

1 腳接+5V    2,3腳32768HZ晶振  4腳接地  5腳接S51的P02 6腳接S51的P01 7接S51的P00
8腳接后備電源,可以接老計算機主板上的3.6V電池,也可以通過二級管隔離接一個大容量電解電容
電壓在2.5V以上即可維持

按鍵說明:1. 共三個鍵,低電平有效
          2. P04 和 P05 同時按:初始化
          3. P06 端口按鍵:選擇要調整的項目
          4. P05 端口按鍵:增加;P04端口按鍵:減少
          5. P03 端口按鍵:選擇顯示模式;新增按鍵


[注:AT89S51使用12M晶振]
=============================================================*/
#include <AT89x51.h>
#include <string.h>
#include<intrins.h>

#define LCM_RS P2_0 //定義引腳
#define LCM_RW P2_1
#define LCM_E P2_2
#define LCM_Data P1
#define Busy 0x80 //用于檢測LCM狀態字中的Busy標識
#define uchar unsigned char

uchar id,timecount,dipsmodid;
bit lmcinit_or_not; //是否需要清屏標志位“1”為需要“0”為不需要
bit flag,sflag; //flag是時鐘冒號閃爍標志,sflag是溫度負號顯示標志
void Disp_line1(void); //顯示屏幕第一行 
void Disp_line2(void); //顯示屏幕第二行
void id_case1_key();
//void Dispmod_id_case_key(void);//選擇顯示模式
void Disp_mod0(void);//顯示模式0
void Disp_mod1(void);//顯示模式


//*********** DS1302 時間顯示定義部分
sbit T_CLK=P0^0;
sbit T_IO =P0^1;
sbit T_RST=P0^2;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
void Set(uchar,uchar);     //根據選擇調整相應項目
void   RTInputByte(uchar);       /* 輸入 1Byte */
uchar  RTOutputByte(void);       /* 輸出 1Byte */
void   W1302(uchar, uchar);   // 向DS1302寫入一個字節
uchar  R1302(uchar);          // 從DS1302讀出一個字節
void   Set1302(unsigned char * ); //  設置時間 
bit sec,min,hour,year,mon,day,weekk; //閃爍標志位
//初始化后設置為:04年12月2日星期4 0點0分0秒
unsigned char inittime[7]={0x00,0x00,0x00,0x02,0x12,0x04,0x04};
//                          秒  分鐘 小時  日   月   年  星期

//***** 18B20溫度顯示定義部
sbit DQ=P0^7; //18B20 接P07口
typedef unsigned char byte;
typedef unsigned int  word;
Read_Temperature(char,char);
void mychar(void);
byte ow_reset(void);
byte read_byte(void);
void write_byte(char val);
void adjust_res(char res); //res 分別等于 0x1f, 0x3f, 0x5f 溫度讀數分辨率分別對應
                           //              0.5, 0.25, 0.125   

//*******溫度控制部分*********
bit tl_flash_flag;       //下限閃爍標志
bit th_flash_flag;       //上限閃爍標志
bit tl_flag;               //下限越限標志  
bit th_flag;               //上限越限標志  
bit tl_sign,th_sign;		//溫度零下標志 0:零上,1:零下
char tempid;
void Disp_Temp(void);    //顯示上下限溫度
void Set_TH_Temp(void);  //設置溫度上限
void Set_TL_Temp(void);  //設置溫度下限
signed char tl=20,th=45;
void Compare_Temp(signed char l,signed char h);     //比較溫度
void Tl_Al(void);         //下限越限報警
void Th_Al(void);         //上限越限報警



//******* 1602LCD驅動 **********************************************************
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCM,BuysC);
unsigned char ReadStatusLCM(void);
void LCMInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
unsigned char code week[]={"Week."};


void main(void)
{ 
  Delay400Ms(); //啟動等待,等LCM講入工作狀態
  LCMInit(); //LCM初始化
  Delay5Ms(); //延時片刻(可不要)
  mychar();
  TMOD=0x01;
  TH0=(65535-50000)/256;
  TL0=(65535-50000)%256;
  EA=1;
  TR0=1;
  ET0=1;  
  W1302(0x90,0xa5);//打開充電二級管  一個二級管串聯一個2K電阻 
  W1302(0x8e,0x80);//寫保護,禁止寫操作 
  adjust_res(0x1f); //調整18B20的分辨率 0x1f:0.5; 0x3f:0.25; 0x5f:0.125
  while(1)
    {              
	 if (P0_3==0)
      {dipsmodid++;
	   lmcinit_or_not=1;
       if(dipsmodid>2) dipsmodid=0;
       while(P0_3==0);
      }
     switch(dipsmodid)
      {
       case 0:
        Disp_mod0();
        break;
       case 1:
        Disp_mod1();
        break;
  	  }
    }
}
/*//選擇顯示模?void Dispmod_id_case_key()
{
 if (P0_3==0)
  {dipsmodid++;
   if(dipsmodid>1) dipsmodid=0;
  }
}*/
//顯示模式0
void Disp_mod0(void)
{
 if(lmcinit_or_not==1)
  {LCMInit();
   lmcinit_or_not=0;
  }
 if ((P0_4|P0_5)==0) //初始化
  {
   Delay5Ms();
   if ((P0_4|P0_5)==0) Set1302(inittime);
  }
 //mychar(); //顯示自定義字符
 if (P0_6==0) // 設置和選擇項目鍵
      {
       Delay5Ms();
       if(P0_6==0){id++;if(id>7) id=0;}
       while(P0_6==0);    
      }
     switch(id)
      {
       case 0:
         sec=0;
         Disp_line1(); Disp_line2();
         break;
       case 1://年
         year=1;
         Disp_line1(); Disp_line2();                  
         id_case1_key();
         break;
       case 2://月
         year=0;mon=1;
         Disp_line1(); Disp_line2();                 
         id_case1_key();
         break;
       case 3://日
         mon=0;day=1;
         Disp_line1(); Disp_line2();
         id_case1_key();
         break;             
       case 4://星期
         day=0;weekk=1;
         Disp_line1(); Disp_line2();         
         id_case1_key();
         break;
       case 5://小時
         weekk=0;hour=1;
         Disp_line1(); Disp_line2(); 
         id_case1_key();      
         break;       
       case 6://分鐘
         hour=0;min=1;
         Disp_line1(); Disp_line2(); 
         id_case1_key();
         break;
       case 7://秒
         min=0;sec=1;
         Disp_line1(); Disp_line2();             
         id_case1_key();
         break;              
      }
}
//顯示模式1
void Disp_mod1(void)
{
 if(lmcinit_or_not==1)
  {LCMInit();
   lmcinit_or_not=0;
  }
 Read_Temperature(1,0);
 DisplayOneChar(0,1,'T');
 DisplayOneChar(1,1,'L');
 DisplayOneChar(2,1,':');
 DisplayOneChar(7,1,'T');
 DisplayOneChar(8,1,'H');
 DisplayOneChar(9,1,':');
 if(P0_6==0)
  { 
    if(P0_6==0)
     {
      tempid++;
      if(tempid>2) tempid=0;
      while(P0_6==0);
     }
  }
 switch(tempid)
  {
   case 0:
    tl_flash_flag=0;
    th_flash_flag=0;
    Disp_Temp();
   break;
   case 1:
    tl_flash_flag=1;
    th_flash_flag=0;
    Disp_Temp();
	Set_TL_Temp(); 
   break;
   case 2:
    tl_flash_flag=0;
    th_flash_flag=1;
    Disp_Temp();
    Set_TH_Temp();
   break;
  }
 Compare_Temp(tl,th);
 Tl_Al();
 Th_Al();
}

//顯示上下限溫度
void Disp_Temp(void)
{
 
 unsigned char tl_gw,tl_sw,tl_bw;		//下限溫度的個位,十位,百位
 unsigned char th_gw,th_sw,th_bw;		//上限溫度的個位,十位,百位

 tl_sign=tl>>7;
 if(tl_sign)
  {
   tl_bw=(~(tl-1))/100;		//計算百位
   tl_sw=((~(tl-1))-tl_bw*100)/10;		//計算十位
   tl_gw=(~(tl-1))-tl_bw*100-tl_sw*10;		//計算個位
  }
 else
  {
   tl_bw=(tl)/100;          
   tl_sw=(tl-tl_bw*100)/10;
   tl_gw=tl-tl_bw*100-tl_sw*10;
  }

 if(tl_flash_flag==1)
  {
   if(flag==1)
    {if(tl_sign)
	  {
	   DisplayOneChar(3,1,0x2d);
       DisplayOneChar(4,1,tl_sw+0x30); 
       DisplayOneChar(5,1,tl_gw+0x30);
	  }
	 else
	  {
	   DisplayOneChar(3,1,tl_bw+0x30);
       DisplayOneChar(4,1,tl_sw+0x30); //顯示下限溫度
       DisplayOneChar(5,1,tl_gw+0x30);
      } 
    }
   else
    {DisplayOneChar(3,1,0x20);
     DisplayOneChar(4,1,0x20); //顯示下限溫度
     DisplayOneChar(5,1,0x20);    
    }
  }
 else
  {
   DisplayOneChar(3,1,tl_bw+0x30);
   DisplayOneChar(4,1,tl_sw+0x30); //顯示下限溫度
   DisplayOneChar(5,1,tl_gw+0x30);
  }

  
  th_sign=th>>7;
  if(th_sign)
   {
    th_bw=(~(th-1))/100;		//計算百位
    th_sw=((~(th-1))-th_bw*100)/10;		//計算十位
    th_gw=(~(th-1))-th_bw*100-th_sw*10;		//計算個位
   }
  else
   {
    th_bw=(th)/100;          
    th_sw=(th-th_bw*100)/10;
    th_gw=th-th_bw*100-th_sw*10;
   }


 if(th_flash_flag==1)
  {
   if(flag==1)
    {if(th_sign)
	  {
       DisplayOneChar(10,1,0x2d);
       DisplayOneChar(11,1,th_sw+0x30); //顯示下限溫度
       DisplayOneChar(12,1,th_gw+0x30);  
	  }
	 else
	  {
       DisplayOneChar(10,1,th_bw+0x30);
       DisplayOneChar(11,1,th_sw+0x30); //顯示下限溫度
       DisplayOneChar(12,1,th_gw+0x30);  
      }
    }
   else
    {
	 DisplayOneChar(10,1,0x20);
     DisplayOneChar(11,1,0x20); //顯示下限溫度
     DisplayOneChar(12,1,0x20);    
    }
  }
 else
  {
   DisplayOneChar(10,1,th_bw+0x30);
   DisplayOneChar(11,1,th_sw+0x30); //顯示下限溫度
   DisplayOneChar(12,1,th_gw+0x30);      
  }
}

//設置溫度下限
void Set_TL_Temp(void)
{
 if(P0_5==0)
  {
   Delay5Ms();
   if(P0_5==0)
    {
	 tl++;
	 if(tl>125) tl=-55;
	 //if(tl<-55) tl=155;
	}
   while(P0_5==0);
  }
 if(P0_4==0)
  {
   Delay5Ms();
   if(P0_4==0)
    {
	 tl--;
	 if(tl<-55) tl=125;
	}
  }
}

//設置溫度上限
void Set_TH_Temp(void)
{
 if(P0_5==0)
  {
   Delay5Ms();
   if(P0_5==0)
    {
	 th++;
	 if(th>125) th=-55;
	 //if(tl<-55) tl=155;
	}
   while(P0_5==0);
  }
 if(P0_4==0)
  {
   Delay5Ms();
   if(P0_4==0)
    {
	 th--;
	 if(th<-55) th=125;
	}
  }
}

void Compare_Temp(signed char l,signed char h)     //比較溫度
{
  unsigned char tl_temp;
  unsigned char y,s;
  //unsigned int  x;
  //unsigned char ct[8];
  union{byte c[2]; int x;}temp;
  
  ow_reset();
  write_byte(0xCC); // Skip ROM
  write_byte(0x44); // 轉換溫度
  ow_reset();
  write_byte(0xCC); //Skip ROM
  write_byte(0xbe); // 讀取寄存器
  temp.c[1]=read_byte();//讀出溫度低8位
  temp.c[0]=read_byte();//讀出溫度高8位
 
  // 零下溫度判斷
  sflag=0; //溫度零下標志 0:零上,1:零下
  if((temp.c[0]&0xf8)!=0x00)
   {
    sflag=1; //零下標志位置1
    temp.c[1]=~temp.c[1]; //低8位取反
    temp.c[0]=~temp.c[0]; //高8位取反
    tl_temp=temp.c[1]+1;  //低8位加1 
    temp.c[1]=tl_temp;    //計算后重新存入數組
    if(tl_temp>255) temp.c[0]++;  //如果低8位大于255,向高8位進1
   }
  y=0;
  s=0;
  y=temp.c[0]<<4;  
  s=temp.c[1]>>4;
  y=s|y;
  //x=((temp.c[0]&0x07)*256+temp.c[1])*.625;
  if(y<l)
   
    tl_flag=1;
   
  else
   
    tl_flag=0;
   
  if(y>h)
   
    th_flag=1;
   
  else
   
    th_flag=0;
   
}

void Tl_Al(void)         //下限越限報?{
 if(tl_flag==1)
  {
   if(flag==1)
    {    
     DisplayOneChar(9,0,'A'); 
     DisplayOneChar(10,0,'L');        
    }
   else
    {
     DisplayOneChar(9,0,0x20); 
     DisplayOneChar(10,0,0x20);    
    }
  } 
 else
  {
   DisplayOneChar(9,0,0x20); 
   DisplayOneChar(10,0,0x20);         
  }
}

void Th_Al(void)         //上限越限報警
{
 if(th_flag==1)
  {
   if(flag==1)
    {    
     DisplayOneChar(13,0,'A'); 
     DisplayOneChar(14,0,'H');        
    }
   else
    {
     DisplayOneChar(13,0,0x20); 
     DisplayOneChar(14,0,0x20);    
    }
  } 
 else
  {
   DisplayOneChar(13,0,0x20); 
   DisplayOneChar(14,0,0x20);         
  }
}



//中斷入口,冒號閃爍
void t0(void) interrupt 1 using 0
{
  TH0=(65535-50000)/256; //50ms定時
  TL0=(65535-50000)%256;  
  timecount++;
  if(timecount>9)
   {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频官网| 精品日本一线二线三线不卡| 91精品婷婷国产综合久久竹菊| 精品国产91九色蝌蚪| 亚洲综合无码一区二区| 夫妻av一区二区| 日韩一级片在线观看| 亚洲最新视频在线观看| 成人综合在线视频| 国产三级欧美三级日产三级99| 午夜精品久久久久久不卡8050| 一本色道久久综合精品竹菊| 久久久久久久久久久99999| 日日夜夜一区二区| 欧美在线综合视频| 国产精品传媒入口麻豆| 成人综合在线观看| 精品国产精品网麻豆系列| 免费黄网站欧美| 3atv在线一区二区三区| 亚洲mv大片欧洲mv大片精品| 在线视频国内一区二区| 亚洲欧美经典视频| 91视频com| 日韩毛片一二三区| 成人免费福利片| 中文字幕精品一区二区精品绿巨人| 国产在线视频不卡二| 26uuu国产电影一区二区| 激情五月婷婷综合| 久久这里只有精品首页| 国产一区二区三区在线观看免费| 日韩欧美在线不卡| 国内外成人在线| 国产午夜亚洲精品午夜鲁丝片| 国产精品一区在线| 国产性色一区二区| aaa国产一区| 亚洲精品视频在线看| 欧美亚洲尤物久久| 午夜伊人狠狠久久| 日韩精品一区二区三区视频播放 | 这里只有精品视频在线观看| 午夜欧美在线一二页| 欧美精品一级二级三级| 奇米精品一区二区三区在线观看一| 欧美一区二区女人| 黄色日韩三级电影| 国产精品成人一区二区三区夜夜夜 | 欧美日韩精品一区二区天天拍小说 | 中文字幕在线免费不卡| 日本高清视频一区二区| 偷窥国产亚洲免费视频| 日韩免费观看2025年上映的电影| 国产精品一区二区男女羞羞无遮挡| 久久精品夜夜夜夜久久| 91免费国产在线| 免费在线欧美视频| 国产拍欧美日韩视频二区| 91看片淫黄大片一级在线观看| 亚洲永久精品国产| 久久久亚洲欧洲日产国码αv| 99久久免费视频.com| 免费成人在线影院| 中文字幕中文字幕一区二区| 欧美福利一区二区| 国产成人高清在线| 亚洲成人福利片| 国产女人aaa级久久久级 | 精品久久久久一区| 成人美女视频在线观看| 亚洲444eee在线观看| 国产精品美女久久久久久久 | 99久久er热在这里只有精品15 | 亚洲激情男女视频| 亚洲精品一区二区在线观看| 一本一道久久a久久精品| 精品在线免费视频| 一区二区三区蜜桃| 久久精品男人的天堂| 欧美日韩久久久| 99riav久久精品riav| 激情综合色播五月| 视频一区视频二区在线观看| 亚洲欧美综合另类在线卡通| 亚洲精品一线二线三线| 欧美美女一区二区| 一本久久精品一区二区| 成人午夜激情影院| 国产专区欧美精品| 精品一区二区三区在线播放| 亚洲综合在线电影| 自拍偷拍亚洲激情| 国产精品区一区二区三区| 精品国产伦理网| 91精品国产91久久久久久一区二区| 色94色欧美sute亚洲线路一久| 国产电影一区在线| 国产美女娇喘av呻吟久久 | 亚洲国产精品一区二区久久 | 欧美影院一区二区| 99视频一区二区| 国产成人免费在线观看不卡| 蜜桃av噜噜一区| 蜜桃视频一区二区三区| 视频一区中文字幕| 五月婷婷激情综合| 日日摸夜夜添夜夜添国产精品| 亚洲欧美偷拍卡通变态| 国产精品传媒视频| 国产精品久久久久久久久动漫| 国产日韩欧美精品在线| 久久免费美女视频| 久久精品亚洲一区二区三区浴池 | 亚洲日本va午夜在线电影| 国产精品理伦片| 亚洲欧洲一区二区在线播放| 成人欧美一区二区三区白人 | 国产色产综合产在线视频| 久久精品一区蜜桃臀影院| 国产喷白浆一区二区三区| 国产日产欧美一区二区三区| 国产精品拍天天在线| 中文字幕一区二区不卡| 亚洲美女屁股眼交3| 亚洲h精品动漫在线观看| 视频一区二区中文字幕| 麻豆一区二区三区| 国产一区二三区好的| 99久久婷婷国产综合精品电影| 一本一道久久a久久精品| 欧美日韩亚洲另类| 欧美一级免费大片| 国产欧美日韩精品一区| 亚洲欧美另类小说视频| 日本亚洲免费观看| 国产在线国偷精品免费看| 波多野结衣在线aⅴ中文字幕不卡| 99久久er热在这里只有精品15| 欧美日韩在线播| 久久亚洲精品小早川怜子| 综合在线观看色| 偷拍日韩校园综合在线| 国产九色精品成人porny| 99久久99久久精品免费看蜜桃| 欧美日韩视频一区二区| 久久一夜天堂av一区二区三区| 综合自拍亚洲综合图不卡区| 午夜精品影院在线观看| 国产成人精品在线看| 欧美主播一区二区三区| 久久综合色一综合色88| 亚洲图片欧美色图| 国产乱子伦视频一区二区三区| 91视频在线看| 亚洲精品一区在线观看| 亚洲国产精品久久人人爱| 国产一区二区三区久久悠悠色av| 91久久免费观看| 国产午夜一区二区三区| 日韩中文字幕一区二区三区| 夫妻av一区二区| 日韩一区二区精品在线观看| 亚洲人成网站精品片在线观看| 精品一区二区免费视频| 欧美三级电影一区| 国产精品麻豆网站| 久久国产乱子精品免费女| 色综合中文字幕| 国产片一区二区| 毛片一区二区三区| 欧美日韩在线一区二区| 国产精品对白交换视频| 国产最新精品精品你懂的| 欧美日韩aaaaa| 一区二区三区四区不卡视频| 岛国精品在线观看| 2023国产精品| 日本中文字幕一区二区视频 | 久久夜色精品国产欧美乱极品| 亚洲电影第三页| 一本在线高清不卡dvd| 亚洲国产成人在线| 国产福利精品导航| 久久久91精品国产一区二区三区| 青草国产精品久久久久久| 欧美嫩在线观看| 亚洲高清免费视频| 在线观看亚洲精品| 亚洲精品国产高清久久伦理二区| 风间由美一区二区三区在线观看 | 日韩电影在线一区二区| 欧美在线不卡一区| 一区二区在线观看视频 | 亚洲一卡二卡三卡四卡无卡久久| 99久久99久久综合| 自拍偷拍亚洲激情| 91麻豆国产自产在线观看| 亚洲精品少妇30p| 在线观看不卡视频|