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

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

?? sed1330.h

?? uC_OS-II在C51下的一個完整的LCD項目源碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
//以下程序用于SED1330控制的液晶顯示模塊,顯示點陣為320X240
#include "stdarg.h"

#define CR        39                                   /*定義顯示窗口的長度,以字符為單位*/
#define TCR       45                                   /*定義LCD的時間常數.這個時間常數應該盡量小(場頻就大),防止轉換時出現閃爍*/
#define LF        239                                  /*定義LCD的行數*/
#define APL       40                                   /*定義LCD一行所占緩沖區的字節數,低8位*/
#define APH       0                                    /*定義LCD一行所占緩沖區的字節數,高8位*/

#define SAD1      0X0000                               /*定義顯示一區首址*/
#define SAD1L     0X00                                 /*定義顯示一區首址低8位*/
#define SAD1H     0X00                                 /*定義顯示一區首址高8位*/
#define SL1       239                                  /*定義顯示一區所占顯示屏幕的行數*/

#define SAD2      0X2800                               /*定義顯示二區首址*/
#define SAD2L     0X00                                 /*定義顯示二區首址低8位*/
#define SAD2H     0X28                                 /*定義顯示二區首址高8位*/
#define SL2       239                                  /*定義顯示二區所占顯示屏幕的行數*/

#define SAD3      0X5000                               /*定義顯示三區首址*/
#define SAD3L     0X00                                 /*定義顯示三區首址低8位*/
#define SAD3H     0X50                                 /*定義顯示三區首址高8位*/

#define SAD4      0X2800                               /*定義顯示四區首址*/
#define SAD4L     0X00                                 /*定義顯示四區首址低8位*/
#define SAD4H     0X28                                 /*定義顯示四區首址高8位*/

#define TA_LEFT		0									//左對齊方式
#define TA_CENTER	1									//中心對齊方式
///////////////////////
void wrstr(unsigned int sad,unsigned int hnum,unsigned char vnum,unsigned char* str);
void wrdot(unsigned int sad,unsigned int hnum,unsigned char vnum);
void initlcd();
void rectangle(unsigned int sad,unsigned int strhnum,unsigned char strvnum,unsigned int endhnum,unsigned char endvnum,unsigned char fill);
void wrchat(unsigned int sad,unsigned int hnum,unsigned char vnum,unsigned char chatnum);
void liney(unsigned int sad,unsigned int x,unsigned char y1,unsigned char y2);
void linex(unsigned int sad,unsigned char y,unsigned int x1,unsigned int x2);
//////////////////////
/*設定三個顯示區域為:第一顯示區   0000H----27FFH  (10K容量)
                     第二顯示區   2800H----4FFFH  (10K容量)
                     第三顯示區   5000H----77FFH  (10K容量)*/
const unsigned char  LCDSYSINIT[8]={0X30,0X87,0X07,CR,TCR,LF,APL,APH};                          /*主LCD0的SYS設置參數*/
const unsigned char  LCDSCRINIT[10]={SAD1L,SAD1H,SL1,SAD2L,SAD2H,SL2,SAD3L,SAD3H,SAD4L,SAD4H};  /*主LCD0的SCR設置參數*/


/***********************************************************
*   程序名稱: INITLCD                                     *
*   程序用途: 將SED1330 初始化成3層圖形方式               *
*   輸入參數: 無                                          *
*														  *
*                                                         *
***********************************************************/
void initlcd()           
{
	xdata unsigned char counter;
	
	LCDORDER=0X40;							/*送入SYS命令*/
	for(counter=0;counter<=7;counter++)
	{LCDDATA=LCDSYSINIT[counter];}			/*送入8個SYSTERM數據*/
	
	LCDORDER=0X44;							/*送入SCROLL命令*/
	for(counter=0;counter<=9;counter++)
	{LCDDATA=LCDSCRINIT[counter];}			/*送入十個SCROLL數據*/
	
	LCDORDER=0X5A;							/*送入HDOTSCR命令*/
	LCDDATA=0X00;							/*送入HDOTSCR數據*/
	
	LCDORDER=0X4F;
	
	LCDORDER=0X5B;							/*送入OVLAY命令*/
	LCDDATA=0X1D;							/*送入OVLAY數據,顯示方式==(L1*L2)+L3 */
	
	LCDORDER=0X59;							/*開關顯示*/
	LCDDATA=0X40;							/*開啟一.二四.三, 關閉光標*/
	//LCDDATA=0X04|0x10|0x40;							/*開啟一.二四.三, 關閉光標*/
	
	
	LCDORDER=0X5D;							/*設置光標*/
	LCDDATA=0X07;							/*水平點數為7*/
	LCDDATA=0X87;							/*垂直點數為7,陰影顯示*/	
}
/***********************************************************
*   程序名稱: WRDOT()                                     *
*   程序用途: 在指定層的指定位置寫點.                     *
*   輸入參數: sad    指定層的內存地址                     *
*             hnum   點橫坐標                             *
*             vnum   點縱坐標                             *
*                                                         *
***********************************************************/
void wrdot(unsigned int sad,unsigned int hnum,unsigned char vnum)
{
	unsigned char flag;
    union {unsigned int add;
	struct {unsigned char addhi;unsigned char addlo;}addhalf;
	}curadd;
    curadd.add=vnum*(APL)+hnum/8+sad;
    flag=hnum-(hnum/8)*8;
    flag=(0x80)>>flag;
	
    LCDORDER=0X46;                       /*設置光標地址*/
    LCDDATA=curadd.addhalf.addlo;
    LCDDATA=curadd.addhalf.addhi;
	
    LCDORDER=0X43;                       /*取出該點所在地址的數據*/ 
    flag=flag|(LCDORDER);
	
    LCDORDER=0X46;
    LCDDATA=curadd.addhalf.addlo;
    LCDDATA=curadd.addhalf.addhi;
	
    LCDORDER=0X42;
    LCDDATA=flag;	
}                    
/***********************************************************
*   程序名稱: WRDOT()                                     *
*   程序用途: 在指定層的指定位置清點.                     *
*   輸入參數: sad    指定層的內存地址                     *
*             hnum   點橫坐標                             *
*             vnum   點縱坐標                             *
*                                                         *
***********************************************************/
/*void clsdot(unsigned int sad,unsigned int hnum,unsigned char vnum)
{
	xdata unsigned char flag;
    xdata union {unsigned int add;
	struct {unsigned char addhi;unsigned char addlo;}addhalf;
	}curadd;
    curadd.add=vnum*(APL)+hnum/8+sad;
    flag=hnum-(hnum/8)*8;
    flag=(0x80)>>flag;
	flag=~flag;
	
    LCDORDER=0X46;                       //設置光標地址
    LCDDATA=curadd.addhalf.addlo;
    LCDDATA=curadd.addhalf.addhi;
	
    LCDORDER=0X43;                       //取出該點所在地址的數據
    flag=flag&(LCDORDER);
	
    LCDORDER=0X46;
    LCDDATA=curadd.addhalf.addlo;
    LCDDATA=curadd.addhalf.addhi;
	
    LCDORDER=0X42;
    LCDDATA=flag;	
}           */
/***********************************************************
*   程序名稱: CLSSED()                                     *
*   程序用途: 清空顯示器			                       *
*   輸入參數: 無										   *
*								                           *
*								                           *
*                                                          *
************************************************************/
void clssed(unsigned int sad)
{
	xdata union {unsigned int add;
	struct {unsigned char addhi;unsigned char addlo;}addhalf;
	}curadd;
    curadd.add=sad;
    LCDORDER=0X46;                       /*設置光標地址*/
    LCDDATA=curadd.addhalf.addlo;
    LCDDATA=curadd.addhalf.addhi;
	LCDORDER=0X4C;
	LCDORDER=0X42;
	sad=0;
	while(sad<9600)
	{
		LCDDATA=0X00;
		sad++;
	}
}           

/***********************************************************
*   程序名稱: LINEX()                                      *
*   程序用途: 作水平線  			                       *
*   輸入參數: sad    指定層的內存地址                      *
*			  y位置										   *
*			  x1起點									   * 
*			  x2終點			                           *
*								                           *
*                                                          *
************************************************************/
void linex(unsigned int sad,unsigned char y,unsigned int x1,unsigned int x2)
{
	do{
		wrdot(sad,x1,y);
		x1++;
	}while(x1<=x2);
}    

/***********************************************************
*   程序名稱: LINEY()                                      *
*   程序用途: 作垂直線  			                       *
*   輸入參數: sad    指定層的內存地址                      *
*			  x位置										   *
*			  y1起點									   * 
*			  y2終點			                           *
*								                           *
*                                                          *
************************************************************/
void liney(unsigned int sad,unsigned int x,unsigned char y1,unsigned char y2)
{
	do{
		wrdot(sad,x,y1);
		y1++;
	}while(y1<=y2);
}    
/***********************************************************
*   程序名稱: LINE()                                       *
*   程序用途: 作垂直線  			                       *
*   輸入參數: sad    指定層的內存地址                      *
*			  x1起點									   *
*			  x2終點									   *
*			  y1起點									   * 
*			  y2終點			                           *
*								                           *
*                                                          *
************************************************************/
/*void line(unsigned int sad,unsigned int x1,unsigned int x2,unsigned char y1,unsigned char y2)
{
	unsigned char tem,tem1;
	if(y2>y1)
	{
		tem=y2-y1;
		for(tem1=0;tem1<=tem/2;tem1++)
		{
			wrdot(sad,x1,y1+tem1);
			wrdot(sad,x2,y1+tem/2+tem1+1);
		}
	}
	else
	{
		tem=y1-y2;
		for(tem1=0;tem1<=tem/2;tem1++)
			wrdot(sad,x1,y1-tem1);
		for(tem1=1;tem1<=tem/2;tem1++)
			wrdot(sad,x2,y1-tem/2-tem1);
	}
}    */

/***********************************************************
*   程序名稱: WRCHAT()                                    *
*   程序用途: 在指定層的指定位置寫ASCII字符               *
*   輸入參數: sad    指定層的內存地址                     *
*             hnum   點橫坐標                             *
*             vnum   點縱坐標                             *
*             chatnum字符的序號值                         *
***********************************************************/
void wrchatasc(unsigned int sad,unsigned int hnum,unsigned char vnum,unsigned char chatnum)
{
	unsigned char buff[16];                   /*緩存,用于讀寫ASCII字符的16*16點陣*/
	unsigned char counter;
	unsigned char flag1;
	unsigned char flag2;
	unsigned char offset;
	union {unsigned int add;
	struct {unsigned char addhi;unsigned char addlo;}addhalf;
	}curadd;
	curadd.add=vnum*(APL)+hnum/8+sad;      /*計算出首址*/
	offset=hnum-(hnum/8)*8;               /*計算出字符內的偏移量*/
	
	LCDORDER=0X46;                         /*確定光標地址*/
	LCDDATA=curadd.addhalf.addlo;
	LCDDATA=curadd.addhalf.addhi;
	
	
	/*以下寫字符的左部*/
	LCDORDER=0X4F;                         /*確定光標移動方向為向下*/
	
	flag1=(0XFF)<<(8-offset);
	flag2=~flag1;
	
		
	LCDORDER=0X43;                         /*由光標處開始,向下讀入16個數據*/                                        
	for(counter=0;counter<16;counter++)
    {  /*由于LCDORDER的操作是一次寫,一次讀,C51可能在讀操作時優化成直接使用寫的數據,
		而不進行讀操作,所以加一個無用指令*/
		buff[counter]=(LCDORDER&flag1)|(ASC_MSK[chatnum][counter]>>offset);
    }
	
	LCDORDER=0X46;                         /*再次確定光標地址*/
	LCDDATA=curadd.addhalf.addlo;
	LCDDATA=curadd.addhalf.addhi;
	
	LCDORDER=0X42;
	for(counter=0;counter<16;counter++)
    {
		(LCDDATA)=buff[counter];
	}
	

	curadd.add=curadd.add+1;         /*地址加1,移到右部*/
	
	LCDORDER=0X4F;                   /*確定光標移動方向為向下*/
	
	LCDORDER=0X46;                   /*確定光標地址*/
	LCDDATA=curadd.addhalf.addlo;
	LCDDATA=curadd.addhalf.addhi;
	
	flag1=(0XFF)>>offset;
	flag2=~flag1;
	flag1=0XFF>>offset;
				
	LCDORDER=0X43;                   /*由光標處開始,向下讀入16個數據*/
	for(counter=0;counter<16;counter++)
	{
		buff[counter]=(LCDORDER&flag1)|(ASC_MSK[chatnum][counter]<<(8-offset));
	}
	
	LCDORDER=0X46;                   /*再次確定光標地址*/
	LCDDATA=curadd.addhalf.addlo;
	LCDDATA=curadd.addhalf.addhi;
	
	LCDORDER=0X42;
	for(counter=0;counter<16;counter++)
	{
		(LCDDATA)=buff[counter];
	}
}
/***********************************************************
*   程序名稱: WRCHAT()                                    *
*   程序用途: 在指定層的指定位置寫漢字字符                    *
*   輸入參數: sad    指定層的內存地址                     *
*             hnum   點橫坐標                             *
*             vnum   點縱坐標                             *
*             chatnum字符的序號值                         *
***********************************************************/
void wrchat(unsigned int sad,unsigned int hnum,unsigned char vnum,unsigned char chatnum)
{
	unsigned char buff[16];                   /*緩存,用于讀寫ASCII字符的16*16點陣*/
	unsigned char counter;
	unsigned char flag1;
	unsigned char flag2;
	unsigned char offset;
	union {unsigned int add;
	struct {unsigned char addhi;unsigned char addlo;}addhalf;
	}curadd;
	curadd.add=vnum*(APL)+hnum/8+sad;      /*計算出首址*/
	offset=hnum-(hnum/8)*8;               /*計算出字符內的偏移量*/
	
	LCDORDER=0X46;                         /*確定光標地址*/
	LCDDATA=curadd.addhalf.addlo;
	LCDDATA=curadd.addhalf.addhi;
	
	
	/*以下寫字符的左部*/
	LCDORDER=0X4F;                         /*確定光標移動方向為向下*/
	
	flag1=(0XFF)<<(8-offset);
	flag2=~flag1;
	
		
	LCDORDER=0X43;                         /*由光標處開始,向下讀入16個數據*/                                        
	for(counter=0;counter<16;counter++)
    	buff[counter]=(LCDORDER&flag1)|(GB_16[chatnum].Msk[counter]>>offset);
    
	LCDORDER=0X46;                         /*再次確定光標地址*/
	LCDDATA=curadd.addhalf.addlo;
	LCDDATA=curadd.addhalf.addhi;
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线视频精品一区| 欧美一区二区三区小说| 欧美日韩中文字幕精品| 日韩精品综合一本久道在线视频| 久久久久久9999| 亚洲国产人成综合网站| 国产高清无密码一区二区三区| 日本乱码高清不卡字幕| 久久综合色综合88| 日韩精品视频网站| 91在线观看美女| 精品乱人伦小说| 天天操天天干天天综合网| 成人激情视频网站| 精品国产麻豆免费人成网站| 亚洲国产精品久久久久秋霞影院| 国产成人无遮挡在线视频| 制服丝袜亚洲色图| 亚洲第一主播视频| 色婷婷综合久久久中文一区二区| 久久久精品黄色| 麻豆专区一区二区三区四区五区| 欧美制服丝袜第一页| 中文字幕一区在线观看视频| 国产一区999| 欧美大黄免费观看| 日韩精品一卡二卡三卡四卡无卡| 日本韩国一区二区三区视频| 欧美高清在线视频| 国产不卡视频一区| 国产色一区二区| 国产麻豆视频精品| 国产欧美精品区一区二区三区| 激情文学综合丁香| 欧美成人官网二区| 蓝色福利精品导航| 日韩美女在线视频| 经典三级一区二区| 欧美夫妻性生活| 亚洲18女电影在线观看| 欧美丰满美乳xxx高潮www| 性欧美大战久久久久久久久| 777奇米成人网| 青青青伊人色综合久久| 欧美一级黄色大片| 韩国欧美国产一区| 国产欧美日本一区视频| 不卡的看片网站| 亚洲色图丝袜美腿| 精品污污网站免费看| 首页国产丝袜综合| 精品久久久久久亚洲综合网 | 国产精品你懂的在线欣赏| 春色校园综合激情亚洲| 自拍偷自拍亚洲精品播放| av网站免费线看精品| 亚洲国产一区二区视频| 日韩一区二区在线播放| 国产乱码精品一区二区三区忘忧草| 日韩精品专区在线影院重磅| 国产乱人伦精品一区二区在线观看| 国产精品国产三级国产aⅴ入口| 色婷婷综合五月| 日本在线不卡视频一二三区| 久久综合九色综合欧美就去吻| 国产福利视频一区二区三区| 亚洲黄色录像片| 欧美一区二区三区在| 粉嫩一区二区三区在线看| 亚洲精品水蜜桃| 日韩午夜在线观看视频| 成人免费的视频| 日韩av电影免费观看高清完整版 | 99久久精品国产一区二区三区| 亚洲成人av在线电影| 国产欧美视频一区二区| 欧美亚一区二区| 国产成人精品免费在线| 亚洲成人av一区二区三区| 日本一区二区动态图| 欧美另类变人与禽xxxxx| 国产成人丝袜美腿| 日本亚洲视频在线| 18成人在线视频| 久久久久久亚洲综合影院红桃 | 亚洲免费资源在线播放| 日韩视频一区在线观看| 色一情一乱一乱一91av| 国产精品中文字幕欧美| 亚洲成av人综合在线观看| 国产欧美精品国产国产专区| 8v天堂国产在线一区二区| 风流少妇一区二区| 久久精品国产一区二区三| 亚洲一区二区综合| 国产精品久久久久影院色老大| 欧美另类videos死尸| 色拍拍在线精品视频8848| 国产成人久久精品77777最新版本| 天堂av在线一区| 亚洲精品福利视频网站| 国产精品无码永久免费888| 日韩精品一区二区三区中文不卡 | 五月婷婷综合在线| 亚洲精品成人少妇| 国产精品毛片高清在线完整版| 日韩免费在线观看| 在线成人av影院| 欧美性生活一区| 色综合亚洲欧洲| 99久久久免费精品国产一区二区| 国产精品99久久久久久宅男| 久久99精品国产麻豆婷婷| 日韩精品五月天| 日本最新不卡在线| 日韩av一级电影| 日韩中文字幕亚洲一区二区va在线 | 国产精品色呦呦| 国产精品美女久久久久久久| 亚洲国产成人午夜在线一区| 久久久亚洲国产美女国产盗摄 | 欧美视频在线观看一区二区| 91免费观看视频在线| 色综合久久综合中文综合网| 99久久er热在这里只有精品15 | 欧美日韩在线免费视频| 欧美日韩一区三区| 欧美一区二区日韩一区二区| 日韩一区二区免费高清| 欧美精品一区二区三区久久久| 精品乱人伦小说| 国产精品天美传媒沈樵| 综合婷婷亚洲小说| 一区二区欧美精品| 天天综合日日夜夜精品| 九色|91porny| 国产a精品视频| 色偷偷88欧美精品久久久| 欧美人与z0zoxxxx视频| 欧美一区二区视频在线观看2022| 精品日韩欧美在线| 亚洲国产精品精华液ab| 一区二区成人在线| 久久99国内精品| 丁香婷婷综合色啪| 91久久精品网| 日韩午夜在线观看视频| 国产亚洲美州欧州综合国| 亚洲色欲色欲www| 婷婷一区二区三区| 国产精品一区二区在线看| 在线观看亚洲成人| 欧美一区二区三区四区久久| 国产亚洲女人久久久久毛片| 一区二区三区国产豹纹内裤在线| 久久国产三级精品| 91社区在线播放| 日韩三级精品电影久久久| 中文一区二区完整视频在线观看| 亚洲午夜精品在线| 国产成人在线看| 欧美日韩国产另类不卡| 国产欧美一区二区在线观看| 午夜婷婷国产麻豆精品| 成人性生交大片免费看中文| 欧美在线看片a免费观看| 2021中文字幕一区亚洲| 亚洲一区二区三区在线| 国产成人免费在线观看| 在线成人av影院| 亚洲免费成人av| 国产在线视频精品一区| 欧美三级中文字幕在线观看| 国产精品美女久久福利网站| 精品在线免费观看| 欧美性大战久久久久久久蜜臀| 国产色婷婷亚洲99精品小说| 性久久久久久久久| 色视频欧美一区二区三区| 国产区在线观看成人精品| 免费在线观看成人| 欧美三级午夜理伦三级中视频| 欧美激情一区三区| 日韩av电影天堂| 欧美自拍偷拍午夜视频| 1区2区3区国产精品| 国产成人aaa| 欧美一级在线观看| 亚洲第一综合色| 欧美在线观看视频在线| 亚洲猫色日本管| 北条麻妃一区二区三区| 国产日产欧美一区| 国产乱码精品一区二区三区五月婷| 日韩三级.com| 日韩高清在线观看| 9191成人精品久久| 日韩国产欧美在线播放| 欧美人狂配大交3d怪物一区| 亚洲一区二区四区蜜桃|