📄 lcd.c
字号:
#include "config.h"
#define E2 1<<8
#define E1 1<<9
#define A0 1<<10
#define DATA 0xff
uint8 k=1;
void delay(unsigned int i)
{
while(i--);
}
void OutMI(unsigned char i)
{
IO0SET = E1;
IO0CLR = A0;
IO0PIN = ((IO0PIN&0xffffff00)|i);
IO0CLR = E1;
delay(2);
IO0SET = E1;
}
void OutMD(unsigned char i)
{
IO0SET = E1;
IO0SET = A0;
IO0PIN = ((IO0PIN&0xffffff00)|i);
IO0CLR = E1;
delay(2);
IO0SET = E1;
}
void OutSI(unsigned char i)
{
IO0SET = E2;
IO0CLR = A0;
IO0PIN = ((IO0PIN&0xffffff00)|i);
IO0CLR = E2;
delay(2);
IO0SET = E2;
}
void OutSD(unsigned char i)
{
IO0SET = E2;
IO0SET = A0;
IO0PIN = ((IO0PIN&0xffffff00)|i);
IO0CLR = E2;
delay(2);
IO0SET = E2;
}
void SetPage(unsigned char page0,unsigned char page1)
{
OutMI(0xB8 |page0);
OutSI(0xB8 |page1);
}
void SetAddress(unsigned char address0,unsigned char address1)
{
OutMI(address0);
OutSI(address1);
}
void LcdIni(void)
{
OutMI(0XE2); // 复位 (13)
OutSI(0XE2); // 复位 (13)
delay(100);
OutMI(0XA9); //1/32占空比(10)
OutSI(0XA9); //1/32占空比(10)
OutMI(0XA4);//正常驱动 (9)
OutSI(0XA4);//正常驱动 (9)
OutMI(0XA1); //设置显示方向为正向
OutSI(0XA1); //设置显示方向为正向
OutMI(0X00); //设置起始列为第0列 (4)
OutMI(0XC0); //设置起始行为第0行 (2)
OutSI(0X00); //设置起始列为第0列 (4)
OutSI(0XC0); //设置起始行为第0行 (2)
OutMI(0XEE); //关闭“读-修改-写”模式(11)
OutSI(0XEE); //关闭“读-修改-写”模式(11)
OutMI(0XAF); //开屏幕显示(不影响显示内容)
OutSI(0XAF); //开屏幕显示(不影响显示内容)
}
void clrscr(void)
{
unsigned char i;
unsigned char page;
for (page=0;page<4;page++)
{
SetPage(page,page);
SetAddress(0x00,0x00);
for (i=0;i<61;i++)
{
OutMD(0x00);
OutSD(0x00);
}
}
}
void write_data(uint8 *bmp)
{
uint8 i,t;
if(k<=60)
{
OutMI(0xB8);
OutMI(k);
for(i=0;i<5;i++,k++)
{
OutMD(bmp[i]);
}
}
else
{
t=(k+1)%61;
OutSI(0xB8);
OutSI(t);
for(i=0;i<5;i++,k++)
{
OutSD(bmp[i]);
}
if(k>80)
{
k=1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -