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

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

?? lcd.c

?? NT7534驅動IC,132X64液晶屏的S3C44B0驅動演示程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*--------------------------------------------
主題:S3C44B0-LCM-NT7534顯示程序
編寫人:龍壽華
程序功能:用ARM點亮此13264點陣的黑白液晶屏  
;連線圖:
;*LCM------MCU*                    *LCM-------MCU*
;*DB0~7---VD0~7/PD0~PD3-PC7~PC4*   *A0----VFRAME/PD7*
;*WR-------VCLK/PD4*               *CS1----EL_ON/PC9*
;*RD------VLINE/PD5*               *RESET-----NRESET*
-------------------------------------------------*/
#include "..\inc\uTypes.h"
#include "..\inc\44b0x.h"
#include "..\inc\console.h"
#include "..\inc\sysUtils.h"

#include <stdarg.h>

//#define LCM_DELAY  1 //事實證明根本不需要延時,LCM完全能反應過來
/***********LCM常用操作命令和參數定義***************/
#define  DISPON  0xAf /*顯示on  */
#define  DISPOFF 0xAe /*顯示off  */
#define  DISPFIRST 0x40 /*顯示起始行定義 */
#define  SETX1  0x00 /*X定位低4位設定指令(列) */
#define  SETX2  0x10 /*X定位高4位設定指令(列) */
#define  SETY  0xb0 /*Y定位設定指令(頁) */
#define  Lcdbusy 0x80 /*LCM忙判斷位,當讀出數據的最高位為1時,表示正忙。 */
#define  DISCURRENT  0x81 /*進入到電流量設定 */
/*初始化LCD時用到的指令和參數定義*/
#define  DISADC  0xA0 /*LCM顯示ADC設定,順方向 */
#define  DISVOL  0xA2 /*LCM顯示偏壓設定(取中間值) */
#define  DISCOM  0xCF /*LCM公共輸出模式選擇,逆方向 */
#define  DISNORMAL  0xA6 /*一般顯示指令 */
#define  DISREVERSE  0xA7 /*反顯指令 */
#define  DISVR  0x24 /*調整V0電阻比率,這里折中*/
#define  DISCURVUL  0x5D /*設定電流量值,這里折中 */
#define  DISfrequency   0xE4 /*設定LCM工作頻率,這里是最大值 */
#define  DISPOWER   0x2F /*LCM電源控制項設定,這里全開 */
#define  LCMLIMIT    132   /*本程序驅動13264LCM,所以這里為132.*/
/*******************************************************/
const unsigned char Ezk[]; //ASCII字庫8列*16行

#define SET_LCM_A0() \
        rPDATD |= MASK_BIT(7)
#define CLR_LCM_A0() \
        rPDATD &= ~MASK_BIT(7)

#define SET_LCM_WR() \
        rPDATD |= MASK_BIT(4)
#define CLR_LCM_WR() \
        rPDATD &= ~MASK_BIT(4)
        
#define SET_LCM_RD() \
        rPDATD |= MASK_BIT(5)
#define CLR_LCM_RD() \
        rPDATD &= ~MASK_BIT(5)  
                
#define SET_LCM_CS1() \
        rPDATC &= ~MASK_BIT(9) //LCM的CS1是經過一個反向器與ARM連接,所以要反向
#define CLR_LCM_CS1() \
        rPDATC |= MASK_BIT(9)
        
unsigned char col,row; //col即LCM的行地址,row即LCM的列地址
/****************************************/
/* 向LCM數據口輸出數據函數 */
/****************************************/       
void LCM_WRITE(unsigned char data)
{
   unsigned char count;
   unsigned char baker;
   rPDATD = (rPDATD&0xf0)|(data&0x0f);
   baker=data>>4;
   data=baker&0x01;
   for(count=1;count<4;count++){  //高四位高低位交換
       data=(data<<1)|((baker>>count)&0x01);
       }
   rPDATC = (rPDATC&0xff0f)|(data<<4);
}
/****************************************/
/* 讀出LCM數據口數據函數 */
/****************************************/
unsigned char LCM_READ(void)
{
   unsigned char count;
   unsigned char baker,data1,data2;
   data1 = (rPDATD&0x0f); 
   data2 = (rPDATC&0xf0);
   baker=data2>>4;
   data2=baker&0x01;
   for(count=1;count<4;count++){  //高四位高低位交換
       data2=(data2<<1)|((baker>>count)&0x01);
       }
   return((data2<<4)|data1);
}
/****************************************/
/* LCM專用延時函數  */
/****************************************/
void lcmDelay (unsigned int nDelay)
{
  int i;
  for (i = 0; i < nDelay; ++ i);
}
/****************************************/
/* 對LCM寫入命令 */
/****************************************/
void lcmWriteCmd (U8 byCmd)
{
  CLR_LCM_A0();
  CLR_LCM_CS1();
  SET_LCM_RD();
//  lcmDelay (LCM_DELAY);
  CLR_LCM_WR();
  LCM_WRITE (byCmd);
  SET_LCM_CS1();
  SET_LCM_WR ();
  SET_LCM_A0();
//  lcmDelay (LCM_DELAY);
}
/****************************************/
/* 對LCM寫入數據  */
/****************************************/
void lcmWriteData (U8 byData)
{
  SET_LCM_A0 ();
  CLR_LCM_CS1();
  SET_LCM_RD();
//  lcmDelay (LCM_DELAY);
  CLR_LCM_WR();
  LCM_WRITE (byData);
  SET_LCM_CS1();
  SET_LCM_WR ();
  SET_LCM_A0();
//  lcmDelay (LCM_DELAY);
}
/****************************************/
/* LCM寫入地址函數 */
/****************************************/
void LcmLoadxy ()
{
 lcmWriteCmd(row | SETY);  /* 寫入頁地址 */
 lcmWriteCmd((col>>4) | SETX2);  /*寫入列地址的高4位*/
 lcmWriteCmd((col & 0x0F) | SETX1);  /* 寫入列地址的低4位 */
}
/****************************************/
/* 清屏,全屏幕清零,不清屏ICON圖標 */
/****************************************/
void Lcmcls( void )
{
  row=0,col=0;
  for(row=0;row<8;row++) /*這里不清功能指示行*/
    {
	 col=0;   /*回歸到初始值0*/
     LcmLoadxy();     /* 寫入頁首地址 */
     for(;col<LCMLIMIT;col++)lcmWriteData(0);    /* 寫入數據0 */
	}
  row=0,col=0;    /* 地址歸位 */
}
/****************************************/
 /*LCM顯示功能點函數*/
 /*入口數i是指定要顯示的點的列數,j為1時表示點亮該點,為0時消隱*/
/****************************************/
void Lcm_dot (unsigned char i,unsigned char j)
{
   unsigned char bakerx,bakery;  //定義兩個變量,用于存放col及row的初值
   bakerx=col;bakery=row; //備份地址
   col=i;  /*寫入標志的列地址*/
   row=8;  /*功能點都在第8頁,即第65行*/
   LcmLoadxy();     /* 寫入地址 */
   if (j)
      {lcmWriteData(0xFF);}   /*j=1,則點亮此點*/
   else
      {lcmWriteData(0);}  /*j=0,關掉此點*/
   col=bakerx;row=bakery; //還原地址
}
/****************************************/
/* 判斷當前行及列是否足夠顯示函數  */
/* 入口數i是要輸出的圖形總列數,r是圖形的總頁數 */
/****************************************/
void Alldot(unsigned char i,unsigned char r)
{
   if((LCMLIMIT-col)<i)	 /*判斷當頁所剩的列數是否小于i*/
     {
	     col=0;	  /*如果所剩列數不夠顯示,則換行*/
         row=(2+row);
     }
   if((8-row)<r)	 /*判斷所剩的頁數是否小于r*/
     {
	     Lcmcls();	 /*清屏處理*/
         LcmLoadxy(); /*輸入當前字符首地址*/
     }
}
/****************************************************************************/
//	顯示圖片函數
/*	入口數*photo為圖片首指針,x為圖片的列數,y為圖片的頁數(最多8頁)*/
/****************************************************************************/
void show_photo(const unsigned char*photo,unsigned char x,unsigned char y)
{
  unsigned char bakerx,bakery,a,j;
  bakerx = col;  /*暫存x,y坐標,備下半個字符使用 */
  bakery = row;
  LcmLoadxy();   /*輸入當前字符的首地址*/
  for(a=0;a<y;a++)
   {
    for(j=0;j<x;j++)
     {
      lcmWriteData(*photo);  /*取點陣碼,并寫輸出一字節  */ 
	  photo++;      
     }
    col = bakerx;     /*列對齊  */
    row++;     /*指向下一行 */
    LcmLoadxy();   /*輸入下一行的首地址*/
   }
/*整個圖形輸出結束 */
  col = bakerx;  /*恢復原來的col值*/
  row = bakery;   /*恢復原來的row值*/
}
/****************************************/
/*   半角字符點陣碼數據輸出  */
/*   入口數Order是指要輸出的半角字序號,比如輸出"空格",那么Order=0 */
/****************************************/
void Putedot(unsigned char Order)
{
    Alldot(8,2);    /* 調用列、行判斷函數 */
    show_photo(&Ezk[Order * 0x10],8,2);
/*整個字符輸出結束 */
    col = (col+8);  /*列增加8,便于輸入下個字符,row值不變*/
}
/****************************************/
/*   字符串顯示輸出  */
/*  本函數是可變函數,入口數為要顯示的字符串 */
/****************************************/
void myprintf(const char *format,...)
{
  va_list ap;//說明變量ap
  unsigned char  c;
  c=*format;  //取第一個值。
  va_start(ap,format);//ap被初始化為指向format第一個參數
  while(c!='%')
   { // 利用指針取數。
	  Alldot(8,2);
	  Putedot(c-0x20);  /*ascii碼表從0x20開始*/
	  ++format;
	  c=*format;
   }
  va_end(ap);//清除變量x
}
/********************************/
/*液晶屏初始化函數 */
/********************************/        
void lcmInit ()
{
  //先初始化端口
  //PORT C GROUP
	//BUSWIDTH=16													*/
	/*  PC15	14		13		12		11		10		9		8	*/
	/*	o		o		RXD1	TXD1	o		o		o		o	*/
	/*	NC		NC		Uart1	Uart1	NC		NC		CS1		NC	*/
	/*  01		01		11		11		01		01		01		01	*/

	/*  PC7		6		5		4		3		2		1		0	*/
	/*  o		o		o		o		o		o		o		o	*/
	/*  VD4		VD5		VD6		VD7		LED		LED		LED		LED	*/
	/*  01		01		01		01		01		01		01		01	*/
	rPDATC = 0x0000;	//All IO is low
	rPCONC = 0x5f555555;	
	rPUPC  = 0x3000;	//PULL UP RESISTOR should be enabled to I/O

	//PORT D GROUP
	/*  PORT D GROUP(I/O OR LCD)										*/
	/*  BIT7		6		5		4		3		2		1		0	*/
	/*  A0			VM		RD  	ER  	VD3		VD2		VD1		VD0	*/
	/*	01			01		01		01		01		01		01		01	*/
	rPDATD= 0x00;
	rPCOND= 0x5555;	
	rPUPD = 0x00;
	
	lcmDelay (100);
	    
  lcmWriteCmd(DISVOL); /*LCD偏壓設定 */
  lcmWriteCmd(DISADC);  /*ADC選擇(順方向) */
  lcmWriteCmd(DISCOM); /*公共輸出模式選擇(逆方向) */
  lcmWriteCmd(DISVR); /*調整V0電壓電阻比率(折中) */
  lcmWriteCmd(DISCURRENT); /*進入電流量設定*/
  lcmWriteCmd(DISCURVUL); /*設定電流量*/
  lcmWriteCmd(DISfrequency); /*設定晶振振蕩頻率*/
  lcmWriteCmd(DISPOWER); /*電源控制設定(全開)*/
  lcmWriteCmd(DISNORMAL); /*正顯*/	    
  Lcmcls();  /*清屏  */
  col=0;   /*回歸到初始值0*/
  row=8;   /*清第8頁,即第65行的功能點顯示控制頁*/
  LcmLoadxy();     /* 寫入頁首地址 */
  for(;col<LCMLIMIT;col++)lcmWriteData(0);    /* 寫入數據0 */ 
  lcmWriteCmd(DISPFIRST); /*設定顯示起始行*/
  lcmWriteCmd(DISPON);/*開顯示*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人免费电影| 蜜臀久久99精品久久久久宅男| 91麻豆精品国产无毒不卡在线观看| 91啪在线观看| 91蝌蚪porny| 91久久国产最好的精华液| 91麻豆视频网站| 欧美影视一区在线| 欧美日韩一区小说| 欧美精品丝袜久久久中文字幕| 欧美精品粉嫩高潮一区二区| 在线播放欧美女士性生活| 欧美日韩成人综合天天影院| 宅男噜噜噜66一区二区66| 欧美一区二区不卡视频| 欧美精品一区二区精品网| 国产亚洲va综合人人澡精品 | 一区在线观看免费| 亚洲乱码国产乱码精品精小说| 一区二区三区成人在线视频| 亚洲777理论| 国内精品久久久久影院色| 国产精品一区二区三区四区| 91视频在线看| 欧美一区二区三区电影| 国产丝袜在线精品| 亚洲永久精品国产| 美女国产一区二区三区| 不卡视频在线看| 欧美高清视频在线高清观看mv色露露十八| 亚洲精品国产一区二区精华液| 亚洲综合久久久| 国产一区二区在线视频| 99麻豆久久久国产精品免费| 91麻豆精品国产91久久久久久久久| 精品国产乱码久久久久久浪潮| 国产精品国产三级国产三级人妇| 亚洲一区二区欧美激情| 国产伦精一区二区三区| 日本乱码高清不卡字幕| 26uuu国产一区二区三区| 亚洲一区二区精品视频| 国产综合一区二区| 欧美日韩国产一区| 中文字幕在线观看不卡| 裸体在线国模精品偷拍| 在线精品视频免费观看| 26uuu另类欧美亚洲曰本| 一区二区三区在线视频观看| 国产在线不卡一卡二卡三卡四卡| 欧美日韩亚州综合| 亚洲欧洲三级电影| 国产一区二区在线观看视频| 欧美人与性动xxxx| 一区二区三区高清在线| 成人美女在线观看| 精品国产三级电影在线观看| 亚洲第一在线综合网站| 91在线视频网址| 久久综合久久综合九色| 蜜桃在线一区二区三区| 欧美色倩网站大全免费| 亚洲免费在线观看视频| 国产91丝袜在线观看| 日韩欧美www| 日韩精彩视频在线观看| 欧美视频精品在线| 亚洲高清视频在线| 在线影院国内精品| 亚洲裸体在线观看| 成人av中文字幕| 欧美极品少妇xxxxⅹ高跟鞋| 精东粉嫩av免费一区二区三区| 欧美精品aⅴ在线视频| 亚洲综合视频在线| 91久久奴性调教| 亚洲一区二区三区三| 91片黄在线观看| 亚洲黄色性网站| 欧美主播一区二区三区美女| 一区二区三区中文字幕在线观看| 91丨国产丨九色丨pron| 亚洲狼人国产精品| 在线观看日韩高清av| 亚洲国产视频网站| 欧美二区三区的天堂| 免费成人在线观看视频| 亚洲精品在线电影| 久久9热精品视频| 久久久久久久电影| 不卡视频在线看| 亚洲18女电影在线观看| 欧美精品丝袜中出| 狠狠色综合色综合网络| 国产精品色眯眯| 色哟哟国产精品| 五月天精品一区二区三区| 在线电影一区二区三区| 久久99国产精品免费网站| 国产视频一区二区在线| www.在线欧美| 日韩高清在线电影| 久久久天堂av| 粉嫩在线一区二区三区视频| 亚洲精品视频一区| 日韩欧美第一区| 91丝袜国产在线播放| 青青草视频一区| 国产精品黄色在线观看| 欧美日韩一区二区在线视频| 黄网站免费久久| 亚洲日本va午夜在线影院| 欧美日韩精品久久久| 国产成人午夜99999| 亚洲国产欧美日韩另类综合 | 成人午夜在线免费| 亚洲777理论| 最新日韩在线视频| 欧美一级在线视频| 91视频在线观看免费| 激情文学综合插| 亚洲成av人影院| 国产精品美女久久久久aⅴ | 一区二区在线观看免费视频播放 | 久久噜噜亚洲综合| 色94色欧美sute亚洲线路一久 | 成人一区二区三区视频在线观看| 亚洲一区二区三区不卡国产欧美| 久久久精品黄色| 欧美精品国产精品| 91久久精品网| www.日韩大片| 国产高清精品久久久久| 日韩精品1区2区3区| 亚洲国产视频直播| 《视频一区视频二区| 欧美激情中文字幕一区二区| 777a∨成人精品桃花网| 欧美日韩一区成人| 一本色道久久综合亚洲精品按摩| 成人性生交大片免费看视频在线| 麻豆91小视频| 视频在线观看一区| 亚洲一区二区三区四区在线| 日韩一区中文字幕| 国产精品毛片久久久久久久| 欧美精品一区二区三区很污很色的 | 日本不卡中文字幕| 亚洲综合精品久久| 亚洲综合一二区| 亚洲一卡二卡三卡四卡| 一区二区三区四区在线| 自拍偷拍欧美精品| 日韩美女啊v在线免费观看| 国产精品国产自产拍高清av王其 | 日韩一区二区三区电影| 欧美丝袜自拍制服另类| 欧美群妇大交群的观看方式| 欧美日韩一卡二卡| 91精品婷婷国产综合久久| 欧美精品乱人伦久久久久久| 777a∨成人精品桃花网| 欧美v亚洲v综合ⅴ国产v| 精品国产乱码久久久久久影片| 亚洲精品一线二线三线| 日本一区免费视频| 亚洲视频免费在线| 综合色天天鬼久久鬼色| 亚洲一级在线观看| 免费亚洲电影在线| 国产激情视频一区二区在线观看| 国产成人精品亚洲午夜麻豆| 成人亚洲一区二区一| 色综合天天综合在线视频| 欧美亚洲一区二区在线观看| 欧美在线999| 日韩一级视频免费观看在线| 国产日韩成人精品| 亚洲人成亚洲人成在线观看图片 | 91精品国产综合久久香蕉的特点| 日韩一区二区免费在线电影| 精品少妇一区二区三区在线播放| 久久精品人人做人人综合 | 夜夜嗨av一区二区三区中文字幕| 亚洲成va人在线观看| 久久精品72免费观看| 99久久免费国产| 欧美日韩一区二区在线观看视频| 欧美不卡一二三| 伊人开心综合网| 韩国成人精品a∨在线观看| 91美女片黄在线| 日韩午夜在线观看| 亚洲欧美一区二区在线观看| 亚洲香肠在线观看| 国产伦精品一区二区三区免费| 在线日韩一区二区| 欧美va亚洲va在线观看蝴蝶网| 最新日韩av在线| 久久99热国产|