📄 lcdp.c
字号:
/*--------------------------------
lcd display 16x2 chinese
driver chip st7920
2002.12.28
----------------------------*/
#include <stdlib.h>
#include <ctype.h>
#include <intrins.h>
#include <AT89X52.H>
#include "LCDP.H"
extern void delay(unsigned int i);
//---------------------------
//display string
static void isBusy(void);
void text(unsigned char sta,unsigned char *string)
{
if(sta)WC_LCD(sta);
while(*string)WD_LCD(*string++);
}
#pragma NOAREGS
//-------------------------------
//LCD display char,write data to LCD ram
#pragma DISABLE
void WD_LCD(unsigned char ch)
{
isBusy();
LCDRS=1;
LCDRW=0;
_nop_();
_nop_();
P0=ch;
_nop_();
_nop_();
ENABLE=1;
_nop_();
_nop_();
_nop_();
ENABLE=0;
_nop_();
_nop_();
}
//---------------------------------
//write lcd controll register
#pragma DISABLE
void WC_LCD (unsigned char command)
{
isBusy();
LCDRS=0;
_nop_();
LCDRW=0;
_nop_();
_nop_();
P0=command;
_nop_();
_nop_();
ENABLE=1;
_nop_();
_nop_();
_nop_();
ENABLE=0;
_nop_();
_nop_();
}
//----------------------------------------------
//LCD busy check ,check busy flag,read acc
static void isBusy(void)
{
unsigned char data i;
i=ACC;
P0=0x0ff;
_nop_();
LCDRS=0;
LCDRW=1;
_nop_();
_nop_();
ENABLE=1;
_nop_();
_nop_();
_nop_();
do{ ACC=P0; } while(BUSYFLAG);
_nop_();
_nop_();
ENABLE=0;
_nop_();
_nop_();
ACC=i;
}
//------------------------------------------------
//init lcd
#pragma DISABLE
void clear(void)
{
WC_LCD(0x18);//base command,8bit
isBusy();
LCDRS=0;
LCDRW=0;
_nop_();
_nop_();
P0=0x1;
_nop_();
ENABLE=1;
delay(4);
ENABLE=0;
_nop_();
_nop_();
}
#pragma AREGS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -