📄 lcd_txt.c
字号:
/***********************************************************************************************
** 文件名称:_LCD_C
** 功能说明:ST7920驱动LCD显示软件包
** 使用说明:软件包用到LPC213x的二个引脚,默认为P1.24,P1.25,如需修改,请修改头文件中的宏定义数据即可
(接触一天,时间不足,理解不深,代码有待优化,鉴谅)
***********************************************************************************************/
//#include "config.h"
#include <REG52.H> /* special function register declarations */
#include "LCD.h"
/***********************************************************************************************
** 函数名称:LCD_Init()
** 函数功能:LCD初始化
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_Init(void)
{
//PIN_INITI;
PSB = 0;
RST = 0;
LCD_Dly(50);
RST=1;
LCD_Dly(50); //启动等待,等LCM讲入工作状态
LCD_Write(0,0x30); //8 位介面,基本指令集
LCD_Write(0,0x0c); //显示打开,光标关,反白关
LCD_Write(0,0x01); //清屏,将DDRAM的地址计数器归零
}
void LCD_InitG(void)
{
//PIN_INITI;
PSB = 0;
RST = 0;
LCD_Dly(2);
RST=1;
LCD_Dly(2); //启动等待,等LCM讲入工作状态
LCD_Write(0,0x36); //8 位介面,基本指令集
// LCD_Write(0,0x0c); //显示打开,光标关,反白关
//LCD_Write(0,0x01); //清屏,将DDRAM的地址计数器归零
}
/***********************************************************************************************
** 函数名称:LCD_WStr()
** 函数功能:显示字符串
** 入口参数:addr 显示的地址
** ptr 要显示的字符串的首地址
** 出口参数:无
***********************************************************************************************/
void LCD_WStr(uint8 addr,const char *ptr)
{
LCD_Write(WIR,addr);
//LCD_Dly(1);
while(*ptr!=0)
{
LCD_Write(WDATA,*ptr++);
// LCD_Dly(1);
}
}
/***********************************************************************************************
** 函数名称:LCD_Write()
** 函数功能:LCD写指令或数据
** 入口参数:control_flow 数据控制流,0 为写指令 1 为写数据
ddata 数据
** 出口参数:无
***********************************************************************************************/
void LCD_Write(unsigned char control_flow, unsigned char ddata)
{
unsigned char start_data,Hdata,Ldata;
if(0==control_flow) start_data=0xf8; //写指令
else start_data=0xfa; //写数据
CS=1;
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
LCD_SendByte(start_data); //发送起始信号
LCD_Dly(2); //延时是必须的
LCD_SendByte(Hdata); //发送高四位
LCD_Dly(2); //延时是必须的
LCD_SendByte(Ldata); //发送低四位
LCD_Dly(2); //延时是必须的
CS=0;
}
/***********************************************************************************************
** 函数名称:LCD_SendByte()
** 函数功能:发送一个字节
** 入口参数:bbyte 字节数据
** 出口参数:无
***********************************************************************************************/
void LCD_SendByte(unsigned char bbyte)
{
unsigned char i;
for(i=0;i<8;i++)
{
if( (bbyte&0x80)!=0 ) SID_1;
else
{
SID_0 ; //SID=bbyte&0x80;取出最高位
}
SCKL_1; //SCLK=1;
i=i;
SCKL_0; //SCLK=0;
bbyte<<=1; //左移
}
}
/***********************************************************************************************
** 函数名称:LCD_Dly()
** 函数功能://延时
** 入口参数:dly 延时参数,值越大,延时时间越长
** 出口参数:无
***********************************************************************************************/
void LCD_Dly(unsigned int dly)
{
unsigned int i,j;
for(i=dly;i>0;i--)
for(j=5;j>0;j--);
}
/***********************************************************************************************
** 函数名称:LCD_Test()
** 函数功能:图形方式下屏幕全黑
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_Test(void)
{
unsigned char i,j;
for(i=0;i<32;i++)
{
LCD_Write(0,0x80+i);
LCD_Write(0,0x80);
for(j=0;j<16;j++)
LCD_Write(1,0xff);
}
for(i=0;i<32;i++)
{
LCD_Write(0,0x80+i);
LCD_Write(0,0x88);
for(j=0;j<16;j++)
LCD_Write(1,0xff);
}
}
/***********************************************************************************************
** 函数名称:LCD_GPCLS()
** 函数功能:图形方式下清屏
** 入口参数:无
** 出口参数:无
***********************************************************************************************/
void LCD_GPCLS(void)
{
unsigned char i,j;
LCD_Write(0,0x36);
// LCD_Dly(2);
for(i=0;i<32;i++)
{
LCD_Write(0,0x80+i);
// LCD_Dly(1);
LCD_Write(0,0x80);
// LCD_Dly(1);
for(j=0;j<16;j++)
{ //LCD_Dly(2);
LCD_Write(1,0x00);
}
}
for(i=0;i<32;i++)
{
LCD_Write(0,0x80+i);
// LCD_Dly(1);
LCD_Write(0,0x88);
// LCD_Dly(1);
for(j=0;j<16;j++)
{// LCD_Dly(2);
LCD_Write(1,0x00);
}
}
}
void LCD_GPR()
{
unsigned char i,j;
LCD_Write(0,0x36);
// LCD_Dly(2);
LCD_Write(0,0x88);
// LCD_Dly(1);
LCD_Write(0,0x80);
// LCD_Dly(1);
LCD_Write(1,0x80);
// LCD_Write(1,0xb0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -