📄 lcd12864._h
字号:
/************************串行工作**************************/
#define CS_H PORTC|=(1<<0)
#define CS_L PORTC&=~(1<<0)
#define STD_H PORTC|=(1<<2)
#define STD_L PORTC&=~(1<<2)
#define SCLK_H PORTC|=(1<<4)
#define SCLK_L PORTC&=~(1<<4)
// 显示用指针变量
char *line1;
char *line2;
char *line3;
char *line4;
/*****************************************
液晶初始化程序
*****************************************/
void lcd12864_init(void)
{
DDRC=0XFF;
PORTC=0X00; //IO端口初始化
DDRG|=BIT(2);
//PORTG=0XFF;
PORTG &=~(1<<2); //串行
delay_ms(6);
write_com(0X30); //基本指令动作
write_com(0X01); //清屏,地址指针指向00H
delay_ms(6);
write_com(0X0C); //开显示,关游标
delay_ms(5);
}
void clear_dis(void)
{
write_com(0x30);
write_com(0X01); //清屏,地址指针指向00H
delay_ms(10);
}
/*****************************************
液晶发送子程序(串行)
*****************************************/
void write_byte(unsigned char word)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCLK_L;
if(word & 0x80) STD_H;
else STD_L;
word<<=1;
SCLK_H;
SCLK_L;
}
}
/*****************************************
液晶写控制字程序
*****************************************/
void write_com(unsigned char com)
{
CS_H;
delay_ms(1);
write_byte(0XF8);
write_byte(com & 0XF0);
write_byte((com<<4) & 0XF0);
CS_L;
}
/*****************************************
液晶写数据字程序
*****************************************/
void write_data(unsigned char data)
{
CS_H;
delay_ms(1);
write_byte(0XFA);
write_byte(data&0XF0);
write_byte((data<<4)&0XF0);
CS_L;
}
//指定位置写文字
void lcd_writexy(unsigned char x,unsigned char y,unsigned char *str)
{
switch(x)
{
case 1: write_com(0x80+y);break;
case 2: write_com(0x90+y);break;
case 3: write_com(0x88+y);break;
case 4: write_com(0x98+y);break;
}
while( *str!=0x00 )
{
write_data(*str);
*str++;
}
}
/*****************************************
液晶整行显示函数程序
*****************************************/
void display(void)
{
write_com(0x80);
while( *line1!=0x00 )
{
write_data(*line1);
line1++;
}
write_com(0x90);
while( *line2!=0x00 )
{
write_data(*line2);
line2++;
}
write_com(0x88);
while( *line3!=0x00 )
{
write_data(*line3);
line3++;
}
write_com(0x98);
while( *line4!=0x00 )
{
write_data(*line4);
line4++;
}
line1 = "";
line2 = "";
line3 = "";
line4 = "";
}
/*****************************************
液晶画图清屏程序
*****************************************/
void clear_disp_pic(void)
{
unsigned char i,j=0;
for(j=0;j<32;j++)
{
for(i=0;i<16;i++)
{
write_com(0X34);//选择四位数据接口,扩充指令操作
write_com(0x80+j);//四行
write_com(0x80+i);//十六列
write_com(0X30);
write_data(0x00);
write_data(0x00);
}
}
}
/*****************************************
液晶显示图形程序
*****************************************/
void disp_pic(const unsigned char *img )
{
unsigned char i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
write_com(0x34);//扩充指令集
write_com(0X80+j);//列号
write_com(0X80+i);//行号
write_com(0x30);//基本指令集
write_data(img[j*16+i*2]);
write_data(img[j*16+i*2+1]);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
write_com(0x34);
write_com(0X80+j-32);
write_com(0X88+i);
write_com(0x30);
write_data(img[j*16+i*2]);
write_data(img[j*16+i*2+1]);
}
}
write_com(0x36);//8位数据 扩充指令集 绘图开
delay_ms(500);
}
/******************************************************************************************
* 函数名称 :con_disp
* 功能描述 :当ee=0xff时,在x0,y0处反白显示x个字.
当ee=0x00时,在x0,y0处取消反白显示x个字.
******************************************************************************************/
void con_disp(unsigned char ee ,unsigned char x0,unsigned char y0,unsigned char x)
{
unsigned char i,j;
for(j=0;j<16;j++)
{
for(i=0;i<x;i++)
{
write_com(0x34);
write_com(y0+j);
write_com(x0+i);
write_com(0x30);
write_data(ee);
write_data(ee);
}
}
write_com(0x36);
}
/*-----------------------------------------------------------------------
延时函数
8M
-----------------------------------------------------------------------*/
void delay_1us(void) //1us延时函数
{
asm("nop");
}
void delay_us(unsigned int n) //N us延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1us();
}
void delay_1ms(void) //1ms延时函数
{
unsigned int i;
for (i=0;i<1140;i++);
}
void delay_ms(unsigned int n) //N ms延时函数
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -