📄 main.c
字号:
/******************************************************************************
文 件 名: 主函数
文件描述: 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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -