📄 lcd.h
字号:
//*************************************************************
#define CLR_LCD_DI IOCLR1=(1<<18); //P1.18
#define SET_LCD_DI IOSET1=(1<<18);
#define CLR_LCD_E IOCLR1=(1<<19); //P1.19
#define SET_LCD_E IOSET1=(1<<19);
#define CLR_LCD_CS1 IOCLR1=(1<<28); //P1.28
#define SET_LCD_CS1 IOSET1=(1<<28);
#define CLR_LCD_CS2 IOCLR1=(1<<29); //P1.29
#define SET_LCD_CS2 IOSET1=(1<<29);
//****************************************************************
void DelayNS (U32 dly) //延时10mS?
{
U32 i;
for(;dly>0;dly--)
for(i=0;i<50;i++);
}
void LCD_sendcommand (U32 m_s, U32 command) //写指令子程序
{
if(m_s&1) //左半屏
{
CLR_LCD_E
CLR_LCD_DI
SET_LCD_CS1
CLR_LCD_CS2
IOCLR1=(0xFF<<20);
IOSET1=(command<<20);
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
IOCLR1=(0xFF<<20);
IOSET1=(command<<20);
DelayNS(1);
SET_LCD_E
DelayNS(1);
CLR_LCD_E
}
DelayNS(3);
}
void LCD_senddata(U32 m_s, U32 command) //写数据子程序
{
if(m_s&1) //左半屏
{
CLR_LCD_E
SET_LCD_DI
SET_LCD_CS1
CLR_LCD_CS2
IOCLR1=(0xFF<<20);
IOSET1=((command&0xff)<<20);
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
IOCLR1=(0xFF<<20);
IOSET1=((command&0xff)<<20);
DelayNS(1);
SET_LCD_E
DelayNS(1);
CLR_LCD_E
}
DelayNS(3);
}
void LCD_setXaddr(U32 m_s, U32 x)
{
LCD_sendcommand(m_s,0xB8+x);
}
void LCD_setYaddr(U32 m_s, U32 y)
{
LCD_sendcommand(m_s,0x40+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,0x00);
DelayNS(1);
}
}
}
void LCD_show_word(U8 n,U8 i,U8 j)
{
U32 x,y,p;
p=0;
for(y=j;y<j+16;y++)
{
for(x=i;x<i+2;x++)
{
if(y<64){
LCD_setXaddr(1,x);
LCD_setYaddr(1,y);
LCD_senddata(1,LCD_word[n][p]);
}
if(y>=64){
LCD_setXaddr(2,x);
LCD_setYaddr(2,y-64);
LCD_senddata(2,LCD_word[n][p]);
}
p++;
}
}
}
void LCD_show_time(U8 n,U8 i,U8 j)
{
U32 x,y,p;
p=0;
for(y=j;y<j+8;y++)
{
for(x=i;x<i+2;x++)
{
if(y<64){
LCD_setXaddr(1,x);
LCD_setYaddr(1,y);
LCD_senddata(1,LCD_word[n][p]);
}
if(y>=64){
LCD_setXaddr(2,x);
LCD_setYaddr(2,y-64);
LCD_senddata(2,LCD_word[n][p]);
}
p++;
}
}
}
void LCD_show_timefy(U8 n,U8 i,U8 j)
{
U8 x,y,p;
p=0;
for(y=j;y<j+8;y++)
{
for(x=i;x<i+2;x++)
{
if(y<64){
LCD_setXaddr(1,x);
LCD_setYaddr(1,y);
LCD_senddata(1,~LCD_word[n][p]);
}
if(y>=64){
LCD_setXaddr(2,x);
LCD_setYaddr(2,y-64);
LCD_senddata(2,~LCD_word[n][p]);
}
p++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -