📄 lcddriveaaa.c
字号:
#include "config.h"
sbit LCDCS = P1^0;
sbit LCDDI = P3^5;
sbit LCDRW = P3^6;
sbit LCDE = P3^7;
uint8 code lcd_lattice16_8[]={0};
uint8 code lcd_lattice16_16[]={9};
uint8 code lcd_lattice8_8[]={0};
bit dot_not;
void lcddelay()
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
/*************************************/
void outsi(unsigned char parameter)
{
LCDCS = 0;lcddelay();
LCDDI = 0;lcddelay();
LCDRW = 0;lcddelay();
LCDE = 1;lcddelay();
P2 = parameter;lcddelay();
LCDE = 0;lcddelay();
LCDRW = 1;lcddelay();
}
/*************************************/
void outmi(unsigned char parameter)
{
LCDCS = 1;lcddelay();
LCDDI = 0;lcddelay();
LCDRW = 0;lcddelay();
LCDE = 1;lcddelay();
P2 = parameter;lcddelay();
LCDE = 0;lcddelay();
LCDRW = 1;lcddelay();
}
/*************************************/
void outsd(unsigned char parameter)
{
LCDCS = 0;lcddelay();
LCDDI = 1;lcddelay();
LCDRW = 0;lcddelay();
LCDE = 1;lcddelay();
P2 = parameter;lcddelay();
LCDE = 0;lcddelay();
LCDRW = 1;lcddelay();
}
/*************************************/
void outmd(unsigned char parameter)
{
LCDCS = 1;lcddelay();
LCDDI = 1;lcddelay();
LCDRW = 0;lcddelay();
LCDE = 1;lcddelay();
P2 = parameter;lcddelay();
LCDE = 0;lcddelay();
LCDRW = 1;lcddelay();
}
/*************************************/
void lcdinit()
{
outmi(0x3f);
outsi(0x3f);/*display on*/
}
/*************************************/
void displayword(uint8 lcdrow,uint8 lcdline,uint8 wordnumber)
{
unsigned char data i;
unsigned int data j;
lcdinit();
if(lcdline<64)
{
outmi(0xc0);
outmi(0xb8|lcdrow);/*设置页地址*/
outmi(0x40|lcdline);/*设置列地址*/
j=wordnumber*32;
for(i=0;i<32;i++)
{
if(dot_not)outmd(0x55);//;~lcd_lattice16_16[i+j]);
else outmd(0x55);// lcd_lattice16_16[i+j]);
if(i==15)
{
outmi(0xb8|(lcdrow+1));/*设置页地址*/
outmi(0x40|lcdline);/*设置列地址*/
}
}
}
else if(lcdline<112)
{
outsi(0xc0);/*设置显示起始行*/
outsi(0xb8|lcdrow);/*设置页地址*/
outsi(0x40|(lcdline-64));/*设置列地址*/
j=wordnumber*32;
for(i=0;i<32;i++)
{
if(dot_not)outsd(~lcd_lattice16_16[i+j]);
else outsd( lcd_lattice16_16[i+j]);
if(i==15)
{
outsi(0xb8|(lcdrow+1));/*设置页地址*/
outsi(0x40|(lcdline-64));/*设置列地址*/
}
}
}
else
{}
}
/*******************************************************/
void displaydata(uint8 lcdrow,uint8 lcdline,uint8 datanumber)
{
unsigned char data i;
unsigned int data j;
if(lcdline<64)
{
// outmi(0xc0);
outmi(0xb8|lcdrow);/*设置页地址*/
outmi(0x40|lcdline);/*设置列地址*/
j=datanumber*16;
for(i=0;i<16;i++)
{
if(dot_not==1) {outmd(~lcd_lattice16_8[i+j]);}
else {outmd(lcd_lattice16_8[i+j]);}
if(i==7)
{outmi(0xb8|(lcdrow+1));/*设置页地址*/
outmi(0x40|lcdline);/*设置列地址*/}
}
}
else if(lcdline<121)
{
// outsi(0xc0);/*设置显示起始行*/
outsi(0xb8|lcdrow);/*设置页地址*/
if(lcdline<120)
{
outsi(0x40|(lcdline-64));/*设置列地址*/
}
j=datanumber*16;
for(i=0;i<16;i++)
{
if(dot_not==1)
{
outsd(~lcd_lattice16_8[i+j]);
}
else {outsd(lcd_lattice16_8[i+j]);}
if(i==7)
{outsi(0xb8|(lcdrow+1));/*设置页地址*/
outsi(0x40|(lcdline-64));/*设置列地址*/}
}
}
}
/*******************************************************/
/*******************************************************/
void displaybyte(uint8 lcdrow,uint8 lcdline,uint8 datanumber)
{
unsigned char data i;
unsigned int data j;
outmi(0xc0);
outsi(0xc0);/*设置显示起始行*/
if(lcdline<64)
{
outmi(0xb8|lcdrow);/*设置页地址*/
outmi(0x40|lcdline);/*设置列地址*/
j=datanumber*8;
for(i=0;i<8;i++)
{
outmd(lcd_lattice8_8[i+j]);
}
}
else
{
outsi(0xb8|lcdrow);/*设置页地址*/
outsi(0x40|(lcdline-64));/*设置列地址*/
j=datanumber*8;
for(i=0;i<8;i++)
{
outsd(lcd_lattice8_8[i+j]);
}
}
}
/*******************************************************/
/*******************************************************/
void displaycls(void)
{
unsigned char data i;
unsigned int data j;
lcdinit();
outmi(0xc0);
outsi(0xc0);/*设置显示起始行*/
for(i=0;i<8;i++)
{outmi(0xb8|i);/*设置页地址*/
outmi(0x40|0);/*设置列地址*/
for(j=0;j<64;j++)
{outmd(0x55);}
}
for(i=0;i<8;i++)
{outsi(0xb8|i);/*设置页地址*/
outsi(0x40|0);/*设置列地址*/
for(j=0;j<64;j++)
{outsd(0xF);}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -