?? lcd.c
字號:
#include "..\inc\uTypes.h"
#include "..\inc\44b0x.h"
#include "..\inc\console.h"
#include "..\inc\sysUtils.h"
#define LCM_DELAY 1000
#define M5D(n) ((n) & 0x1fffff)
//RS 信號接在 (GPC7)
//RW 信號接在 (GPC6)
//E 信號接在 (GPC5)
#define SCR_XSIZE (320)
#define SCR_YSIZE (240)
#define LCD_XSIZE (320)
#define LCD_YSIZE (240)
#define MVAL (13)
#define SET_LCM_RS() \
rPDATC |= MASK_BIT(7)
#define CLR_LCM_RS() \
rPDATC &= ~MASK_BIT(7)
#define SET_LCM_RW() \
rPDATC |= MASK_BIT(6)
#define CLR_LCM_RW() \
rPDATC &= ~MASK_BIT(6)
#define SET_LCM_E() \
rPDATC |= MASK_BIT(5)
#define CLR_LCM_E() \
rPDATC &= ~MASK_BIT(5)
unsigned int (*frameBuffer1)[320/32];//開辟與每一行對應的數組指針
unsigned int (*frameBuffer4)[320/16];//每一行為一個數組,此數組的大小與行中像素點的數目有關
unsigned int (*frameBuffer16)[320/8];//大小計算:行像素點數目*每個像素點所占的位數/32
//unsigned int (*frameBuffer256)[320E/4];//除以32的原因是,數組中的每個元素占用4*8bit
#define LCM_WRITE(data) \
rPDATD = data
#define LCM_READ() rPDATD
void lcmDelay (int nDelay);
void lcmWriteCmd (U8 byCmd);
void lcmWriteData (U8 byData);
int lcmIsBusy (void);
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 NC 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 */
/* NC NC NC NC 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 */
/* VF VM VLINE VCLK VD3 VD2 VD1 VD0 */
/* 01 01 01 01 01 01 01 01 */
rLCDCON1=(0)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G4<<12);//LCDCON1寄存器清零
rLCDCON2=(240-1)|(79<<10)|(10<<21);
rLCDSADDR1= (0x1<<27) | ( ((U32)frameBuffer4>>22)<<21 ) | M5D((U32)frameBuffer4>>1);
rLCDSADDR2= M5D((((U32)frameBuffer4+(320*LCD_YSIZE/4))>>1)) | (MVAL<<21);
rLCDSADDR3= (320/8) | ( ((320-LCD_XSIZE)/8)<<9 );
rBLUELUT=0xfa40;
rDITHMODE=0x0;//抖動模式設定
rDP1_2 =0xa5a5; //以下為抖動時間設定
rDP4_7 =0xba5da65;
rDP3_5 =0xa5a5f;
rDP2_3 =0xd6b;
rDP5_7 =0xeb7b5ed;
rDP3_4 =0x7dbe;
rDP4_5 =0x7ebdf;
rDP6_7 =0x7fdfbfe;
rLCDCON1=(1)|(1<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_G4<<12);
lcmDelay (100);
//lcmWriteCmd (0x30); //功能設定, 基本指令集合
//lcmWriteCmd (0x02); //DDRAM的計數器(AC)到"00H",降游標移動到開頭原點位置
//lcmWriteCmd (0x04);
lcmWriteCmd (0x0c); //打開顯示
lcmWriteCmd (0x06);
lcmWriteCmd (0x01);
}
void lcmWriteCmd (U8 byCmd)
{
lcmDelay (LCM_DELAY);
CLR_LCM_RS ();
CLR_LCM_RW ();
lcmDelay (LCM_DELAY);
LCM_WRITE (byCmd);
SET_LCM_E ();
lcmDelay (LCM_DELAY);
CLR_LCM_E ();
lcmDelay (LCM_DELAY);
}
void lcmWriteData (U8 byData)
{
SET_LCM_RS ();
CLR_LCM_RW ();
lcmDelay (LCM_DELAY);
LCM_WRITE (byData);
SET_LCM_E ();
lcmDelay (LCM_DELAY);
CLR_LCM_E ();
lcmDelay (LCM_DELAY);
}
void lcmRead ()
{
}
void lcmDelay (int nDelay)
{
int i;
for (i = 0; i < 1; ++ i);
}
void lcmSetPos (int nPos)
{
lcmWriteCmd (nPos | 0x80);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -