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

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

?? lcd_a.c

?? 12864滾動顯示漢字,驅動芯片是ST7920
?? C
字號:

#include "Main.h"
#include "Port.h"

#include "LCD_A.h"
#include "Delay_T0.h"



extern char LCD_data_G[LCD_LINES][LCD_CHARACTERS+1] ;


static void LCD_Send_Byte(const tByte, const bit) ;

static void LCD_SetDDRAM(tByte);  
static void LCD_Delay(void);

extern char   str0[];


#define LCD_DISPLAY_OFF_CURSOR_OFF_BLINKING_OFF 0x08
#define LCD_DISPLAY_ON_CURSOR_OFF_BLINKING_OFF 0x0C

#define LCD_INC_ADDR_NO_SCROLL 0x06
#define LCD_CURSOR_OFF 0x08
#define LCD_DISPLAY_ON 0x04
#define LCD_CLEAR_DISPLAY 0x01
#define LCD_4BIT_2LINE_5x8FONT 0x28  




void LCD_Init(const bit TURN_DISPLAY_ON)
   {
   tByte loop;
   tByte l,c;

   Hardware_Delay_T0(10);  

   // Set up the LCD port
   LCD_D4 = 1;
   LCD_D5 = 1;
   LCD_D6 = 1;
   LCD_D7 = 1;

   LCD_RS = 1;
   LCD_EN = 1;    

   Hardware_Delay_T0(10);  

   LCD_RS = 0;
   LCD_EN = 0;    

   // Now wait for the display to initialise
   // - data sheet says at least 40 ms
   Hardware_Delay_T0(100);

   // Data sheet says send this instruction 3 times...
   for (loop = 0; loop < 3; loop++)
      {
      // Using a 4-bit bus, 2 display lines and a 5x7 dot font
      LCD_Send_Byte(LCD_4BIT_2LINE_5x8FONT,0);  
      Hardware_Delay_T0(1);
      }
   
   // Turn the display off and the cursor off and blinking off
   LCD_Send_Byte(LCD_DISPLAY_OFF_CURSOR_OFF_BLINKING_OFF,0); 
   Hardware_Delay_T0(1);
   
   // Clear the display
   LCD_Send_Byte(LCD_CLEAR_DISPLAY,0); 
   Hardware_Delay_T0(1);

   // Invisible cursor (dummy function call to avoid library error)
   LCD_Control_Cursor(0,0,0);
   Hardware_Delay_T0(1);

   // Clear the display
   LCD_Send_Byte(LCD_CLEAR_DISPLAY,0); 
   Hardware_Delay_T0(1);

   if (TURN_DISPLAY_ON)
      {
      // Increment display address for each character but do not scroll
      LCD_Send_Byte(LCD_INC_ADDR_NO_SCROLL,0); 
      Hardware_Delay_T0(1);

      // Update all characters in the display
      for (l = 0; l < LCD_LINES; l++)
          {
          for (c = 0; c < LCD_CHARACTERS; c++)
              {
              LCD_data_G[l][c] = '*';
              LCD_Update();
              Hardware_Delay_T0(1);
              } 
          }
  //    LCD_Send_Byte(LCD_DISPLAY_ON_CURSOR_OFF_BLINKING_OFF,0); 
  //    Hardware_Delay_T0(1);
      }      
   }



void LCD_Update(void) 
   {

	tByte Character,Line;
	tByte	Data;	
	
	for(Line=0;Line<2;Line++)
		for(Character=0;Character<16;Character++)
		{
		 	if (Line == 0)
		    {
    			LCD_SetDDRAM(0x00 + Character);  // First line
			}
		  	else
		    {
	    		LCD_SetDDRAM(0x40 + Character);  // Second line
		    }

			   Data = LCD_data_G[Line][Character];
		       LCD_Send_Byte(Data,1);
			}

}


//不太優化,但是很靈活.DATA_FLAG=0為寫入命令,DATA_FLAG=1為寫入數據
void LCD_Send_Byte(const tByte DATA, const bit DATA_FLAG) 
   {


   LCD_D4 = 0;
   LCD_D5 = 0;
   LCD_D6 = 0;
   LCD_D7 = 0;
   LCD_RS = DATA_FLAG; // Data register
   LCD_EN = 0;
   LCD_Delay();

   // Write the data (high nybble)
   LCD_D4 = ((DATA & 0x10) == 0x10);
   LCD_D5 = ((DATA & 0x20) == 0x20);
   LCD_D6 = ((DATA & 0x40) == 0x40);
   LCD_D7 = ((DATA & 0x80) == 0x80); 

   LCD_Delay();
   LCD_EN = 1; 
   LCD_Delay();
   LCD_EN = 0;
   LCD_Delay();


   LCD_D4 = 0;
   LCD_D5 = 0;
   LCD_D6 = 0;
   LCD_D7 = 0;
   LCD_RS = DATA_FLAG;
   LCD_EN = 0;
   LCD_Delay();


   LCD_D4 = ((DATA & 0x01) == 0x01);
   LCD_D5 = ((DATA & 0x02) == 0x02);
   LCD_D6 = ((DATA & 0x04) == 0x04);
   LCD_D7 = ((DATA & 0x08) == 0x08);

   LCD_Delay();
   LCD_EN = 1; 
   LCD_Delay();
   LCD_EN = 0;
   LCD_Delay();   
   } 


void LCD_Control_Cursor(const bit VISIBLE, const bit BLINKING, 
                        const tByte ADDRESS) 
   {
   // Cursor / blinking appears at current DDRAM address 
   // - use SetDDRAM() to alter the cursor position
   tByte Command = 0x0C;  

   if (VISIBLE) 
      {
      Command |= 0x02;
      }

   if (BLINKING) 
      {
      Command |= 0x01;
      }

   LCD_Send_Byte(Command,0);
   LCD_SetDDRAM(ADDRESS);
   }

/*------------------------------------------------------------------*-

 LCD_SetDDRAM()

 Set the DDRAM to a particular address.

 Used to determine where we write to in the LCD RAM and - thus -
 whether the text appears on Line 0, Line 1, etc.

 See text for details.

 Params: The DDRAM address we wish to write to. 

-*------------------------------------------------------------------*/
void LCD_SetDDRAM(tByte ADDRESS)
{
   ADDRESS &= 0x7f;
   ADDRESS |= 0x80;
   LCD_Send_Byte(ADDRESS,0);
}



void LCD_Delay(void)   
{
   int x;

   x++;
   x++;
   x++;
}        



void Displayonechar( char x, char y, char DData)
{
/*
	x&=1;
	y&=15;
	if(x)
	y|=0x40;
	y|=0x80;
*/
//	LCD_Send_Byte(y,0);
//	LCD_Send_Byte(DData,1);
 //   LCD_Update();


// LCD_Send_Byte(Data,1);
/*
//memcpy(LCD_data_G[x][y],DData,1);
//LCD_Update();

*/
LCD_data_G[x][y]=DData;
LCD_Update();

}



void Displaylistchar( char x, char y,  char  DData[])
{       
    	  int l=0;
		  int j;
//		  DData="asd";
		  j=strlen(DData);
      
	 //x&=0x1;
     //y&=0xf;
    while(y<=15)
	 {
	   Displayonechar(x,y,DData[l]);
	   l++;
	   y++; 
	 } 

//memcpy(LCD_data_G[x][y],Info,length);
//LCD_Update();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩美一区二区三区| 成人丝袜高跟foot| 51久久夜色精品国产麻豆| 亚洲成av人片在线| 欧美精品一二三| 蜜桃av一区二区在线观看| 精品久久久久久无| 成人av影视在线观看| 亚洲激情一二三区| 欧美一区二区网站| 国产999精品久久久久久绿帽| 亚洲欧美日韩中文字幕一区二区三区 | 91在线porny国产在线看| 亚洲久本草在线中文字幕| 欧美日韩亚洲不卡| 国产美女久久久久| 成人免费在线视频| 欧美丰满少妇xxxxx高潮对白| 精品午夜久久福利影院| 国产精品欧美一级免费| 欧美亚洲一区三区| 韩国中文字幕2020精品| 国产精品乱人伦中文| 欧美日韩综合在线免费观看| 久久国产视频网| 国产精品久久久久永久免费观看 | 日本福利一区二区| 蜜桃视频一区二区三区 | 亚洲精选视频在线| 日韩视频免费观看高清完整版 | 奇米精品一区二区三区在线观看一 | 欧美激情在线免费观看| 欧美体内she精高潮| 国产在线不卡一卡二卡三卡四卡| **性色生活片久久毛片| 精品国产髙清在线看国产毛片| 99麻豆久久久国产精品免费| 三级一区在线视频先锋 | 一区二区在线观看不卡| 久久先锋影音av鲁色资源| 91久久精品一区二区三区| 久久99精品久久久久久动态图| 国产精品国产三级国产普通话99| 6080yy午夜一二三区久久| 成人深夜在线观看| 另类小说综合欧美亚洲| 一区二区三区欧美亚洲| 欧美激情在线一区二区| 日韩久久精品一区| 欧美日韩久久久一区| 成人激情黄色小说| 国模套图日韩精品一区二区| 亚洲v中文字幕| 亚洲精品视频在线观看网站| 欧美经典一区二区| 亚洲在线观看免费视频| 国产午夜精品理论片a级大结局| 在线播放/欧美激情| 91捆绑美女网站| 成人免费看视频| 国产一区二区在线影院| 美女免费视频一区| 日韩国产欧美视频| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品三级av| 国产偷v国产偷v亚洲高清| 26uuu久久天堂性欧美| 欧美一级在线观看| 欧美一区二视频| 911精品产国品一二三产区| 91国产福利在线| 色综合久久综合| 99精品视频在线观看免费| 成人精品一区二区三区中文字幕| 国产剧情一区在线| 国产精品系列在线播放| 国产精品一区二区三区99| 久久9热精品视频| 精品无人区卡一卡二卡三乱码免费卡| 美女一区二区视频| 热久久久久久久| 麻豆精品一区二区av白丝在线| 日韩av中文在线观看| 奇米综合一区二区三区精品视频| 免费一级片91| 精品一区二区精品| 国产91精品久久久久久久网曝门| 高清不卡一区二区在线| 99久久99久久久精品齐齐| 91麻豆精东视频| 欧美日韩在线电影| 日韩一区二区在线免费观看| 欧美大胆一级视频| 久久精品网站免费观看| 国产精品美女久久久久久久网站| 亚洲欧美自拍偷拍| 亚洲国产综合91精品麻豆| 青娱乐精品视频| 国产一区三区三区| 91免费在线播放| 精品视频在线免费| 精品久久一区二区| 国产精品色呦呦| 亚洲香蕉伊在人在线观| 免费观看在线色综合| 高清国产一区二区| 欧美色图免费看| 亚洲精品在线观| 中文字幕日韩欧美一区二区三区| 亚洲愉拍自拍另类高清精品| 美女久久久精品| av动漫一区二区| 欧美精品久久一区| 久久久久久99久久久精品网站| 国产美女在线精品| 在线观看精品一区| 2021久久国产精品不只是精品| 国产精品国产三级国产三级人妇| 亚洲成av人片| 成人国产精品免费观看动漫| 欧美天天综合网| 国产亚洲精品中文字幕| 亚洲图片一区二区| 国产91在线观看| 欧美一区二区三区不卡| 成人欧美一区二区三区小说| 美国毛片一区二区三区| 91一区二区在线| www国产成人免费观看视频 深夜成人网| 综合欧美亚洲日本| 激情五月播播久久久精品| 色呦呦国产精品| 国产日韩av一区二区| 亚洲电影一级片| 波多野结衣精品在线| 欧美成va人片在线观看| 一区二区三区在线免费观看 | 亚洲另类在线视频| 高清shemale亚洲人妖| 91精品国产综合久久久久久久久久 | 午夜精品免费在线| 色综合久久中文字幕| 久久精品欧美日韩精品| 久久不见久久见免费视频1| 欧美亚洲免费在线一区| 日韩一区中文字幕| 岛国av在线一区| wwww国产精品欧美| 久久99国产精品久久99果冻传媒| 91传媒视频在线播放| 亚洲视频每日更新| 成人免费视频视频| 久久久99精品免费观看不卡| 久久精品国产免费看久久精品| 欧日韩精品视频| 亚洲精品乱码久久久久久黑人| 国产成人av电影在线| 久久久亚洲午夜电影| 久久se这里有精品| 欧美成人官网二区| 国内精品国产三级国产a久久| 91精选在线观看| 日本亚洲视频在线| 91.com在线观看| 日本午夜精品视频在线观看 | 麻豆freexxxx性91精品| 日韩一区二区免费电影| 免费观看久久久4p| 欧美大片拔萝卜| 国产在线不卡一区| 久久久久久久综合日本| 国产一区二区网址| 国产女主播视频一区二区| 国产精品99久久久| 国产精品色哟哟网站| 99久精品国产| 夜夜嗨av一区二区三区四季av | 欧美三级日韩三级国产三级| 亚洲国产日韩一级| 8v天堂国产在线一区二区| 午夜电影久久久| 精品人在线二区三区| 国产黄色精品网站| 中文字幕制服丝袜成人av| 91年精品国产| 日韩成人av影视| 精品国产乱码久久久久久老虎 | 中文字幕视频一区| 91久久精品国产91性色tv| 亚洲国产另类av| 精品伦理精品一区| 成人av电影在线观看| 亚洲国产日韩av| 精品人伦一区二区色婷婷| 波多野结衣中文字幕一区| 一区二区国产视频| 日韩欧美www| 91视频国产资源| 日韩电影在线一区二区| 久久女同精品一区二区|