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

📄 lcd12864.c

📁 液晶显示的单片机源程序
💻 C
字号:
/*
***************************************************************************
*
*					(C) Copyright 2007,单片机初学者园地
*                          All Rights reserved.
*
*项目名称:    51单片机学习开发系统
*                
*本文件名称:LCD12864.c 
*       
* 完成作者 : 单片机初学者 http://blog.ednchina.com/ahai0306/  qq:464976346 
* 当前版本 : V1.0        
* 完成日期 : 2007年4月1日
* 描    述 :  
*                此程序实现,完成12864液晶(ST790)的驱动程序,可以显示任意的ASCII字符和中文字符
*             
*              
****************************************************************************
*/

#include "Lcd12864.h"
#include <INTRINS.H>


sbit  EN=P3^4;
sbit  RW=P3^6;
sbit  RS=P3^7;
sbit  Lcd_RST=P0^3;



#define NOP  _nop_(); _nop_()

void delay(uint16 data i)
{
  while(i--);
}

uint8 CheckBusy(void)
{
  uint8 a;
 	RS=0;
 	RW=1;
	NOP;
 	EN=1;
	NOP;
	P2=0xff;
 	a=P2;
	EN=0;
      if(a&0x80)
  	 return OK;
   	   else 
     	    return NOK;
}
void SendLcdCommand (uint8 command)
{
	NOP;NOP;
	 
//	delay(500); 
	while(CheckBusy()); 
	RS=0;
 	RW=0;
 	P2=command;
 	EN=1;
 	NOP;NOP;
 	EN=0;
}	
 	
void SendLcdData (uint8 dat)
{
	NOP;NOP;
	while(CheckBusy());
//	delay(500);
	RS=1;
 	RW=0;
 	P2=dat;
 	EN=1;
 	NOP;NOP;
 	EN=0;
}

void LCD_init(void)
{	
	Lcd_RST = 0;
	delay(5000);
   	Lcd_RST = 1;
	delay(500);
		
	SendLcdCommand(0x34);//扩充指令操作
	SendLcdCommand(0x30);//基本指令操作
	SendLcdCommand(0x01);//清除显示
	SendLcdCommand(0x06);//指定在资料写入或读取时,光标的移动方向
	SendLcdCommand(0x0c);//开显示,关光标,不闪烁
}

void Clear_display(void)
{
  SendLcdCommand(0x01);//清除显示
}

void  Disp_lcd( uint8  x, uint8  y, uint8 *chinese )
{
  uint8  xtemp;;
  switch(x)
  { 
    case 0: xtemp=0x80+y; break;
	case 1: xtemp=0x90+y; break;
	case 2: xtemp=0x88+y; break;
	case 3: xtemp=0x98+y; break;
	default:break;
	}
//	xtemp== x%2*0x10 + x/2*0x08 + y + 0x80;
   SendLcdCommand(xtemp);
   do
	{
		SendLcdData(*chinese);
		chinese++;
	}while(*chinese!=0);
 }

⌨️ 快捷键说明

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