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

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

?? lcd.c

?? 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一区二区三区免费野_久草精品视频
亚洲色图视频免费播放| 国产成人在线观看免费网站| 精品一区二区三区蜜桃| 成人激情校园春色| 91麻豆精品国产91久久久更新时间 | 国产成人三级在线观看| 色婷婷亚洲综合| 国产精品婷婷午夜在线观看| 日韩成人一级片| 色国产精品一区在线观看| 国产农村妇女精品| 极品少妇xxxx精品少妇| 欧美日韩美少妇| 亚洲精品第一国产综合野| 国产乱码精品一区二区三区av | 精品人在线二区三区| 亚洲精品日韩一| 成人免费视频视频在线观看免费| 欧美一区二区视频免费观看| 一区二区三区在线不卡| 97久久超碰精品国产| 国产欧美日韩三区| 国产精品资源站在线| 精品久久久久久久久久久久久久久 | www精品美女久久久tv| 亚洲午夜成aⅴ人片| 91国偷自产一区二区开放时间 | 精品一区在线看| 日韩一区和二区| 三级不卡在线观看| 欧美日韩一区二区三区视频| 一区二区三区四区蜜桃| 色婷婷亚洲婷婷| 一区二区三区色| 欧美亚洲国产bt| 亚洲成人自拍一区| 337p亚洲精品色噜噜狠狠| 三级久久三级久久| 欧美大片拔萝卜| 国产一区二区91| 亚洲国产精品成人久久综合一区| 国产成人免费在线观看不卡| 中文字幕av资源一区| av福利精品导航| 亚洲精品乱码久久久久久黑人| 欧美中文字幕一区| 热久久一区二区| 精品99一区二区三区| 成人毛片在线观看| 亚洲综合丝袜美腿| 在线播放亚洲一区| 激情六月婷婷综合| 亚洲欧美一区二区视频| 欧美婷婷六月丁香综合色| 日产欧产美韩系列久久99| 久久嫩草精品久久久久| 色综合久久88色综合天天免费| 亚洲综合精品自拍| 欧美精品一区二区三区在线播放| 国产福利一区二区三区视频| 亚洲精品日日夜夜| 欧美成人r级一区二区三区| 国产成人小视频| 一区二区三区四区精品在线视频| 日韩欧美一区在线| eeuss鲁一区二区三区| 丝袜a∨在线一区二区三区不卡| 精品国产123| 91精品办公室少妇高潮对白| 麻豆精品久久精品色综合| 亚洲欧洲无码一区二区三区| 在线成人午夜影院| 99精品国产视频| 久久综合色鬼综合色| 国产视频一区不卡| 国产精品主播直播| 亚洲男人的天堂一区二区 | 日日夜夜免费精品| 国产丝袜美腿一区二区三区| 欧美亚洲免费在线一区| 国产成人自拍在线| 日韩影院在线观看| 综合av第一页| www国产精品av| 欧美三级中文字| 91一区一区三区| 狠狠色丁香婷婷综合久久片| 91精品一区二区三区久久久久久| 国产乱人伦偷精品视频不卡| 久久精品国产精品亚洲精品| 亚洲欧美偷拍三级| 国产无遮挡一区二区三区毛片日本| 色狠狠色噜噜噜综合网| 国产精品原创巨作av| 午夜精品一区二区三区三上悠亚| 精品久久久久一区| 欧美日韩三级视频| 91香蕉视频污在线| 国产精品乡下勾搭老头1| 美腿丝袜亚洲色图| 国产精品电影院| 久久中文字幕电影| 在线综合视频播放| 一本大道av伊人久久综合| 久久99精品久久久久久国产越南 | 国产91在线观看| 久久国产综合精品| 蜜桃久久久久久久| 蜜桃av一区二区三区电影| 亚洲一区影音先锋| 亚洲图片你懂的| 久久免费美女视频| 欧美一区午夜精品| 欧美一区二区三级| 欧美巨大另类极品videosbest| 99免费精品视频| 国产激情一区二区三区四区 | 日本精品视频一区二区三区| 国产精品白丝jk白祙喷水网站| 久久国产生活片100| 蜜桃av一区二区三区| 人人狠狠综合久久亚洲| 蜜臀久久久久久久| 肉色丝袜一区二区| 久久精品二区亚洲w码| 亚洲成人av在线电影| 尤物视频一区二区| 一区二区三区精品| 亚洲成人激情社区| 麻豆91精品视频| 成人免费高清在线观看| 国产福利一区二区| 国产91丝袜在线播放| jlzzjlzz亚洲女人18| 99精品视频一区二区| 99久久综合精品| 欧美性受xxxx黑人xyx| 91精品午夜视频| 国产女主播在线一区二区| 中文字幕一区二区不卡| 亚洲国产日产av| 日日噜噜夜夜狠狠视频欧美人| 青青草原综合久久大伊人精品优势| 日韩av一区二区在线影视| 美洲天堂一区二卡三卡四卡视频| 国产精华液一区二区三区| 91久久久免费一区二区| 欧美亚洲综合在线| 欧美乱妇15p| 久久久一区二区三区捆绑**| 18涩涩午夜精品.www| 日韩av一二三| 国产精品一区免费在线观看| 国产高清在线精品| 色综合色狠狠综合色| 欧美高清视频不卡网| 精品国产成人系列| 亚洲自拍都市欧美小说| 国产一区二区三区在线观看免费视频| a级精品国产片在线观看| 717成人午夜免费福利电影| 日本一区二区免费在线观看视频 | 国产精品综合av一区二区国产馆| 99久久99久久精品免费观看| 91精品国产综合久久久久久久| 国产精品三级视频| 蜜臀av一区二区三区| av午夜一区麻豆| 精品国产免费人成在线观看| 亚洲精品乱码久久久久久 | 欧美一级在线视频| 久久久久久久久久久久久女国产乱| 一区二区三区欧美| 成人一区二区视频| 欧美电影免费观看完整版| 一区二区久久久| 国产成人精品网址| 在线播放中文一区| 国产精品三级av在线播放| 国产一区二区在线影院| 这里只有精品免费| 图片区小说区国产精品视频| 91国产成人在线| 久久久久国产精品厨房| 日韩高清在线不卡| 欧美人与性动xxxx| 中文字幕亚洲在| 激情五月激情综合网| 91精品国产乱码久久蜜臀| 一区二区欧美视频| 成人国产精品免费| 国产精品萝li| 国产乱国产乱300精品| 91精品国产综合久久香蕉麻豆| 亚洲黄色在线视频| 日本精品一区二区三区四区的功能| 欧美国产日韩精品免费观看| 国产在线播放一区二区三区| 精品久久久久久久久久久院品网 | 精品国产一二三|