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

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

?? 14-2.c

?? 單片機c語言開發實例 包括很多實例
?? C
字號:
#include <reg51.h>
#include <intrins.h>

sbit  RST   = P2^0;
sbit  CLK   = P2^1;
sbit  DQ    = P2^2;
sbit  TSOR  = P2^3;
sbit  ALERT =P2^4;
sbit  RS    = P2^7;
sbit  RW    = P2^6;
sbit  EN    = P2^5; 
/*------------------------------------------全局變量-------------------------------------------------------*/
static unsigned char temp1,temp2;         //溫度值的整數部分、小數部分
static unsigned char pos,posset;          	//數字電位器電位值、設定值
static unsigned char min,sec;             	//分鐘、秒
static unsigned char count;               	//Timer0中斷計數
static unsigned char minset;              	//設定的分鐘數
static unsigned char status1,status2;		//狀態標志
bit   stop,timeover;					//定時停止、結束
static char line0[] ="     00:00      ";
static char line1[] ="   . C         W";

/*-------------------------------------------------------------------------------------------------------------*/
void          InitInterupt();
void          KeyboardDelay();
/*-------------------------------------------LCD驅動函數------------------------------------------------*/
void          DelayL();
void 		  DelayS();
void 		  WriteCommand(unsigned char c);
void 		  WriteData(unsigned char c);
void 		  ShowChar(unsigned char pos,unsigned char c);
void 		  ShowString(unsigned char line,char *ptr);
void 		  InitLcd();
/*----------------------------------------------鍵盤-程序--------------------------------------------------*/
unsigned char GetKey();
/*---------------------------------------------數字溫度計驅動-------------------------------------------*/
void          ChangePos(bit sel,unsigned char pos1,unsigned char pos2);
/*------------------------------------------溫度傳感器驅動----------------------------------------------*/
void          Delay15();
void          Delay60();
void          Delay100ms();
void          Write0TS();
void          Write1TS();
bit           ReadTS();
void          ResetTS();
void          WriteByteTS(unsigned char byte);
unsigned char  ReadByteTS();
void          InitTS();
void          GetTempTS();
/*-------------------------------------------------主程序---------------------------------------------------*/
void main (void) {
     char code str1[]  ="  Hello World!  ";
     char code str2[]  ="   2002-10-20   ";
	 unsigned char i;

     SP=0x50;
	 ALERT=0;               		//報警燈滅
	 TSOR=1;               		//1-wire總線釋放

     DelayL();
	 InitLcd();            			//初始化LCD
	 DelayL();
     ShowString(0,str1);				//啟動畫面
     ShowString(1,str2);
	 for(i=0;i<15;i++)
       Delay100ms();
     InitInterupt();     				//初始化中斷設置

     minset=10;            			//缺省定時10分鐘
     posset=0;             			//缺省電位器值0
	 min=minset;					//初始化數據
	 pos=posset;
	 sec=0;            
     count=0;
     P1=0xF0;
	 status1=0;
	 status2=0;
	 stop=1;
	 timeover=0;

     ChangePos(0,255-pos,255-pos);	   	//設置電位器

	 InitTS();             			//初始化溫度計
	 while(1)						//循環顯示溫度值
	 {
       GetTempTS();
	   line1[0]=0x20;
	   i=temp1;
if(i>39)							//超過40攝氏度,告警燈亮
 ALERT=1;
	   if(i>99)						//超過100攝氏度,顯示溫度的百位
	   {
	     line1[0]=0x31;    
	     i-=100;
       }
       line1[1]=i/10+0x30; 				//顯示溫度的十位
	   line1[2]=i%10+0x30; 			//顯示個位
	   line1[4]=temp2+0x30;			//顯示小數位
	   if(timeover)             		//若定時結束,則電位器緩慢復0
	   {
   	     for(;pos>0;pos--)
	     {
         ChangePos(0,255-pos,255-pos);	   
         _nop_();
		 _nop_();
	     }
		 timeover=0;
		 posset=0;
	   }
       if(pos>posset)   				//若按鍵修改電位器位置
	   {
	     for(;pos>posset;pos--)			//則緩變到設定值
         {
         ChangePos(0,255-pos,255-pos);	   
         _nop_();
	     _nop_();
	     } 
	     ChangePos(0,255-pos,255-pos);
	   }
	   else if(pos<posset)   
	   {
	     for(;pos<posset;pos++)
         {
         ChangePos(0,255-pos,255-pos);	   
         _nop_();
	     _nop_();
	     } 
	     ChangePos(0,255-pos,255-pos); 
	   }
       i=pos;  
	   line1[9]=0x20;					//顯示電位器等級值
	   if(i>99)
	   {
	     line1[9]=i/100+0x30;
         i=i%100;
	   }
       line1[10]=i/10+0x30;
       line1[11]=i%10+0x30;
	   ShowString(1,line1);
	   line0[5]=min/10+0x30;			//顯示時間
	   line0[6]=min%10+0x30;
       line0[8]=sec/10+0x30;
	   line0[9]=sec%10+0x30;
	   ShowString(0,line0);	   
       Delay100ms();
	 }
}

void InitInterupt()
{
  TMOD=0x21;            			//初始化中斷設置
  TL1=0xFD;
  TH1=0xFD;
  PX0=1;
  EA=1;                 
  ES=1;                 
  PCON=0;    
  TR1=1;
  SCON=0x50;


  TL0=0x00;             				//定時0.05m
  TH0=0x4C;  
  ET0=1;

  EX0=1;                
  IT0=1;
}

void KeyboardDelay()    				//按鍵中斷延時
{
 unsigned char i,j;
 i=0x40;
 j=0xFF;
 while(i--)
  while(j--);
}

/*--------------------------------------------中斷處理-----------------------------------------------------*/
Int0_process() interrupt 0 using 0
{
  unsigned char key;
  unsigned char keycode[]= "TP";
  unsigned char step[3]={1,2,5};
  EA=0;
  key=GetKey();             			//獲得按鍵值
  switch(key)
  {
   case 0:
     stop=!stop;
	 min=minset;
     sec=0;
     break;
   case 1:
   case 2:
   case 3:
     if(stop)
	 {
 	 minset+=step[key-1];
	 if(minset>60)
	   minset=0;
	 min=minset;
	 }
     break;
   case 5:
   case 6:
   case 7:
     if(stop)
	 {	 
 	 minset-=step[key-5];
	 if(minset>60)
	   minset=0;
	 min=minset;
	 }
     break;
   case 9:
   case 10:
   case 11:
 	 posset+=step[key-9];
     break;
   case 13:
   case 14:
   case 15:
 	 posset-=step[key-13];
     break;
   default:
     break;
  }
  TR0=!stop;
  KeyboardDelay();
  P1=0xF0;
  EA=1;
}

Timer0_process() interrupt 1 using 0
{
  EA=0;
  TR0=0;
  TL0=0x00;
  TH0=0x4C;
  count++;
  if(count==20)						//如果到累計定時到達1s
  {
   if(sec==0)							//定時處理
   {
     if(min==0)						//總定時到,則置結束標志
	   timeover=1;
     else
	 {
      min--;
      sec=59;
     }  
   }
   else
     sec--;
   count=0;
  }  
  TR0=1;
  EA=1;
}
/*--------------------------------------LCD驅動子程序--------------------------------------------------*/
void DelayL()      	                    
{unsigned char i,j;
 i=0xF0;
 j=0xFF;
 while(i--)
  while(j--);
}

void DelayS()         					
{
 unsigned char i;
 i=0x1F;
 while(i--);
}

void WriteCommand(unsigned char c)       
{
 DelayS();
 EN=0;
 RS=0;
 RW=0;
 _nop_();
 EN=1; 
 P0=c;
 EN=0;
}

void WriteData(unsigned char c)          
{
 DelayS();
 EN=0;
 RS=1;
 RW=0;
 _nop_();
 EN=1; 
 P0=c;
 EN=0;
 RS=0;
}

void ShowChar(unsigned char pos,unsigned char c) 
{
 unsigned char p;
 if(pos>=0x10)
    p=pos+0xB0;
 else
    p=pos+0x80;
 WriteCommand(p);
 WriteData(c);
}

void ShowString(unsigned char line,char *ptr)    
{
 unsigned char l,i;
 l=line<<4;
 for(i=0;i<16;i++)
   ShowChar(l++,*(ptr+i));
}     

void InitLcd()
{
 DelayL();
 WriteCommand(0x38);
 WriteCommand(0x38);
 WriteCommand(0x06);
 WriteCommand(0x0C);
 WriteCommand(0x01);
 WriteCommand(0x80);
}     
/*---------------------------------------------鍵盤子程序-------------------------------------------------*/
unsigned char GetKey()
{
  unsigned k,t,i,j;
  k=P1;
  k=k&0xF0;
  i=0;
  while((k&0x10)&&i<4)
  {
	i++;
	k=k>>1;
  }   
  k=0x01;
  j=0;
  while(j<4)           
  {
    P1=0xFF^k;
	_nop_();
    t=P1;
    t=t^0xFF;
    t=t&0xF0;
    if(t)
	  break;
    j++;
	k=k<<1;
  }
  k=j*4+i;
  return k;
}
/*-----------------------------------------數字溫度計驅動子程序--------------------------------------*/
void  ChangePos(bit sel,unsigned char pos1,unsigned char pos2)
{  unsigned char i;
     RST=0;
     DQ=0;
     CLK=0;
	 RST=1;
	 DQ=sel;
     _nop_();
     CLK=1;
     _nop_();
	 CLK=0;
     for(i=0;i<8;i++)
	 {
	 if(pos1&0x80)
       DQ=1;
	 else
	   DQ=0;
     _nop_();
     CLK=1;
     _nop_();
	 CLK=0;
	 pos1=pos1<<1;
	}
	for(i=0;i<8;i++)
	{
	 if(pos2&0x80)
       DQ=1;
	 else
	   DQ=0;
     _nop_();
     CLK=1;
     _nop_();
     CLK=0;
	 pos2=pos2<<1;
	}
    RST=0;
}

/*------------------------------------------溫度傳感器子程序-------------------------------------------*/
void Delay100ms()           			//延時100ms
{
 unsigned  char i,j,k;
 for(i=0;i<8;i++)
   for(j=0;j<25;j++)
     for(k=0;k<250;k++);
}

void Delay15()              			//延時15us
{
 unsigned  char i;
 for(i=0;i<8;i++);
}

void Delay60()              			//延時60us
{
 unsigned  char i;
 for(i=0;i<30;i++);
}

void Write0TS()             			//寫bit 0
{
     TSOR=1;
     TSOR=0;
	 Delay15();
	 Delay15();
	 Delay15();
	 Delay15();
     TSOR=1;
	 _nop_();
	 _nop_();
}

void Write1TS()              			//寫bit 1
{
     TSOR=1;
     TSOR=0;
     _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
     TSOR=1;
     _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
     Delay15();
     Delay15();
     Delay15();
}

bit ReadTS()
{
 bit b;
     TSOR=1;
     TSOR=0;
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
     TSOR=1;
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
	 _nop_();
     b=TSOR;            
     Delay15();
     Delay15();
     Delay15();
	 _nop_();
	 _nop_();
	 return b;
}

void ResetTS()            				//復位
{unsigned char i;

   TSOR=1;
   TSOR=0;
   for(i=0;i<8;i++)
     Delay60();
   TSOR=1;              
   while(TSOR);         
   for(i=0;i<8;i++)
     Delay60();
}

void WriteByteTS(unsigned char byte)  	//寫一個字節(byte)
{unsigned char i;
 for(i=0;i<8;i++)
 {
   if(byte&0x01)
     Write1TS();
   else
     Write0TS();
   byte=byte>>1;
 }
}

unsigned char ReadByteTS()        		//讀一個字節(byte)
{
 unsigned char i,j;
 bit           b;
 j=0;
 for(i=0;i<8;i++)
 {
   b=ReadTS();
   if(b)
     j+=1;
   j=_cror_(j,1);
 }
 return j;
}
           
void InitTS()             				//初始化溫度轉換
{
     ResetTS();               
	 WriteByteTS(0xCC);       
	 WriteByteTS(0x4E);       
	 WriteByteTS(0x64);       
     WriteByteTS(0x8A);      
     WriteByteTS(0x1F);      
}

void GetTempTS()             			//獲取溫度
{
     ResetTS();               
	 WriteByteTS(0xCC);       
	 WriteByteTS(0x44);       
	 Delay100ms();           
     ResetTS();              
	 WriteByteTS(0xCC);      
 	 WriteByteTS(0xBE);      
     
	 temp2=ReadByteTS();
	 temp1=ReadByteTS();
	 ReadByteTS();
	 ReadByteTS();
	 ReadByteTS();
	 ReadByteTS();
	 ReadByteTS();
	 ReadByteTS();
	 ReadByteTS();
	 temp1=temp1<<4;
	 temp1+=(temp2&0xF0)>>4;
 	 temp2=(temp2&0x0F)?5:0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内外成人在线| 国产精品久久久久久久久久久免费看| 成人黄色软件下载| 成人app下载| 中文字幕av在线一区二区三区| 亚洲日本丝袜连裤袜办公室| 亚洲电影第三页| 久久99国产精品尤物| 成人国产精品免费观看视频| 国产精品丝袜一区| 全部av―极品视觉盛宴亚洲| 成人激情免费电影网址| 亚洲天堂成人在线观看| 91精品福利视频| 欧美成人三级电影在线| 国产精品沙发午睡系列990531| 国产成人在线视频网址| 在线播放视频一区| 亚洲国产成人在线| 一本色道亚洲精品aⅴ| 国产亚洲精品超碰| 天堂成人免费av电影一区| 成人99免费视频| 亚洲午夜羞羞片| 色呦呦网站一区| 亚洲国产三级在线| 2020国产精品| 美女网站一区二区| 在线播放一区二区三区| 国产99久久久国产精品潘金| 日韩欧美三级在线| 日韩精品电影一区亚洲| 久久精品日韩一区二区三区| 91同城在线观看| 国产欧美一区二区精品仙草咪| 免费成人小视频| 亚洲欧洲在线观看av| 成人一区二区三区| 欧美精品一区二区三区久久久| 日日夜夜精品视频天天综合网| 日韩视频在线观看一区二区| 中文久久乱码一区二区| 国产精品88av| 欧美高清视频不卡网| 精品亚洲aⅴ乱码一区二区三区| 欧美国产日产图区| 欧美私模裸体表演在线观看| 亚洲欧美日韩系列| 另类综合日韩欧美亚洲| 99免费精品视频| 91精品国产综合久久福利| 亚洲女子a中天字幕| 日韩一级免费观看| jlzzjlzz国产精品久久| 青青草国产精品亚洲专区无| 久久嫩草精品久久久精品一| 国产一区二区精品久久99| 亚洲免费视频成人| 久久九九全国免费| 欧美日韩国产小视频| 亚洲精品久久嫩草网站秘色| 日韩免费视频一区二区| 欧日韩精品视频| 国产a久久麻豆| 经典一区二区三区| 亚洲欧美自拍偷拍| 欧美va日韩va| 91麻豆精品国产91久久久使用方法| 成人午夜精品一区二区三区| 青青草成人在线观看| 一区二区三国产精华液| 成人综合在线观看| 美女脱光内衣内裤视频久久网站| 亚洲欧美视频在线观看视频| 成人免费视频在线观看| 2024国产精品| 日韩欧美一区二区视频| 国产成人精品影院| 秋霞av亚洲一区二区三| 亚洲综合男人的天堂| 欧美色中文字幕| 成人国产精品免费网站| 国产成人免费在线观看不卡| 精品一二线国产| 美国十次了思思久久精品导航| 亚洲成人免费看| 亚洲中国最大av网站| 国产精品麻豆网站| 国产欧美一区二区三区在线老狼 | 国产精品日日摸夜夜摸av| 欧美一区二区成人6969| 欧美三电影在线| 欧美日韩中文字幕一区二区| 色94色欧美sute亚洲线路一久| 97国产一区二区| 99久久免费国产| 91在线视频播放地址| 97久久超碰国产精品| 国产丶欧美丶日本不卡视频| 国产一区二区三区在线观看精品 | 成人美女视频在线观看18| 国产成人在线观看免费网站| 国产乱码一区二区三区| 高清av一区二区| 91视频.com| 欧美伊人久久久久久久久影院| 色国产综合视频| 欧美婷婷六月丁香综合色| 337p亚洲精品色噜噜| 日韩精品一区二区三区在线播放| 精品久久久久久亚洲综合网| 久久久高清一区二区三区| 欧美极品aⅴ影院| 亚洲天堂免费看| 无吗不卡中文字幕| 欧美mv日韩mv| 国产欧美精品区一区二区三区 | 成人精品视频一区二区三区尤物| 成人av影视在线观看| 在线影视一区二区三区| 制服丝袜一区二区三区| 久久久精品免费免费| 亚洲一区二区三区在线看| 日韩成人一级片| 久久精品国产99国产精品| 91在线精品秘密一区二区| 欧美日韩综合不卡| 久久久精品天堂| 亚洲香肠在线观看| 国产精品一区二区黑丝| 91在线播放网址| 欧美一级在线观看| 综合在线观看色| 男女性色大片免费观看一区二区| 久久国产精品第一页| 福利一区在线观看| 成人a区在线观看| 欧美变态tickle挠乳网站| 亚洲精品v日韩精品| 国产精品中文字幕日韩精品| 色偷偷88欧美精品久久久| 日韩欧美美女一区二区三区| 亚洲天天做日日做天天谢日日欢 | 国产美女娇喘av呻吟久久| 色综合激情五月| 91精品免费在线| 亚洲欧洲日韩av| 国产一区二区福利视频| 欧美日韩国产精品成人| 中文字幕不卡在线播放| 美女被吸乳得到大胸91| 欧美日韩精品一区二区| 国产精品久久午夜夜伦鲁鲁| 蜜桃视频一区二区三区 | 久久久激情视频| 日韩精品91亚洲二区在线观看| 99久久精品费精品国产一区二区| 欧美一区二区日韩| 亚洲国产精品久久不卡毛片 | 日韩av网站免费在线| 色综合久久综合网| 欧美激情一区二区三区不卡 | 五月婷婷激情综合| 日本乱码高清不卡字幕| 久久久亚洲午夜电影| 天堂午夜影视日韩欧美一区二区| 日本久久电影网| 18欧美亚洲精品| 91在线视频在线| 成人欧美一区二区三区1314| 国产成人av自拍| 久久综合色婷婷| 久久av资源站| 日韩小视频在线观看专区| 亚洲一区中文在线| 97成人超碰视| 中文字幕一区二区三中文字幕| 成人小视频在线观看| 久久亚洲免费视频| 久久99久久99精品免视看婷婷| 在线播放一区二区三区| 天堂成人国产精品一区| 91精品一区二区三区久久久久久| 日韩国产欧美一区二区三区| 欧美日韩国产成人在线免费| 亚洲午夜精品网| 顶级嫩模精品视频在线看| 国产精品电影一区二区| 99精品视频免费在线观看| 国产精品毛片无遮挡高清| 99久久婷婷国产精品综合| 国产精品不卡在线| 99re在线视频这里只有精品| 综合激情成人伊人| 欧美在线色视频| 亚洲图片有声小说| 欧美日韩一本到| 日韩高清不卡一区二区| 精品剧情v国产在线观看在线| 九九精品视频在线看|