📄 main.c
字号:
//DB0--DB7====P0.16--P0.23
//*********************************************************************
#include"lpc213x.h"
#include"config.h"
//*********************************************************************
#define CLR_LCD_DI IOCLR0=(1<<25); //P0.25
#define SET_LCD_DI IOSET0=(1<<25);
#define CLR_LCD_E IOCLR0=(1<<27); //P0.27
#define SET_LCD_E IOSET0=(1<<27);
#define CLR_LCD_CS1 IOCLR0=(1<<28); //P0.28
#define SET_LCD_CS1 IOSET0=(1<<28);
#define CLR_LCD_CS2 IOCLR0=(1<<29); //P0.29
#define SET_LCD_CS2 IOSET0=(1<<29);
#define uchar unsigned char
#define uint unsigned int
static unsigned char x1[]=
{
/*------------------------------------------------------------------------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺序。
; 源文件 / 文字 : 字
; 宽×高(像素): 16×16
; 字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/32字节
; 数据转换日期 : 2007-11-9 9:51:47
------------------------------------------------------------------------------*/
//0x10,0x10,0x02,//宽的像素数,高的像素数,宽的字节数,参数设置可选
0x00,0x00,0x20,0x18,0x28,0x28,0x28,0x2A,0xAC,0xA8,0x68,0x28,0x28,0x18,0x00,0x00,
0x00,0x02,0x02,0x02,0x02,0x02,0x22,0x42,0x3F,0x02,0x02,0x02,0x02,0x03,0x02,0x00,
};
//*************************************************************************
void DelayNS (U32 dly) //延时10mS?
{
U32 i;
for(;dly>0;dly--)
for(i=0;i<50;i++);
}
void LCD_sendcommand (uchar m_s, uchar command) //写指令子程序
{
if(m_s&1) //左半屏
{
//CLR_LCD_E
CLR_LCD_DI
SET_LCD_CS1
CLR_LCD_CS2
IOCLR0=(0xFF<<16);//D0-D7数据总线输出低
IOSET0=(command<<16);//D0-D7数据总线输出高
DelayNS(1);
SET_LCD_E
DelayNS(1);
CLR_LCD_E
}
if(m_s&2) //右半屏
{
// CLR_LCD_E
CLR_LCD_DI
SET_LCD_CS2
CLR_LCD_CS1
IOCLR0=(0xFF<<16);
IOSET0=(command<<16);
DelayNS(1);
SET_LCD_E
DelayNS(1);
CLR_LCD_E
}
// DelayNS(3);
}
void LCD_senddata(uchar m_s, uchar command) //写数据子程序
{
if(m_s&1) //左半屏
{
//CLR_LCD_E
SET_LCD_DI
SET_LCD_CS1
CLR_LCD_CS2
IOCLR0=(0xFF<<16);
IOSET0=(command<<16);
DelayNS(1);
SET_LCD_E
DelayNS(1);
CLR_LCD_E
}
if(m_s&2) //右半屏
{
//CLR_LCD_E
SET_LCD_DI
SET_LCD_CS2
CLR_LCD_CS1
IOCLR0=(0xFF<<16);
IOSET0=(command<<16);
DelayNS(1);
SET_LCD_E
DelayNS(1);
CLR_LCD_E
}
//DelayNS(3);
}
void LCD_setxyaddr(uchar x, uchar y)
{
if(x<64)
{
LCD_sendcommand(1,0xB8+x);
LCD_sendcommand(1, 0x40+y);
}
else
{
LCD_sendcommand(2, 0xB8+x);
LCD_sendcommand(2, y);
}
}
void LCD_clean(void)
{
U32 row,i;
for(row=0;row<8;row++)
{
LCD_sendcommand(3,0xB8+row);
LCD_sendcommand(3,0x40);
for(i=64;i>0;i--)
{ LCD_senddata(3,0);
DelayNS(1);
}
}
}
void lcd_open(void)
{
LCD_sendcommand(3, 0x3F); // LCD reset
LCD_sendcommand(3, 0xC0); // LCD start line=0
LCD_clean();
}
void LCD_show(uchar xx,uchar yy)
{
int p;
uchar x,y;
p=0;
for(x=xx;x<2+xx;x++)
{
for(y=yy;y<16+yy;y++)
{
LCD_setxyaddr(x,y);
if(y<64){
LCD_senddata(1, x1[p]);
}
else{
LCD_senddata(2, x1[p]);
}
p++;
}
}
}
int main(void)
{
U32 a=0xffff;
PINSEL1=0x00000000;
IODIR0=(a<<16);
LCD_sendcommand(3, 0x3F);
LCD_sendcommand(3, 0xC0);
LCD_clean();
lcd_open();
while(1){
LCD_show(0,0);
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -