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

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

?? lcd drive.c

?? Proteus實例集錦(包括電路圖.仿真程序,各種各樣的電路
?? C
?? 第 1 頁 / 共 2 頁
字號:

/***********************************************
   I2C總線讀一個字節,即接收一個字節數據
   接收結束后需要發送一個應答位acknowledge
***********************************************/

uchar I2C_receive()
     {
      uchar a,receive_data;
      for(a=0;a<8;a++)
         {
          receive_data=receive_data<<1;
          if(I2C_clock())
           {
            receive_data++;
           }; 
         };
 //I2C_ACK();
      return(receive_data);
      }


 DS1621_start()
   {
	do
	{
     I2C_start();
	 }
    while(I2C_send(0x90));//發送數據完地址字節的數據時,檢測從機的應答位        
	if(I2C_send(0xee)==0)
	  {
	   I2C_stop();
	   return 1;
	   }
    else
	  return 0;			        
	  }

 DS1621_stop()
   {
    do
	{
	 I2C_start();
	 //I2C_send(0x90);
	 }
	while(I2C_send(0x90));
	if(I2C_send(0x22)==0)
     {
	  I2C_stop();
	  return 1;
	  }
	else
	  return 0;	    
	}

char read_count_remain()
      {
	   char temp_remain=0;
	   do
	   	{
	     I2C_start();
	     }
	   while(I2C_send(0x90));//是否應答
	   if(I2C_send(0xa8)==0)
	     {
		  I2C_start();
	      if(I2C_send(0x91)==0)
	        {
			temp_remain=I2C_receive();
			I2C_NACK();
		    I2C_stop();
			return temp_remain;
			}
		  else
		    return 0;
	      }
		else
		  return 0;
	   }
char read_count_c()
      {
	   char temp_c=0;
	   do
	   	{
	     I2C_start();
	     }
	   while(I2C_send(0x90));//是否應答
	   if(I2C_send(0xa9)==0)
	     {
		  I2C_start();
	      if(I2C_send(0x91)==0)
	        {
			temp_c=I2C_receive();
			I2C_NACK();
		    I2C_stop();
			return temp_c;
			}
		  else
		    return 0;
	      }
		else
		  return 0;
	   }
bit read_temperature(char *point1)
   {
	do
	{
	I2C_start();
	}
	while(I2C_send(0x90));
    if(I2C_send(0xaa)==0)
	  {
	   do{
	     I2C_start();
	     }
	     while(I2C_send(0x91));
	   (*point1)=I2C_receive();
	   I2C_ACK();
	   (*(point1+1))=I2C_receive();
	   I2C_NACK();
	   I2C_stop();
	   return 1;
	   }
	else
	return 0;
	}

 DS1621_state()
   {
	do
	{
	 I2C_start();
	 }
	while(I2C_send(0x90));
	if(I2C_send(0xac)==0)
      {
	   do
		{
	     I2C_start();
		}
	   while(I2C_send(0x90));
	   if(I2C_send(0x00)==0)
	   //if(I2C_send(0x01)==0)
		 {
		 I2C_stop();
		 return 1;
		  }
	   else
	   return 0;
		}
	else
	  return 0;	    
	}

 DS1621_th()
   {
	 
    }
 DS1621_tl()
   {
	 
    }
 DS1621_init()
   {
	while(DS1621_stop()==0)
	{};
	while(DS1621_state()==0)
	{};
	DS1621_th();
	DS1621_tl();
	}

/****************************************************
       字符為16*16顯示,分為兩個部分寫入32個字節
       前16個字節寫入第一頁(16*8),后16個字節寫入
	   第二頁(16*8)
	   左側寫入"歡迎",右側寫入"使用"
*****************************************************/
C_display_L(uchar C_Pagenum,uchar C_Tiernum,uchar C_Temp)
  {
   uchar k;
   C_Pagenum=PAGEADD|C_Pagenum;
   C_Tiernum=TIERADD|C_Tiernum;
   WRCommand_L(C_Pagenum);
   WRCommand_L(C_Tiernum);
   for(k=0;k<16;k++)
      {
       WRdata_L(table2[C_Temp*32+k]);
	     };
   C_Pagenum=C_Pagenum+1;
   WRCommand_L(C_Pagenum);
   WRCommand_L(C_Tiernum);
   for(k=0;k<16;k++)
      {
       WRdata_L(table2[C_Temp*32+k+16]);
	   };
   }

C_display_R(uchar C_Pagenum,uchar C_Tiernum,uchar C_Temp)
  {
   uchar k;
   C_Pagenum=PAGEADD|C_Pagenum;
   C_Tiernum=TIERADD|C_Tiernum;
   WRCommand_R(C_Pagenum);
   WRCommand_R(C_Tiernum);
   for(k=0;k<16;k++)
      {
       WRdata_R(table2[C_Temp*32+k]);
	     };
   C_Pagenum=C_Pagenum+1;
   WRCommand_R(C_Pagenum);
   WRCommand_R(C_Tiernum);
   for(k=0;k<16;k++)
      {
       WRdata_R(table2[C_Temp*32+k+16]);
	     };
  }

/****************************************
   寫入西文字符,共11個字符,左側寫入6個
   右側寫入5個,左側起始從16開始,右側從
   0開始
*****************************************/

E_Display_L(uchar E_Pagenum,uchar E_Tiernum,uchar E_Temp)
  {
   uchar k;
   WRCommand_L(PAGEADD|E_Pagenum);
   WRCommand_L(TIERADD|E_Tiernum);
   for(k=0;k<8;k++)
	  {
	   WRdata_L(table1[E_Temp*8+k]);
	   };
   }   
E_Display_R(uchar E_Pagenum,uchar E_Tiernum,uchar E_Temp)
   {
   uchar k;
   WRCommand_R(PAGEADD|E_Pagenum);
   WRCommand_R(TIERADD|E_Tiernum);
   for(k=0;k<8;k++)
	  {
	   WRdata_R(table1[E_Temp*8+k]);
	   };
   	}

/*********************************
	   清除所有顯示RAM內容
**********************************/

CLR_DisplayRAM()
   {
    uchar C_page,i,k;
    for(i=0;i<8;i++)
	   {
	    C_page=PAGEADD|i;//清除起始頁為0
	    WRCommand_L(C_page);//清除起始頁寫入
		WRCommand_L(TIERADD);//清除起始行地址寫入
		WRCommand_R(C_page);
		WRCommand_R(TIERADD);
		for(k=0;k<64;k++)
		   {		   	
			WRdata_L(0x00);
			WRdata_R(0x00);//lcm的ram自動加一,只許循環64次即可    
		 	};
		 };
    }

/*********************************
       初始化 設置啟使行
**********************************/
void Init_LCD(void)
   {
	CLR_DisplayRAM();//清除所有顯示寄存器
	WRCommand_L(DIS_STARADD);
	WRCommand_R(DIS_STARADD);//設置顯示起始行地址
	WRCommand_L(0x3f);
	WRCommand_R(0x3f);//開顯示
    }
/***************************************
    max1241讀轉換結果
****************************************/
uint read_max1241()
	 {
	  uint voltage_temp=0;
	  uchar ucloop=12;
	  cs=High;
	  //dout=low;
	  sclk=Low;
	  cs=Low;
      while(dout==0);//EOC信號為高表示轉換結束
	  sclk=High;
	  sclk=Low;
      while(ucloop--)
	   {
		sclk=High;//上升沿數據穩定并讀出
		voltage_temp<<=1;
	    if(dout==1)
	    voltage_temp+=1;
	    sclk=Low;
		};	 
	  //sclk=low;
	  cs=High;
	  return voltage_temp;
	  }

main()
  {
   uchar a=0,temp=0,b=0,number=0,pagenum=0;
   uchar etable[]={0,0,0,0,0,45,53,60,51,63,61,53,10,69,67,53};//Welcome use
   uchar ttable[]={42,57,61,53,19,10,2,0,0,6,18,1,1,18,0,7};//Time:2006/11/07
   char count_remain=0,count_c=0;
   bit flag=1;
   char temperature_buf[2]={0};
   uchar temperature_display[8]={0};
   //uchar voltage=0; //測試0831時使用
   double voltage=0;
   double temp_buffer=0;
   cs=High;
   sclk=High;
   Init_LCD();
   I2C_init();
   DS1621_init();//初始化
   DS1621_start();//開始溫度采集

   /***************************************
   利用開機顯示時間(大概三秒)空讀一次DS1621
   ***************************************/
   for(b=0;b<2;b++)
      {
      for(number=0;number<20;number++)
	     {
	      //中文顯示:歡迎使用液晶模塊
     	  pagenum=1;//在第二行開始顯示
	      for(a=0;a<4;a++)
	        {
	         C_display_L(pagenum,a*16,a);
	         C_display_R(pagenum,a*16,a+4);
	         }; 
        
		  //英文顯示:Welcome use	            
          pagenum=5;//在第六行顯示
          for(a=0;a<3;a++)
             {
              E_Display_L(pagenum,(a+5)*8,etable[a+5]);
              };
          for(a=0;a<8;a++)
             { 
              E_Display_R(pagenum,a*8,etable[a+8]);
              };
        
		  //顯示制作時間:Time:2006/11/07				
          pagenum=7;//在第八行顯示
          for(a=0;a<8;a++)
             {
              E_Display_L(pagenum,a*8,ttable[a]);
              E_Display_R(pagenum,a*8,ttable[a+8]);
              }          
	      Delay_nms(100);
		  };
		  if(flag)
		 	 {
              read_temperature(temperature_buf);//在轉到下一個顯示界面之前空讀一次
			  read_count_remain();
			  read_count_c();
			  DS1621_start();
              flag=0;
   	          };
   	  };  

	WRCommand_L(0x3e);
	WRCommand_R(0x3e);
	CLR_DisplayRAM();  //清除顯示ram
	WRCommand_L(0x3f);
	WRCommand_R(0x3f);   
			
    while(1)
	   {
	    while(read_temperature(temperature_buf)==0);//讀溫度值(兩字節有符數),并檢測應答位,只使用第一字節
	    count_remain=read_count_remain();//讀斜率
		count_c=read_count_c();//讀計數器
		temp_buffer = temperature_buf[0] -0.75 + (count_c-count_remain) / (double)count_c;
		DS1621_start();//讀完數據后,重新開始一次溫度轉化

		   	temperature_display[0]=19;
			if(temp_buffer<0)
			  {
			   temperature_display[1]=16;//顯示負號
		       temperature_display[2]=(-temp_buffer)/10;//十位
			   temperature_display[3]=((uchar)(-temp_buffer))%10;
			   temperature_display[4]=17;//小數點
			   temperature_display[5]=(int)((-temp_buffer)*10)%10;
			   temperature_display[6]=(int)((-temp_buffer)*100)%10;//小數點后兩位
			   }
			else
			  {
			   temperature_display[1]=temp_buffer/100;//百位
		       temperature_display[2]=((uchar)temp_buffer)/10%10;
			   temperature_display[3]=((uchar)temp_buffer)%10;
			   temperature_display[4]=17;
			   temperature_display[5]=((int)(temp_buffer*10))%10;
			   temperature_display[6]=((int)(temp_buffer*100))%10;//小數點后兩位
			   }

			// 測試從max1241讀出的原始數據
		    /***************************
			//pagenum=3;
	 	    voltage=read_max1241();
		    voltage_display[0]=19;
		    voltage_display[1]= voltage/1000;   
		    voltage_display[2]=(voltage/100)%10;
		    voltage_display[3]=(voltage/10)%10;
                                voltage_display[4]= voltage%10;		  
		    //*******************************/

		//LCD顯示第二部分
		for(b=0;b<40;b++)
	       {
		    //*************************
			//更新max1241顯示值		    
			voltage=(double)read_max1241();
		    voltage=5000*voltage/4095;
		    voltage_display[0]=19;
		    voltage_display[5]=(uint)voltage %10;//個位
		    voltage_display[2]=17;
		    voltage_display[4]=(uint)(voltage/10)%10;//小數點后1位
		    voltage_display[3]=(uchar)(voltage/100)%10;//小數點后2位
			voltage_display[1]=(uchar)(voltage/1000)%10;//小數點后3位
			//***********************************/
			//顯示文字:電壓測量		
		    pagenum=2;
		    for(a=0;a<2;a++)
		       C_display_L(pagenum,a*16,a+8);
		    for(a=0;a<2;a++)
		       C_display_L(pagenum,(a+2)*16,a+12);	
		   
		   	//顯示文字:溫度測量
		    pagenum=5;
		    for(a=0;a<2;a++)
		       C_display_L(pagenum,a*16,a+10);
		    for(a=0;a<2;a++)
		       C_display_L(pagenum,(a+2)*16,a+12);
		    
			//顯示1241采樣值
			pagenum=3;
		    for(a=0;a<6;a++)
              {
		   	   E_Display_R(pagenum,a*8,voltage_display[a]); 
		       }

			//顯示ds1621采樣值
			pagenum=6;
		    for(a=0;a<7;a++)
              {
		   	   E_Display_R(pagenum,a*8,temperature_display[a]); 
		       }
          };
	  };	
   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲二区在线视频| 成人黄色电影在线| 99视频一区二区三区| 欧美日韩精品福利| 成人欧美一区二区三区黑人麻豆| 亚洲成人av福利| 岛国一区二区三区| 欧美变态凌虐bdsm| 亚洲一区二区三区影院| 国产白丝网站精品污在线入口| 欧美精品日韩一本| 自拍偷拍亚洲欧美日韩| 国内久久精品视频| 欧美一区二区三区四区高清| 亚洲精品视频在线观看网站| 国产精品99久久久久| 在线成人av网站| 亚洲精品少妇30p| 99久久99久久精品国产片果冻| 久久久另类综合| 精品亚洲成a人| 欧美一级精品大片| 五月天精品一区二区三区| 欧美亚洲一区二区在线观看| 国产精品美日韩| 懂色av一区二区三区蜜臀| 久久一留热品黄| 久久99热狠狠色一区二区| 欧美精品成人一区二区三区四区| 亚洲资源中文字幕| 欧美午夜精品久久久久久孕妇| 亚洲女同一区二区| 欧洲国产伦久久久久久久| 一区二区三区精品| 欧美三级欧美一级| 亚洲国产乱码最新视频| 欧美日本在线看| 青青草国产成人av片免费| 日韩一级完整毛片| 国产乱人伦偷精品视频免下载 | 欧美精品一区二区久久久| 免费在线观看日韩欧美| 日韩一级片在线播放| 极品瑜伽女神91| 久久精品人人做| av一本久道久久综合久久鬼色| 中文字幕一区av| 欧美综合一区二区| 麻豆国产精品官网| 国产日韩欧美一区二区三区乱码| 豆国产96在线|亚洲| 亚洲精品一二三四区| 欧美日韩免费观看一区三区| 蜜桃av一区二区| 欧美激情综合网| 色av一区二区| 美女一区二区视频| 亚洲欧洲国产专区| 欧美精品视频www在线观看 | 一区二区三区精品视频| 666欧美在线视频| 国产在线精品免费| 17c精品麻豆一区二区免费| 欧美日韩在线精品一区二区三区激情 | 午夜国产精品影院在线观看| 日韩免费电影一区| 懂色av中文字幕一区二区三区 | 在线免费观看日本欧美| 久久黄色级2电影| 国产精品久久久久7777按摩| 欧美色综合网站| 国产一区二区伦理片| 一区二区三区在线视频免费| 日韩亚洲电影在线| 91在线国内视频| 美女在线观看视频一区二区| 亚洲免费观看高清完整版在线观看 | 粉嫩aⅴ一区二区三区四区 | 国产精品一级黄| 亚洲午夜免费电影| 国产午夜久久久久| 91麻豆精品国产91久久久更新时间 | 精品亚洲成a人在线观看| 亚洲免费毛片网站| 国产夜色精品一区二区av| 欧美日韩国产不卡| 99精品国产91久久久久久 | 亚洲成人精品影院| 日韩一区有码在线| 精品动漫一区二区三区在线观看| 在线一区二区视频| 丁香网亚洲国际| 精品写真视频在线观看| 亚洲va中文字幕| 亚洲丝袜另类动漫二区| 国产欧美一区二区精品久导航| 欧美一区二区三区在线| 欧美在线观看视频在线| 91偷拍与自偷拍精品| 国产91在线观看丝袜| 国产最新精品精品你懂的| 免费观看在线综合| 视频一区二区中文字幕| 亚洲一区二区偷拍精品| ...中文天堂在线一区| 中文字幕精品一区二区精品绿巨人| 欧美mv日韩mv国产| 日韩一区二区麻豆国产| 538prom精品视频线放| 欧美日韩精品福利| 精品视频资源站| 欧美三级欧美一级| 欧美视频中文字幕| 欧美日韩免费电影| 欧美少妇性性性| 欧美丰满高潮xxxx喷水动漫| 欧美私人免费视频| 欧美日韩一区二区在线视频| 欧美日韩精品一区二区三区四区| 欧美性一区二区| 欧美日韩精品一区二区| 91精品国产综合久久久久 | 欧美性大战久久久久久久蜜臀| 91在线高清观看| 色综合网色综合| 欧美午夜片在线看| 91精品中文字幕一区二区三区| 91精品蜜臀在线一区尤物| 欧美大肚乱孕交hd孕妇| 2023国产精品| 国产精品福利电影一区二区三区四区| 国产欧美精品一区二区三区四区| 国产精品无圣光一区二区| 18欧美乱大交hd1984| 亚洲超碰精品一区二区| 久久电影网电视剧免费观看| 国产电影一区二区三区| 97精品久久久午夜一区二区三区| 日本丶国产丶欧美色综合| 欧美喷潮久久久xxxxx| 精品99一区二区| 国产精品灌醉下药二区| 洋洋av久久久久久久一区| 日韩成人一级片| 不卡的电视剧免费网站有什么| 欧洲一区在线观看| 日韩女优视频免费观看| 国产精品国产三级国产| 日本不卡一区二区三区 | 欧美精品一区二区三区蜜臀| 久久综合久久99| 伊人一区二区三区| 久久99九九99精品| 色婷婷av一区二区三区软件| 日韩精品一区二区在线观看| 国产精品电影一区二区三区| 婷婷一区二区三区| av电影天堂一区二区在线| 欧美精选午夜久久久乱码6080| 久久久久久久久久久久电影| 一区二区三区四区激情| 久久91精品国产91久久小草| 91成人在线免费观看| 亚洲精品一线二线三线无人区| 亚洲精品福利视频网站| 国产中文字幕一区| 欧美日韩精品欧美日韩精品一| 国产日本一区二区| 免费成人在线网站| 一本久道中文字幕精品亚洲嫩| 日韩免费视频一区二区| 一区二区成人在线观看| 国产99久久久国产精品| 日韩免费观看高清完整版在线观看| 亚洲人成在线观看一区二区| 麻豆成人久久精品二区三区红 | 日韩美女久久久| 国产在线视频一区二区三区| 欧美视频在线播放| 亚洲男人的天堂在线观看| 成人高清视频在线| 精品国产乱码久久久久久免费| 午夜精品久久久久久久99水蜜桃 | 99精品国产91久久久久久 | 国产精品电影一区二区三区| 激情五月激情综合网| 欧美一区二区视频在线观看2022| 亚洲综合男人的天堂| 高清国产一区二区| 日韩精品一区二区三区四区视频 | 亚洲主播在线播放| 9l国产精品久久久久麻豆| 久久精品人人爽人人爽| 狠狠色丁香久久婷婷综合_中| 欧美丰满一区二区免费视频| 亚洲一区在线视频| 在线观看成人免费视频| 一区二区三区中文在线| 色94色欧美sute亚洲13| 一区二区三区精品视频|