📄 fm12864.c
字号:
#include "FM12864.h"
/************************************************************
* Fuction: 从液晶写一个字节
* Parameters:wdata,wdata-向液晶写的字节
* Return: None
************************************************************/
void LCDWriteByte(unsigned char wdata)//向液晶写一个字节
{
P4DIR = 0xff; //把P4口作为液晶显示的8位数据口,定义为输出方式
P1OUT &= ~BIT3; //把R/W拉低
P1OUT |= BIT4; //把E拉高
P4OUT = wdata; //输出数据
P1OUT &= ~BIT4; //把E拉低
}
/************************************************************
* Fuction: 从液晶读一个字节
* Parameters:None
* Return: rdata,从液晶中读取的字节
************************************************************/
unsigned char LCDReadByte()
{
unsigned char rdata;
P4DIR = 0x00; //把P2口作为液晶显示的8位数据口,定义为输入方式
P1OUT |= BIT3; //把R/W拉高
P1OUT |= BIT4; //把E拉高
rdata = P4IN; //把数据读入rdata
P1OUT &= ~BIT4; //把E拉低
return rdata;
}
/************************************************************
* Fuction: 向液晶写命令或地址
* Parameters:unsigned char addr,addr-命令或者地址
* Return: None
************************************************************/
void LCDWriteAddr(unsigned char addr)
{
unsigned char busy;
P1OUT &= ~BIT2; //把RS拉低,读写指令
busy = LCDReadByte(); //读忙指令
while(busy & 0x80) //判忙
{
busy = LCDReadByte();
}
LCDWriteByte(addr); //写入命令或地址
}
/************************************************************
* Fuction: 向液晶写数据
* Parameters:unsigned char addr,addr-命令或者地址
* Return: None
************************************************************/
void LCDWriteData(unsigned char sdata)//写入数据
{
unsigned char busy;
P1OUT &= ~BIT2; //把RS拉低,读写指令
busy = LCDReadByte(); //读忙指令
while(busy & 0x80) //判断液晶忙标志位
{
busy = LCDReadByte();
}
P1OUT |= BIT2; //把RS拉高,写数据
LCDWriteByte(sdata); //写入数据
}
/************************************************************
* Fuction: LCD显示程序,显示所需字符
* Parameters:None
* Return: None
************************************************************/
void LCDInit()
{
P1DIR = 0x1c; //把P1口的高三位作为显示的E(7),R/W(6),RS(5),定义为输出
LCDWriteAddr(0x30);
LCDWriteAddr(0x01); //向液晶写入清屏指令
LCDWriteAddr(0x02); //写入地址归位指令
LCDWriteAddr(0x0c); //写入整体显示和关闭光标显示指令
LCDWriteAddr(0x80); //设置显示地址为液晶第一行最左边位置(0x80)
}
/************************************************************
* Fuction: LCD显示程序,显示所需汉字
* Parameters:None
* Return: None
************************************************************/
void Disp_HZ(unsigned char addr,const unsigned char * pt,unsigned char num)
{
unsigned char i;
LCDWriteAddr(addr);
for(i = 0;i < (num*2);i++)
LCDWriteData(*(pt++));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -