📄 lcd.c
字号:
#include"lcd.h"
/*********************端口设置*********************************/
#define LcdData PORTB //PTB数据
#define LcdDataR DDRB
#define LcdRS PORTA_BIT0
#define LcdRW PORTA_BIT1 //串行方式作I/O口,并行方式作RW
#define LcdE PORTA_BIT2
//#define LcdPSB PTD_PTD3
//#define LcdRST PTD_PTD4
/**************************************************************/
/**************************************************************/
/*********************基本驱动程序*****************************/
/**************************************************************/
////////////////////////////////////////////////////////////////////////////////
// 名称: delay
// 版本: 1.0 COPYRIGHT (c) AETC 2009 , All Rights Reserved
// 功能: 延迟函数
// 调用:
// 参数: DelayTime---for循环的次数
//
// 返回: void
// 说明:
// 修改历史:
// 版本 作者 日期 描述
// ---- --------- ---------- ---------------------------
// 1.0 黄 2009.2.11 创建程序
//
////////////////////////////////////////////////////////////////////////////////
void delay(uint8 DelayTime)
{
uint8 TempDelayTime;
for(TempDelayTime=0;TempDelayTime<DelayTime;TempDelayTime++);
}
////////////////////////////////////////////////////////////////////////////////
// 名称: BusyCheck
// 版本: 1.0 COPYRIGHT (c) AETC 2009 , All Rights Reserved
// 功能: 检测模块是否处于忙碌状态,即上一条指令有无执行完毕
// 调用:
// 参数: DelayTime---for循环的次数
//
// 返回: void
// 说明:
// 修改历史:
// 版本 作者 日期 描述
// ---- --------- ---------- ---------------------------
// 1.0 黄 2009.2.11 创建程序
//
////////////////////////////////////////////////////////////////////////////////
void BusyCheck(void)//检测模块是否处于忙碌状态,即上一条指令有无执行完毕
{
uint8 key;
LcdDataR=0x00;//单片机读液晶显示模块
for(;;)
{
LcdRS=0;
LcdRW=1;
LcdE=1;//Enable
delay(3);//延迟
key=LcdData;
delay(3);//延迟
LcdE=0;
if((key&0x80)==0x00)//BF位是否为零
{
break;
}
}
}
////////////////////////////////////////////////////////////////////////////////
// 名称: wcmd
// 版本: 1.0 COPYRIGHT (c) AETC 2009 , All Rights Reserved
// 功能: 往Lcd写命令
// 调用:
// 参数: uint8 com---待写的命令
//
// 返回: void
// 说明:
// 修改历史:
// 版本 作者 日期 描述
// ---- --------- ---------- ---------------------------
// 1.0 黄 2009.2.11 创建程序
//
////////////////////////////////////////////////////////////////////////////////
void wcmd(uint8 com)//并口写命令
{
BusyCheck();//忙检测
LcdRS=0;//命令
LcdRW=0;//写
LcdE=1;//Enable
LcdDataR=0xff;//单片机引脚为输出
delay(3);//延迟
LcdData=com;//送出命令
delay(3);//延迟
LcdE=0;
}
////////////////////////////////////////////////////////////////////////////////
// 名称: wdatab
// 版本: 1.0 COPYRIGHT (c) AETC 2009 , All Rights Reserved
// 功能: 往Lcd写八比特(byte)数据
// 调用:
// 参数: uint8 com---待写的命令,byte型
//
// 返回: void
// 说明:
// 修改历史:
// 版本 作者 日期 描述
// ---- --------- ---------- ---------------------------
// 1.0 黄 2009.2.11 创建程序
//
////////////////////////////////////////////////////////////////////////////////
void wdatab(uint8 data)//并口写数据,8位(byte)数
{
BusyCheck();
LcdRS=1;//数据
LcdRW=0;//写
LcdE=1;//Enable
LcdDataR=0xff;//单片机引脚为输出
delay(3);//延迟
LcdData=data;//送出数据
delay(3);//延迟
LcdE=0;
}
////////////////////////////////////////////////////////////////////////////////
// 名称: wdataw
// 版本: 1.0 COPYRIGHT (c) AETC 2009 , All Rights Reserved
// 功能: 往Lcd写十六比特(word)数据
// 调用:
// 参数: uint16 data---待写的命令,word型
//
// 返回: void
// 说明:
// 修改历史:
// 版本 作者 日期 描述
// ---- --------- ---------- ---------------------------
// 1.0 黄 2009.2.11 创建程序
//
////////////////////////////////////////////////////////////////////////////////
void wdataw(uint16 data)//并口写数据,16位(word)数
{
wdatab((uint8)(data>>8));
wdatab((uint8)(data));
}
////////////////////////////////////////////////////////////////////////////////
// 名称: LcdInit
// 版本: 1.0 COPYRIGHT (c) AETC 2009 , All Rights Reserved
// 功能: Lcd初始化
// 调用:
// 参数: void
//
// 返回: void
// 说明:
// 修改历史:
// 版本 作者 日期 描述
// ---- --------- ---------- ---------------------------
// 1.0 黄 2009.2.11 创建程序
//
////////////////////////////////////////////////////////////////////////////////
void LcdInit(void)
{
// LcdPSB=1;//用并行传送数据或信号
// LcdRST=1;//让RST对应的引脚为高电平
wcmd(0x30);//基本指令
wcmd(0x0c);//0000,1100 整体显示ON,游标显示OFF,游标位置OFF
wcmd(0x06);//0000,0110 右移位
wcmd(0x01);//0000,0001 清除DDRAM
wcmd(0x02);//0000,0010 DDRAM地址归位
wcmd(0x80);//1000,0000 设定DDRAM到地址计数器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -