📄 lcd.c
字号:
#define LCD_CS (1 << 29) /* P0.29为LCD_CS */
#define LCD_DATA (1 << 6) /* P0.6为LCD_DATA */
#define LCD_CLK (1 << 4) /* P0.4为LCD_CLK */
#define LCD_IOCON (LCD_CS|LCD_DATA|LCD_CLK) /* LCD接口的I/O设置字 */
void LCD_WRI(uint8 dat);
void LCD_WRD(uint8 dat);
void LCD_CLS(void);
void LCD_INIT(void);
//void LCD_GRP(void);
void LCD_GRP(uint8 const *string_num);
void DelayNS(uint32 dly);
//uint8 LCD_string_num(uint8 string_num);
/* LCD write LCD commond */
void LCD_WRI(uint8 dat)
{ uint8 i;
uint8 temp;
IO0CLR = LCD_CS; // LCD_CS = 0
IO0SET = LCD_CS; // LCD_CS = 1
temp = 0xf8;
for(i=0; i<8; i++) // 发送8位数据
{
IO0CLR = LCD_CLK; // LCD_CLK = 0
if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
else IO0CLR = LCD_DATA;
temp <<= 1;
IO0SET = LCD_CLK; // LCD_CLK = 1
}
temp = dat & 0xf0;
for(i=0; i<8; i++) // 发送8位数据
{
IO0CLR = LCD_CLK; // LCD_CLK = 0
if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
else IO0CLR = LCD_DATA;
temp <<= 1;
IO0SET = LCD_CLK; // LCD_CLK = 1
}
temp = (dat << 4) & 0xf0;
for(i=0; i<8; i++) // 发送8位数据
{
IO0CLR = LCD_CLK; // LCD_CLK = 0
if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
else IO0CLR = LCD_DATA;
temp <<= 1;
IO0SET = LCD_CLK; // LCD_CLK = 1
}
IO0CLR = LCD_CLK; // LCD_CLK = 0
IO0CLR = LCD_CS; // SPI_CS = 0,输出显示数据
}
/* LCD write LCD date */
void LCD_WRD(uint8 dat)
{ uint8 i;
uint8 temp;
IO0CLR = LCD_CS; // LCD_CS = 0
IO0SET = LCD_CS; // LCD_CS = 1
temp = 0xfa;
for(i=0; i<8; i++) // 发送8位数据
{
IO0CLR = LCD_CLK; // LCD_CLK = 0
if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
else IO0CLR = LCD_DATA;
temp <<= 1;
IO0SET = LCD_CLK; // LCD_CLK = 1
}
temp = dat & 0xf0;
for(i=0; i<8; i++) // 发送8位数据
{
IO0CLR = LCD_CLK; // LCD_CLK = 0
if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
else IO0CLR = LCD_DATA;
temp <<= 1;
IO0SET = LCD_CLK; // LCD_CLK = 1
}
temp = (dat << 4) & 0xf0;
for(i=0; i<8; i++) // 发送8位数据
{
IO0CLR = LCD_CLK; // LCD_CLK = 0
if( (temp&0x80)!=0 ) IO0SET = LCD_DATA;
else IO0CLR = LCD_DATA;
temp <<= 1;
IO0SET = LCD_CLK; // LCD_CLK = 1
}
IO0CLR = LCD_CLK; // LCD_CLK = 0
IO0CLR = LCD_CS; // LCD_CS = 0,输出显示数据
}
void LCD_CLS(void)
{
LCD_WRI(0x30);
OSTimeDly(2);
LCD_WRI(0x01);
OSTimeDly(2);
}
void LCD_INIT(void)
{
LCD_WRI(0x30);
OSTimeDly(2);
LCD_WRI(0x0c);
OSTimeDly(2);
LCD_WRI(0x01);
OSTimeDly(2);
LCD_WRI(0x06);
OSTimeDly(2);
}
void LCD_GRP(uint8 const *string_num)
{
uint8 i,j,k;
uint16 l;
// uint8 const *p = chartab1;
k = 0x80;
l = 0;
LCD_WRI(0x32);
OSTimeDly(2);
LCD_WRI(0x36);
OSTimeDly(2);
// 上半屏
for (i = 0;i < 32;i++)
{
LCD_WRI(k);
DelayNS(2);
k++;
LCD_WRI(0x80);
DelayNS(2);
for (j = 0;j < 16;j++)
{
LCD_WRD(*string_num);
string_num++;
DelayNS(1);;
l++;
}
}
// 下半屏
k = 0x80;
for (i = 0;i < 32;i++)
{
LCD_WRI(k);
DelayNS(2);
k++;
LCD_WRI(0x88);
DelayNS(2);
for (j = 0;j < 16;j++)
{
LCD_WRD(*string_num);
string_num++;
DelayNS(1);
l++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -