📄 lcd.c.bak
字号:
#include "..\inc\uTypes.h"
#include "..\inc\44b0x.h"
#include "..\inc\console.h"
#include "..\inc\sysUtils.h"
#define LCM_12864
//RS 信号接在 VFRAME(GPC7)
//RW 信号接在 VCLK(GPC6)
//E 信号接在 VLINE(GPC5)
#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)
#define LCM_WRITE(data) \
rPDATD = data
#define LCM_READ() rPDATD
void lcmDelay (int nDelay);
void lcmWriteCmd (U8 byCmd);
void lcmWriteData (U8 byData);
void lcmInit ()
{
int i;
//先初始化端口
//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 */
rPDATD= 0x00;
rPCOND= 0x5555;
rPUPD = 0x00;
lcmDelay (100);
#ifdef LCM_12864
lcmWriteCmd (0x30); //功能设定, 基本指令集合
lcmWriteCmd (0x30); //功能设定, 基本指令集合
//lcmWriteCmd (0x02); //DDRAM的计数器(AC)到"00H",降游标移动到开头原点位置
//lcmWriteCmd (0x04);
lcmWriteCmd (0x0c); //打开显示
lcmWriteCmd (0x06);
lcmWriteCmd (0x80);
for (i = 0; i < 256; ++ i)
lcmWriteData ((U8)i);
#endif
#ifdef LCM_1602
lcmWriteCmd (0x38); //设置8位并口模式
//lcmWriteCmd (0x0c); //
lcmWriteCmd (0x0d); //
lcmWriteCmd (0x06);
lcmWriteCmd (0x01); //清屏
#endif
}
void lcmWriteCmd (U8 byCmd)
{
int i;
lcmDelay (100000);
CLR_LCM_RS ();
CLR_LCM_RW ();
lcmDelay (100000);
LCM_WRITE (byCmd);
SET_LCM_E ();
lcmDelay (100000);
CLR_LCM_E ();
lcmDelay (100000);
}
void lcmWriteData (U8 byData)
{
SET_LCM_RS ();
CLR_LCM_RW ();
lcmDelay (100000);
LCM_WRITE (byData);
SET_LCM_E ();
lcmDelay (100000);
CLR_LCM_E ();
lcmDelay (100000);
}
void lcmRead ()
{
}
void lcmDelay (int nDelay)
{
int i;
for (i = 0; i < nDelay; ++ i);
}
void lcmSetPos (int nPos)
{
lcmWriteCmd (nPos | 0x80);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -