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

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

?? 12864.c

?? 128×64LCD顯示控制屏底層驅動
?? C
字號:
#include <INTRINS.H>

#define uchar unsigned char
#define uint  unsigned int
#define LCM_Data    P2          //定義LCM接口
#define RS          P3_3
#define RW          P3_4
#define E           P3_5
#define CS1         P3_7
#define CS2         P3_6
#define RSTB        P0_2

#define SelCS1      0x0
#define SelCS2      0x1
#define Page0       0xB8        //頁面0
#define StartSeg    0x40        //第0列
#define DisplayOn   0x3F        //開顯示
#define DisplayOff  0x3E        //關顯示
#define StartRow    0xC0        //顯示起始行
/******************************************************************** 
* 名稱:Invert 
* 功能:
* 調用:無
* 輸入: 
* 返回值: 無
***********************************************************************
uchar Invert(uchar org_data)
{
uchar inv_data=0,i;
for(i=8;i>0;i--)
{
inv_data=((org_data&0x01)<<(i-1))|inv_data;
org_data>>=1;
}
return inv_data;
} */
uchar code Invert[]=
{
0x0,0x80,0x40,0xc0,0x20,0xa0,0x60,0xe0,0x10,0x90,0x50,0xd0,0x30,0xb0,0x70,0xf0,
0x8,0x88,0x48,0xc8,0x28,0xa8,0x68,0xe8,0x18,0x98,0x58,0xd8,0x38,0xb8,0x78,0xf8,
0x4,0x84,0x44,0xc4,0x24,0xa4,0x64,0xe4,0x14,0x94,0x54,0xd4,0x34,0xb4,0x74,0xf4,
0xc,0x8c,0x4c,0xcc,0x2c,0xac,0x6c,0xec,0x1c,0x9c,0x5c,0xdc,0x3c,0xbc,0x7c,0xfc,
0x2,0x82,0x42,0xc2,0x22,0xa2,0x62,0xe2,0x12,0x92,0x52,0xd2,0x32,0xb2,0x72,0xf2,
0xa,0x8a,0x4a,0xca,0x2a,0xaa,0x6a,0xea,0x1a,0x9a,0x5a,0xda,0x3a,0xba,0x7a,0xfa,
0x6,0x86,0x46,0xc6,0x26,0xa6,0x66,0xe6,0x16,0x96,0x56,0xd6,0x36,0xb6,0x76,0xf6,
0xe,0x8e,0x4e,0xce,0x2e,0xae,0x6e,0xee,0x1e,0x9e,0x5e,0xde,0x3e,0xbe,0x7e,0xfe,
0x1,0x81,0x41,0xc1,0x21,0xa1,0x61,0xe1,0x11,0x91,0x51,0xd1,0x31,0xb1,0x71,0xf1,
0x9,0x89,0x49,0xc9,0x29,0xa9,0x69,0xe9,0x19,0x99,0x59,0xd9,0x39,0xb9,0x79,0xf9,
0x5,0x85,0x45,0xc5,0x25,0xa5,0x65,0xe5,0x15,0x95,0x55,0xd5,0x35,0xb5,0x75,0xf5,
0xd,0x8d,0x4d,0xcd,0x2d,0xad,0x6d,0xed,0x1d,0x9d,0x5d,0xdd,0x3d,0xbd,0x7d,0xfd,
0x3,0x83,0x43,0xc3,0x23,0xa3,0x63,0xe3,0x13,0x93,0x53,0xd3,0x33,0xb3,0x73,0xf3,
0xb,0x8b,0x4b,0xcb,0x2b,0xab,0x6b,0xeb,0x1b,0x9b,0x5b,0xdb,0x3b,0xbb,0x7b,0xfb,
0x7,0x87,0x47,0xc7,0x27,0xa7,0x67,0xe7,0x17,0x97,0x57,0xd7,0x37,0xb7,0x77,0xf7,
0xf,0x8f,0x4f,0xcf,0x2f,0xaf,0x6f,0xef,0x1f,0x9f,0x5f,0xdf,0x3f,0xbf,0x7f,0xff,
};

/******************************************************************** 
* 名稱: LCM_WRcmd
* 功能:發送控制命令到CS1或CS2
* 調用:無
* 輸入: uchar Wcmd,bit CS1CS2
* 返回值: 無
***********************************************************************/
void LCM_WRcmd(uchar Wcmd,bit CS1CS2)
{
if(CS1CS2==SelCS1)																		 
	{
	RS = 0;RW = 0;
	CS1 = 1;E = 1;
	LCM_Data = Invert[Wcmd];
	E = 0;CS1 = 0;
	}
else
	{
	RS = 0;RW = 0;
	CS2 = 1;E = 1;
	LCM_Data = Invert[Wcmd];
	E = 0;CS2 = 0;
	}
}
/******************************************************************** 
* 名稱: LCM_WRdata
* 功能:發送數據到CS1或CS2
* 調用:無
* 輸入: uchar Wdata,bit CS1CS2
* 返回值: 無
***********************************************************************/
void LCM_WRdata(uchar Wdata,bit CS1CS2)
{
if(CS1CS2==SelCS1)
	{
	RS = 1;RW = 0;
	CS1 = 1;E = 1;
	LCM_Data = Invert[Wdata];
	E = 0;CS1 = 0;
	}
else
	{
	RS = 1;RW = 0;
	CS2 = 1;E = 1;
	LCM_Data = Invert[Wdata];
	E = 0;CS2 = 0;
	}
}
/******************************************************************** 
* 名稱:LCM_RDdata
* 功能:接收CS1或CS2的數據
* 調用:無
* 輸入:uchar *p,bit CS1CS2
* 返回值: 無
***********************************************************************
void LCM_RDdata(uchar *p,bit CS1CS2)
{
if(CS1CS2==SelCS1)
	{
	RS = 1;RW = 1;
	LCM_Data = Invert(0xff);
	CS1 = 1;E = 1;
	*p = Invert(LCM_Data);
	E = 0;CS1 = 0;
	}
else
	{
	RS = 1;RW = 1;
	LCM_Data = Invert(0xff);
	CS2 = 1;E = 1;
	*p = Invert(LCM_Data);
	E = 0;CS2 = 0;
	}
}
/******************************************************************** 
* 名稱:LCM_RDstatus
* 功能:讀取CS1或CS2的狀態
* 調用:無
* 輸入:uchar *p,bit CS1CS2
* 返回值: 無
***********************************************************************
void LCM_RDstatus(uchar *p,bit CS1CS2)
{
if(CS1CS2==SelCS1)
	{
	RS = 0; RW = 1;
	LCM_Data = Invert(0xff);
	CS1 = 1;E = 1;
	*p = Invert(LCM_Data);
	E = 0;CS1 = 0;
	}
else
	{
	RS = 0; RW = 1;
	LCM_Data = Invert(0xff);
	CS2 = 1;E = 1;
	*p = Invert(LCM_Data);
	E = 0;CS2 = 0;
	}
}
/******************************************************************** 
* 名稱:LCM_ClearRAM
* 功能:LCM清顯示緩存
* 調用:LCM_WRcmd,LCM_WRdata
* 輸入:無
* 返回值: 無
***********************************************************************/
void LCM_ClearRAM(void)
{
uchar i,j;
	for(i=8;i>0;--i)
	{
		LCM_WRcmd(Page0|i,SelCS1);
		LCM_WRcmd(Page0|i,SelCS2);
	    LCM_WRcmd(StartSeg,SelCS1);
		LCM_WRcmd(StartSeg,SelCS2);
		    for(j=64;j>0;--j)
			{
			LCM_WRdata(0x0,SelCS1);
			LCM_WRdata(0x0,SelCS2);
			}
	}
}
/******************************************************************** 
* 名稱:LCM_Init
* 功能:LCM初始化
* 調用:	LCM_ClearRAM,LCM_WRcmd
* 輸入:	無
* 返回值: 無
***********************************************************************/
void LCM_Init(void)     
{                       
//RSTB = 0;              
//_nop_();                  
//RSTB = 1;                
//_nop_();                 
//CS1 = 0;                 
//CS2 = 0;                
//LCM_ClearRAM();
LCM_WRcmd(StartRow,SelCS1);
LCM_WRcmd(StartRow,SelCS2); 
LCM_WRcmd(DisplayOn,SelCS1);
LCM_WRcmd(DisplayOn,SelCS2);
}
/******************************************************************** 
* 名稱:LCM_Dischinese
* 功能:LCM顯示一個16*16字符到指定的位置
* 調用:LCM_WRcmd;LCM_WRdata
* 輸入:uchar *Char,uchar Row(1-4),uchar Col(1-8)
* 返回值: 無
***********************************************************************
void LCM_Dischinese(uchar *Char,uchar Row,uchar Col)
{
uchar DisSeg;
bit i=0,Sel;
Row = 5-Row;
Col = 9-Col;
Char = Char+31;
do{
    for(DisSeg=(Col-1)*16;DisSeg<Col*16;DisSeg++)
	{
		if(DisSeg/64==1)
			Sel = SelCS2;
		else
			Sel = SelCS1;
		LCM_WRcmd(Page0|(Row*2-2)|i,Sel);
		LCM_WRcmd(StartSeg|DisSeg%64,Sel);
		LCM_WRdata(*(Char--),Sel);
	}
	i=~i;
  }while(i);
}
/******************************************************************** 
* 名稱:LCM_Disenglish
* 功能:LCM顯示一個6*16字符到指定的位置
* 調用:LCM_WRcmd;LCM_WRdata
* 輸入:uchar *Char,uchar Row(1-4),uchar Col(1-21)
* 返回值: 無
***********************************************************************
void LCM_Disenglish(uchar *Char,uchar Row,uchar Col)
{
uchar DisSeg;
bit i=0,Sel;
Row = 5-Row;
Col = 22-Col;
Char = Char+11;
do{
    for(DisSeg=(Col-1)*6;DisSeg<Col*6;DisSeg++)
	{
		if(DisSeg/64==1)
			Sel = SelCS2;
		else
			Sel = SelCS1;
		LCM_WRcmd(Page0|(Row*2-2)|i,Sel);
		LCM_WRcmd(StartSeg|DisSeg%64,Sel);
		LCM_WRdata(*(Char--),Sel);
	}
	i=~i;
  }while(i);
}
/******************************************************************** 
* 名稱:LCM_Dischar
* 功能:LCM顯示一個5*8字符到指定的位置
* 調用:LCM_WRcmd;LCM_WRdata
* 輸入:uchar *Char,uchar Row(1-8),uchar Col(1-25)
* 返回值: 無
***********************************************************************/
void LCM_Dischar(uchar code *Char,uchar Row,uchar Col)
{
uchar DisSeg;
bit Sel;
Row = 9-Row;
Col = 26-Col;
Char = Char+4;
for(DisSeg=(Col-1)*5;DisSeg<Col*5;DisSeg++)
{
	if(DisSeg/64==1)
		Sel = SelCS2;
	else
		Sel = SelCS1;
	LCM_WRcmd(Page0|(Row-1),Sel);
	LCM_WRcmd(StartSeg|DisSeg%64,Sel);
	LCM_WRdata(*(Char--),Sel);
}
}
/******************************************************************** 
* 名稱:LCM_Disline
* 功能:LCM顯示25個5*8字符到指定的一行位置
* 調用:LCM_WRcmd;LCM_WRdata
* 輸入:uchar *Char,uchar Row(1-8)
* 返回值: 無
***********************************************************************/
void LCM_Disline(uchar code *String,uchar Row)
{
uchar DisSeg,DisNum,*Char;
bit Sel;
Row = 9-Row;
String = String+24;
for(DisNum=1;DisNum<26;DisNum++)
{
	Char=Space+(*(String--)-0x20)*5+4;
	if(Char==Space+('*'-0x20)*5+4)
	continue;
	for(DisSeg=(DisNum-1)*5;DisSeg<DisNum*5;DisSeg++)
	{
		if(DisSeg/64==1)
			Sel = SelCS2;
		else
			Sel = SelCS1;
		LCM_WRcmd(Page0|(Row-1),Sel);
		LCM_WRcmd(StartSeg|DisSeg%64,Sel);
		LCM_WRdata(*(Char--),Sel);
	}
}
}
/******************************************************************** 
* 名稱:LCM_Ivtchar
* 功能:LCM反顯一個5*8字符到指定的位置
* 調用:LCM_WRcmd;LCM_WRdata
* 輸入:uchar *Char,uchar Row(1-8),uchar Col(1-25)
* 返回值: 無
***********************************************************************/
void LCM_Ivtchar(uchar code *Char,uchar Row,uchar Col)
{
uchar DisSeg;
bit Sel;
Row = 9-Row;
Col = 26-Col;
Char = Char+4;
for(DisSeg=(Col-1)*5;DisSeg<Col*5;DisSeg++)
{
	if(DisSeg/64==1)
		Sel = SelCS2;
	else
		Sel = SelCS1;
	LCM_WRcmd(Page0|(Row-1),Sel);
	LCM_WRcmd(StartSeg|DisSeg%64,Sel);
	LCM_WRdata(~*(Char--),Sel);
}
}
/******************************************************************** 
* 名稱:LCM_EEDischar
* 功能:LCM從EEPROM讀16*16字模并顯示一個字符到指定的位置
* 調用:LCM_WRcmd;LCM_WRdata
* 輸入:uint Char,uchar Row(1-4),uchar Col(1-8)
* 返回值: 無
***********************************************************************
void LCM_EEDischar(uint Char,uchar Row,uchar Col)
{
uchar DisSeg,EEdata;
bit i=0,Sel;
Row = 5-Row;
Col = 9-Col;
Char = Char+31;
do{
    for(DisSeg=(Col-1)*16;DisSeg<Col*16;DisSeg++)
	{
		if(DisSeg/64==1)
			Sel = SelCS2;
		else
			Sel = SelCS1;
		LCM_WRcmd(Page0|(Row*2-2)|i,Sel);
		LCM_WRcmd(StartSeg|DisSeg%64,Sel);
		RandomRead(Char--,&EEdata);
		LCM_WRdata(EEdata,Sel);
	}
	i=~i;
  }while(i);
}
/******************************************************************** 
* 名稱:LCM_Disdot
* 功能:在LCM指定的位置顯示一個點
* 調用:LCM_WRcmd;LCM_WRdata;LCM_RDdata
* 輸入:uchar Row(0-63),uchar col(0-127)
* 返回值: 無
***********************************************************************
void LCM_Disdot(uchar Row,uchar col)
{
uchar Lcm_data;
bit Sel;
Row = 63-Row;
col = 127-col;
if(col/64==1)
	Sel = SelCS2;
else
	Sel = SelCS1;
LCM_WRcmd(Page0|(Row/8),Sel);
LCM_WRcmd(StartSeg|(col%64),Sel);
LCM_RDdata(&Lcm_data,Sel);		//Dummy read
LCM_RDdata(&Lcm_data,Sel);
LCM_WRcmd(StartSeg|(col%64),Sel);
LCM_WRdata(Lcm_data|(0x01<<(Row%8)),Sel);
}
/******************************************************************** 
* 名稱:LCM_Clrdot
* 功能:在LCM指定的位置消去一個點
* 調用:LCM_WRcmd;LCM_WRdata;LCM_RDdata
* 輸入:uchar Row(0-63),uchar col(0-127)
* 返回值: 無
***********************************************************************
void LCM_Clrdot(uchar Row,uchar col)
{
uchar Lcm_data;
bit Sel;
Row = 63-Row;
col = 127-col;
if(col/64==1)
	Sel = SelCS2;
else
	Sel = SelCS1;
LCM_WRcmd(Page0|(Row/8),Sel);
LCM_WRcmd(StartSeg|(col%64),Sel);
LCM_RDdata(&Lcm_data,Sel);	   //Dummy read
LCM_RDdata(&Lcm_data,Sel);
LCM_WRcmd(StartSeg|(col%64),Sel);
LCM_WRdata(Lcm_data&~(0x01<<(Row%8)),Sel);
}*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区视频在线观看| 午夜精品爽啪视频| 高清不卡在线观看av| 国产午夜精品久久久久久久| 粉嫩一区二区三区性色av| 国产日韩欧美在线一区| 成人久久18免费网站麻豆| 亚洲欧美另类久久久精品2019| 色综合天天综合在线视频| 亚洲午夜在线视频| 91精品婷婷国产综合久久竹菊| 九九在线精品视频| 国产日本欧美一区二区| 色系网站成人免费| 首页欧美精品中文字幕| 日韩欧美久久一区| 99国产欧美另类久久久精品| 亚洲一区在线免费观看| 日韩欧美一区电影| 成人一级视频在线观看| 亚洲妇女屁股眼交7| 欧美一级免费大片| 成人激情av网| 亚洲成在人线免费| 国产午夜一区二区三区| 在线欧美日韩精品| 久久国产成人午夜av影院| 国产精品网站一区| 欧美日韩国产精品成人| 国产九色sp调教91| 亚洲男女一区二区三区| 欧美一级淫片007| 成人短视频下载| 五月婷婷综合网| 国产精品久久久久影院老司| 欧美精品在线观看播放| 成人视屏免费看| 青青草国产成人av片免费| 国产精品私房写真福利视频| 这里只有精品视频在线观看| 成人动漫一区二区在线| 麻豆成人免费电影| 亚洲综合一二区| 国产精品伦理一区二区| 日韩女优毛片在线| 在线国产亚洲欧美| 国产69精品久久99不卡| 久久99久久精品欧美| 亚洲精品高清在线| 中文成人av在线| 精品国产乱码久久久久久久| 欧洲精品一区二区三区在线观看| 国产精品一区二区久久精品爱涩 | 欧美成人综合网站| 一道本成人在线| 国产成人免费视| 国产真实精品久久二三区| 午夜精品久久久久久久久久 | 亚洲一区在线电影| 国产白丝网站精品污在线入口| 91理论电影在线观看| 亚洲高清一区二区三区| 中文字幕五月欧美| 久久久久国色av免费看影院| 欧美一级国产精品| 91精品国产欧美日韩| 欧美日韩精品一区二区在线播放| 91丝袜国产在线播放| 99久久久国产精品| av在线播放成人| 成人深夜福利app| 成人精品国产免费网站| 国产成人av电影| 国产成人综合视频| 国产大片一区二区| 国产乱码精品一区二区三区忘忧草| 日韩不卡一区二区三区| 日本不卡视频在线观看| 首页综合国产亚洲丝袜| 日韩成人dvd| 精品一区二区三区久久| 国产尤物一区二区在线| 国精产品一区一区三区mba桃花| 裸体健美xxxx欧美裸体表演| 美女一区二区久久| 黑人巨大精品欧美一区| 国产精品伊人色| 成人黄色网址在线观看| 91丨九色丨黑人外教| 一本色道久久综合亚洲精品按摩| 91成人网在线| 欧美乱妇20p| 日韩欧美一区二区久久婷婷| 久久久噜噜噜久久人人看 | 国产美女精品一区二区三区| 国产原创一区二区三区| 岛国精品在线观看| 色综合天天做天天爱| 欧美色综合网站| 日韩午夜在线观看视频| 国产亚洲一区字幕| 亚洲私人影院在线观看| 亚洲国产精品久久不卡毛片| 午夜精品福利在线| 国产精品亚洲一区二区三区妖精| 99精品在线观看视频| 欧美日韩中文国产| www国产亚洲精品久久麻豆| 国产精品久久久久久久久搜平片 | 欧美日产国产精品| 欧美不卡一区二区三区四区| 国产日产精品一区| 亚洲超丰满肉感bbw| 激情文学综合丁香| 色94色欧美sute亚洲线路一ni| 欧美二区三区91| 国产精品久久久久久久浪潮网站 | 久久精品国产亚洲高清剧情介绍| 国产精品91一区二区| 在线观看欧美日本| 国产人成亚洲第一网站在线播放| 亚洲人妖av一区二区| 麻豆免费看一区二区三区| 大胆亚洲人体视频| 正在播放一区二区| 亚洲丝袜另类动漫二区| 蜜桃久久精品一区二区| 色偷偷一区二区三区| 精品第一国产综合精品aⅴ| 亚洲精品乱码久久久久久久久 | 国产麻豆精品一区二区| 色中色一区二区| 久久精品人人做人人爽人人| 亚洲国产精品综合小说图片区| 国产激情偷乱视频一区二区三区| 欧美日韩色综合| 中文字幕中文字幕一区| 国内精品国产成人国产三级粉色| 欧美在线综合视频| 一区视频在线播放| 激情欧美一区二区三区在线观看| 欧美性欧美巨大黑白大战| 国产欧美精品一区二区色综合 | 亚洲激情在线激情| 粉嫩av一区二区三区在线播放 | 99久久免费精品| 国产欧美日韩精品一区| 国产曰批免费观看久久久| 欧美一区二区三区啪啪| 天天射综合影视| 欧亚洲嫩模精品一区三区| 成人欧美一区二区三区1314| 国产**成人网毛片九色| 久久综合成人精品亚洲另类欧美| 视频一区中文字幕国产| 欧美视频日韩视频在线观看| 亚洲人精品午夜| 99精品桃花视频在线观看| 欧美国产精品久久| 国产成人精品亚洲午夜麻豆| 久久久久9999亚洲精品| 韩国成人福利片在线播放| 精品少妇一区二区三区视频免付费 | 最好看的中文字幕久久| 成人av在线资源| 国产精品不卡在线观看| va亚洲va日韩不卡在线观看| 国产精品理伦片| 99天天综合性| 一区二区三区在线影院| 欧美三级电影在线看| 亚瑟在线精品视频| 欧美一级淫片007| 精品夜夜嗨av一区二区三区| 精品国产乱码久久久久久图片 | 精品美女一区二区| 狠狠色丁香婷婷综合| 久久久不卡网国产精品二区 | 日韩理论电影院| 欧美综合在线视频| 亚洲成av人片在线| 日韩视频123| 国产一二精品视频| 亚洲天堂精品视频| 欧美天堂亚洲电影院在线播放| 亚洲国产色一区| 日韩欧美激情四射| 成人高清免费观看| 亚洲男人的天堂在线观看| 欧美日韩一区二区三区四区 | 国产高清精品久久久久| 国产精品乱人伦中文| 在线免费视频一区二区| 日韩黄色免费电影| 国产午夜精品久久久久久久| 色妞www精品视频| 日韩国产在线观看一区| 久久网站最新地址| 色视频成人在线观看免| 蜜芽一区二区三区|