⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdp.c

📁 一个充电控制器的完整单片机程序
💻 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 + -