📄 lcd.c
字号:
/* //////////////////////////////////////////////////////////////////////
NAME: LCD.c
//////////////////////////////////////////////////////////////////////// */
#include <CORE\includes.h>
#include "LCD.h"
sbit LCD_RS = P1 ^ 0;
sbit LCD_RW = P1 ^ 1;
sbit LCD_E = P1 ^ 2;
sbit LCD_BF = P1 ^ 7;
//INT8U LOST_PACK=0;
void LCD_CheckBusy(void)
{
INT8U data tmp;
do
{
P1|=0XF0;
LCD_RS=0;
LCD_RW=1;
LCD_E=1;
tmp=P1;
LCD_E=0;
LCD_E=1;
LCD_E=0;
}while((tmp&0x80));
}
//---------------------------------------
void LCD_WrCommand(BYTE Command1)
{
// BYTE sts;
INT8U data Command;
Command=Command1;
LCD_CheckBusy();
//-----------------------
LCD_RS=0;
LCD_RW=0;
P1=(Command&0xf0); //high 4 bits
LCD_E=1;
LCD_E=0;
Command=Command<<4;
P1=(Command&0xf0); //low 4 bits
LCD_E=1;
LCD_E=0;
}
//----------------------------------------------
void LCD_Initial(void)
{
INT8U data i;
INT32U data tmp;
for(tmp=0;tmp<10000;tmp++);
P1=0X30;
LCD_RS=0;
LCD_RW=0;
for(i=0;i<3;i++)
{
LCD_E=1;
LCD_E=0;
for(tmp=0;tmp<10000;tmp++);
}
P1=0X20;
LCD_E=1;
LCD_E=0;
// for(tmp=0;tmp<10000;tmp++);
LCD_WrCommand(0x28);
LCD_WrCommand(0x01);
LCD_WrCommand(0x06);
LCD_WrCommand(0x0E);
}
//////////////////////////////////////////////////////////////////
void LCD_print(char *p) reentrant
{
// p=p;
INT8U tmp1;
INT8U count=0;
LCD_WrCommand(0x01); //clr
// LCD_WrCommand(0x05); //
// LCD_WrCommand(0x80); //ddram addr;
while(*p)
{
if(count++==0x10)
LCD_WrCommand(0xc0); //set ram address 40h;
tmp1=*p++;
LCD_CheckBusy();
//--------write ram----
P1=(tmp1&0xf0);
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
tmp1=tmp1<<4;
P1=(tmp1&0xf0);
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
//---------------------
// ++p;
} //--------*/
}
//////////////////////////////////////////////////////////////////
void LCD_log(char *p) reentrant
{
INT8U tmp1;
INT8U count=0;
LCD_WrCommand(0x01); //clr
// LCD_WrCommand(0x05); //
// LCD_WrCommand(0x80); //ddram addr;
while(*p)
{
if(count++==0x10)
LCD_WrCommand(0xc0); //set ram address 40h;
tmp1=*p++;
LCD_CheckBusy();
//--------write ram----
P1=(tmp1&0xf0);
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
tmp1=tmp1<<4;
P1=(tmp1&0xf0);
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
//---------------------
// ++p;
} //--------*/
}
/*
/////////////////////////////////////////////////
void ERR_print(BYTE ERR_number) reentrant
{
INT8U i;
INT8U buff[6]={'E','R','R','1'};
buff[4]=0;
buff[5]=(LOST_PACK&0x0f)+0x30;
ERR_number=ERR_number;
LCD_WrCommand(0xc0); //ddram addr;
for(i=0;i<6;i++)
{
LCD_CheckBusy();
//--------write ram----
P1=(buff[i]&0xf0);
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
buff[i]=buff[i]<<4;
P1=(buff[i]&0xf0);
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
//---------------------
// ++p;
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -