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

📄 main.c

📁 LPC2124的LCD1602的编程源码
💻 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 + -