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

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

?? lcd6963.asm

?? 6963控制其的液晶測試程序
?? ASM
字號:
/* This file is designed for the LCD display.*/
/* It is designed by Lijingjiao*/
#include "gp32.h"
/* Authorize interrupts*/
#define cli() _asm("cli\n")
/* disable interrupts*/
#define sei() _asm("sei\n")
#define nop() _asm("nop\n")

/*數據類型定義部分*/
typedef unsigned int Uint; /*無符號整型數據類型的定義*/
typedef unsigned char Uchar; /*無符號整型數據類型的定義*/
typedef struct bits {
	unsigned char b0:1;
	unsigned char b1:1;
	unsigned char b2:1;
	unsigned char b3:1;
	unsigned char b4:1;
	unsigned char b5:1;
	unsigned char b6:1;
	unsigned char b7:1;
	} BITS;
typedef union bit_char {
	unsigned char byte;
	BITS b;
	} BIT_CHAR;
#define BIT0 (unsigned char)0x01
#define BIT1 (unsigned char)0x02
#define BIT2 (unsigned char)0x04
#define BIT3 (unsigned char)0x08
#define BIT4 (unsigned char)0x10
#define BIT5 (unsigned char)0x20
#define BIT6 (unsigned char)0x40
#define BIT7 (unsigned char)0x80

#define BSET(x, y)  ((x).b.b ## y = 1)
#define BCLR(x, y)  ((x).b.b ## y = 0)
@tiny volatile BIT_CHAR PTC @0x02;
Uchar command,data;
Uchar temp;
Uint i,k;
Uint data1,data2;
const Uint start=0x0800;

const Uchar KeyValue[]={0xfe,0xfd,0xfb,0xf7};/*逐行掃描*/
const Uchar KeyTable[16]={0xEE,0xDE,0xBE,0x7E,
  						  0xED,0xDD,0xBD,0x7D,
  						  0xEB,0xDB,0xBB,0x7B,
  						  0xE7,0xD7,0xB7,0x77,
  						  };

const Uint ELength=21;
const Uchar ETable[21]={0x37,0x25,0x2c,0x23,0x2f,0x2d,0x25,0X00,0x34,0x2f,0X00,//"WELCOME TO "
		       0x35,0x33,0x25,0x00,0x34,0x16,0x19,0x16,0x13,0x23};//"USE T6963C"

const Uint CCLength=352;
const Uchar EXPRT1[22]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,0xa0,0xa2,0xa4,0xa6,0xa8,0xaa};
const Uchar EXPRT2[22]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d,0x8f,0x91,0x93,0x95,0x97,0x99,0x9b,0x9d,0x9f,0xa1,0xa3,0xa5,0xa7,0xa9,0xab};
					
const Uchar CCTable[352]={
	0x01,0x3F,0x24,0x3F,0x26,0x2D,0x34,0x25,0x2F,0x20,0x2F,0x20,0x5F,0x40,0x82,0x01,
	0x00,0xFE,0x20,0xFC,0x30,0x68,0xA6,0x20,0xF8,0x80,0xFC,0x80,0xFE,0x80,0x80,0x00,//摩
	0x20,0x20,0x23,0xF8,0x20,0x20,0x28,0x37,0xE0,0x20,0x20,0x20,0x20,0x20,0xA0,0x40,
	0x00,0x3C,0xC0,0x40,0x40,0x40,0x40,0xFE,0x40,0x40,0x40,0x40,0x42,0x42,0x3E,0x00,//托
	0x00,0x3F,0x22,0x22,0x22,0x3F,0x22,0x03,0x06,0x0C,0x12,0x61,0x00,0x03,0x0C,0xF0,
	0x00,0xFC,0x44,0x44,0x44,0xFC,0x00,0xFC,0x08,0x08,0x10,0x20,0xC0,0x00,0x00,0x00,//羅
	0x10,0x10,0x10,0x11,0xFC,0x10,0x15,0x18,0x30,0xD0,0x10,0x10,0x10,0x17,0x50,0x20,
	0x80,0x60,0x20,0xFE,0x00,0x08,0x0C,0x88,0x88,0x48,0x50,0x50,0x50,0xFE,0x00,0x00,//拉
	0x08,0x06,0x04,0x3F,0x21,0x3F,0x21,0x21,0x3F,0x21,0x01,0xFF,0x01,0x01,0x01,0x01,
	0x20,0x30,0x40,0xF8,0x08,0xF8,0x08,0x08,0xF8,0x08,0x00,0xFE,0x00,0x00,0x00,0x00,//單
	0x00,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x20,0x20,0x40,0x80,
	0x40,0x40,0x40,0x44,0xFE,0x00,0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,//片
	0x10,0x10,0x10,0xFE,0x10,0x10,0x38,0x34,0x54,0x50,0x91,0x11,0x12,0x12,0x14,0x10,
	0x00,0xF8,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x08,0x0A,0x0A,0x0A,0x06,0x00,//機
	0x20,0x13,0x10,0x40,0x47,0x44,0x44,0x47,0x44,0x44,0x47,0x40,0x40,0x40,0x40,0x40,
	0x00,0xFC,0x04,0x04,0xE4,0x24,0x24,0xE4,0x24,0x24,0xE4,0x04,0x04,0x04,0x14,0x08,//間
	0x10,0x10,0x13,0xFD,0x10,0x17,0x14,0x18,0x30,0xDF,0x11,0x13,0x10,0x10,0x51,0x26,
	0x40,0x20,0xFC,0x08,0x90,0xFE,0x00,0x80,0x80,0xFE,0x10,0x10,0xE0,0x50,0x8C,0x04,//接
	0x10,0x10,0x10,0xFD,0x11,0x10,0x14,0x19,0x30,0xD1,0x10,0x10,0x10,0x10,0x53,0x20,
	0x00,0x20,0x10,0xFE,0x04,0x50,0x8C,0x04,0x00,0xFC,0x20,0x20,0x20,0x20,0xFE,0x00,//控
	0x24,0x34,0x24,0x3F,0x44,0x04,0x7F,0x04,0x3F,0x24,0x24,0x24,0x24,0x27,0x05,0x04,
	0x04,0x04,0x24,0xA4,0x24,0x24,0xA4,0x24,0xA4,0xA4,0xA4,0xA4,0x84,0x84,0x14,0x08,//制
	};
const Uint ptr[]={10,12,20,35,40,15,18,50};
/*延遲1ms*/
static void Wait1ms(void) {
  int cnt = 0;
  while (cnt <80) cnt++;
}
/*延遲n ms. */ 
void WaitNms(int n){
   int i;
   for(i=1;i<=n;i++) Wait1ms();
}
/*讀狀態位0和1 */
void ST01Read(void){
		PTB=0x00;
		DDRB=0x00;              //設置PTB口為輸入方向
	while(1){	
		BSET(PTC,2);		//C/D=1 
		BCLR(PTC,1);    	///RD=0
		temp=PTB;               //將PTB口數據送給變量temp  
		BSET(PTC,1);		///RD=1 	
		if ((temp&0x03)==0x03)  break;  /*判斷指令、數據讀寫狀態是否準備好*/
	}
}
/*讀狀態位3 */
void ST3Read(void){
		PTB=0x00;
		DDRB=0x00;    //設置PTB口為輸入方向
	while(1){		 
		BSET(PTC,2);	//C/D=1
		BCLR(PTC,1);	// /RD=0 
		temp=PTB;
		BSET(PTC,1);	// /RD=1 	
		if ((temp&8)!=0) {break;} 	//判斷數據自動寫狀態是否準備好
	}
}
/*讀狀態位6*/
void ST6Read(void){
		PTB=0x00;
		DDRB=0x00;      //設置PTB口為輸入方向
	while(1){		 
		BSET(PTC,2);	//C/D=1
		BCLR(PTC,1);	// /RD=0 
		temp=PTB;
		BSET(PTC,1);	// /RD=1	
		if ((temp&0x40)==0) {break;} 	// 判斷屏讀或屏拷貝出錯狀態
	}
}
/*寫數據*/
void WRData(Uchar data){
	DDRB=0xff;   //設置PTB口為輸出方向
	BCLR(PTC,2);		// C/D=0
	BCLR(PTC,0);		// /WR=0
	PTB=data;
	BSET(PTC,0);		// /WR=1
}
/*讀數據*/
void RDData(void){
	ST01Read();             //讀狀態位0和1
	BCLR(PTC,2);		// C/D=0
	BCLR(PTC,1);		// RD=0
	data2=PTB;		// 讀取數據
	BSET(PTC,1);		// RD=1
}
	
/*寫命令*/
void WRCommand(Uchar command){
	DDRB=0xff;     //設置PTB口為輸出方向
	BCLR(PTC,0);		// /WR=0 
	PTB=command;      //將命令送PTB口
	BSET(PTC,0);		// /WR=1
}
/*無參數指令*/	
void WRCommandOne(void){
	ST01Read();          //讀狀態位0和1
	WRCommand(command);	/*寫命令*/
}
/*單參數指令*/
void WRCommandTwo(void){
	ST01Read();
	WRData(data2);		/*寫數據*/
	ST01Read();
	WRCommand(command);	/*寫命令*/
}
/*雙參數指令*/
void WRCommandMany(void){
	ST01Read();
	WRData(data1);		/*寫數據*/
	ST01Read();
	WRData(data2);		/*寫數據*/
	ST01Read();		
	WRCommand(command);	/*寫命令*/
}
/*初始化T6963 LCD 顯示.*/
void Init_LCD_Graphic(void){
	/*設置文本顯示首地址*/ 
	data1=0x00;
	data2=0x00;
	command=0x40;
	WRCommandMany();
	
	/*設置文本顯示區寬度*/
	data1=0x28;		/*40字節*/
	data2=0x00;
	command=0x41;
	WRCommandMany();
	
	/*設置圖形顯示區首地址*/
	data1=0x00;
	data2=0x08;		/*首地址0x0800*/
	command=0x42;
	WRCommandMany();
	
	/*設置圖形顯示區寬度*/
	data1=0x28;		/*40字節*/
	data2=0x00;
	command=0x43;
	WRCommandMany();
		
	/*設置顯示方式*/	
	command=0x80;		/*啟用內部字符發生器,顯示方式是文本與圖形邏輯或*/
	WRCommandOne();
	
	/*設置顯示狀態*/	
	command=0x9f;		/*啟用光標閃爍、光標顯示、文本顯示、圖形顯示*/
	WRCommandOne();
   
}
/*清顯示RAM*/
void ClrGraphic(void){
	/*設置顯示地址*/
	data1=0x00;		/*低字節*/
	data2=0x00;		/*高字節*/ 
	command=0x24;		
	WRCommandMany();
	
	/*進入自動寫方式*/
	command=0xb0;
	WRCommandOne();	
	/*清8KRAM*/ 	
	data1=0x00;
   	for(i=0;i<0x2000;i++){
   		ST3Read();
   		WRData(data1);
   	}   	
   	/*退出自動寫方式*/
   	command=0xb2;
	WRCommandOne();
}
void TextDisplay(void){
	/*設置顯示地址*/
	data1=84;	//在第3行第4列顯示文本字符
	data2=0x00; 
	command=0x24;
	WRCommandMany();	
	/*進入自動寫方式*/
	command=0xb0;
	WRCommandOne();	
	/*“WELCOME”*/	
	for (k=0;k<ELength;k++){
		ST3Read();
		data1=ETable[k];
		WRData(data1);
	}	
	/*退出自動寫方式*/
	command=0xb2;
	WRCommandOne();
}
/*建立CGRAM*/
void SETCGRAM(void){
	/*設置CGRAM偏移地址*/
	data1=0x03;		/*首地址為0x1c00*/
	data2=0x00;
	command=0x22;
	WRCommandMany();
	
	/*設置顯示地址*/
	data1=0x00;
	data2=0x1c;		/*0x1c00*/
	command=0x24;
	WRCommandMany();
	
	/*進入自動寫方式*/
	command=0xb0;
	WRCommandOne(); 
	
	/*寫“摩托羅拉單片機間接控制”*/
	for (k=0;k<CCLength;k++){
		ST3Read();
		data1=CCTable[k];
		WRData(data1);
	}
	
	/*退出自動寫方式*/
	command=0xb2;
	WRCommandOne();
}	
/*文本方式下顯示漢字*/
void CCDisplay(Uchar row,Uchar col){
	
	Uint cursor,tempaddress;
	SETCGRAM();
	cursor=row*40+col;
	tempaddress=cursor;
	/*設置顯示地址*/
	data1=tempaddress&0x00ff;
	data2=cursor&0xff00;	
	command=0x24;
	WRCommandMany();	
		
	command=0xb0;			/*進入自動寫方式*/
	WRCommandOne();		
	for (k=0;k<22;k++){
		ST3Read();
		data1=EXPRT1[k];
		WRData(data1);		
		}		
	command=0xb2;			/*退出自動寫方式*/
	WRCommandOne();
		
	row+=1;
	cursor=row*40+col;
	tempaddress=cursor;
	/*設置顯示地址*/
	data1=tempaddress&0x00ff;
	data2=cursor&0xff00;	
	command=0x24;
	WRCommandMany();	
		
	/*進入自動寫方式*/
	command=0xb0;
	WRCommandOne();		
	for (k=0;k<22;k++){
		ST3Read();
		data1=EXPRT2[k];
		WRData(data1);
	}
	/*退出自動寫方式*/
	command=0xb2;
	WRCommandOne();	
	}
/*在圖形方式下顯示漢字*/	
void GCDisplay(Uint row,Uint col){	//row(0~127)col(0~29)
	Uint cursor,tempaddress;
	Uint temprow,tempcol;
	
	for(i=0;i<11;i++)				/*11個漢字*/
	{	
		tempcol=col+i*2;		
		for(k=0;k<16;k++)			
		{
		temprow=row+k;			
		cursor=0x0800+temprow*40+tempcol;
		tempaddress=cursor;
		data1=tempaddress&0x00ff;		 /*設置顯示地址*/
		data2=(cursor&0xff00)>>8;		
		command=0x24;
		WRCommandMany();
		
		data2=CCTable[i*32+k];
		command=0xc0;					/*設置一次寫數據,地址加一*/
		WRCommandTwo();
				
		data2=CCTable[i*32+k+16];
		WRCommandTwo();		
		}
		WaitNms(50);				
	}
	WaitNms(50);
}
void LeftScroll(void)
{
	Uint Num,cursor0,tempaddr;
	while(1){
		for(Num=0;Num<40;Num++)	{
		
			cursor0=start+Num;/*設置文本顯示首地址*/
			tempaddr=cursor0;
			data1=tempaddr&0x00ff;
			data2=cursor0&0xff00;
			command=0x40;
			WRCommandMany();
		
			TextDisplay();			//""
			WaitNms(500);
		}
	}
}
/*滾動顯示-向右*/
void RightScroll(void)
{
	Uint Num,cursor0,tempaddr;	
	while(1){
	for(Num=0;Num<30;Num++)	{
		 
		cursor0=start-Num;/*修改文本或圖形顯示區首地址*/
		tempaddr=cursor0;
		data1=tempaddr&0x00ff;
		data2=cursor0&0xff00;		
		command=0x40;
		WRCommandMany();
		GCDisplay(1,3);
		TextDisplay();			//""
		CCDisplay(1,3);
		WaitNms(500);				
		}
	}
}
/*滾動顯示—向上*/
void UpScroll(void)
{
	Uint Num,cursor0,tempaddr;	
	while(1){
		for(Num=0;Num<16;Num++)	{
		
			cursor0=start+Num*40;/*設置文本顯示區首地址*/
			tempaddr=cursor0;

			data1=tempaddr&0x00ff;
			data2=cursor0&0xff00;
			command=0x40;
			WRCommandMany();
		
			TextDisplay();			//""
			WaitNms(50);
		}
	}
}
/*滾動顯示—向下*/
void DownScroll(void)
{
	Uint Num,cursor0,tempaddr;
	while(1){
		for(Num=0;Num<16;Num++){
		
			cursor0=start-Num*40;	/*設置文本顯示首地址*/
			tempaddr=cursor0;

			data1=tempaddr&0x00ff;
			data2=cursor0&0xff00;
			command=0x40;
			WRCommandMany();
		
			TextDisplay();			//""
			WaitNms(500);
			}
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美影院午夜播放| 色视频成人在线观看免| 亚洲裸体在线观看| 欧美国产视频在线| 国产视频一区在线观看| 久久久不卡影院| 久久久久久麻豆| 欧美xxxxxxxxx| 2021中文字幕一区亚洲| 26uuu色噜噜精品一区二区| 日韩欧美中文一区二区| 欧美一区欧美二区| 精品三级在线观看| 26uuu国产一区二区三区| 欧美大尺度电影在线| ww亚洲ww在线观看国产| 国产亚洲精品资源在线26u| 中文字幕av一区二区三区高| 日本一区二区视频在线| 亚洲视频香蕉人妖| 亚洲最色的网站| 午夜精品福利一区二区三区av| 亚洲成人在线免费| 久久精品国产99久久6| 国模套图日韩精品一区二区| 高清免费成人av| 在线免费观看一区| 日韩欧美一区二区免费| 久久综合九色综合欧美亚洲| 国产精品日韩成人| 亚洲高清免费观看 | 国产欧美日韩在线视频| 亚洲国产精品v| 亚洲已满18点击进入久久| 看片的网站亚洲| 成年人国产精品| 欧美精品欧美精品系列| 国产日产欧产精品推荐色 | 欧美日韩在线播| 欧美一区二区三区四区五区| 国产日本亚洲高清| 一个色综合网站| 国产一区欧美二区| 色婷婷激情一区二区三区| 欧美一区二区三区男人的天堂| 久久精品一区二区| 亚洲第一综合色| 不卡在线视频中文字幕| 91精品欧美一区二区三区综合在 | 亚洲私人黄色宅男| 麻豆精品视频在线观看免费| 95精品视频在线| 精品久久久久久无| 亚洲mv在线观看| 99久免费精品视频在线观看| 精品国产亚洲在线| 亚洲高清视频在线| 一本色道久久综合狠狠躁的推荐| 久久久久久久久久美女| 天堂成人免费av电影一区| 一本大道综合伊人精品热热| 欧美国产成人在线| 国内精品第一页| 日韩精品综合一本久道在线视频| 亚洲视频免费看| 成人av网站在线观看| 精品欧美一区二区在线观看| 日韩综合在线视频| 91在线无精精品入口| 国产日韩欧美制服另类| 久久99国产精品尤物| 91精品在线免费观看| 日韩av网站在线观看| 91女人视频在线观看| 国产精品视频一二三区| 国产剧情在线观看一区二区| 精品伦理精品一区| 蓝色福利精品导航| 精品久久人人做人人爽| 狠狠色狠狠色综合系列| 欧美mv和日韩mv国产网站| 美女爽到高潮91| 中文字幕在线一区| 成人av网站免费观看| 国产精品不卡在线观看| 国产精品2024| 日本一区二区三区高清不卡| 成人aa视频在线观看| 亚洲少妇最新在线视频| 91国偷自产一区二区三区成为亚洲经典 | 色综合夜色一区| 中文字幕中文在线不卡住| 国产999精品久久久久久绿帽| 欧美国产激情二区三区| 91原创在线视频| 夜夜精品视频一区二区| 欧美精品色综合| 国模冰冰炮一区二区| 国产精品毛片久久久久久久| gogogo免费视频观看亚洲一| 亚洲伊人色欲综合网| 日韩精品一区二区三区在线播放 | 欧美精品一区男女天堂| 国模套图日韩精品一区二区| 欧美激情综合在线| 99久久精品国产毛片| 午夜精品国产更新| 国产亚洲综合在线| 色综合一个色综合亚洲| 男人的j进女人的j一区| 中文字幕精品综合| 91蜜桃传媒精品久久久一区二区| 亚洲6080在线| 久久精品亚洲精品国产欧美| 在线日韩国产精品| 国产剧情一区在线| 香蕉av福利精品导航| 国产性色一区二区| 欧美色精品在线视频| 国产乱码一区二区三区| 亚洲第一电影网| 国产欧美日韩激情| 欧美一区二区在线免费播放| 成人av免费网站| 久久99精品一区二区三区三区| 亚洲视频你懂的| 国产亚洲精品bt天堂精选| 久久综合五月天婷婷伊人| 色综合久久久久综合| 国产一区二区免费在线| 日韩精品一级中文字幕精品视频免费观看 | 亚洲最大成人综合| 久久亚洲影视婷婷| 欧美日韩国产首页| av电影一区二区| 国产一区二区三区黄视频 | 欧美变态tickling挠脚心| av一区二区三区在线| 卡一卡二国产精品| 一区二区三区高清| 亚洲天堂精品视频| 国产精品视频yy9299一区| 精品国产电影一区二区| 欧美一级精品在线| 欧美猛男超大videosgay| 91黄色免费观看| 一本色道a无线码一区v| 成人一区二区在线观看| 国产乱子伦视频一区二区三区 | 欧美亚洲高清一区二区三区不卡| 国产**成人网毛片九色 | 91麻豆精品国产91久久久更新时间| 色国产精品一区在线观看| 成人丝袜视频网| 国产suv精品一区二区883| 国产美女视频一区| 精品无人码麻豆乱码1区2区| 美女一区二区久久| 久久99日本精品| 国内精品免费在线观看| 韩国毛片一区二区三区| 国产精品一区二区久激情瑜伽| 国产一区二区三区蝌蚪| 国产乱码字幕精品高清av | 777午夜精品视频在线播放| 91电影在线观看| 欧美人与禽zozo性伦| 7777精品伊人久久久大香线蕉 | 国产一区在线不卡| 国产一区二区三区免费看| 国产精品亚洲视频| 国产91精品入口| 99热这里都是精品| 欧美性猛片xxxx免费看久爱| 欧美色爱综合网| 中文字幕亚洲电影| 亚洲另类在线制服丝袜| 亚洲国产精品久久不卡毛片| 偷拍日韩校园综合在线| 日本中文字幕一区二区有限公司| 男女性色大片免费观看一区二区 | 欧美日本在线观看| 欧美高清精品3d| 精品处破学生在线二十三| 国产精品丝袜在线| 尤物在线观看一区| 美腿丝袜亚洲三区| 99精品欧美一区二区三区小说| 欧美亚洲一区二区在线观看| 欧美tickle裸体挠脚心vk| 中文字幕亚洲不卡| 日日夜夜精品视频天天综合网| 国内精品视频一区二区三区八戒| 97久久人人超碰| 欧美一区二区三区色| 中文字幕亚洲欧美在线不卡| 日韩国产欧美一区二区三区| 成人av在线网| 精品久久久久一区二区国产| 一区2区3区在线看|