📄 lcd.c
字号:
/*******************************************
-------头文件信息--------------------------
*******************************************/
//#include "config_LCD.H"
#include "c8051f020.h"
#include "intrins.h"
#include "lcd.h"
/*xdata unsigned short LCD_DATA1[64][8]={0};
unsigned char cc=0;
code unsigned char WindowsFronts[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; */
/***********************************************************/
unsigned char code tbl[10]={48,49,50,51,52,53,54,55,56,57};//0-9 ascii code
/**************************************************************
----------液晶配置子程序---------------------------------------
***************************************************************/
/*void LCD_Config (void)
{
WDTCN=0X07;
WDTCN=0XDE;
WDTCN=0XADL;
OSCXCN=0X00;
OSCICN=0x06;
} */
/**************************************************************
------延时US子程序---------------------------------------------
***************************************************************/
void Delay1us(unsigned char us)
{
while (us)
{
_nop_();
--us;
}
}
/*****************************************************************
------延时MS子程序-----------------------------------------------
*****************************************************************/
void Delay1ms(unsigned char ms)
{
unsigned char i;
while (ms)
{ for(i=0;i<255;i++)
{ _nop_(); _nop_();}
for(i=0;i<255;i++)
{ _nop_(); _nop_();}
for(i=0;i<255;i++)
{ _nop_(); _nop_();}
for(i=0;i<255;i++)
{ _nop_(); _nop_();}
for(i=0;i<255;i++)
{ _nop_(); _nop_();}
for(i=0;i<25;i++)
{ _nop_(); _nop_();}
--ms;
}
}
/************************************************************************
------等待LCD空闲子程序--------------------------------------------------
*************************************************************************
说明:入口参数:无
出口参数:无
************************************************************************/
void LCD_WaitReady(void)
{
//while(!(LCD_State()&0x80));
Delay1us(40);
}
/************************************************************************
------向LCD发送控制命令子程序--------------------------------------------
*************************************************************************
说明:入口参数:命令值
出口参数:无
*************************************************************************/
void LCD_WriteCommand(char ch) //
{
LCD_WaitReady();
LCD_CMD=0x04; //LCD_RW=0,LCD_RS=0,LCD_E=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
LCD_DATA=ch;
Delay1us(20);
Delay1us(20);
Delay1us(10);
Delay1us(10);
LCD_CMD=!LCD_CMD;
}
/*******************************************************************************
------向LCD发送数据命令子程序---------------------------------------------------
********************************************************************************
说明:入口参数:数据
出口参数:无
*******************************************************************************/
void LCD_WriteData(char ch) //向LCD发送
{
LCD_WaitReady();
LCD_CMD=0x05; //LCD_RW=0,LCD_RS=1,LCD_E=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
LCD_DATA=ch;
Delay1us(20);
Delay1us(20);
Delay1us(10);
Delay1us(10);
LCD_CMD=!LCD_CMD;
}
/*
unsigned short LCD_ReadData(void)
{
unsigned char state_H,state_L;
LCD_WaitReady();
LCD_CMD=0xff; //LCD_RW=1,LCD_RS=1,LCD_E=1;
_nop_();
state_H=LCD_DATA;
Delay1ms(4);
state_L=LCD_DATA;
LCD_CMD=!LCD_CMD;
return state_H*256+state_L;
}
*/
/********************************************************************
------图形界面初始化子程序----------------------------------------------
********************************************************************/
/*void LCD_GRAPH_CLEAR(void)
{
unsigned char i,j;
for(i=0;i<0x20;i++)
{
for(j=0;j<0x10;j++)
{
LCD_WriteCommand(0x80+i);
LCD_WriteCommand(0x80+j);
//Delay1ms(1);
_nop_();
LCD_WriteData(0x00);
LCD_WriteData(0x00);
}
}
} */
/********************************************************************
------向LCD初始化子程序----------------------------------------------
*********************************************************************
说明:入口参数:无
出口参数:无
*********************************************************************/
void LCD_Init(void) //初始化LCD
{
Delay1ms(120);
FUNCTION_BASIC(); //基本指令动作
Delay1us(300);
FUNCTION_BASIC();
Delay1us(120);
LCD_DISP_ON(); //开显示
Delay1us(300);
LCD_CLEAR(); //清屏
Delay1ms(40);
LCD_ENTRYMODE_INC(); //光标移动方式为增加
}
/**************************************************************************
------坐标变换子程序-------------------------------------------------------
***************************************************************************
说明:入口参数:坐标,坐标
出口参数:成功与否
**************************************************************************/
unsigned char LCD_Goto(unsigned char x,unsigned char y)
{unsigned char cur;
x=x-1;y=y-1;
if((y>=0)&&(y<8))
switch(x)
{case 0:
{
cur=y;
LCD_SETADD();
break;
}
case 1:
{
cur=16+y;
LCD_SETADD();
break;}
case 2:
{
cur=8+y;
LCD_SETADD();
break;
}
case 3:
{
cur=24+y;
LCD_SETADD();
break;
}
default:
{break;}
}
else
return ERR;
}
/**************************************************************************
------向指定坐标位置写字符子程序-------------------------------------------------------
***************************************************************************
说明:入口参数:坐标,坐标,字符
出口参数:成功与否
**************************************************************************/
/*void LCD_PutChar(unsigned char x,unsigned char y, unsigned char ch)
{LCD_Goto(x,y);
LCD_WriteData(ch);
} */
/**************************************************************************
------向LCD指定位置写汉字子程序--------------------------------------------
***************************************************************************
说明:每次只能写一个汉字
入口参数:坐标,坐标,待写字符
出口参数:成功与否
***************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -