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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? lcddrive.c

?? msp430液晶(并行綠光12864)C驅(qū)動 用msp430F247成功測試
?? C
字號:
/****************************************************************************************
* 文件名:LCMDRI.C
* 功能:圖形液晶128*64驅(qū)動(型號為MG12864A)。
* 說明:圖形液晶采KS0107為LCM控制芯片,內(nèi)帶負壓產(chǎn)生器,單5伏供電,并行接口。
* 硬件連接: D0--D7 <===>  P4.0--P4.7
*            CS1    <===>  P5.2
*            CS2    <===>  P5.1
*            RST    <===>  P5.0
*            D/I    <===>  P5.5
*            E      <===>  P5.3
*            R/W    <===>  P5.4
****************************************************************************************/
#include "Includes.h"

TCOLOR  	gui_disp_buf[GUI_LCM_YMAX/8][GUI_LCM_XMAX];				// 聲明GUI顯示緩沖區(qū)

/* 輸出總線數(shù)據(jù)宏定義 */
#define	 OutData(dat)		        P4OUT = dat

/* 定義CS1控制 */
#define	 SET_CS1()			P5OUT |= BIT2
#define	 CLR_CS1()			P5OUT &= ~BIT2

/* 定義CS2控制 */
#define	 SET_CS2()			P5OUT |= BIT1
#define	 CLR_CS2()			P5OUT &= ~BIT1

/* 定義RST控制 */
#define	 SET_RST()			P5OUT |= BIT0
#define	 CLR_RST()			P5OUT &= ~BIT0
	
/* 定義DI控制 */
#define	 SET_DI()			P5OUT |= BIT5
#define	 CLR_DI()			P5OUT &= ~BIT5

/* 定義E控制 */
#define	 SET_E()			P5OUT |= BIT3
#define	 CLR_E()			P5OUT &= ~BIT3

/* 定義E控制 */
#define	 SET_RW()			P5OUT |= BIT4
#define	 CLR_RW()			P5OUT &= ~BIT4

/* 定義LCM操作的命令字 */
#define	 LCM_DISP_ON		        0x3f			/* 打開LCM顯示 */
#define	 LCM_PAGE			0xb8			/* 頁起始行地址,可以用LCM_PAGE+X設(shè)置當前頁。(X<8) */
#define	 LCM_Y				0xc0			/* 顯示起始行0,可以用LCM_Y+Y設(shè)置起始行。(Y<64) */
#define	 LCM_X				0x40			/* 列起始行地址,可以用LCM_X+X設(shè)置當前列。(X<64) */

/***********************************************************************
* 名稱:DELAY5()
* 功能:軟件延時。
* 入口參數(shù):無
* 出口參數(shù):無
***********************************************************************/
void DELAY5(void)
{
	unsigned char i;
	for(i=0;i<10;i++);
}

/***********************************************************************
* 名稱:LCM_WrCommand()
* 功能:寫命令子程序
* 入口參數(shù):command  	要寫入LCM的命令字
* 出口參數(shù):無
* 說明:函數(shù)會設(shè)置LCM數(shù)據(jù)總線為輸出方式
***********************************************************************/
void LCM_WrCommand(unsigned char command)
{
        CLR_E();
	CLR_DI();
	
	OutData(command);
	
	DELAY5();
	SET_E();
	DELAY5();
	CLR_E();
	DELAY5();
}

/***********************************************************************
* 名稱:LCM_WrData()
* 功能:寫數(shù)據(jù)子程序
* 入口參數(shù):wrdat  	要寫入LCM的數(shù)據(jù)
* 出口參數(shù):無
***********************************************************************/
void LCM_WrData(unsigned char wrdat)
{
	CLR_E();
	SET_DI();
	
	OutData(wrdat);
	
	DELAY5();
	SET_E();
	DELAY5();
	CLR_E();
	DELAY5();
}

/***********************************************************************
* 名稱:LCM_Position()
* 功能:向指定點寫數(shù)據(jù)(一字節(jié))
* 入口參數(shù):x		x座標值(0-127)
*	    y		y座標值(0-63)
* 出口參數(shù):無
* 說明:會重新設(shè)置CS1/CS2,及其內(nèi)部指針
***********************************************************************/
void LCM_Position(unsigned char x,unsigned char y)
{

}
/***********************************************************************
* 名稱:LCM_WriteByte()
* 功能:向指定點寫數(shù)據(jù)(一字節(jié))
* 入口參數(shù):wrdat  	要寫入LCM的數(shù)據(jù)
*	    x		x座標值(0-127)
*	    y		y座標值(0-63)
* 出口參數(shù):無
* 說明:會重新設(shè)置CS1/CS2,及其內(nèi)部指針
***********************************************************************/
void LCM_WriteByte(unsigned char x,unsigned char y,unsigned char wrdat)
{
	x = x&0x7f;
	y = y&0x3f;
	
	CLR_CS1();
	CLR_CS2();
	
	y = y>>3;
        
	gui_disp_buf[y][x] = wrdat;
	if(x<64)
	{
		SET_CS1();
	}
	else
	{
		SET_CS2();
		x = x-64;
	}
	LCM_WrCommand(LCM_X+x);			//設(shè)置當前列地址,即x座標
	LCM_WrCommand(LCM_PAGE+y);		//設(shè)置當前頁地址,即y座標
	LCM_WrData(wrdat);
}

/***********************************************************************
* 名稱:LCM_ReadByte()
* 功能:讀取指定點上的數(shù)據(jù)。
* 入口參數(shù):	x	x坐標的值(0-127)
		y	y坐標的值(0-63)
* 出口參數(shù):返回該點上的字節(jié)數(shù)據(jù)
***********************************************************************/
unsigned char  LCM_ReadByte(unsigned char x,unsigned char y)
{
    	x = x&0x7f;
	y = y&0x3f;
	
	y = y>>3;
        return(gui_disp_buf[y][x]);
}

/***********************************************************************
* 名稱:LCM_DispFill()
* 功能:向顯示緩沖區(qū)填充數(shù)據(jù)。
* 入口參數(shù):	filldata	要寫入LCM的填充數(shù)據(jù)
* 出口參數(shù):此函數(shù)會設(shè)置顯示起始行為0,且會自動選中CS1有效
***********************************************************************/
void LCM_DispFill(unsigned char filldata)
{
	unsigned char x,y;
	
	SET_CS1();			        //選中兩個控制芯片
	SET_CS2();
	
	LCM_WrCommand(LCM_Y);			//設(shè)置顯示起始行為0
	for(y=0;y<8;y++)
	{
		LCM_WrCommand(LCM_PAGE+y);	//設(shè)置當前頁地址
		LCM_WrCommand(LCM_X);		//設(shè)置當前列地址
		for(x=0;x<64;x++)
		{
			LCM_WrData(filldata);
		}
	}
	CLR_CS2();
}

/***********************************************************************
* 名稱:LCM_DispIni()
* 功能:LCM顯示初始化。
* 入口參數(shù):	無
* 出口參數(shù):無
* 說明:初始化顯示后,清屏并設(shè)置顯示起始行為0
*		會復(fù)位LCM_DISPCX,LCM_DISPCY.(并會只選中CS1)
***********************************************************************/
void LCM_DispIni()
{
      unsigned char i;
	/* 設(shè)置引腳連接模塊 */
        P5SEL = 0x00;
        P4SEL = 0x00;
        
        /* 設(shè)置I/O為輸出方式 */
	P4DIR = 0x0ff;
        P5DIR = 0x0ff;
	
        /* 復(fù)位LCM */
	CLR_RST();
	for(i=0;i<250;i++);
	SET_RST();
	for(i=0;i<250;i++);
        
        /* 默認為寫模式 */
        CLR_RW();
	
	SET_CS1();
	SET_CS2();
	
	LCM_WrCommand(LCM_DISP_ON);			// 打開顯示

	LCM_WrCommand(LCM_Y);				// 設(shè)置顯示起始行為0
	LCM_WrCommand(LCM_PAGE);			// 設(shè)置起始頁地址為0
	LCM_WrCommand(LCM_X);				// 設(shè)置起始列地址為0
}

/***********************************************************************
* 名稱:GUI_FillSCR()
* 功能:全屏填充.直接使用數(shù)據(jù)填充顯示緩沖區(qū).
* 入口參數(shù):	dat
* 出口參數(shù):無
* 說明:用戶根據(jù)LCM的實際情況編寫此函數(shù).
***********************************************************************/
void GUI_FillSCR(TCOLOR dat)
{
	unsigned char i,j;
	
	/* 填充緩沖區(qū) */
	for(i=0;i<(GUI_LCM_YMAX/8);i++)
	{
                for(j=0;j<GUI_LCM_XMAX;j++)
		{
			gui_disp_buf[i][j] = dat;
		}
	}
	/* 填充LCM */
	LCM_DispFill(dat);
}

/****************************************************************************
* 名稱:GUI_ClearSCR()
* 功能:清屏。
* 入口參數(shù):無
* 出口參數(shù):無
* 說明:用戶根據(jù)LCM的實際情況編寫此函數(shù)。
****************************************************************************/
void  GUI_ClearSCR(void)
{
	GUI_FillSCR(0x00);				// 清屏
}
/***********************************************************************
* 名稱:GUI_Initialize()
* 功能:初始化GUI,包括初始化顯示緩沖區(qū),初始化LCM并清屏.
* 入口參數(shù): 無
* 出口參數(shù):無
* 說明:用戶根據(jù)LCM的實際情況編寫此函數(shù).
***********************************************************************/
void GUI_Initialize(void)
{
	LCM_DispIni();					// 初始化LCM模塊工作模式,純圖形模式
	GUI_FillSCR(0x00);				// 初始化緩沖區(qū)為0x00,并輸出屏幕(清屏)
}

unsigned char const DEC_HEX_TAB[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

/***********************************************************************
* 名稱:GUI_Point()
* 功能:在指定位置上畫點.
* 入口參數(shù):	x		指定點所在列的位置
*		y		指定點所在行的位置
*		color	        顯示顏色(對于黑白LCM,為0時滅,為1時顯示)
* 出口參數(shù):返回值為1時,表示操作成功,為0時表示操作失敗.
* 說明:操作失敗原因是指定地址超出緩沖區(qū)范圍.
***********************************************************************/
unsigned char  GUI_Point(unsigned char x, unsigned char y, TCOLOR color)
{  
	unsigned char bak;

/* 參數(shù)過濾 */
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
   
/* 設(shè)置相應(yīng)的點為1或0 */
   bak = LCM_ReadByte(x,y);
   if(color==0)
   {
   		bak &= (~DEC_HEX_TAB[(y&0x07)]);
   }
   else
   {
   		bak |= DEC_HEX_TAB[(y&0x07)];
   }
   
/* 刷新顯示 */
   LCM_WriteByte(x,y,bak);
   return(1);
}

/****************************************************************************
* 名稱:GUI_ReadPoint()
* 功能:讀取指定點的顏色。
* 入口參數(shù):x		指定點所在列的位置
*      	    y		指定點所在行的位置
*          ret		保存顏色值的指針
* 出口參數(shù):返回0時表示指定地址超出有效范圍。
* 說明:對于單色,設(shè)置ret的d0位為1或0,4級灰度則為d0、d1有效,8位RGB則d0--d7有效,
*      RGB結(jié)構(gòu)則R、G、B變量有效。
****************************************************************************/
int  GUI_ReadPoint(unsigned char x, unsigned char y, TCOLOR *ret)
{  
    TCOLOR  bak;

   /* 參數(shù)過濾 */
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
  
   /* 取得該點顏色(用戶自行更改) */ 
   bak =LCM_ReadByte(x,y);
   if( (bak&(DEC_HEX_TAB[(y&0x07)]))==0 ) *ret = 0x00;
      else  *ret = 0x01;
   
   return(1);
}

/****************************************************************************
* 名稱:GUI_HLine()
* 功能:畫水平線。
* 入口參數(shù): x0		水平線起點所在列的位置
*           y0		水平線起點所在行的位置
*           x1          水平線終點所在列的位置
*           color	顯示顏色(對于黑白色LCM,為0時滅,為1時顯示)
* 出口參數(shù):無
* 說明:操作失敗原因是指定地址超出緩沖區(qū)范圍。
****************************************************************************/
void  GUI_HLine(unsigned char x0, unsigned char y0, unsigned char x1, TCOLOR color) 
{ 
	unsigned char  bak;

   	if(x0>x1) 						// 對x0、x1大小進行排列,以便畫圖
   	{
   		bak = x1;
      	x1 = x0;
      	x0 = bak;
   	}
   
   	do
   	{
   		GUI_Point(x0,y0,color);
      	x0++;
   	}while(x1>x0);
}

/****************************************************************************
* 名稱:GUI_RLine()
* 功能:畫垂直線。
* 入口參數(shù): x0		垂直線起點所在列的位置
*           y0		垂直線起點所在行的位置
*           y1          垂直線終點所在行的位置
*           color	顯示顏色(對于黑白色LCM,為0時滅,為1時顯示)
* 出口參數(shù):無
* 說明:操作失敗原因是指定地址超出緩沖區(qū)范圍。
****************************************************************************/
void  GUI_RLine(unsigned char x0, unsigned char y0, unsigned char y1, TCOLOR color) 
{  
	unsigned char	bak;
	unsigned char	wr_dat;
	
	if(y0>y1)						//對y0,y1大小進行排列,以便畫圖
	{
		bak = y1;
		y1 = y0;
		y0 = bak;
	}

	do
	{
		/* 先讀取當前點的字節(jié)數(shù)據(jù) */
		
		bak = LCM_ReadByte(x0,y0);
  		/* 進行"與"/"或"操作后,將正確的數(shù)據(jù)寫回LCM
   			若y0和y1不是同一字節(jié),則y0--當前字節(jié)結(jié)束,即(y0+8)&0x38,全寫1,或者0.
   			若y0和y1是同一字節(jié),則y0--y1,要全寫1,或者0.
   			方法:dat = 0xff,然后y0清零dat低位,按y1清零高位.*/
		if((y0>>3)!=(y1>>3))
		{
			wr_dat = 0xff<<(y0&0x07);			//清0低位
			if(color)
			{
				wr_dat = bak|wr_dat;			//若color不為0,則顯示
			}
			else
			{
				wr_dat = ~wr_dat;
				wr_dat = bak&wr_dat;
			}
			LCM_WriteByte(x0,y0,wr_dat);
			y0 = (y0+8)&0x38;
		}   			
		else
		{
			wr_dat = 0xff<<(y0&0x07);
			wr_dat = wr_dat&(0xff>>(7-(y1&0x07)));
			if(color)
			{
				wr_dat = bak|wr_dat;			//若color不為0,則顯示
			}
			else
			{
				wr_dat = ~wr_dat;				//若color為0,則清除顯示
				wr_dat = bak&wr_dat;
			}
                        LCM_WriteByte(x0,y0,wr_dat);
           		return;
		}
    }while(y1>y0);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品情趣| 国产在线乱码一区二区三区| 成人午夜视频福利| 国产日韩欧美一区二区三区乱码| 麻豆成人91精品二区三区| 欧美一级精品大片| 国内不卡的二区三区中文字幕 | 成人av动漫在线| 国产精品美女久久久久久久久| 国产盗摄女厕一区二区三区| 国产精品国模大尺度视频| 一本大道综合伊人精品热热| 亚洲午夜日本在线观看| 在线综合+亚洲+欧美中文字幕| 久久99精品国产.久久久久 | 国产亚洲一区二区三区| 成人av网址在线观看| 一区二区三区日韩欧美精品| 欧美一区二区美女| 国产精品538一区二区在线| 成人免费一区二区三区在线观看| 91久久精品日日躁夜夜躁欧美| 日韩高清不卡在线| 国产亚洲短视频| 色狠狠一区二区| 久久97超碰国产精品超碰| 欧美激情在线一区二区三区| 日本丶国产丶欧美色综合| 美国十次了思思久久精品导航| 国产日韩亚洲欧美综合| 欧美色视频一区| 国产精品资源在线看| 综合激情成人伊人| 91精品久久久久久蜜臀| 99re免费视频精品全部| 日日嗨av一区二区三区四区| 国产精品人成在线观看免费| 欧美性大战久久久久久久蜜臀 | 色爱区综合激月婷婷| 五月天激情综合| 国产日韩欧美精品一区| 欧美日韩国产美女| a级精品国产片在线观看| 免费观看一级欧美片| 亚洲欧美综合在线精品| 欧美videos中文字幕| 一本大道综合伊人精品热热| 国内偷窥港台综合视频在线播放| 亚洲与欧洲av电影| 亚洲国产精品黑人久久久| 91精品综合久久久久久| 91视频免费播放| 黄页视频在线91| 日日夜夜精品视频免费| 亚洲免费在线播放| 欧美激情自拍偷拍| 精品欧美一区二区在线观看| 欧美网站一区二区| a在线欧美一区| 国产精品99久久久久久似苏梦涵| 偷拍一区二区三区| 亚洲精品乱码久久久久久黑人 | 成人av高清在线| 国产在线精品一区二区| 免费观看在线综合色| 亚洲成人精品一区二区| 亚洲精品高清在线| 国产精品久久久久婷婷二区次| 欧美mv和日韩mv的网站| 日韩视频在线永久播放| 777xxx欧美| 91麻豆精品国产自产在线 | 欧美日韩国产一级| 色综合久久66| 91丨porny丨户外露出| av电影在线观看不卡| 成人蜜臀av电影| 国产91精品久久久久久久网曝门| 国产一区二区成人久久免费影院| 天天综合日日夜夜精品| 伊人开心综合网| 一区二区国产视频| 亚洲福利一二三区| 亚洲.国产.中文慕字在线| 亚洲va欧美va国产va天堂影院| 国产精品一区二区男女羞羞无遮挡 | 亚洲色图视频网| 中文av一区二区| 国产精品天美传媒沈樵| 国产精品污www在线观看| 欧美激情一区二区三区在线| 中文字幕制服丝袜一区二区三区| 国产精品每日更新| 亚洲欧洲一区二区三区| 亚洲欧洲中文日韩久久av乱码| 亚洲欧美另类综合偷拍| 亚洲激情图片一区| 五月天激情综合网| 免费成人深夜小野草| 国产在线观看免费一区| eeuss国产一区二区三区| 一本一本大道香蕉久在线精品| 欧美色综合天天久久综合精品| 欧美日本在线视频| 久久影院午夜片一区| 亚洲日韩欧美一区二区在线| 亚洲综合一二区| 久久精品国产亚洲a| 成人午夜在线免费| 欧美色手机在线观看| 精品国产91久久久久久久妲己| 中文幕一区二区三区久久蜜桃| 亚洲欧美日韩精品久久久久| 亚洲成年人网站在线观看| 精品一区免费av| av午夜精品一区二区三区| 欧美精品一卡二卡| 亚洲精品在线观| 亚洲免费在线观看视频| 久久成人麻豆午夜电影| 91在线小视频| 最新热久久免费视频| 亚洲一区在线观看网站| 久久99日本精品| 91免费版在线看| 精品成人一区二区| 亚洲精品久久久蜜桃| 久久国产精品99久久人人澡| 色综合天天性综合| 欧美成人精品福利| 亚洲精品免费在线播放| 国内精品久久久久影院色| 欧美亚洲高清一区| 国产视频一区在线播放| 人人爽香蕉精品| 在线观看中文字幕不卡| 国产精品天天摸av网| 麻豆精品在线播放| 欧美午夜影院一区| 中文字幕一区在线| 久久精品二区亚洲w码| 在线观看视频一区| 亚洲欧洲国产日本综合| 国产一区二区三区综合| 91麻豆精品国产91久久久资源速度| 国产精品久久久久aaaa| 国产精品自拍网站| 日韩一区二区电影| 爽好久久久欧美精品| 欧洲一区在线观看| 国产精品久久久久影院老司| 国产在线精品一区二区夜色| 91精品欧美久久久久久动漫| 亚洲国产精品嫩草影院| 99精品欧美一区二区三区小说| 久久久三级国产网站| 美女视频黄频大全不卡视频在线播放| 91久久精品一区二区二区| 亚洲欧美综合色| 99久久精品久久久久久清纯| 国产精品美女久久久久aⅴ| 国产真实乱子伦精品视频| 精品美女在线播放| 九色porny丨国产精品| 欧美一区二区黄色| 日韩高清在线一区| 欧美一区二区日韩| 日韩av一区二区三区四区| 在线播放欧美女士性生活| 丝袜亚洲另类丝袜在线| 欧美日韩在线播放三区四区| 午夜视频一区二区| 欧美美女激情18p| 日韩中文字幕一区二区三区| 欧美丰满美乳xxx高潮www| 性久久久久久久| 欧美一区二区观看视频| 精品一区二区免费视频| 久久久国际精品| 波多野结衣在线一区| 中文字幕在线一区| 91女人视频在线观看| 亚洲精品ww久久久久久p站| 在线观看网站黄不卡| 爽好久久久欧美精品| 精品国产3级a| 成人听书哪个软件好| 亚洲欧美国产77777| 欧美日韩夫妻久久| 久久99精品久久久| 国产日产欧美一区二区视频| av网站一区二区三区| 亚洲图片欧美视频| 欧美mv日韩mv亚洲| 成人网男人的天堂| 亚洲一区二区高清| 精品国产三级电影在线观看| 不卡区在线中文字幕| 亚洲123区在线观看| 久久久99久久精品欧美|