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

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

?? lcdc_driver.c

?? C0851F020單品機DA轉換源碼
?? C
字號:
/************************************************************************************
*  Copyright (c) 2004,西安銘朗電子科技有限責任公司
*            All rights reserved.
*
* 文件名稱: LCDC_Driver.C
* 文件標識: none
* 適用器件: C8051F020 DMC12864
* 
* 摘    要: 本文件是LCD顯示程序;使用外部22.1184MHz晶振
* 
* 當前版本: 1.1
* 作    者: 劉大偉
* 完成日期: 2007年2月1日
*
* 歷史版本: 1.0
* 作    者: 盧 陽
* 完成日期: 2004年11月14日
*
* 歷史版本: 0.9 
* 原  作者: 李林利
* 完成日期: 2004年1月1日
*************************************************************************************/

/*******************************引用外部頭文件***************************************/
#include "c8051f020.h"
#include "LCDC_Driver.h"
#include <INTRINS.H>
#include <math.h>

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

/*********************************全局變量*******************************************/
unsigned int  xdata  addr;
unsigned char xdata  *tp;

/***********************************************************************************
* 函數名稱:LCDC_Init;
*
* 函數功能描述:lcd_init;
*              
* 輸入參數:none;
*
* 返回數據:none;
*
* 注意:    具體Lcd操作請參考DMC12864.PDF;
************************************************************************************/
void LCDC_Init (void)                                           
  {
	DISABLE_INTERRUPTS;		//關中斷
	addr = Lcd_Cs     | 
		   Lcd_CsChip | 
		   Lcd_WrCmd;		//寫命令 (參考Lcd_Driver.h文件宏定義)
	LCDC_WrCmd (Lcd_Dsl);	//Display start line
	LCDC_WrCmd (St_Addr);	//COLOUM ADDRESS
	LCDC_WrCmd (St_Page);	//ROW ADDRESS
	LCDC_WrCmd (Dis_ON );	//Display ON	
	ENABLE_INTERRUPTS;  	//開中斷
 }

/***********************************************************************************
* 函數名稱:LCDC_DisFull;
*
* 函數功能描述: 清屏函數(全部寫慢或清空);
*              
* 輸入參數:unsigned char類型數據,0x00是清屏;0xff是寫滿屏;
*
* 返回數據:none;
*
* 注意:    none;
************************************************************************************/
void LCDC_DisFull (unsigned char Flag)
{
	unsigned char x,y; 

	if (!Flag)						//清屏
	{
		for (y=0; y<8;   y++)
		for (x=0; x<128; x++)                 
			LCDC_WrData (x, y, 0X00);
	}
	else 							//寫滿屏
	{
		for (y=0; y<8;   y++)
		for (x=0; x<128; x++)                
			LCDC_WrData (x, y, 0XFF);
	}
}

/***********************************************************************************
* 函數名稱:LCDC_CheckBusy;
*
* 函數功能描述: 判斷LCD忙等待;
*              
* 輸入參數:none;
*
* 返回數據:none;
*
* 注意:    none;
************************************************************************************/
void LCDC_CheckBusy (void)
{
	addr = Lcd_Cs 	  | 
		   Lcd_CsChip | 
		   Lcd_RdSta;  		//讀狀態(參考Lcd_Driver.h文件宏定義)
	_nop_();_nop_();		//延時等待 
    _nop_();_nop_();
	do						//取Lcd的狀態寄存器內的數據 
		tp = addr; 
	while ((*tp&Chip_Busy)==Chip_Busy);//等待BUSY位清零 Lcd空閑
}

/***********************************************************************************
* 函數名稱:LCDC_WrCmd;
*
* 函數功能描述: 向LCD寫命令;
*              
* 輸入參數:none;
*
* 返回數據:none;
*
* 注意:    none;
************************************************************************************/
void LCDC_WrCmd (unsigned char dd)
{
	DISABLE_INTERRUPTS;		//關中斷
	addr  = Lcd_Cs 	   | 
			Lcd_CsChip | 
			Lcd_WrCmd;   	//寫命令地址 (參考Lcd_Driver.h文件宏定義)
    tp    = addr;
	*tp   = dd;				//寫命令
	addr &= Unto_Lcd;		//改變地址變量 地址不指向Lcd
	_nop_();_nop_();		//延時等待
    _nop_();_nop_();
	ENABLE_INTERRUPTS;		//開中斷
}

/***********************************************************************************
* 函數名稱:LCDC_SetXY;
*
* 函數功能描述: LCD讀寫位置變換;
*              
* 輸入參數:unsigned char類型坐標x,y;
*
* 返回數據:none;
*
* 注意:    詳細請參考DMC12864.PDF;程序中X,Y方向定義與屏定義不同
************************************************************************************/
void LCDC_SetXY (unsigned char x, unsigned char y)
{
	DISABLE_INTERRUPTS; 	//關中斷
    LCDC_CheckBusy ();		//等待Lcd空閑
    y  &= x_addr;			//x賦值 屏蔽掉無用位 加人相關命令
	y  |= St_Page;
	LCDC_WrCmd (y);
	x  &= y_addr;			//Y賦值 屏蔽掉無用位 加人相關命令
	x  |= St_Addr;
	LCDC_WrCmd (x);
	ENABLE_INTERRUPTS;		//開中斷
}

/***********************************************************************************
* 函數名稱:LCDC_WrData;
*
* 函數功能描述:向LCD寫數據;
*              
* 輸入參數:unsigned char類型坐標x,y, unsigned char類型寫入數據dd;
*
* 返回數據:none;
*
* 注意:    none;
************************************************************************************/
void LCDC_WrData (unsigned char x, unsigned char y, unsigned char dd)
{    
   	DISABLE_INTERRUPTS;		//關中斷
	LCDC_SetXY (x,y);		//設置屏上的寫入位置
    LCDC_CheckBusy ();		//等待Lcd空閑
    if (x<64)				//塊1使用 
		tp = Lcd_Cs  | 
			 Lcd_Cs1 | 
			 Lcd_WrDat;		//寫入數據命令
    else					//塊2使用 
		tp = Lcd_Cs  | 
			 Lcd_Cs2 | 
			 Lcd_WrDat;		//寫入數據命令
	*tp = dd;				//數據寫入
	ENABLE_INTERRUPTS;		//關中斷
}

/***********************************************************************************
* 函數名稱:LCDC_RdData;
*
* 函數功能描述:從LCD中讀數據;
*              
* 輸入參數:unsigned char類型坐標x,y, 
*
* 返回數據:unsigned char類型讀出數據;
*
* 注意:    none;
************************************************************************************/
unsigned char LCDC_RdData (unsigned char x, unsigned char y)
{  
	unsigned char xdata readdata;
	LCDC_SetXY (x, y);			//設置屏上的寫入位置
	LCDC_CheckBusy ();			//等待Lcd空閑
	if (x<64)					//塊1使用 
	{
		addr = Lcd_Cs  |
			   Lcd_Cs1 |
			   Lcd_RdDat;		//讀取數據命令
		tp   = Lcd_Cs  |
			   Lcd_Cs1 |
			   Lcd_RdDat;
	}
	else						//塊2使用
	{
		addr = Lcd_Cs  |
			   Lcd_Cs2 |
			   Lcd_RdDat;		//讀取數據命令				
		tp   = Lcd_Cs  |
			   Lcd_Cs2 |
			   Lcd_RdDat;	
	}
	readdata = *tp;				//數據讀出
	LCDC_CheckBusy ();			//等待Lcd空閑
	if (x<64)					//塊1使用 
	{
		addr = Lcd_Cs  |
			   Lcd_Cs1 |
			   Lcd_RdDat;		//讀取數據命令
		tp   = Lcd_Cs  |
			   Lcd_Cs1 |
			   Lcd_RdDat;
	}
	else						//塊2使用
	{
		addr = Lcd_Cs  |
			   Lcd_Cs2 |
			   Lcd_RdDat;		//讀取數據命令				
		tp   = Lcd_Cs  |
			   Lcd_Cs2 |
			   Lcd_RdDat;	
	}
	readdata = *tp;				//數據讀出

	return readdata;
}

/***********************************************************************************
* 函數名稱:LCDC_DrawByte;
*
* 函數功能描述:向LCD寫一個字節數據;
*              
* 輸入參數:BYTE類型坐標x,y;BYTE類型字節數據value;
*
* 返回數據:none;
*
* 注意:    數據顯示在液晶點(x,y)(x,y+1)(x,y+2)(x,y+3)(x,y+4)(x,y+5)(x,y+6)(x,y+7)上,
*           請參考DMC12864.pdf;
***********************************************************************************/
void  LCDC_DrawByte (unsigned char x, y, value)
{
	unsigned char data temp,bit_x;

	bit_x = y%8;						//計算數據寫入目標地址起點所在顯示字節內的位置
	y     = y/8;						//計算數據寫入目標地址起點所在顯示字節
	if (bit_x==0)						//如果起點在顯示字節的"0"位則數據直接寫入
		LCDC_WrData (x, y, value);
	else								//如果起點不在顯示字節的"0"位
	{	
		temp  = LCDC_RdData (x, y);		//讀出數據寫入目標地址起點所在顯示字節內的數據		
		temp &= (0xff>>(8-bit_x));		//保留新數據寫如不占用位的數據
		temp |= (value<<bit_x);			//新數據與原數據組合
		LCDC_WrData (x, y, temp);		//更新LCD上此位置的數據顯示
		temp  = LCDC_RdData(x, y+1);	//讀出數據寫入目標地址末點所在顯示字節內的數據
		temp &= (0xff<<bit_x);			//保留新數據寫如不占用位的數據
		temp |= (value>>(8-bit_x));		//新數據與原數據組合
		LCDC_WrData (x, y+1, temp);		//更新LCD上此位置的數據顯示
	}
}

/***********************************************************************************
* 函數名稱:LCDC_DispWord;
*
* 函數功能描述:向LCD寫一組數據,顯示黑字符;
*              
* 輸入參數:unsiggned char類型寫入起始坐標x,y,unsigned char類型寫入數據code區指針p;
*	    unsigned char類型占用空間line*8行,length列,圖形顏色取反標志位;
*
* 返回數據:none;
*
* 注意:    none;
************************************************************************************/
void LCDC_DispWord (unsigned char x, y, unsigned char code *p, unsigned char line, length, Flag)
{
	unsigned char data i,j; 

	y += (4<<line);	
	if (y>64)
		y = 64;
	y = 64-y;
	if (Flag)
	{
		for (i=0; i<line;   i++)
		for (j=0; j<length; j++)
			LCDC_DrawByte (x+j, y+i*8, *p++);
	}
	else
	{
		for (i=0; i<line;   i++)
		for (j=0; j<length; j++)
			LCDC_DrawByte (x+j, y+i*8, ~*p++);
	}
}

/***********************************************************************************
* 函數名稱:LCDC_DispFWord;
*
* 函數功能描述:向LCD寫一組數據,顯示黑字符;
*              
* 輸入參數:BYTE類型寫入起始坐標x,y; BYTE類型寫入數據xdata區指針p;
*	    BYTE類型占用空間line*8行,length列;BYTE類型顯示數據取反標志位
*		(非零為正常顯示,零為取反)
*
* 返回數據:none;
*
* 注意:    none;
************************************************************************************
void LCDC_DispFWord (unsigned char x, y, unsigned char xdata *p, unsigned char line, length, Flag)
{
	unsigned char data i,j;

	y += (4<<line);	
	if (y>64)
		y=64;
	y = 64-y;		
	if (Flag)
	{
		for (i=0; i<line;   i++)
		for (j=0; j<length; j++)
			LCDC_DrawByte(x+j, y+i*8, *p++);
	}
	else
	{
		for (i=0; i<line;   i++)
		for (j=0; j<length; j++)
			LCDC_DrawByte (x+j, y+i*8, ~*p++);
	}	
}

/************************************************************************************
* 文件結束
************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看一区二区精品视频| 久久伊99综合婷婷久久伊| 欧美日韩在线直播| 26uuu久久天堂性欧美| 一区二区三区产品免费精品久久75| 精品一区二区在线免费观看| 色哟哟精品一区| 国产网站一区二区三区| 午夜精品久久久久久久| 99久久伊人精品| 久久久久国产精品厨房| 麻豆91在线观看| 精品视频一区 二区 三区| 国产精品传媒视频| 国产福利91精品| 亚洲精品在线免费观看视频| 天堂影院一区二区| 欧美在线观看一区二区| 亚洲精品乱码久久久久| 成人动漫av在线| 国产精品久久久久久福利一牛影视| 国产一区三区三区| 精品噜噜噜噜久久久久久久久试看 | 亚洲综合在线第一页| 成人av在线播放网站| 久久久久国色av免费看影院| 久久99蜜桃精品| 精品欧美乱码久久久久久| 奇米777欧美一区二区| 欧美日本在线视频| 午夜天堂影视香蕉久久| 欧美视频在线播放| 日韩福利电影在线| 欧美一区二区三区日韩| 日产精品久久久久久久性色| 精品视频1区2区| 偷拍亚洲欧洲综合| 91精品久久久久久久99蜜桃| 另类小说一区二区三区| 久久美女高清视频| 成人激情免费视频| 一区二区三区免费网站| 欧美在线观看视频在线| 国产福利一区二区三区视频| 欧美激情一二三区| 91免费在线看| 日韩国产欧美视频| 久久久欧美精品sm网站| 不卡的av电影| 亚洲综合999| 欧美大片拔萝卜| 国产a视频精品免费观看| 亚洲欧洲无码一区二区三区| 欧美午夜电影网| 蜜桃视频一区二区三区在线观看| 亚洲精品一线二线三线| 99久久精品国产精品久久| 亚洲一区二区成人在线观看| 欧美刺激脚交jootjob| 国产v综合v亚洲欧| 亚洲影院理伦片| 26uuu成人网一区二区三区| 成人av电影在线网| 亚洲成人免费影院| 欧美国产日本韩| 欧美喷潮久久久xxxxx| 国产一区二区三区| 一区二区三区加勒比av| 精品国产乱码91久久久久久网站| 成人av网址在线| 日韩成人一区二区| 中文字幕亚洲区| 日韩免费高清电影| 欧美在线视频你懂得| 国内精品免费**视频| 亚洲宅男天堂在线观看无病毒| 日韩你懂的电影在线观看| 91浏览器入口在线观看| 精品亚洲aⅴ乱码一区二区三区| 亚洲视频免费在线| 久久免费偷拍视频| 精品视频一区二区三区免费| 不卡一区在线观看| 国产一区二区三区四区五区入口| 亚洲视频中文字幕| 国产亚洲一区二区在线观看| 欧美久久久影院| 99在线精品一区二区三区| 狠狠色狠狠色综合系列| 亚洲成人动漫av| 亚洲六月丁香色婷婷综合久久| 精品国产精品网麻豆系列| 欧美色偷偷大香| 色综合久久66| www.久久精品| 国产99久久精品| 国产在线视频一区二区| 日韩电影网1区2区| 天堂成人国产精品一区| 亚洲国产日韩a在线播放性色| 日韩毛片视频在线看| 国产精品亲子乱子伦xxxx裸| 久久久三级国产网站| 久久一区二区三区四区| 精品国产髙清在线看国产毛片| 欧美男女性生活在线直播观看| 色综合久久久久综合体| 99精品欧美一区二区三区综合在线| 国产91精品免费| 高清国产一区二区三区| 国产成人精品亚洲午夜麻豆| 激情文学综合插| 精品在线观看视频| 久久99热国产| 国产精品一区二区黑丝| 东方aⅴ免费观看久久av| 成人免费毛片a| 色综合久久中文字幕| 一本大道久久a久久精二百| 欧美综合亚洲图片综合区| 色欧美乱欧美15图片| 欧美性色综合网| 欧美精品自拍偷拍动漫精品| 91精品国产aⅴ一区二区| 欧美一区二区不卡视频| 久久久久久99精品| 亚洲视频在线一区观看| 亚洲成av人影院在线观看网| 视频一区二区三区中文字幕| 免费观看在线综合色| 国产一区二区三区黄视频 | 久久中文字幕电影| 久久老女人爱爱| 最新国产精品久久精品| 亚洲自拍都市欧美小说| 久久精品999| 粉嫩蜜臀av国产精品网站| 色香蕉成人二区免费| 欧美疯狂做受xxxx富婆| 久久免费偷拍视频| 一区二区三区日韩在线观看| 日韩黄色免费网站| 国产成人av资源| 欧美亚洲免费在线一区| 精品国产亚洲在线| 亚洲欧美电影院| 蜜桃视频在线观看一区| 99在线精品视频| 欧美xxxxx牲另类人与| 中文字幕中文字幕在线一区| 午夜精品久久久久影视| 国产成人在线影院| 欧日韩精品视频| 国产亚洲短视频| 日韩电影在线免费观看| 成人99免费视频| 日韩美女在线视频 | 午夜影视日本亚洲欧洲精品| 国产在线精品一区二区| 在线一区二区三区四区五区| 欧美刺激午夜性久久久久久久| 亚洲精品国产第一综合99久久| 久久国产福利国产秒拍| 在线一区二区三区| 国产欧美视频一区二区| 日本欧美在线看| 一本大道久久a久久综合婷婷| 久久网站最新地址| 日韩一区精品字幕| 色婷婷狠狠综合| 国产欧美一区二区三区在线看蜜臀| 午夜精彩视频在线观看不卡| 成人av网在线| 久久久美女毛片| 久久黄色级2电影| 欧美精品一二三区| 一区二区三区四区视频精品免费| 国产一区欧美一区| 日韩美女视频在线| 日本系列欧美系列| 欧美四级电影网| 亚洲精品免费在线播放| 成人免费视频网站在线观看| 亚洲精品在线免费播放| 久久精品999| 精品久久免费看| 毛片av一区二区| 日韩一区二区中文字幕| 五月综合激情网| 欧美日韩免费不卡视频一区二区三区| 亚洲激情综合网| 色中色一区二区| 亚洲乱码精品一二三四区日韩在线| 国产.精品.日韩.另类.中文.在线.播放| 精品盗摄一区二区三区| 久久精品久久精品| 欧美zozozo| 国产福利一区二区三区在线视频| 久久看人人爽人人| 粉嫩在线一区二区三区视频|