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

📄 lcd4bit.c

📁 AT89S52 based microcontroller, C language programming alarm with GSM conection
💻 C
字号:
 /********************************************************************/
/* 			Biblioteka LCD dla 4-biotwego interfejsu			 	*/
/*------------------------------------------------------------------*/
/* Description :   Biblioteka obslugi wyswietlacza LCD	            */
/*                 podlaczonego do portu poprzez 4 linie danych     */
/*                 Wyswietlacz podlaczony do portu P0 i P2          */
/*  LCD		     uP                                         		*/
/*  DB4    =	P0.0                                				*/
/*  DB5    =	P0.1                                				*/
/*  DB6    =	P0.2                                          		*/
/*  DB7    =	P0.3                                        		*/
/*	RS	   =	P0.5												*/
/*	RW	   =	P0.6												*/
/*	E	   =	P2.7												*/
/*------------------------------------------------------------------*/
/* Author      : Michal Grzybek                                		*/
/*------------------------------------------------------------------*/
/* History     : 24/03/2009    Keil uVision3                        */
/*                                                                  */
/********************************************************************/
#include <regx52.h>
#include <lcd.h>


#define DATA_LCD	P0		 //dane sa wystawiane na port P0
#define RS_LCD 		P0_5	  //linia RS
#define RW_LCD 		P0_6	//linia RW
#define E_LCD 		P2_7	//linia Enable

/*********************************************************************/
/*	Zmienne globalne:     obsluga pozycjonowania kursora			 */
/*********************************************************************/
static unsigned char code row1[16] = {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
                                0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F};

static unsigned char code row2[16] = {0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,
                                0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF};
/*********************************************************************/
/*	Zmienne globalne:     obsluga polskich liter					 */
/*********************************************************************
static const BYTE code fonttab[] = {		
 0,14,1,15,17,15,2,0,	//a
 0,14,17,31,16,14,2,0,	//e
 0,2,4,14,16,16,17,14,	//c
 2,4,14,16,14,1,30,0,	//s
 2,4,31,2,4,8,31,0,		//z,z
 12,4,6,4,12,4,14,0,	//l
 2,4,22,25,17,17,17,0,	//n
 2,4,14,17,17,17,14,32};
*/  
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description :	funkcja sprawdza zajetosc flagi					 */	
/*********************************************************************/									
BYTE check_busy(void)
{
 	BYTE bf;
	DATA_LCD |= 0x0f;  //dane znajduja sie na mlodszej czworce portu
	RS_LCD = 0;			
	RW_LCD = 1;
	E_LCD = 1;
	bf = DATA_LCD & 0x08;
	E_LCD = 0;
	E_LCD = 1;
	E_LCD = 0;
	return (bf);
}

/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description :	funkcja zapisuje 4-bity do wyswietlacza LCD		 */	
/*********************************************************************/
void write_nibble (BYTE nibble)
{
 E_LCD = 0;
 DATA_LCD &= 0xf0;
 RW_LCD = 0;
 nibble &= 0x0f;
 DATA_LCD |= nibble;

 E_LCD = 1;
 E_LCD = 0;
}
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description :	funkcja odczytuje 4-bity z wyswietlacza LCD		 */	
/*********************************************************************/
BYTE read_nibble (void)
{
 BYTE nibble;
 E_LCD = 0;
 RW_LCD = 1;
 E_LCD = 1;
 nibble = DATA_LCD & 0x0f;
 E_LCD = 0;
 return (nibble);
}
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description :	zapis slowa sterujacego Control do wysw. LCD	 */	
/*********************************************************************/
void LCD_ctrlWR ( BYTE cmde)
 {
  	while (check_busy());
  	RS_LCD = 0;
  	write_nibble (cmde >> 4);
  	write_nibble (cmde);
 }
 
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description :	zapis danych Data do wyswietlacza LCD			 */	
/*********************************************************************/
void LCD_dataWR (BYTE byte)
 {
  	while (check_busy());
	RS_LCD = 1;
	write_nibble (byte >> 4);
	write_nibble (byte);
 }

/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description :	odczyt danych Data z wyswietlacza LCD			 */	
/*********************************************************************/
BYTE LCD_dataRD (void)
 {
  	BYTE byte;
	while (check_busy());
	RS_LCD = 1;
	byte = read_nibble() <<4;
	byte = byte | read_nibble();
	return (byte);
 }
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description : funkcja inicjalizujaca wyswietlacz LCD			 */	
/*********************************************************************/
void LCD_init (void)
{ 
 // char i;
LCD_ctrlWR (INITDISP);
LCD_ctrlWR (CLEAR); 
LCD_ctrlWR (LCDON); 

/*LCD_ctrlWR(0x40);				 //wybierz CG RAM
for (i=0; i<sizeof fonttab; i++)
{
 	LCD_dataWR(fonttab[i]);
	
}
LCD_ctrlWR(0x80); */
}



	
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description : funkcja wypisuje ciag znakow az do napotkania 0x00 */	
/*********************************************************************/
 void LCD_print (char *s)
 {
  	while (*s)
	LCD_dataWR (*s++);

 }
/*********************************************************************/
/* 						Definicje funkcji 							 */
/*-------------------------------------------------------------------*/
/*	Description : zapis polskich znakow do pamieci CG RAM wyswietl.  */	
/*********************************************************************/
				

⌨️ 快捷键说明

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