亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品久久国产精麻豆99网站| 亚洲一区二区三区视频在线播放| 精品国产91久久久久久久妲己| 欧美一级二级三级蜜桃| 欧美sm极限捆绑bd| 欧美日韩精品一区二区三区 | 91精品国产色综合久久久蜜香臀| 欧美在线免费视屏| 欧美一级专区免费大片| 国产日产精品1区| 中文字幕综合网| 奇米四色…亚洲| 国产福利一区二区三区视频| 91免费版pro下载短视频| 精品视频一区二区不卡| 欧美大片一区二区三区| 日本一二三四高清不卡| 久久久精品人体av艺术| 亚洲国产你懂的| 国产精品99久| 4438x成人网最大色成网站| 日本一区二区视频在线| 亚洲国产精品精华液网站| 国产精品一区一区三区| 欧美午夜理伦三级在线观看| 久久女同精品一区二区| 日韩av一区二区三区四区| 成人h版在线观看| 久久天天做天天爱综合色| 国产精品沙发午睡系列990531| 性久久久久久久久| 成人网页在线观看| 欧美视频在线一区| 中文字幕综合网| 久久精品99久久久| 欧美另类久久久品| 一区二区免费在线| 91网站最新网址| 国产日韩精品一区二区三区| 日韩电影一二三区| 91在线视频免费观看| 欧美经典一区二区三区| 久久国产福利国产秒拍| 91精品国产一区二区人妖| 一区二区三区高清不卡| 99精品视频在线观看免费| 国产欧美综合在线观看第十页| 国产精品1区二区.| 亚洲国产经典视频| 国产精品一区二区在线播放| 久久综合网色—综合色88| 麻豆高清免费国产一区| 精品国产第一区二区三区观看体验| 日韩黄色免费网站| 欧美电影免费观看完整版| 日本美女一区二区三区视频| 欧美性猛交xxxx黑人交| 免费高清成人在线| 久久精品人人做人人综合| 国产suv精品一区二区883| 亚洲欧洲av在线| 欧美日韩成人在线一区| 一区二区免费视频| 欧美一级免费观看| 国内外精品视频| 一区二区高清在线| 精品日韩一区二区三区| av高清久久久| 日韩中文字幕区一区有砖一区| 精品久久人人做人人爰| 91亚洲精品一区二区乱码| 天天影视涩香欲综合网 | jlzzjlzz亚洲女人18| 亚洲精品中文在线观看| 欧美一级理论片| 91丨九色丨黑人外教| 免费高清在线一区| 精品久久久久99| 色噜噜狠狠色综合欧洲selulu| 免费在线观看日韩欧美| 亚洲免费高清视频在线| 国产亚洲一区二区在线观看| 91成人看片片| av电影一区二区| 另类成人小视频在线| 一区二区在线看| 精品国产乱码久久久久久1区2区| 色先锋aa成人| 99久久久免费精品国产一区二区| 午夜激情久久久| 一区二区免费在线播放| 中文字幕一区二区三中文字幕 | 日韩欧美中文一区| 91国偷自产一区二区三区成为亚洲经典| 狠狠色伊人亚洲综合成人| 日韩一区欧美二区| 亚洲444eee在线观看| 亚洲一区二区三区四区五区黄 | av一本久道久久综合久久鬼色| 国产伦精品一区二区三区视频青涩| 亚洲福利电影网| 亚洲一区二区欧美日韩| 一区二区三区四区不卡在线| 18欧美亚洲精品| 亚洲国产成人私人影院tom| 国产欧美日韩亚州综合| 日本一区二区三区四区| 国产午夜精品理论片a级大结局| 精品国产伦一区二区三区免费| 日韩视频中午一区| 精品成人一区二区三区四区| 26uuu国产电影一区二区| 精品国产精品网麻豆系列| 久久久久国产一区二区三区四区 | 精品久久久久久综合日本欧美| 精品国产123| 欧美国产一区在线| 亚洲毛片av在线| 全部av―极品视觉盛宴亚洲| 国内成+人亚洲+欧美+综合在线| 日韩精品每日更新| 国产成人av自拍| 欧洲av一区二区嗯嗯嗯啊| 欧美刺激午夜性久久久久久久| 国产精品动漫网站| 久久99精品国产麻豆婷婷| 94-欧美-setu| 国产色产综合产在线视频| 一区二区激情小说| 国产乱人伦偷精品视频不卡| 欧美日韩高清不卡| 最好看的中文字幕久久| 91精品国产综合久久精品app| 国产精品久久久久一区二区三区 | 9191成人精品久久| 亚洲主播在线播放| 91免费在线播放| 国产精品理伦片| 国产精品中文欧美| 亚洲精品在线三区| 麻豆精品蜜桃视频网站| 欧美日韩小视频| 亚洲国产视频一区二区| 日本高清成人免费播放| 一区免费观看视频| 91免费看`日韩一区二区| 亚洲欧美日韩电影| 91豆麻精品91久久久久久| 一区二区三区在线不卡| 91免费观看国产| 一区二区三区欧美激情| 99精品欧美一区二区三区小说| 国产精品国产三级国产a| 成人在线综合网| 自拍偷在线精品自拍偷无码专区 | 奇米精品一区二区三区四区 | 精品毛片乱码1区2区3区 | 国产精品色哟哟| 91美女片黄在线观看91美女| 一区二区三区在线视频播放| 91首页免费视频| 偷拍一区二区三区| 久久精品人人做人人综合 | 亚洲丰满少妇videoshd| 欧美成人性战久久| 99久久久国产精品免费蜜臀| 一区二区三区在线看| 日韩一级黄色片| 99精品欧美一区| 日韩电影在线观看一区| 国产欧美精品一区二区三区四区| 色诱亚洲精品久久久久久| 视频一区在线视频| 欧美激情一区在线| 欧美日高清视频| 成人h动漫精品一区二区| 天堂蜜桃91精品| 亚洲丝袜制服诱惑| 精品国产a毛片| 欧美高清视频不卡网| eeuss鲁片一区二区三区在线看| 日韩黄色免费网站| 亚洲精品成人精品456| 久久久久久久久99精品| 制服丝袜亚洲色图| 色婷婷久久久久swag精品| 国产不卡一区视频| 蜜桃av噜噜一区| 午夜精品久久久久久久久久久 | 国产成人精品1024| 久久99精品久久久久久动态图| 亚洲精品日韩综合观看成人91| 久久久精品国产免大香伊| 欧美va日韩va| 欧美本精品男人aⅴ天堂| 日韩一二三区不卡| 欧美二区三区91| 欧美一区二区三区四区五区| 欧美精品 国产精品| 欧美在线免费视屏|