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

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

?? lcd1602.c

?? cortex-m0 LCD1602程序
?? C
字號:
/*********************淘寶:http://quanmao.taobao.com **************************
程序名:    LCD1602.C
編寫人:    李全茂 
編寫時間:  2010年7月15日
硬件支持:  WJ-4.0開發板,單片機M0516,通過跳線連接
接口說明:  
修改日志:  
  NO.1-     移植到新塘的M0516上
*******************************************************************************
說明:
*****************技術論壇:http://www.wang1jin.com/bbs*************************/
#include "LCD1602.H"
//#include "M051Series.h"
#include "NUC1xx.h"
#include "DrvGPIO.h"

/*******************************************************************************
// 引腳定義 // (使用者根據實際更改)
******************************************************************************/
#define LCD_DB_Port E_GPA

//#define LCD_Ctr_Port E_PORT1
//#define LCD_PW_GND E_GPE,5,E_IO_OUTPUT	//接LCD1602 VSSPin,需要強制輸出0,做GND用

#define LCD_RS 	 E_GPC,15
#define LCD_RW	 E_GPC,6
#define LCD_EN	 E_GPC,7

#define	LCD_POWER_ON	DrvGPIO_ClrBit(E_GPE,5);	  //接LCD1602 VSSPin,需要強制輸出0,做GND用
#define 	LCD_VO_Adj		DrvGPIO_ClrBit(E_GPC,14); //對比度調節

#define 	LCD_RS_Data		DrvGPIO_SetBit(LCD_RS);	// 數據寄存器
#define	LCD_RS_Reg		DrvGPIO_ClrBit(LCD_RS);  // 指令寄存器

#define	LCD_RW_Read		DrvGPIO_SetBit(LCD_RW);	// 讀
#define	LCD_RW_Write		DrvGPIO_ClrBit(LCD_RW);	// 寫

#define	LCD_EN_Set		DrvGPIO_SetBit(E_GPC,7);	// 高
#define	LCD_EN_Clr		DrvGPIO_ClrBit(E_GPC,7);	// 低 

//sbit	LCD_RS = P1^0;		//寄存器選擇:1 數據;0 指令
//sbit 	LCD_RW = P1^1;		//讀寫選擇:1 讀;0 寫
//sbit 	LCD_EN = P1^2;		//使能,讀時為高電平,寫時為高脈沖
//sbit	LCD_Bsy= P0^7;		//LCD DB7為忙檢測端,1為忙,0為空閑
/*******************************************************************************
// 定義LCD1602指令集 // (詳細請見技術手冊)
******************************************************************************/
#define			CMD_clear		0x01             // 清除屏幕
#define			CMD_back		0x02             // DDRAM回零位
#define			CMD_dec1		0x04             // 讀入后AC(指針)減1,向左寫
#define			CMD_add1		0x06             // 讀入后AC(指針)加1,向右寫
#define			CMD_dis_gb1		0x0f             // 開顯示_開光標_開光標閃爍
#define			CMD_dis_gb2		0x0e             // 開顯示_開光標_關光標閃爍
#define			CMD_dis_gb3		0x0c             // 開顯示_關光標_關光標閃爍
#define			CMD_OFF_dis		0x08             // 關顯示_關光標_關光標閃爍
#define			CMD_set82		0x38             // 8位總線_2行顯示

/*============================================================
液晶指令說明:
0x01-------------->清除屏幕,置AC為0,光標回位。
0x02-------------->DDRAM 地址為0,顯示回原位,DDRAM內容不變.
0x03-------------->DDRAM 地址為0,顯示回原位,DDRAM內容不變.
**********MODE指令************
0x04-------------->設置光標移動方向減量方式,并指定顯示不移動。
0x05-------------->設置光標移動方向減量方式,并指定顯示移動。
0x06-------------->設置光標移動方向增量方式,并指定顯示不移動。
0x07-------------->設置光標移動方向增量方式,并指定顯示移動。
**********DSPOFF指令************
0x08-------------->設置顯示關、光標關、光標所在字符不閃爍.
**********DSPON指令************
0x0c-------------->顯示開
0x0e-------------->顯示開,光標開
0x0f-------------->顯示開,光標開,光標閃爍
0x10-------------->光標移位,左移
0x14-------------->光標移位,右移
0x18-------------->顯示移位,左移
0x1c-------------->顯示移位,右移
**********INIT指令************
0x20-------------->4BIT模式,顯示一行,5x7字體
0x24-------------->4BIT模式,顯示一行,5x10字體
0x28-------------->4BIT模式,顯示兩行,5x7字體
0x2c-------------->4BIT模式,顯示兩行,5x10字體
0x30-------------->8BIT模式,顯示一行,5x7字體
0x34-------------->8BIT模式,顯示一行,5x10字體
0x38-------------->8BIT模式,顯示兩行,5x7字體
0x3c-------------->8BIT模式,顯示兩行,5x10字體
============================================================*/



unsigned char Table[] = {0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00   // 日
};
static void LCD_GPIO_Init()
{
	//DrvGPIO_Open(LCD_PW_GND); 	// 1602上電
	LCD_POWER_ON;
	LCD_VO_Adj;
}

void delaynms(unsigned char n)
{
 	unsigned char i,j;
	unsigned int  k;
  	i=2;							//主頻多少i就多少
									//延時用這個很無奈,不同的系統有不同的方法
									//好在只有初始化時使用,對系統影響不大
	for(;i>0;i--)
	   {
	     for(j=0;j<n;j++)
	      {
	        for(k=0;k<980;k++);
	      }
	   }
}

/**********************************************************************
延時
**********************************************************************/
void delay_nus(unsigned int t)
{
 unsigned int i=0;
 while(t--)
   {
    for(i=0;i<1;i++);
    }
}

/*******************************************************************************
描  述:忙檢測 ,直到空閑時退出
參  數:無
返回值:無
備  注:LCD1602 DB7為1是,LCD1602忙,否則空閑。
******************************************************************************/
static void Checkbsy()
{
    unsigned char temp;
    do{
        temp = ReadRegister(Com_Reg);
    }while(temp & 0x80);

//	LCD_RS = Com_Reg;
//	LCD_RW = READ;
//	LCD_DB = 0xff;	 //通過往端口寫1,使單片機進入讀模式
//	LCD_EN = 1;
//	while(LCD_Bsy);	 //等到LCD1602空閑時退出
//	LCD_EN = 0;
}
/*******************************************************************************
描  述:寫寄存器
參  數:_Register 要操作的寄存器(Com_reg 指令寄存器,Data_Reg 數據寄存器)
		_Data 要寫入的數據
返回值:無
備  注:
******************************************************************************/
static void WriteRegister(unsigned char _Register,int32_t _Data)
{
	Checkbsy();

	if(_Register != Data_Reg){
		LCD_RS_Reg;
	}else{
		LCD_RS_Data;
	}
//	delay_nus(2);
	LCD_RW_Write;
//	delay_nus(2); 	
	// LCD_RS = _Register;
	// LCD_RW = WRITE;
	// LCD_EN = 1;

	DrvGPIO_SetPortBits(LCD_DB_Port,_Data<<2);
	LCD_EN_Set;
	//delay_nus(2);
//	delay_nus(2);
	//LCD_DB = _Data;		//送數據
	//LCD_EN = 0;
	LCD_EN_Clr;	
}

/*******************************************************************************
描  述:寫CGROM
參  數:_len 要寫入crgrom區的數據長度,_len最大為64
返回值:無
備  注:將預先定義好的字模寫入cgram
******************************************************************************/
void CgramWrite(unsigned char _len)
{
	unsigned char i;
	WriteRegister(Com_Reg,0x06);	// 設置cgrom地址自動加1
	WriteRegister(Com_Reg,0x40);	// cgrom 起始地址
	for(i=0;i<_len;i++)
	{
		WriteRegister(Data_Reg,Table[i]); // 按數組寫入數據
	}
}

/*******************************************************************************
描  述:初始化LCD1602
參  數:
返回值:
備  注:8位2行顯示,顯示光標,閃爍
*******************************************************************************/
void LCD1602_Init(void)
{
	LCD_GPIO_Init();
	delaynms(15);
	WriteRegister(Com_Reg,CMD_set82);//8位點陣模式
	//delaynms(150);
	WriteRegister(Com_Reg,CMD_set82);
	//delaynms(150);
	WriteRegister(Com_Reg,CMD_set82);//8位點陣模式
	//delaynms(150);
	WriteRegister(Com_Reg,CMD_set82);//8位點陣模式 
	WriteRegister(Com_Reg,CMD_clear);// 清屏
	delaynms(15);
	WriteRegister(Com_Reg,CMD_dis_gb1);// 開顯示,顯示光標,閃爍
	CgramWrite(8);	
	WriteRegister(Com_Reg,CMD_clear);// 清屏
	delaynms(15);
}

/*******************************************************************************
描  述:設置顯示位置
參  數:x 列, y 行
返回值:
備  注:x和y均從0開始,y最大為1
*******************************************************************************/
static void LCD1602_SetXY(unsigned char x,unsigned char y)
{
	if(y == 0)
	{
		WriteRegister(Com_Reg,0x80+x);	// 第一行
	}else{
		WriteRegister(Com_Reg,0xC0+x);	// 第二行
	}
}

/*******************************************************************************
描  述:在指定位置顯示一個字符
參  數:x 列, y 行 ,Data為要顯示的字符
返回值:
備  注:x和y均從0開始,y最大為1
*******************************************************************************/
void LCD1602_WriteByte(unsigned char x,unsigned char y,unsigned char Data)
{
	LCD1602_SetXY(x,y);	// 設置地址
	WriteRegister(Data_Reg,Data); // 將要顯示的字符寫入數據寄存器
}

/*******************************************************************************
描  述:從指定位置開始顯示字符串
參  數:x 列, y 行 ,*String為要顯示的字符串
返回值:
備  注:x和y均從0開始,y最大為1
*******************************************************************************/
void LCD1602_WriteString(unsigned char x,unsigned char y,unsigned char *String)
{
	LCD1602_SetXY(x,y);
	while(*String)	// 判斷是否已經寫完
	{
		WriteRegister(Data_Reg,*String++); // 寫入當前指向的字符,并將指針指向下一個字符
	}
}

/*******************************************************************************
描  述:讀寄存器
參  數:_Register 要操作的寄存器(Com_reg 指令寄存器,Data_Reg 數據寄存器)
返回值:數據寄存器或指令寄存器的內容
備  注:
******************************************************************************/
unsigned char ReadRegister(unsigned char _Register)
{
	int32_t Data; //聲明一個變量,用來保存從lcd1602讀取到的值
    int32_t temp;
	if(_Register != Data_Reg){
		LCD_RS_Reg;
	}else{
		LCD_RS_Data;
	}
	//delay_nus(2);
	LCD_RW_Read;
	delay_nus(2);
	// LCD_RS = _Register;
	// LCD_RW = READ;
	//DrvGPIO_SetPortBits(LCD_DB_Port,0xff);
	//LCD_DB = 0xff;	 //通過往端口寫1,使單片機進入讀模式
	//LCD_EN = 1;
	LCD_EN_Set;
	delay_nus(2);
	Data = DrvGPIO_GetPortBits(LCD_DB_Port);
	//delay_nus(2);
	LCD_EN_Clr;
	//delay_nus(2);
    temp=Data>>2;
	return (int8_t)(Data>>2);	//返回到的值
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清一级片在线| 中文一区二区在线观看| 亚洲精品视频在线观看网站| 成人性生交大片免费看视频在线| 日韩欧美国产wwwww| 麻豆专区一区二区三区四区五区| 日韩欧美综合在线| 国内成+人亚洲+欧美+综合在线 | av在线不卡电影| 中文字幕一区在线观看| 色呦呦网站一区| 天堂成人免费av电影一区| 欧美一级一级性生活免费录像| 另类专区欧美蜜桃臀第一页| 国产视频911| 欧洲精品一区二区三区在线观看| 亚洲成人午夜影院| 亚洲精品一线二线三线| eeuss鲁片一区二区三区| 亚洲已满18点击进入久久| 91精品国产乱码| 国产成人精品免费看| 国产精品高潮呻吟久久| 欧美日韩在线观看一区二区| 卡一卡二国产精品| 成人欧美一区二区三区黑人麻豆| 欧美亚日韩国产aⅴ精品中极品| 美女免费视频一区二区| 国产精品丝袜久久久久久app| 91国产福利在线| 国产呦精品一区二区三区网站| 国产精品久久久久7777按摩 | 午夜国产精品影院在线观看| 日韩欧美国产高清| 色综合久久精品| 韩国三级电影一区二区| 一区二区三区在线免费观看| 欧美一区二区三区免费| 懂色av中文一区二区三区| 亚洲成人免费看| 1024成人网色www| 日韩欧美中文字幕制服| 91在线观看一区二区| 欧美三级电影网| 国产精品资源在线观看| 亚洲va在线va天堂| 国产精品久久久久影院| 精品少妇一区二区三区日产乱码 | 精品国产1区2区3区| 97久久精品人人澡人人爽| 免费看欧美女人艹b| 亚洲制服丝袜在线| 国产精品乱码久久久久久| 日韩一区二区免费视频| 欧洲精品一区二区三区在线观看| 国产传媒久久文化传媒| 久久er精品视频| 日韩精品视频网站| 一区二区三区在线不卡| 一区二区中文视频| 国产欧美精品日韩区二区麻豆天美| 7777女厕盗摄久久久| 色狠狠av一区二区三区| 成人va在线观看| 国产精品一区二区在线播放| 久久99精品国产91久久来源| 午夜精品免费在线| 亚洲成人中文在线| 亚洲香蕉伊在人在线观| 亚洲激情图片一区| 亚洲欧洲另类国产综合| 国产精品三级av| 久久免费午夜影院| 2021国产精品久久精品| 精品国产一区二区三区不卡 | 国产精品久久久久影院亚瑟| 国产欧美视频在线观看| 久久嫩草精品久久久久| 久久一留热品黄| 国产视频一区在线播放| 久久精品日韩一区二区三区| 久久久久国产免费免费| 国产亚洲精品bt天堂精选| 久久久国产精品午夜一区ai换脸| 日韩美女一区二区三区| 久久色视频免费观看| 国产亚洲成aⅴ人片在线观看 | 欧美日韩在线综合| 宅男在线国产精品| 欧美成人国产一区二区| 欧美va亚洲va| 国产精品三级视频| 亚洲精品国产a久久久久久| 亚洲黄色免费电影| 亚洲sss视频在线视频| 日韩高清在线电影| 狠狠色丁香久久婷婷综| 高清视频一区二区| 91污片在线观看| 欧美日韩中文一区| 日韩欧美卡一卡二| 欧美国产精品中文字幕| 一区二区三区在线免费视频| 石原莉奈在线亚洲二区| 韩国成人福利片在线播放| 国产做a爰片久久毛片| 99精品欧美一区二区三区小说| 91精彩视频在线观看| 亚洲一区二区不卡免费| 美国毛片一区二区三区| 不卡av电影在线播放| 欧美日韩中文一区| 久久久久久久久久久久电影 | 在线精品视频一区二区三四| 欧美美女激情18p| 久久久久久一二三区| 亚洲精品免费在线播放| 免播放器亚洲一区| 91视视频在线直接观看在线看网页在线看| 在线亚洲一区二区| 久久综合丝袜日本网| 亚洲综合激情网| 久久99久久精品| 色婷婷av一区二区三区之一色屋| 欧美一区二区大片| 亚洲色大成网站www久久九九| 日本不卡123| 色8久久精品久久久久久蜜| 久久只精品国产| 亚洲动漫第一页| 成人动漫精品一区二区| 欧美一级搡bbbb搡bbbb| 亚洲欧美色综合| 国产麻豆精品久久一二三| 欧美日韩电影在线播放| 国产精品每日更新在线播放网址| 午夜影院久久久| 91视频一区二区| 久久亚洲综合色| 日韩av电影天堂| 在线观看国产日韩| 自拍偷拍欧美激情| 国产一区二区三区四区五区入口 | 欧美不卡一区二区三区四区| 亚洲天天做日日做天天谢日日欢| 久久精品国产99国产精品| 欧美在线观看一区二区| 欧美经典三级视频一区二区三区| 日本视频一区二区三区| 91成人看片片| 日韩美女视频一区二区 | 中文字幕国产一区二区| 精品亚洲欧美一区| 日韩欧美国产电影| 三级在线观看一区二区| 91黄视频在线| 亚洲免费观看高清在线观看| 成人午夜精品一区二区三区| 精品国产一区二区三区忘忧草| 午夜精品久久久久久久99樱桃| 92精品国产成人观看免费 | 91精品1区2区| 亚洲精品视频免费观看| 99九九99九九九视频精品| 国产欧美日韩另类一区| 国产精品亚洲成人| 久久久久国产精品厨房| 国产成人精品免费在线| 欧美激情艳妇裸体舞| 成人午夜av在线| 国产精品美女久久久久久| av资源站一区| 亚洲视频你懂的| 在线中文字幕一区二区| 亚洲午夜精品在线| 欧美精品v国产精品v日韩精品| 亚洲五月六月丁香激情| 5858s免费视频成人| 蜜臀av性久久久久蜜臀aⅴ| 日韩欧美激情四射| 国产毛片精品国产一区二区三区| 久久女同性恋中文字幕| eeuss鲁片一区二区三区在线观看| 国产精品久久久久婷婷| 在线观看av一区| 热久久久久久久| 狂野欧美性猛交blacked| 337p日本欧洲亚洲大胆精品 | 欧美激情一区二区三区在线| 成人福利视频网站| 亚洲午夜久久久久久久久久久| 欧美日韩一级片网站| 九九国产精品视频| 中文字幕不卡在线观看| 色999日韩国产欧美一区二区| 丝袜美腿高跟呻吟高潮一区| 亚洲精品一区二区在线观看| 成人av网址在线观看| 午夜电影网亚洲视频| 日韩欧美中文一区|