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

📄 fm12864.c

📁 12864显示
💻 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 + -