📄 lcd12864.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 + -