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

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

?? cs23-2.c

?? LCD 128*64 的驅動軟件 和適合學習的人 帶全部解釋
?? C
字號:
#include <REG51.H>
#include<math.h>				
#define uchar unsigned char	
#define uint unsigned int
sbit CS1=P2^4;			
sbit CS2=P2^3;
sbit RS=P2^7;		
sbit RW=P2^6;			
sbit EN=P2^5;				
sbit RST=P2^2;			
#define DataPort P0
/**********常用操作命令和參數定義***********/
#define DISPON 0x3f 				//顯示屏開
#define DISPOFF 0x3e				//顯示屏關
#define DISPFIRST 0xc0			//起始行顯示定義
#define SETX 0x40					//X定位(頁)
#define SETY 0xb8					//Y定位(列)
#define Lcdbusy 0x80				//LCM忙判斷定義
/***********************************************/
#define MODL 0x00				//左區
#define MODM 0x40 				//左區與中區分界
//#define MODR 0x80       		//中區與右區分界
#define LCMLIMIT 0x80			//中區的邊界
//#define LCMLIMIT 0xc0			//右區的邊界(這里不用)
/*************************************************/
uchar col,row,cbyte;  				//列、行、數據的變量定義                                        
bit xy;							//畫線標志,"1"水平線,"0"垂直線。
/**************************************************/
void Lcminit(void);					//液晶模塊初始化子函數
void Delay(unsigned long MS);				//延時子函數
void lcdbusyL(void);				//左區判忙子函數
void lcdbusyM(void);				//中區判忙子函數
//void lcdbusyR(void);				//右區判忙子函數(這里不用)
void Wrdata(uchar X);              //寫數據至LCM                               
void Lcmcls(void);  				//LCM清屏
void Lcmclsxx(void);               //LCM全屏置黑                             
void wtcom(void);                  //公用判忙等待子函數                 
void Locatexy(void);         		 //光標定義    
void WrcmdL(uchar X);				//寫命令至左區
void WrcmdM(uchar X);			//寫命令至中區
//void WrcmdR(uchar X);			//寫命令至右區(這里不用)
void Rddata(void);  				//讀LCM狀態子函數
void Linehv(uchar length);  			//水平、垂直畫線子函數
void point(void);  					//畫點子函數
void Linexy(uchar endx, uchar endy);  		//畫斜線子函數
/************************復位子函數*************************/
void reset()						//復位子函數
{								//復位子函數開始
RST=0;							//復位端置0
Delay(20);						//延時20ms
RST=1;							//復位端置1
Delay(20);						//延時20ms
}								//復位子函數結束
/*********************主函數**********************/
void main(void)
{								//主函數開始
col=0;							//定位0列、0頁
row=0;
Delay(10);						//延時一會
Lcminit();						//液晶模塊初始化
Delay(1000);						//延時一會
/***********以下使用畫直線與斜線的方法,畫出一條小舢舨*********/
/****************先畫出船上建筑**************/
col=0;							//定位x方位0、y方位32
row=32;
xy=1;							//水平線
Linehv(127);						//畫線,長度127
/*----------------------------------------------*/
col=33;							//定位x方位33、y方位48
row=48;
xy=1;							//水平線
Linehv(30);						//畫線,長度30
col=36;							//定位x方位36、y方位32
row=32;
xy=0;							//垂直線
Linehv(16);						//畫線,長度16
col=64;							//定位x方位64、y方位48
row=48;
xy=1;							//水平線
Linehv(30);						//畫線,長度30
col=91;							//定位x方位91、y方位32
row=32;
xy=0;							//垂直線
Linehv(16);						//畫線,長度16
/*------------------------------------------------*/
col=10;							//定位x方位10、y方位32
row=32;
xy=0;							//垂直線
Linehv(27);						//畫線,長度27
/************以下畫出船底的弧形***********/
col=0;							//定位x方位0、y方位32
row=32;
Linexy(10,16);					//畫斜線,終點為x方位10、y方位16
col=10;							//定位x方位10、y方位16
row=16;
Linexy(30,8);						//畫斜線,終點為x方位30、y方位8
col=30;							//定位x方位30、y方位8
row=8;
Linexy(64,5);						//畫斜線,終點為x方位64、y方位5
/*-----------------------------------------------------------------*/
col=65;							//定位x方位65、y方位5
row=5;
Linexy(97,8);						//畫斜線,終點為x方位97、y方位8
col=97;							//定位x方位97、y方位8
row=8;
Linexy(117,16);					//畫斜線,終點為x方位117、y方位16
col=117;							//定位x方位117、y方位16
row=16;
Linexy(127,32);					//畫斜線,終點為x方位127、y方位32
/*----------------------------------畫舢舨結束------------------------------------*/
while(1);							//死循環

}								//主函數結束
/*************************畫斜線子函數************************/
void Linexy(uchar endx, uchar endy) 
{				
register uchar t;				
char xerr=0,yerr=0,delta_x,delta_y,distance;
uchar incx,incy;				
delta_x=endx-col;				
delta_y=endy-row;  			
if(delta_x>0)incx=1;			
else if(delta_x==0)incx=0;		
    else incx=-1;				
if(delta_y>0)incy=1;			
else if(delta_y==0)incy=0;		
    else incy=-1;					
delta_x=cabs(delta_x);			
delta_y=cabs(delta_y);			
if(delta_x>delta_y) distance=delta_x;  
else distance=delta_y;			
/*-----------開始畫線-------------*/
for(t=0;t<=distance+1;t++){
point();						
xerr+=delta_x;
yerr+=delta_y;
if(xerr>distance){
xerr-=distance;
col+=incx;						
}
if(yerr>distance){
yerr-=distance;
row+=incy;					
}
						}
}							
/*********************畫水平、垂直線子函數***********************/
void Linehv(uchar length)        /*函數名為Linehv的畫水平、垂直線子函數,定義
length 為線段長度的無符號字符型變量。*/
{							//畫水平、垂直線子函數開始
uchar xs,ys;                   //定義xs、ys 為無符號字符型變量。

if(xy){ys=col;					//若xy為1,則為水平劃線
	for(xs=0;xs<length;xs++){
		col=ys+xs;
		point();}
		}
else {xs=row;					//否則為垂直劃線
	for(ys=0;ys<length;ys++)
		{
		row=xs+ys;
		point();}
		}
}								//畫水平、垂直線子函數結束
/**********************畫點子函數***************************/
void point(void)					//畫點子函數
{								//畫點子函數開始
uchar x1,y1,x,y;					//定義x1、y1、x、y 為無符號字符型變量
x1=col;							//x方向座標col賦予x1(暫存)
y1=row;							//y方向座標row賦予y1(暫存)
row=y1>>3;						//y1右移3位后賦予row,獲得y方向的頁地址
Rddata();							//讀取列(x)地址、頁(y)地址處的數據
y=y1&0x07;						//計算出該頁(1字節)內的y軸點位置地址
x=0x01;
x=x<<y;							//移入所畫點
Wrdata(cbyte|x);					//畫上屏幕
col=x1;							//恢復x、y座標
row=y1;
}								//畫點子函數結束
/***************全屏幕清屏子函數**********************/
void Lcmcls(void)				//函數名為Lcmcls的全屏幕清屏子函數
{							//函數開始
 for(row=0;row<8;row++)
	{for(col=0;col<LCMLIMIT;col++)
	Wrdata(0);}				//將數據0寫到屏幕
}							//函數結束

/**********************全屏幕置黑子函數**********************/
void Lcmclsxx(void)			//函數名為Lcmclsxx的全屏幕置黑子函數
{							//函數開始
 for(row=0;row<8;row++)
for(col=0;col<LCMLIMIT;col++)
Wrdata(255);					//將8位數據全1(255)寫到屏幕
}							//函數結束
/*************讀取液晶x列、y頁座標處的數據至全局變量cbyte中************/   
void Rddata(void)          	//函數名為Rddata的子函數                                                           
{							//函數開始
Locatexy();					//座標定位
DataPort=0xff;					//LCM口置全1
RS=1;						//選擇數據寄存器
RW=1;					//選擇讀
EN=1;						//使能
cbyte=DataPort;				//虛讀一次
EN=0;						//禁能
Locatexy();					//座標定位
DataPort=0xff;					//LCM口置全1
RS=1;						//選擇數據寄存器
RW=1;					//選擇讀
EN=1;						//使能
cbyte=DataPort;				//讀取數據(真讀)
EN=0;						//禁能
}								//函數結束
/**************將數據X寫入液晶x列、y頁座標處***********/
void Wrdata(uchar X)   //函數名為Wrdata 的子函數,定義X為無符號字符型變量                                                       
{							//函數開始
Locatexy();					//座標定位
RS=1;						//選擇數據寄存器
RW=0;					//選擇寫
DataPort=X;					//將數據X寫入LCM口
EN=1;						//使能
EN=0;						//禁能
}							//函數結束
/******************寫命令至左區********************/
void WrcmdL(uchar X)	//函數名為WrcmdL 的子函數,定義X為無符號字符型變量
{							//函數開始
lcdbusyL();					//調用左區判忙子函數
RS=0;						//選擇指令寄存器
RW=0;					//選擇寫
DataPort=X;					//數據輸出至數據口
EN=1;EN=0;				//使能,禁能
}							//函數結束

/********************寫命令至中區************************/
void WrcmdM(uchar X)	//函數名為WrcmdM的子函數,定義X為無符號字符型變量
{							//函數開始
lcdbusyM();					//調用中區判忙子函數
RS=0;						//選擇指令寄存器
RW=0;					//選擇寫
DataPort=X;					//數據輸出至數據口
EN=1;EN=0;				//使能,禁能
}							//函數結束
/**************寫命令至右區****************
void WrcmdR(uchar X) //函數名為WrcmdR的子函數,定義X為無符號字符型變量
{							//函數開始
lcdbusyR();					//調用右區判忙子函數
RS=0;						//選擇指令寄存器
RW=0;					//選擇寫
DataPort=X;					//數據輸出至數據口
EN=1;EN=0;				//使能,禁能
}							//函數結束
***********************左區判忙子函數***********************/
void lcdbusyL(void)		//函數名為lcdbusyL 的左區判忙子函數
{						//函數開始
CS1=1;CS2=0;	//選中左區
wtcom();					//調用判忙等待子函數
}						//函數結束

void lcdbusyM(void)		//函數名為lcdbusyM的中區判忙子函數
{						//函數開始
CS1=0;CS2=1;	//選中中區
wtcom();					//調用判忙等待子函數
}						//函數結束

/*void lcdbusyR(void)		//函數名為lcdbusyR的右區判忙子函數(這里不用)
{						//函數開始
CS1=?;CS2=?;	//根據所用LCM器件決定取值
wtcom();					//調用判忙等待子函數
}*/						//函數結束
/***********公用判忙等待子函數********************/
void wtcom(void)			//函數名為wtcom 的公用判忙等待子函數
{						//函數開始
RS=0;					//選擇指令寄存器
RW=1;				//選擇讀
DataPort=0xff;				//數據0xff輸出至數據口
EN=1;					//使能
while(DataPort&Lcdbusy);//	若LCM忙則等待
EN=0;					//禁能
}						//函數結束
/************根據設定的col、row座標數據,定位LCM下一個操作單元************/
void Locatexy(void)		//函數名為Locatexy 的子函數
{						//函數開始
uchar x,y;					//定義x,y為無符號字符型變量
switch(col&0xc0)			//限定x列最大值為192
{
case 0:{lcdbusyL();break;}	//判左區忙
case 0x40:{lcdbusyM();break;}	//判中區忙
//case 0x80:{lcdbusyR();break;}	//判右區忙(這里不用)
}

x=col&0x3f|SETX;			//獲得x列(0~63)地址
y=row&0x07|SETY;		//獲得y頁(0~7)地址

wtcom();						//調用判忙等待子函數
RS=0;						//選擇指令寄存器
RW=0;					//選擇寫
DataPort=y;					//y頁地址傳送至LCM口
EN=1;EN=0;				//使能,禁能
wtcom();						//調用判忙等待子函數
RS=0;						//選擇指令寄存器
RW=0;					//選擇寫
DataPort=x;					//x列地址傳送至LCM口
EN=1;EN=0;				//使能,禁能
}							//函數結束
/*******************液晶屏初始化******************************/
void Lcminit(void)			//函數名為Lcminit的液晶屏初始化子函數
{							//函數開始
reset();					//調用復位子函數
cbyte=DISPFIRST;				//定義起始行為0行
WrcmdL(cbyte);				//寫命令至左區
WrcmdM(cbyte);				//寫命令至中區
//WrcmdR(cbyte);				//寫命令至右區(這里不用)
cbyte=DISPOFF;				//關閉顯示屏
WrcmdL(cbyte);				//寫命令至左區
WrcmdM(cbyte);				//寫命令至中區
//WrcmdR(cbyte);				//寫命令至右區(這里不用)
cbyte=DISPON;				//打開顯示屏
WrcmdL(cbyte);				//寫命令至左區
WrcmdM(cbyte);				//寫命令至中區
//WrcmdR(cbyte);				//寫命令至右區(這里不用)
Lcmcls();						//清屏
Delay(10000);					//延時一會
Lcmclsxx();					//全屏置黑
Delay(10000);					//延時一會
Lcmcls();						//清屏
Delay(30000);					//延時一會
col=0;						//定位x方向為0列
row=0;						//定位y方向為0頁
Locatexy();					//定位0列、0頁為LCM下一個操作單元
}							//函數結束
/*********************延時子函數**********************/
void Delay(unsigned long MS)	
{						
while(MS!=0)MS--;		
}						

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91伊人久久大香线蕉| 大美女一区二区三区| 精品国产91久久久久久久妲己| 国产又粗又猛又爽又黄91精品| 国产人成亚洲第一网站在线播放| 91麻豆国产香蕉久久精品| 日本一区中文字幕| 久久久国产一区二区三区四区小说| 99久久精品免费看国产 | 国产精品美女久久久久久久网站| 欧美艳星brazzers| 国产一区二区主播在线| 亚洲一级二级三级在线免费观看| 91网站最新网址| 2014亚洲片线观看视频免费| 欧美丝袜第三区| 国产成人免费视频精品含羞草妖精| 亚洲午夜精品在线| 国产精品麻豆视频| 精品美女一区二区三区| 欧美在线影院一区二区| 加勒比av一区二区| 奇米精品一区二区三区在线观看| 亚洲人亚洲人成电影网站色| 欧美大片日本大片免费观看| 欧美日韩国产电影| 91香蕉视频黄| 国产精品一区二区久久不卡| 亚洲欧洲国产日本综合| 国产丝袜欧美中文另类| 3d动漫精品啪啪1区2区免费 | 国产一区二区三区最好精华液| 亚洲aaa精品| 日韩毛片高清在线播放| 久久老女人爱爱| 欧美三区在线观看| 91麻豆swag| 99精品热视频| 国产成人av电影免费在线观看| 蜜臀av一级做a爰片久久| 免费观看久久久4p| 日韩黄色小视频| 亚洲狠狠爱一区二区三区| 亚洲免费三区一区二区| 国产精品久久久久久久久动漫| 久久精品一区二区三区不卡牛牛| 欧美日韩一区二区三区免费看| 在线日韩国产精品| 91老司机福利 在线| 99久久综合国产精品| 97aⅴ精品视频一二三区| 成人视屏免费看| 成人性生交大片免费| 99re8在线精品视频免费播放| 99综合影院在线| 99久久久精品免费观看国产蜜| 国产99久久久国产精品潘金网站| 国产美女一区二区三区| 韩国三级中文字幕hd久久精品| 极品少妇xxxx精品少妇| 国产成人精品一区二区三区网站观看 | 一本色道综合亚洲| 色综合中文字幕| 欧美一a一片一级一片| 欧美一区欧美二区| 日韩精品在线一区| 久久久久高清精品| 亚洲欧洲日韩一区二区三区| **性色生活片久久毛片| 一区二区三区欧美日| 国产精品久久久久久久久久免费看| 国产精品久久久一区麻豆最新章节| 国产精品久久久久一区二区三区共| 中文字幕在线不卡一区| 五月天亚洲婷婷| 国产伦理精品不卡| a美女胸又www黄视频久久| 色综合一区二区| 欧美一级二级在线观看| 欧美一区二区三区视频免费播放| 久久亚洲一级片| 中文字幕在线观看不卡视频| 精品一区二区三区免费播放| 国产精品99精品久久免费| 国产在线观看一区二区| 不卡av电影在线播放| 欧美一区三区四区| 国产人成亚洲第一网站在线播放| 一区二区三区精品| 国产高清一区日本| 欧美无砖砖区免费| 337p粉嫩大胆色噜噜噜噜亚洲 | 日韩电影免费在线看| 国精产品一区一区三区mba桃花| 99国内精品久久| 精品国产一区二区三区忘忧草| 中文一区在线播放| 午夜一区二区三区在线观看| 免费成人在线视频观看| 色噜噜狠狠成人网p站| 日韩久久精品一区| 亚洲人123区| 久久国产精品一区二区| 91首页免费视频| 精品国产一区a| 亚洲激情中文1区| 不卡视频一二三四| 日韩免费在线观看| 亚瑟在线精品视频| 99精品国产视频| 精品盗摄一区二区三区| 亚洲精品欧美在线| 美女视频黄频大全不卡视频在线播放| 91亚洲精品一区二区乱码| 日韩欧美一级片| 亚洲制服丝袜在线| 国产精品一二三| 日韩欧美亚洲一区二区| 亚洲精品乱码久久久久久日本蜜臀| 黄色日韩网站视频| 成人激情校园春色| 中文欧美字幕免费| 狠狠色丁香婷婷综合| 欧美日韩一区二区在线观看视频 | 偷拍与自拍一区| voyeur盗摄精品| 国产日韩精品一区二区三区| 日韩精品一二三四| 欧美性猛交xxxx乱大交退制版 | 欧美艳星brazzers| 国产尤物一区二区| 精品国产精品一区二区夜夜嗨| 亚洲va欧美va人人爽| 色综合中文字幕| 亚洲青青青在线视频| 成人黄色免费短视频| 国产精品对白交换视频| 不卡一区二区三区四区| 国产婷婷一区二区| 99久久婷婷国产精品综合| 国产精品三级av在线播放| 国产成人av电影在线播放| 亚洲国产高清aⅴ视频| 国产一区二区三区国产| 欧美成人国产一区二区| 韩国一区二区视频| 久久久久久久精| 国产精品白丝jk白祙喷水网站| 久久这里只有精品6| 国模一区二区三区白浆| 久久免费电影网| 国产一区二区三区四区五区美女 | 免费在线观看一区二区三区| 欧美一卡二卡三卡| 狠狠色综合播放一区二区| 国产欧美日韩卡一| 色综合一个色综合亚洲| 午夜视频在线观看一区| 精品国产电影一区二区| 成人sese在线| 午夜欧美电影在线观看| 欧美精品一区二区三区很污很色的| 国产91在线观看丝袜| 亚洲欧美一区二区三区国产精品| 欧美精品一二三区| 国产一区二区不卡在线| 国产精品久久久久久久久免费樱桃 | 色香色香欲天天天影视综合网| 亚洲第一激情av| 久久综合色一综合色88| 91麻豆福利精品推荐| 奇米四色…亚洲| 亚洲特黄一级片| 欧美一级欧美三级| 成人网页在线观看| 日本不卡视频在线观看| 国产精品无圣光一区二区| 欧美日韩一区国产| 国产成人免费在线观看| 午夜在线成人av| 国产精品天天摸av网| 9191久久久久久久久久久| 成人av在线网| 美腿丝袜一区二区三区| 亚洲少妇最新在线视频| 精品国偷自产国产一区| 在线观看区一区二| 成人永久看片免费视频天堂| 天堂蜜桃91精品| 亚洲人成人一区二区在线观看| 欧美va亚洲va| 欧美日韩精品高清| 不卡免费追剧大全电视剧网站| 久久国产生活片100| 亚洲福利国产精品| 中文字幕日韩精品一区| 久久老女人爱爱| 欧美一区二区三区在线观看视频| 色综合天天综合网天天看片| 国产乱一区二区|