📄 lcd12864.c
字号:
#include<iom128.h>
#include<macros.h>
#include<stdio.h>
#define LCD_DAT PORTC
#define LCDENH PORTD=PORTD|(1<<6)
#define LCDENL PORTD=PORTD&(~(1<<6))
#define LCDDIH PORTD=PORTD|(1<<7)
#define LCDDIL PORTD=PORTD&(~(1<<7))
#define LCDCS1H PORTD=PORTD|(1<<5)
#define LCDCS1L PORTD=PORTD&(~(1<<5))
#define LCDCS2H PORTD=PORTD|(1<<4)
#define LCDCS2L PORTD=PORTD&(~(1<<4))
/**************************************
*函数名称:LCD——WRITEDAT(dat)
*函数功能:向LCD写入数据
*入口参数:dat
*出口参数:无
*************************************/
void LCD_WRITE_DAT(uchar dat)
{
LCDENL;
delayUS(2);
LCDDIH; //选择为输入数据
delayUS(2);
LCDENH;
delayUS(2);
PORTC=dat;
delayUS(2);
LCDENL;
}
/******************************************
*函数名称:LCD_WRITE_COM(com)
*函数功能:向LCD写入命令
*入口参数:com
*出口参数:无
***********************************************/
void LCD_WRITE_COM(uchar com)
{
LCDENL;
delayUS(2);
LCDDIL;
delayUS(2);
LCDENH;
delayUS(2);
PORTC=com;
delayUS(2);
LCDENL;
}
/*******************************************
*函数名称:LCD_WRITE_ADD_CHAR(uchar x,y ,uchar *p)
*函数功能:在坐标xy处写入西文字符
*入口参数:x,y 写入字符的坐标, *p字符编码表的首地址
*出口参数:无
**********************************************/
void LCD_WRITE_ADD_CHAR(uchar x, uchar y, uchar p)
{
uchar i;
x=0xb8+x*2;
y=0x40+y*8;
LCD_WRITE_COM(x); //x为行
LCD_WRITE_COM(y); // y为列
for(i=0;i<8;i++)
{
LCD_WRITE_DAT(table[p][i]); //西文字母的上半部分,由8行点构成(每行有8个点)
}
LCD_WRITE_COM(x+1);
LCD_WRITE_COM(y);
for(i=0;i<8;i++) //写入西文字母的下半部分
{
LCD_WRITE_DAT(table[p][8+i]);
}
}
void LCD_WRITE_ADD_CHINESE(uchar x,uchar y,uchar p)
{
uchar i;
x=0xb8+x*2;
y=0x40+y*16;
LCD_WRITE_COM(x);
LCD_WRITE_COM(y);
for(i=0;i<16;i++)
{
LCD_WRITE_DAT(Tab_Chinesepoem[2*p][i]);
}
LCD_WRITE_COM(x+1);
LCD_WRITE_COM(y);
for(i=0;i<16;i++)
{
LCD_WRITE_DAT(Tab_Chinesepoem[2*p+1][i]);
}
}
/********************************************************
*函数名称:LCD_WRITE_PICTURE()
*函数功能:在LCD液晶屏上显示图片‘南华大学电气工程学院’
*函数引用了字模软件生成的字模表Tab_pic2[][16]
*其取模方式为 :从第一列开始向下取8个点作为一个字节
,然后从第二列开始向下取8个点作为第二个字节...依此类推。
如果最后不足8个点就补满8位。 取模顺序是从低到高,即第
一个点作为最低位。如*-------取为00000001
***********************************************************/
/*void LCD_WRITE_PICTURE()
{
uchar i,j,k;
uint a;
LCDCS1H;
LCDCS2L;
LCD_WRITE_COM(0x3F);
LCD_WRITE_COM(0xC0);
for(k=0;k<8;k++)
{
LCD_WRITE_COM(0xB8+k); //起始行,每页有八行
LCD_WRITE_COM(0x40); //起始列,列自动加一
for(i=0;i<4;i++)
for(j=0;j<16;j++)
{
LCD_WRITE_DAT(Tab_pic2[i+k*8][j]);
}
}
LCDCS1L;
LCDCS2H;
LCD_WRITE_COM(0x3F);
LCD_WRITE_COM(0xC0);
for(k=0;k<8;k++)
{
LCD_WRITE_COM(0xB8+k); //起始行,每页有八行
LCD_WRITE_COM(0x40); //起始列,列自动加一
for(i=0;i<4;i++)
for(j=0;j<16;j++)
{
LCD_WRITE_DAT(Tab_pic2[i+4+k*8][j]);
}
}
}*/
/***************12864液晶清屏**********************/
void LCD_CLS()
{
uchar i,j;
LCDCS1H; //清左边屏幕
LCDCS2L;
LCD_WRITE_COM(0x3F);
LCD_WRITE_COM(0xC0);
for(i=0;i<4;i++)
for(j=0;j<8;j++)
{
LCD_WRITE_ADD_CHAR(i,j,0x0C);
}
LCDCS1L; //清右边屏幕
LCDCS2H;
LCD_WRITE_COM(0x3F);
LCD_WRITE_COM(0xC0);
for(i=0;i<4;i++)
for(j=0;j<8;j++)
{
LCD_WRITE_ADD_CHAR(i,j,0x0C);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -