📄 12864.c
字号:
void lcd_en_write(void)
{
_PC2=1; //EN 产生一个下降沿脉冲,允许命令数据输入
delay100us(1);
_PC2=0;
}
/***************************************
LCD写指令使能
***************************************/
void lcd_command_enable(char temp)
{
PORTB=temp; //输入指令代码
_PC0=0; //RS=0 功能切换到指令输入状态
_PC1=0; //RW=0
lcd_en_write(); //LCD输入使能
delay100us(50);
}
/***************************************
LCD写数据使能
***************************************/
void lcd_string_enable(void)
{
_PC0=1; //RS=1 功能切换到字符输入状态
_PC1=0; //RW=0
lcd_en_write(); //LCD输入使能
delay100us(1);
}
/***************************************
图形初始化
***************************************/
void map_reset(void)
{
char x=0x80,lie=0;
lcd_command_enable(0b00110000);//基本命令
lcd_command_enable(0b00001000);//整体显示开(1)、光标开(1)、光标闪烁开(1)
lcd_command_enable(0b00110100);//扩充命令不显示图片
for(x=0x80;x<0xA0;x++)
{
lcd_command_enable(x); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(lie=0;lie<16;lie++) //输入Y 每组的16位坐标值
{
PORTB=0x00; //D15--D8
lcd_string_enable(); //LCD输入使能
PORTB=0x00; //D7--D0
lcd_string_enable(); //LCD输入使能
}
}
lcd_command_enable(0b00110110);//扩充命令 显示图片
lcd_command_enable(0b00110000);//基本命令
lcd_command_enable(0b00001100);//整体显示开(1)、光标开(1)、光标闪烁开(1)
}
/***************************************
图形显示
***************************************/
void map_start(void)
{
char x=0x80,chair=0,newcha=0;
lcd_command_enable(0b00110000);//基本命令
lcd_command_enable(0b00001000);//整体显示开(1)、光标开(1)、光标闪烁开(1)
lcd_command_enable(0b00110100);//扩充命令不显示图片
for(x=0x80;x<0x83;x++)
{
lcd_command_enable(x); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(i=0;i<16;i++)
{
PORTB=0x00; //D15--D8
lcd_string_enable(); //LCD输入使能
}
for(chair=newcha;chair<newcha+16;chair++) //输入Y 每组的16位坐标值
{
PORTB=text0[chair]; //D15--D8
lcd_string_enable(); //LCD输入使能
}
newcha=chair;
}
newcha=0;
for(x=0x83;x<0x8a;x++)
{
lcd_command_enable(x); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值
{
PORTB=text1[chair]; //D15--D8
lcd_string_enable(); //LCD输入使能
}
newcha=chair;
}
chair=0;newcha=0;
for(x=0x8a;x<0x91;x++)
{
lcd_command_enable(x); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值
{
PORTB=text2[chair]; //D15--D8
lcd_string_enable(); //LCD输入使能
}
newcha=chair;
}
chair=0;newcha=0;
for(x=0x91;x<0x98;x++)
{
lcd_command_enable(x); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值
{
PORTB=text3[chair]; //D15--D8
lcd_string_enable(); //LCD输入使能
}
newcha=chair;
}
chair=0;newcha=0;
for(x=0x98;x<0x9f;x++)
{
lcd_command_enable(x); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(chair=newcha;chair<newcha+32;chair++) //输入Y 每组的16位坐标值
{
PORTB=text4[chair]; //D15--D8
lcd_string_enable(); //LCD输入使能
}
newcha=chair;
}
lcd_command_enable(0x9f); //输入X行起始坐标,共32行
lcd_command_enable(0x80); //输入Y列组起始坐标(16组)
for(i=0;i<16;i++)
{
PORTB=text5[i];
lcd_string_enable(); //LCD输入使能
}
for(i=0;i<16;i++) //输入Y 每组的16位坐标值
{
PORTB=0x00; //D15--D8
lcd_string_enable(); //LCD输入使能
}
lcd_command_enable(0b00110110);//扩充命令 显示图片
lcd_command_enable(0b00110000);//基本命令
lcd_command_enable(0b00001100);//整体显示开(1)、光标关、光标闪烁关
}
/////////////////主函数//////////////////
void main(void)
{
CLI(); //清零
port_init(); //端口初始化
GICR = 0x00;
TIMSK = 0x00;
SEI(); //开所有中断
PORTDefine(); //位操做复位
lcd_reset(); //LCD功能初始化
map_reset();
while(1)
{
lcd_command_enable(0b00110000);//基本命令
lcd_command_enable(0b00000001);//清屏并光标复位
map_start();
delay100us(20000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -