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

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

?? lcd_1602_driver._c

?? 這是一個電池放電器
?? _C
字號:
#include <iom8v.h>
#include <macros.h>
#include "discharge.h"
#include "LCD_1602.h"

unsigned char lcd_data[32];//32字節(jié)顯存,記錄LCD上顯示的數(shù)據(jù)
unsigned char data[32];//32字節(jié)緩存,保存將要寫入LCD的數(shù)據(jù)
unsigned char add;//顯存地址標號
unsigned char new=32;//顯存標號 
unsigned int num=0;
/**********************************************************
TC1602B LCD DISPLAY
建立時間:2005年12月12號
修改日期:2005年12月12號
LCD_write函數(shù)功能:當command=0時,向LCD寫入數(shù)據(jù),否則向LCD寫
                   入命令
LCD第一行顯示寄存器地址:0X80-0X8F
LCD第二行顯示寄存器地址:0XC0-0XCF
**********************************************************/
void LCD_init(void)
  { 
     LCD_EN_DDR|=LCD_EN;//設定該引腳方向為輸出
	 LCD_RS_DDR|=LCD_RS;//設定該引腳方向為輸出
	 LCD_D4_DDR|=LCD_D4;//設定數(shù)據(jù)口為輸出 
	 LCD_D5_DDR|=LCD_D5;//設定數(shù)據(jù)口為輸出  
	 LCD_D6_DDR|=LCD_D6;//設定數(shù)據(jù)口為輸出  
	 LCD_D7_DDR|=LCD_D7;//設定數(shù)據(jù)口為輸出
	 
	  LCD_EN_PORT&=~LCD_EN;//EN設為低電平
	  LCD_RS_PORT&=~LCD_RS;//RS設為低電平
	  LCD_D4_PORT&=~LCD_D4;//數(shù)據(jù)口置低電平
	  LCD_D5_PORT&=~LCD_D5;//數(shù)據(jù)口置低電平
	  LCD_D6_PORT&=~LCD_D6;//數(shù)據(jù)口置低電平
	  LCD_D7_PORT&=~LCD_D7;//數(shù)據(jù)口置低電平
	  
    LCD_write_char(0,0x33);      //4bit test
	delay_nms(25);
	LCD_write_char(0,0x32);
	delay_nms(15);
	LCD_write_char(0,0x28);
	delay_nms(15);
    LCD_write_char(0,0x0C);      //顯示開
	delay_nms(15);
    LCD_write_char(0,0x01);      //顯示清屏
	delay_nms(15);
    LCD_write_char(0,0x06);      //顯示光標移動設置	
	LCD_clear();
	//LCD_init_CGRAM(); 
  }
/*-----------------------------------------------------------------------
LCD_write_char    : 寫一個字節(jié)到LCD的函數(shù)
編寫日期             :2005-12-12 
最后修改日期      :2005-12-12 		
-----------------------------------------------------------------------*/
void LCD_write_char(unsigned command,unsigned data)
  { 
    if (command == 0)
   	LCD_RS_PORT &= ~LCD_RS;   //RS=0  寫地址
	else
    LCD_RS_PORT |= LCD_RS;    //RS=1 寫數(shù)據(jù)
	
    LCD_write_DATA_PORT(data);//寫高4位
    LCD_write_DATA_PORT(data<<4);//寫低4位
	delay_nus(250);
	num++;//統(tǒng)計向LCD發(fā)送的字節(jié)數(shù)
  }
/*-----------------------------------------------------------------------
LCD_write_DATA_PORT : 寫數(shù)據(jù)到LCD數(shù)據(jù)口函數(shù)

輸入?yún)?shù)data   :要寫入的數(shù)據(jù)(僅高4位)
編寫日期          :2005-12-12
最后修改日期   :2005-12-12 		
-----------------------------------------------------------------------*/
void LCD_write_DATA_PORT(unsigned char data)
{   
    if((data>>4)%2)
	  LCD_D4_PORT |=LCD_D4;
	else
	  LCD_D4_PORT &=~LCD_D4;
	
	if((data>>5)%2)
	  LCD_D5_PORT |=LCD_D5;
	else
	  LCD_D5_PORT &=~LCD_D5;
	  
	if((data>>6)%2)
	  LCD_D6_PORT |=LCD_D6;
	else
	  LCD_D6_PORT &=~LCD_D6;
	  
	if((data>>7)%2)
	  LCD_D7_PORT |=LCD_D7;
	else
	  LCD_D7_PORT &=~LCD_D7;
	  
	  LCD_EN_PORT |= LCD_EN; //EN端產(chǎn)生一個由低電平變高電平,寫LCD
	  delay_nus(25);
      LCD_EN_PORT &= ~LCD_EN; //EN端產(chǎn)生一個由高電平變低電平,寫LCD
	  delay_nus(25);
}
/*-----------------------------------------------------------------------
LCD_clear    : 清除屏幕的函數(shù)

輸入?yún)?shù)      :無
編寫日期      :2005/10/18	
       說明      :	lcd_data[]也會被清0
-----------------------------------------------------------------------*/
void LCD_clear(void)
  {  
     unsigned char i;
     LCD_write_char(0,0x01);//顯示清屏
	 for(i=0;i<32;i++)
	   {
	      lcd_data[i]=0;
	   }
	   delay_nus(500);
  }
/*-----------------------------------------------------------------------
LCD_check   : 統(tǒng)計發(fā)送數(shù)據(jù)到LCD次數(shù)的函數(shù)

輸入?yún)?shù)      :x,y 顯示結果的座標
編寫日期      :2005/10/18	
       說明      :如果每秒調用一次,就是統(tǒng)計每秒的次數(shù)
-----------------------------------------------------------------------
void LCD_check(unsigned char x,unsigned char y) //檢測每秒鐘寫LCD
                                                                      //次數(shù)的函數(shù)
  {  
    unsigned char  i;
	unsigned char  lcd[2]={0};
	add=y*16+x;//設置起始座標
        lcd[0]=num/10+48;
		lcd[1]=num%10+48;
	num=0;  
   for (i=0;i<2;i++) 
      {
              if(lcd_data[add]==lcd[i]){}
			  else
			     {data[add]=lcd[i];}
		          add++;
      }
	LCD_updata;
  }*/ 
/*-----------------------------------------------------------------------
LCD_write_string  : 英文字符串顯示函數(shù)

輸入?yún)?shù):*s       :英文字符串指針;
                 X、Y    : 顯示字符串的位置
				 e          : 把從最后一個字符到x=e之間的內容刪除
編寫日期          :2005/10/18		
-----------------------------------------------------------------------*/
void LCD_write_string(unsigned char x,unsigned char y, const unsigned char *s,unsigned char e)
  { 
    if(y<2)
	add=y*16+x;//設置起始座標
    while (*s) 
      { 
	    if(lcd_data[add]==*s)//如果LCD上顯示的數(shù)和
		   {}                             //待寫入的數(shù)相同的話
		else{data[add]=*s;}//要顯示的數(shù)據(jù)存入顯存
	       s ++;//指針加1
	       add++;//顯存地址加1
      }
	  if(y==1)
	    e+=16;
	  for(;e>=add;add++)
	   {data[add]=' ';}
	LCD_updata;
  }
/*-----------------------------------------------------------------------
LCD_write_number  : 數(shù)字顯示函數(shù)

輸入?yún)?shù):
          X、Y    : 顯示字符串的位置
               d     :在第d位插入小數(shù)點
		 data      :要顯示的數(shù)據(jù) 長整形
		     *s     :數(shù)據(jù)的單位
	         e       : 把從最后一個字符到x=e之間的內容刪除
編寫日期       :2005/10/18	 		
-----------------------------------------------------------------------*/ 
void LCD_write_number(unsigned char x,unsigned char y,unsigned char d,unsigned long dat,const unsigned char *s,unsigned char e)
  { 
    unsigned char  i;
	unsigned char b=0;
	unsigned char c='.';
	unsigned char lcd[10]={0};
	if(y<2)//如果Y>1則不重新計算地址
    add=y*16+x;//設置起始座標
    
   for (i=10;i>0;i--) 
      {
        lcd[i]=dat%10+48;
		dat=dat/10;
      }
	  
	for(i=1;i<11;i++)
	   { 
	     if(i==11-d)
		   {  
		      if(lcd_data[add]==c)
			     {}
			  else
			     {data[add]=c;}     
		          add++;
			}   
	     if((lcd[i]-48+b)==0)
	     {
		   if(i>=(10-d))
		   { 
		      if(lcd_data[add]==lcd[i])
			     {}
			  else
			     {data[add]=lcd[i];}     
		          add++;
			} 	 
		   else
		   {}  	   
		 }
		 else
		 {
		      if(lcd_data[add]==lcd[i])
			     {}
			  else
			     {data[add]=lcd[i];}      
		          add++;
		 b=1;
		 }
	   }
	   while (*s) 
      {
        if(lcd_data[add]==*s)//如果LCD上顯示的數(shù)和
		   {}                             //待寫入的數(shù)相同的話
		else{data[add]=*s;}//要顯示的數(shù)據(jù)存入顯存
	       s ++;//指針加1
	       add++;//顯存地址加1
      } 
	  if(y==1)
	    e+=16;
	  for(;e>=add;add++)
	   {data[add]=' ';}
	    LCD_updata;
  }
  void LCD_writenumber(unsigned char x,unsigned char y,unsigned char d,unsigned long dat,const unsigned char *s,unsigned char e)
  { 
    unsigned char  i;
	unsigned char b=0;
	unsigned char c='.';
	unsigned char lcd[10]={0};
	if(y<2)//如果Y>1則不重新計算地址
    add=y*16+x;//設置起始座標
    
   for (i=10;i>0;i--) 
      {
        lcd[i]=dat%10+48;
		dat=dat/10;
      }
	  
	for(i=1;i<11;i++)
	   { 
	     if(i==11-d)
		   {  
		      if(lcd_data[add]==c)
			     {}
			  else
			     {data[add]=c;}     
		          add++;
			}   
	     if((lcd[i]-48+b)==0)
	     {
		   if(i>=(10-d))
		   { 
		      if(lcd_data[add]==lcd[i])
			     {}
			  else
			     {data[add]=lcd[i];}     
		          add++;
			} 	 
		   else
		   {}  	   
		 }
		 else
		 {
		      if(lcd_data[add]==lcd[i])
			     {}
			  else
			     {data[add]=lcd[i];}      
		          add++;
		 b=1;
		 }
	   }
	   while (*s) 
      {
        if(lcd_data[add]==*s)//如果LCD上顯示的數(shù)和
		   {}                             //待寫入的數(shù)相同的話
		else{data[add]=*s;}//要顯示的數(shù)據(jù)存入顯存
	       s ++;//指針加1
	       add++;//顯存地址加1
      } 
	  if(y==1)
	    e+=16;
	  for(;e>=add;add++)
	   {data[add]=' ';}
	    LCD_updata;
  }
/*-----------------------------------------------------------------------
LCD_write_time  : 數(shù)字顯示函數(shù)

輸入?yún)?shù):
          X、Y    : 顯示數(shù)據(jù)的起始的位置
		  h,m,s   :時,分,秒
編寫日期          :2005-10-19 		
-----------------------------------------------------------------------*/ 
void LCD_write_time(unsigned char x,unsigned char y,unsigned char h,unsigned char m,unsigned char s,unsigned char z)
  { 
    unsigned char  i;
	unsigned char  lcd[8]={0};
	if(y<2)
	add=y*16+x;//設置起始座標LCD_set_xy( X, Y );  
	lcd[0]=h/10+48;
	lcd[1]=h%10+48;
	lcd[2]=':';
	lcd[3]=m/10+48;
	lcd[4]=m%10+48;
	lcd[5]=':';  
	lcd[6]=s/10+48;
	lcd[7]=s%10+48;
 if(z==5){if(lcd[7]%2)
	          lcd[2]=':';
	       else
	          lcd[2]=' ';}
	
   for (i=0;i<z;i++)  
      {
              if(lcd_data[add]==lcd[i])
			     {}
			  else
			     {data[add]=lcd[i];}    
		          add++;
      }
	LCD_updata;
  }
/*----------------------------------------------------
    LCD_write_new:寫顯存函數(shù)
	data[]:32字節(jié)的顯存
	new:顯存標號
	編寫日期:2005/10/18
-----------------------------------------------------*/  
void  LCD_write_new(void)
  {   
    unsigned char address;
	unsigned char new_add=1;//1表示要更新地址
	while(new<32)//顯存共32個字節(jié),標號從0--31 
      {    
		 if(new==16)//換行
		    new_add=1;	   
	     if(data[new])//跳過為0的顯存
            {  
			if(new_add)//當new_add=0時表示無需更新地址
		      {
		         if(new>15)
			       address=0xb0+new;
				 else
			       address=0x80+new;
			       LCD_write_char(0,address);//設置起始地址
		       }  			  
			  LCD_write_char(1,data[new]);//寫數(shù)據(jù)
			  lcd_data[new]=data[new];
			  data[new]=0;//寫完數(shù)據(jù)后,顯存清0
			  new_add=0;
			}
		else
		   new_add=1;
		   new++;//
      }
  } 
/*----------------------------------------------------
    LCD_write_CGRAM:寫CGRAM的函數(shù)
	輸入?yún)?shù):
          X、Y    : 顯示數(shù)據(jù)的起始的位置
		        n    : 存入LCD的圖案的編號
	編寫日期:2005/10/18
-----------------------------------------------------*/ 
/*
void LCD_write_CGRAM(unsigned char x,unsigned char y,unsigned char n) 
{  
   if(y<2)
   add=y*16+x;//設置起始座標
    if(n==0)//0表示空數(shù)據(jù)
	n+=8;//所以要加上8  (0>8/1>9/2>10...7>15)  
	data[add]=n;      
	LCD_updata;
}*/
/*----------------------------------------------------
    LCD_init_CGRAM:初始化CGRAM的函數(shù)
	
	編寫日期:2005/10/18
-----------------------------------------------------*/ 
/*
void LCD_init_CGRAM(void)
  {
     unsigned char CGRAM[8][8]=//CGRAM圖案的定義
	 {  //1     2      3       4       5      6        7      x
	   {0x3F,0x01,0x01,0x01,0x01,0x01,0x3F,0x00},//0
	   {0x00,0x04,0x02,0x1F,0x02,0x04,0x00,0x00},//1
	   {0x00,0x04,0x0E,0x15,0x04,0x04,0x04,0x00},//2
	   {0x00,0x1F,0x15,0x0E,0x04,0x04,0x04,0x00},//3
	   {0x00,0x1F,0x15,0x0A,0x04,0x04,0x04,0x00},//4
	   {0x00,0x00,0x02,0x06,0x0E,0x1E,0x1E,0x00},//5
	   {0x08,0x0C,0x0A,0x09,0x0A,0x0C,0x08,0x00},//6		
	   {0x08,0x0C,0x0E,0x0F,0x0E,0x0C,0x08,0x00},//7
	 };
	   unsigned char ads=0x40;
	   unsigned char x,y;
	   
	   LCD_write_char(0,ads);//寫地址
	   for(y=0;y<8;y++)
	     { 
		   for(x=0;x<8;x++)
		     {
			    LCD_write_char(1,CGRAM[y][x]);
			 }	  
		 }     
  }	   

  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看一区二区| 99久久婷婷国产综合精品电影| 亚洲天堂2014| 中文字幕在线观看一区二区| 国产日韩欧美不卡| 中文字幕第一区综合| 国产欧美一区二区精品性色超碰| 精品日韩一区二区三区免费视频| 日韩欧美美女一区二区三区| 欧美男女性生活在线直播观看| 欧美无砖专区一中文字| 欧美年轻男男videosbes| 日韩视频永久免费| 久久女同精品一区二区| 日本一区二区三区电影| 国产精品久久久久影院老司| 亚洲精品日日夜夜| 午夜伦欧美伦电影理论片| 日本欧美大码aⅴ在线播放| 美女网站色91| 91在线免费视频观看| 欧美日本一区二区三区四区| 久久网站最新地址| 一区二区三区四区在线免费观看 | 国产人久久人人人人爽| 中国av一区二区三区| 亚洲精品中文字幕乱码三区| 香蕉久久夜色精品国产使用方法| 久久99精品国产.久久久久| 粉嫩av亚洲一区二区图片| 日本电影欧美片| wwwwxxxxx欧美| 亚洲精品水蜜桃| 久久99在线观看| 色婷婷亚洲婷婷| 久久免费午夜影院| 亚洲午夜免费视频| 成人午夜免费av| 91精品免费观看| 亚洲欧美色图小说| 国产在线精品不卡| 欧美日韩亚洲综合在线| 亚洲国产精品激情在线观看 | 久久66热偷产精品| 欧美午夜精品一区| 国产精品女主播在线观看| 日韩激情一二三区| 色菇凉天天综合网| 国产精品亲子乱子伦xxxx裸| 日本午夜精品视频在线观看| 99re免费视频精品全部| 欧美大胆一级视频| 亚洲第一福利一区| 日韩欧美中文一区| 亚洲黄色片在线观看| 成人高清av在线| 日韩欧美一区在线| 午夜精品久久久| 91在线免费播放| 中文字幕一区在线观看| 国产成人aaa| 久久精品一区蜜桃臀影院| 蜜臀av一区二区在线观看| 欧美日韩国产一区| 亚洲va韩国va欧美va| 在线精品视频小说1| 一区二区三区久久| 在线观看三级视频欧美| 亚洲人成精品久久久久| 99精品偷自拍| 亚洲色图欧洲色图| 91福利国产精品| 一区二区三区影院| 欧美专区在线观看一区| 亚洲制服丝袜av| 欧美专区日韩专区| 天天色天天操综合| 91精品国产一区二区三区蜜臀 | 国产区在线观看成人精品| 激情综合五月天| 国产欧美中文在线| 国产成人av电影在线| 国产精品的网站| 色天使色偷偷av一区二区| 亚洲精品福利视频网站| 欧美日韩精品高清| 成人午夜在线免费| 国产精品欧美久久久久一区二区| 99久久免费精品高清特色大片| 一区二区三区中文字幕| 欧美精品18+| 国产乱对白刺激视频不卡| 久久精品一区八戒影视| 97国产精品videossex| 亚洲第一在线综合网站| 日韩欧美国产高清| 粗大黑人巨茎大战欧美成人| 亚洲欧洲日韩综合一区二区| 欧美色电影在线| 黄色资源网久久资源365| 中文字幕高清不卡| 欧美日韩精品一区二区三区蜜桃 | 欧美成人一区二区三区片免费 | 日本精品一区二区三区四区的功能| 一区二区三区四区高清精品免费观看 | 欧美大片在线观看一区二区| 国产a久久麻豆| 亚洲成a人v欧美综合天堂 | 日本电影欧美片| 日本色综合中文字幕| 久久精品一区四区| 欧美日韩激情一区二区| 国产呦精品一区二区三区网站| 亚洲天堂a在线| 精品国产91乱码一区二区三区| 99精品欧美一区二区三区综合在线| 日韩黄色小视频| 中文字幕色av一区二区三区| 欧美一二三四区在线| 色综合一区二区| 黑人精品欧美一区二区蜜桃| 一区二区三区美女| 国产女人18水真多18精品一级做| 欧美电影影音先锋| 色综合中文字幕国产 | 4438x亚洲最大成人网| 97精品久久久久中文字幕| 美腿丝袜亚洲综合| 亚洲第一久久影院| 一区二区三区中文字幕电影| 中文字幕av一区二区三区免费看 | 国产尤物一区二区在线| 日本不卡一二三| 亚洲综合999| 亚洲男人电影天堂| 中文字幕在线播放不卡一区| 久久久久国产精品麻豆ai换脸| 欧美一区二区视频免费观看| 在线观看91精品国产入口| 99久久99久久精品国产片果冻| 国产激情视频一区二区三区欧美 | 18欧美亚洲精品| 亚洲国产精品激情在线观看| 久久综合久久鬼色中文字| 91精品免费在线| 欧美一区二区三区在线视频| 91.xcao| 欧美一卡二卡三卡四卡| 欧美精品久久一区| 777精品伊人久久久久大香线蕉| 欧美亚洲愉拍一区二区| 欧美一a一片一级一片| 欧美性猛片xxxx免费看久爱| 欧美在线不卡一区| 欧美日韩一区二区在线观看| 久久精品亚洲一区二区三区浴池| 欧美tickle裸体挠脚心vk| 欧美大白屁股肥臀xxxxxx| 精品欧美乱码久久久久久| 精品国产伦一区二区三区观看体验 | 亚洲精品乱码久久久久久 | 国产欧美日韩一区二区三区在线观看| 久久综合色8888| 国产日韩av一区二区| 中日韩av电影| 亚洲一区二区三区在线播放| 日韩黄色免费网站| 国产精品资源站在线| jlzzjlzz亚洲女人18| 欧美中文字幕一区二区三区亚洲 | 韩国女主播一区二区三区| 国内成人精品2018免费看| www.一区二区| 欧美在线不卡视频| 精品国产精品网麻豆系列| 国产日韩欧美制服另类| 亚洲精品国产视频| 青青草一区二区三区| 国产精品综合视频| 欧美中文字幕一区| 久久久久97国产精华液好用吗| 综合久久国产九一剧情麻豆| 午夜不卡av免费| 成人一区在线观看| 91精品国产欧美一区二区18| 久久精品一区二区三区av| 亚洲国产日韩精品| 国产99久久久国产精品免费看| 欧美图片一区二区三区| 久久综合久久综合九色| 亚洲成a人在线观看| 丁香六月久久综合狠狠色| 欧美日韩黄色一区二区| 欧美国产在线观看| 美国十次了思思久久精品导航| 97精品视频在线观看自产线路二| 日韩视频国产视频| 亚洲五码中文字幕| 9色porny自拍视频一区二区| 欧美电影免费观看完整版|