/******************************************************************************
文 件 名: 主函数
文件描述: LCD1602的显示驱动函数集和主函数
创 建 人: 05级信本(一)班 易龙明
创建日期: 2008年11月2日
*******************************************************************************/
#include<LPC21xx.h>
#define int8 signed char /*有符号8 位整型变量 */
#define int16 signed short /*有符号16位整型变量 */
#define int32 signed int /*有符号32位整型变量 */
#define uint8 unsigned char /*无符号8 位整型变量 */
#define uint16 unsigned short /*无符号16位整型变量 */
#define uint32 unsigned int /*无符号32位整型变量 */
#define fp32 float /*单精度浮点数(32位长度)*/
#define fp64 double /*双精度浮点数(64位长度)*/
#define rs 0x100
#define rw 0x200
#define en 0x400
#define busy 0x80
#define MAXX 16
uint8 str0[]={"I Love ARM -kid!"};
uint8 str1[]={"2008-11-2"};
/*=========================================
函 数 名:ChkBusy()
参 数:无参数
功能描述:检查总线是否忙
返 回 值:无返回值
作 者:Kid
=========================================*/
void ChkBusy(void)
{
IO0DIR=0x700; //P0口的P0.8,P0.9,P0.10为输出,0为输入,1为输出
do{
IO0CLR=rs;
IO0SET=rw;
IO0SET=en;
if(!(IO0PIN & busy))break;
IO0CLR=en;
}while(1);
IO0DIR=0x7ff;
}
/*=========================================
函 数 名:WC_Lcd()
参 数:无参数
功能描述:写指令函数
返 回 值:无返回值
作 者:Kid
=========================================*/
void WC_Lcd(uint8 dat)
{
ChkBusy();
IO0CLR=rs; //全部清零
IO0CLR=rw;
IO0CLR=0xff; //先清零
IO0SET=dat; //再送数
IO0SET=en;
IO0CLR=en;
}
/*=========================================
函 数 名:WD_Lcd()
参 数:无参数
功能描述:写数据函数
返 回 值:无返回值
作 者:Kid
=========================================*/
void WD_Lcd(uint8 dat)
{
ChkBusy();
IO0SET=rs;
IO0CLR=rw;
IO0CLR=0xff; //先清零
IO0SET=dat; //再送数
IO0SET=en;
IO0CLR=en;
}
/*=========================================
函 数 名:lcd_init()
参 数:无参数
功能描述:lcd初始化函数
返 回 值:无返回值
作 者:Kid
=========================================*/
void lcd_init(void)
{
WC_Lcd(0x01); //显示模式设置,开始要求每次检测忙信号
WC_Lcd(0x38); //开启显示
WC_Lcd(0x0f); //显示清屏
WC_Lcd(0x06); //显示光标移动设置
}
/*=========================================
函 数 名:DispChar()
参 数:无参数
功能描述:在指定位置显示一个字符
返 回 值:无返回值
作 者:Kid
=========================================
void DispChar(uint8 X, uint8 Y, uint8 DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
X |= 0x80; //算出指令码
WC_Lcd(X); //这里不检测忙信号,发送地址码
WD_Lcd(DData);
}
=========================================
函 数 名:strlen()
参 数:无参数
功能描述:计算字符串长度
返 回 值:无返回值
作 者:Kid
=========================================
int strlen(uint8 s[])
{
int i=0;
while(s[i]!='\0')
i++;
return i;
}
=========================================
函 数 名:DispString()
参 数:无参数
功能描述:在指定位置显示一串字符
返 回 值:无返回值
作 者:Kid
=========================================
void DispString(uint8 X, uint8 Y, uint8 *DData)
{
uint8 dat;
dat= 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while(DData[dat]!='\0') //若到达字串尾则退出
{
if (X <= 0xF) //X坐标应小于0xF
{
DispChar(X, Y, DData[dat]); //显示单个字符
dat++;
X++;
}
}
} */
/*=========================================
函 数 名:main()
参 数:无参数
功能描述:显示文本
返 回 值:无返回值
作 者:Kid
=========================================*/
int main(void)
{
lcd_init();
IO0DIR=0x7ff; //设置为输出
IO0CLR=0x7ff;
WC_Lcd(0x80);
WD_Lcd(0x33);
while(1);
}
LCD.rar_LCD_LCD 源码_LPC2124
版权申诉
27 浏览量
2022-09-21
04:53:10
上传
评论
收藏 91KB RAR 举报
朱moyimi
- 粉丝: 65
- 资源: 1万+
最新资源
- plantuml======资源
- 基于java开发的密码解锁APP,包含手势密码解锁+指纹密码解锁+源码+项目界面展示(毕业设计&课程设计&项目开发)
- 基于单片机的智能窗帘设计
- 基于STM32F103C8T6+LCD1602+MCP6S28的8通道模拟可编程增益放大器Proteus仿真
- 5G RAN NR TDD单用户峰值吞吐率计算过程.pptx
- 基于Objective-C开发的手势密码解锁和面容解锁(代码简洁高效通俗易懂)+源码+开发文档+源码解析(毕业设计&课程设计)
- LangChain学习之 Question And Answer的操作附带数据文件
- linux常用命令大全.zip
- CATIA入门操作案例-正八边异形带孔凸台绘制,等距点绘制正多边形,凸台绘制
- 大型代码语言模型的项目级提示生成pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈