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

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

?? lcd.c

?? LCD顯示模塊 帶多種畫圖方式
?? C
字號:
/**************************************************
 *           液晶顯示模塊
 *適用于KS0108系列液晶控制器,點陣數由用戶設定。

 **************************************************/

 /*---------------------------------------------------x---->
   |
   |
   |
   y
   |
   V                                                       */

#ifndef LCD_C
	#define	LCD_C
#endif

#include <reg52.h>
#include "..\include\ASCII.h"
#include "..\include\lcd.h"

/*********液晶命令定義************************/

#define	    DISP_ON    		0x3f	   	//顯示ON
#define	    DISP_OFF	   	0x3e	   	//顯示OFF
#define	    DISP_FIRST	 	0xc0	   	//顯示起始行定義,從第零行顯示
#define	    SETX 	      	0x40	   	//定位X方向指令(列)
#define	    SETY		  	0xb8	   	//定位Y方向指令(行)
#define	    LCD_BUSY   		0x80	    //LCM忙判斷位


/***********內部變量定義****************************/


sbit   LCD_RST = P2^5;					//復位線占用的引腳
static uchar code Findbit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

/***************************************************
 *函數性質:私有
 *入口:無   出口:無
 *功能:短延時
 ***************************************************/
static void Delay5nop()
{
	//uchar i = 10;
	;//while (i--);
}


/**************************************************
 *函數性質:私有
 *入口:待選擇的端口號  出口;無
 *功能:選擇給定的液晶模塊
 **************************************************/
 static void SelectLcd(uchar cPart)
{
   if (cPart == SEL_LEFT)
   {
      LCD_CS1 = TRUE;
      LCD_CS2 = FALSE;
   }
   else
   {
     LCD_CS1 = FALSE;
     LCD_CS2 = TRUE;
   }
}



/***************************************************
 *函數性質:私有
 *入口:無  出口:忙標志
 *功能:判忙
 ***************************************************/
static bool  LcdBusy()
{
   	LCD_E  = FALSE;
   	LCD_RS = FALSE;
   	LCD_RW = TRUE;
   	LCD_DATA = 0XFF;
   	Delay5nop();
   	LCD_E =  TRUE;
   	Delay5nop();
	while (LCD_DATA & LCD_BUSY);
   	return TRUE;
}


/***************************************************
 *函數性質:私有
 *入口:待送入的命令。出口;無
 *功能:發送命令入液晶模塊
 ***************************************************/
static  void  WrComToLcd( uchar cCommand)
{
    LcdBusy();     //判忙
    LCD_E   = FALSE;
    LCD_RS  = FALSE;
    LCD_RW  = FALSE;
    LCD_DATA =cCommand;
    Delay5nop();
    LCD_E  = TRUE;
    Delay5nop();
    LCD_E  =FALSE;
}


/**************************************************
 *函數性質:私有
 *入口:待寫入的數據。  出口:無
 *功能:寫數據進LCD
 **************************************************/
static void WrDataLcd(uchar cData)
{
   LcdBusy();     //判忙
    LCD_E   = FALSE;
    LCD_RS  = TRUE;
    LCD_RW  = FALSE;
    LCD_DATA =cData;
    Delay5nop();
    LCD_E  = TRUE;
    Delay5nop();
    LCD_E  = FALSE;
}


/***************************************************
 *函數性質:私有
 *入口:待定位的X,Y坐標,  出口:無
 *功能:設定光標到指定的位置
 ***************************************************/
static void SetLcdCur(uchar x, uchar y)
{
   uchar x1;
   uchar y1;
   if (x >= MAX_XSIZE/2)
   {
      x1= x-MAX_XSIZE/2;
      SelectLcd(SEL_RIGHT);
   }
   else
   {
      x1= x;
      SelectLcd(SEL_LEFT);
   }
   y1 = y/8;
   WrComToLcd(SETX | x1);
   WrComToLcd(SETY | y1);
}


/***************************************************
 *函數性質:私有
 *入口:x,y坐標  出口:讀得的數據
 *功能:從LCD里讀出一個字節的數據
 ***************************************************/
 static uchar  ReadLcdByte(uchar x, uchar y)
{
   uchar  cbyte;

   SetLcdCur(x,y);
   LCD_DATA  = 0xff;
   LCD_E     = FALSE;
   LCD_RS    = TRUE;
   LCD_RW    = TRUE;
   Delay5nop();
   LCD_E     = TRUE;
   Delay5nop();//延時必須足夠長
   cbyte     =  LCD_DATA;//假讀一次數據。
   LCD_E     = FALSE;

   SetLcdCur(x,y);
   LCD_DATA  = 0xff;
   LCD_E     = FALSE;
   LCD_RS    = TRUE;
   LCD_RW    = TRUE;
   Delay5nop();
   LCD_E     = TRUE;
   Delay5nop();
   cbyte     =  LCD_DATA;//第二次讀的才是真正的數據。
   LCD_E     = FALSE;
   return cbyte;
}


/*************************************************
 *函數性質:私有
 *入口:指定的X,Y坐標  出口:無
 *功能:在指定的X,Y坐處畫一點
 *************************************************/
 static void LcdDrawPoint(uchar x, uchar y, uchar Color)
{
   uchar temp;
   uchar cbyte;

   cbyte = Findbit[ y%8];
   temp=ReadLcdByte(x,y);
   if (Color == WHITE)
   {
     cbyte  = ~cbyte;
     temp  &= cbyte;
   }
   else
   {
     temp |=cbyte;
   }
   SetLcdCur(x,y);
   WrDataLcd(temp);
}


/**********************************************
 *函數性質:公共
 *入口:無   出口:無
 *功能:清屏
 **********************************************/
 void LCD_LcdClr()
{
   uchar i;
   uchar j;
   for (j=0; j < MAX_YSIZE; j+=8)
   {
      for (i=0; i < MAX_XSIZE; i++)
      {
         SetLcdCur(i,j);
         WrDataLcd(0);
      }
   }
}




/**********************************************
 *函數性質:公共
 *入口:無,出口:無
 *功能:關閉液晶端口。
 **********************************************/
 void LCD_DisbLcdSel()
{
   LCD_CS1 = TRUE;
   LCD_CS2 = TRUE;
}


/******************************************************
 *函數性質:公共
 *入口:給定的坐標及待顯示的數據樣式。出口:無
 *功能:按給定的坐標在屏幕上顯示圖片,同時,圖片
 *具有反白及圖片隱藏功能,圖片的寬度及高度在字模的頭兩個字節里。
 ******************************************************/
void LCD_lcdDisp(uchar *cCode, uchar x, uchar y , uchar color)
{
   uchar i;
   uchar idata temp_x,bmpwidth,bmphigh;
   bmpwidth = *cCode++;      //從字模里取出圖片的高度及寬度
   bmphigh  = (*cCode)/8;
   cCode++;
   temp_x = x;
   while (bmphigh--)
   {
      x=temp_x;
      for (i=0; i < bmpwidth; i++)
      {
         SetLcdCur(x,y);
         if (color == WHITE)
         {
            WrDataLcd(~(*cCode));//反色顯示
         }
         else if (color == BLACK)
         {
            WrDataLcd(*cCode); //正常顯示
         }
         else if (color == HIDE)
         {
           WrDataLcd(0); //隱藏當前顯示的圖片。
         }
         cCode++;
         x++;
      }
      y+=8;
   }
   LCD_DisbLcdSel();                 //在每一次寫入LCD后關閉片選,是為了別的操作不影響液晶顯示。
}


/**********************************************
 *函數性質:公共
 *入口:起始點的X,Y坐標及長度,方向,出口:無
 *功能:從給定的起始點開始,按給定的長度及方向
 *劃一直線。不支持斜線,劃線方向以X、Y的增量方向
 *為基準。
 **********************************************/
 void LCD_DrawLine(uchar start_x,uchar start_y,uchar Line_Len,
                   uchar Flag,uchar Color)
{
    while (Line_Len--)
    {
       LcdDrawPoint(start_x,start_y,Color);
       if (Flag == X_FLAG)
       {
          start_x++;
       }
       else
       {
         start_y++;
       }
    }
    LCD_DisbLcdSel();
}


/******************************************************
 *函數性質:公共
 *入口:對應的ASCII碼字符及坐標、顏色(是否要反色顯示)
 *出口:無
 *功能:在給定的坐標顯示ASCII字符串。
 ******************************************************/
 void LCD_LcdDispASCII(uchar *Ascii, uchar x,uchar y,uchar color_char)
{
   uchar temp;
   uchar i=0;
   while(*(Ascii+i) != '\0')
   {
      temp=*(Ascii+i)-32;//將ASCII轉換成實際值"!"的ASCII為33。
      if (i == color_char || color_char == ALL_WHITE)  //當前的字符需要反色顯示
      {
         LCD_lcdDisp(cAscii+temp*ASCII_SIZE,x,y,WHITE);
      }
      else
      {
         LCD_lcdDisp(cAscii+temp*ASCII_SIZE,x,y,BLACK);
      }
      x+=ASCII_WIDTH;
      i++;
   }
}



/*
 *函數性質:公共
 *入口:無
 *出口:無
 *功能:初始化液晶
 */
void LCD_LcdIni()
{
   SelectLcd(SEL_LEFT);
   WrComToLcd(DISP_OFF);
   WrComToLcd(DISP_ON);
   WrComToLcd(DISP_FIRST);

   SelectLcd(SEL_RIGHT);
   WrComToLcd(DISP_OFF);
   WrComToLcd(DISP_ON);
   WrComToLcd(DISP_FIRST);
   LCD_LcdClr();
   LCD_DisbLcdSel();
}


/**************************************************************
 *函數性質:公共
 *入口:無,  出口:無
 *功能:開啟液晶背光
 **************************************************************/
 void LCD_OpenLED()
{
   LED_CTL  = FALSE;
}


/**************************************************************
 *函數性質:公共
 *入口:無   出口:無
 *功能:關閉液晶背光。
 **************************************************************/
 void LCD_CloseLED()
{
	LED_CTL = TRUE;
}


/*
 *函數性質:公共
 *入口:無
 *出口:無
 *功能:復位液晶。
 */
void LCD_Rst(void)
{
	uint i = 0xffff;
	LCD_RST = FALSE;
	while (i--);
	LCD_RST = TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
三级欧美韩日大片在线看| 国产欧美日韩在线| 亚洲国产日韩a在线播放性色| 99久久婷婷国产综合精品电影 | 91国在线观看| 亚洲国产精品嫩草影院| 91精品国产欧美一区二区18 | 国产精品中文字幕欧美| 久久精品日产第一区二区三区高清版| 国产乱码精品1区2区3区| 亚洲国产精品成人久久综合一区 | 91一区二区在线| 一区二区免费看| 欧美日韩国产天堂| 久久99日本精品| 国产欧美日韩麻豆91| 日本精品一区二区三区高清| 日韩国产在线观看| 国产欧美一区二区精品性色| 色先锋aa成人| 精品在线一区二区| 亚洲日本丝袜连裤袜办公室| 欧美一区日韩一区| 国产成人精品在线看| 亚洲图片欧美色图| 久久久久久免费毛片精品| 色婷婷综合久色| 国产综合一区二区| 一区二区三区精品| 精品电影一区二区三区| 99免费精品在线观看| 免费观看一级欧美片| 亚洲图片激情小说| 精品国产免费一区二区三区四区| 成人av先锋影音| 蜜臀精品一区二区三区在线观看 | 97久久精品人人爽人人爽蜜臀 | 欧美一区二区私人影院日本| 春色校园综合激情亚洲| 亚洲成a人v欧美综合天堂下载| 精品av久久707| 欧美日韩在线三级| 成人一区二区在线观看| 肉色丝袜一区二区| 亚洲男人天堂av网| 国产免费成人在线视频| 欧美喷水一区二区| 色综合一区二区| 国产一区二区美女| 日韩电影在线一区二区三区| 亚洲乱码中文字幕综合| 国产精品欧美经典| 国产性色一区二区| 精品国精品自拍自在线| 欧美三日本三级三级在线播放| 成人三级在线视频| 国产精品资源网站| 九九精品视频在线看| 日韩成人精品在线观看| 夜夜揉揉日日人人青青一国产精品| 中文字幕欧美区| 精品av久久707| 26uuu另类欧美| 日韩午夜激情视频| 欧美一区日本一区韩国一区| 欧美精选午夜久久久乱码6080| 色噜噜狠狠成人中文综合| 99久久国产综合精品色伊| 国产999精品久久久久久| 国内精品免费**视频| 狠狠色丁香久久婷婷综合丁香| 奇米777欧美一区二区| 青青草伊人久久| 男人的天堂久久精品| 三级成人在线视频| 美女任你摸久久| 久久黄色级2电影| 看电影不卡的网站| 免费精品视频最新在线| 日韩精品亚洲一区二区三区免费| 丝袜美腿亚洲色图| 蜜臀久久99精品久久久久久9| 老鸭窝一区二区久久精品| 久久草av在线| 国产成人在线观看| 成人综合婷婷国产精品久久免费| 成人午夜激情视频| 一本大道av一区二区在线播放| 色综合久久中文字幕综合网 | 日本网站在线观看一区二区三区| 偷拍亚洲欧洲综合| 免费观看一级特黄欧美大片| 精品一二线国产| 国产成人免费视频网站| 成人久久18免费网站麻豆| 91蜜桃视频在线| 欧美精品第1页| 久久亚洲欧美国产精品乐播| 亚洲国产精华液网站w| 亚洲乱码中文字幕综合| 日韩精品一级中文字幕精品视频免费观看| 日本不卡一区二区| 国产成a人亚洲| 色成人在线视频| 日韩女优视频免费观看| 久久久久久久网| 亚洲精品成人精品456| 免费欧美日韩国产三级电影| 风间由美一区二区三区在线观看 | 欧美一区在线视频| 国产欧美日韩精品a在线观看| 国产精品久久久久久久久免费相片| 亚洲乱码国产乱码精品精的特点| 日本欧美一区二区| 成人污污视频在线观看| 在线日韩av片| 久久久久久久综合狠狠综合| 一区二区三区国产| 国产在线精品国自产拍免费| 91在线视频播放地址| 日韩一区二区三区免费观看| 国产精品成人免费精品自在线观看| 亚洲国产成人高清精品| 国产99久久久久| 欧美一二三区精品| 亚洲免费观看视频| 国产一区二区三区综合| 色婷婷综合久久| 国产性天天综合网| 免费日本视频一区| 欧洲精品在线观看| 国产日韩欧美综合一区| 水野朝阳av一区二区三区| 91亚洲国产成人精品一区二三| 欧美一区二区成人| 伊人色综合久久天天| 国产精品一级片在线观看| 91精品国产一区二区| 亚洲欧美国产高清| 成人丝袜视频网| 欧美va在线播放| 日韩成人精品视频| 欧美色综合天天久久综合精品| 久久精品日产第一区二区三区高清版 | 一本大道久久a久久精品综合| 久久亚洲一级片| 麻豆精品视频在线观看免费 | 蜜桃久久久久久久| 欧洲一区二区三区在线| 欧美激情一区在线观看| 韩国一区二区三区| 精品噜噜噜噜久久久久久久久试看 | 日本不卡在线视频| 欧美欧美欧美欧美| 亚洲国产日日夜夜| 欧美综合一区二区| 尤物av一区二区| 91久久精品网| 亚洲欧美日韩国产成人精品影院| 成人激情免费电影网址| 欧美激情艳妇裸体舞| 丁香五精品蜜臀久久久久99网站 | 欧美喷水一区二区| 亚洲成人午夜电影| 欧美日精品一区视频| 香蕉影视欧美成人| 欧美精品国产精品| 蜜桃免费网站一区二区三区 | 国产欧美一区二区三区网站| 国产精品羞羞答答xxdd| 久久伊99综合婷婷久久伊| 国产一区二区视频在线| 久久先锋影音av| 国产一区二区三区香蕉| 久久午夜免费电影| 大白屁股一区二区视频| 亚洲婷婷在线视频| 欧美日韩精品专区| 婷婷成人激情在线网| 日韩欧美视频在线| 国产精品资源站在线| 国产精品电影一区二区| 日本乱人伦一区| 日本大胆欧美人术艺术动态| 久久在线观看免费| 成人黄色大片在线观看| 亚洲综合自拍偷拍| 7777精品久久久大香线蕉| 国产资源精品在线观看| 欧美激情一区二区三区四区| 91麻豆123| 麻豆精品一区二区三区| 亚洲国产精华液网站w| 欧美体内she精高潮| 精品在线播放免费| 中文字幕在线免费不卡| 欧美久久久久免费| 成人综合婷婷国产精品久久免费| 一二三四区精品视频| 精品毛片乱码1区2区3区|