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

📄 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 <absacc.h>
#include "charger.h"
//---------------------------------------
//define signal connection 
//---------------------------------------
#define   LCDRS       T0
#define   LCDRW       P1_7
#define   ENABLE      T1
#define   DATABUS     XBYTE[0x6000]

extern void delay(unsigned int i);
static void isBusy(void);


//-------------------------------
//LCD display char,write data to LCD ram

void WD_LCD(unsigned char ch)
{
 	isBusy();
  LCDRS=1;
	_nop_();
	_nop_();
	_nop_();
  LCDRW=0;
	_nop_();
	_nop_();
	_nop_();
  DATABUS=ch;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ENABLE=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
  ENABLE=0;
	_nop_();
	_nop_();
}
//---------------------------------
//write lcd controll register
void WC_LCD (unsigned char command)
{
 	isBusy();
	LCDRS=0;
	_nop_();
	LCDRW=0;
	_nop_();
	_nop_();
	DATABUS=command;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ENABLE=1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ENABLE=0;
}
//----------------------------------------------
//LCD busy check ,check busy flag,read acc
//#pragma DISABLE

static void isBusy(void)
{
unsigned char data i;
for(i=100;i--;);
RESET_DOG;

 /*
 unsigned char data i;
 i=ACC;
 P8255D=0x90;//AiBoCo;
 P0=0x0ff;
 _nop_();
 LCDRS=0;
 LCDRW=1;
 _nop_();
 ENABLE=1;
 _nop_();
do { ACC=DATABUS;  } while(BUSYFLAG);
 ENABLE=0;
 P8255D=0x80;//AoBoCo;
	ACC=i;
	*/
}
//------------------------------------------------
//init lcd

void clear(void)
{
	WC_LCD(0x18);//base command,8bit
 	isBusy();
	LCDRS=0;
	LCDRW=0;
	_nop_();
	_nop_();
	DATABUS=0x1;
	_nop_();
	_nop_();
	_nop_();
	ENABLE=1;
	delay(4);
	ENABLE=0;
	_nop_();
	_nop_();
}


//---------------------------
//display string

void text(unsigned char sta,unsigned char *string)
{
	if(sta)WC_LCD(sta);
	while(*string)WD_LCD(*string++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -