微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机驱动LCD12864液晶显示闪动字体程序

PIC单片机驱动LCD12864液晶显示闪动字体程序

时间:12-02 来源:互联网 点击:

/****************************************************************************
* 名 称:clear_p()
* 功 能:清屏
* 入口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void clear_p()
{
send_i(0x1); //清除所有显示
send_i(0x34); //扩展指令操作
send_i(0x30); //基本指令操作
}

/****************************************************************************
* 名 称:send_d()
* 功 能:写一个字节数据到LCD
* 入口参数:unsigned char x 字符
* 出口参数:
* 说 明:
****************************************************************************/
void send_d(unsigned char x)
{
chk_busy(); //检测LCD是否工作繁忙
rs = 1; //设置该字节数据是显示数据
rw = 0; //设置该次操作为写
PORTD = x; //送数据口PORTD
e = 1; //使能
nop();
nop();
nop();
e = 0; //禁止
}

/****************************************************************************
* 名 称:send_i()
* 功 能:写一个字节命令到LCD
* 入口参数:unsigned char x 字符
* 出口参数:
* 说 明:
****************************************************************************/
void send_i(unsigned char x)
{
chk_busy(); //检测LCD是否工作繁忙
rs = 0; //设置该字节数据为控制命令
rw = 0; //设置此次操作为写
PORTD = x; //送数据口PORTD
e = 1; //使能
nop();
nop();
nop();
e = 0; //禁止
}

/****************************************************************************
* 名 称:chk_busy()
* 功 能:检测LCD是否工作繁忙
* 入口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void chk_busy()
{
busy = 1; //先置位繁忙标志位
TRISD = 0XFF; //更改通信为输入
rs = 0; //设置该字节数据为命令代码
rw = 1; //设置此次操作为读
while (busy)
{
nop();nop();nop();
e = 1; //使能
nop();nop();nop();
if (!RD7) busy = 0; //检测LCD是否工作繁忙
nop();nop();nop();
e = 0; //禁止
}
e = 0; //禁止
TRISD = 0X00; //恢复通信为输出
}

/****************************************************************************
* 名 称:delay()
* 功 能:延时
* 入口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void delay()
{
int i;
for (i = 0;i < 5000;i++);
}

/****************************************************************************
* 名 称:delayl()
* 功 能:延时
* 入口参数:
* 出口参数:
* 说 明:
****************************************************************************/
void delay1()
{
int i;
for (i = 0;i < 10;i++)
{
delay(); //调用延时函数
}
}

/****************************************************************************
* 名 称: writelcd()
* 功 能: 在LCD上显示字符串
* 入口参数:const unsigned char *pt 字符串的首地址
* 出口参数:
* 说 明:
****************************************************************************/
void writelcd(const unsigned char *pt)
{
while(*pt) //检测是否达到了字符串最后
send_d(*pt++); //发送数据给lcd
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top