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

📄 lcd.c

📁 这是一个关于ARM7的实时时钟的C源代码
💻 C
字号:
/****************************************************************************
* File: LCD.c 
* 功能: LCD输出 
****************************************************************************/
#include  "config.h"

#define rs (1<<10)	// 0000 0100 0000 0000 = 0x0400 
#define rw (1<<11)	// 0000 1000 0000 0000 = 0x0800 
#define en (1<<12)	// 0001 0000 0000 0000 = 0x1000 
#define busy (1<<9)	// 0000 0010 0000 0000 = 0x0200 

uint32 IO0DIR_bak; 
uint32 IO0SET_bak;
uint32 IO0CLR_bak;

/****************************************************************************
* 名称:ChkBusy() 
* 功能:检查总线是否忙 
****************************************************************************/
void ChkBusy()
{
	IO0DIR_bak=IO0DIR;
	IO0DIR=0x1c00;	// 0001 1100 0000 0000 P10~P12 即 en, rw, rs 设置为输出, 其他为输入。 
	while(1)
	{
		IO0CLR=rs; 	// 置 rs 为 0 
		IO0SET=rw;	// 置 rw 为 1 
		IO0SET=en;	// 置 en 为 1, 禁用 LED 
		if(!(IO0PIN & busy))break; // 测试最低位数据,如果为低,总线空闲,跳出循环。 
		IO0CLR=en;	// 置 en 为 0,使能 LCD 
	}
	IO0DIR=0x1ffc;	// 将 P0.2~P0.12 设置为输出  0001  1111 1111 1100 
	IO0DIR=IO0DIR_bak;
}

/****************************************************************************
* 名称:WrOp() 
* 功能:写操作数函数 
****************************************************************************/
void WrOp(uint8 dat)
{
	ChkBusy();
	IO0CLR=rs;		//全部清零 
	IO0CLR=rw;
	IO0CLR=0xff;	//先清零 
	IO0SET=dat;		//再送数	  
	IO0SET=en;
	IO0CLR=en;
}

/****************************************************************************
* 名称:WrDat() 
* 功能:写数据函数 
****************************************************************************/
void WrDat(uint8 dat)	
{
	ChkBusy();
	IO0SET=rs;
	IO0CLR=rw;
	IO0CLR=0xff;	//先清零 
	IO0SET=dat;		//再送数 
	IO0SET=en;
	IO0CLR=en;
}

/****************************************************************************
* 名称:lcd_init() 
* 功能:lcd初始化函数 
****************************************************************************/
void lcd_init(void)
{
	WrOp(0x38);			
	WrOp(0x06);			//光标加1 
	WrOp(0x0c);			//开显示 
}

/****************************************************************************
* 名称:DisText() 
* 功能:显示文本函数 
****************************************************************************/
void DisText(uint8 addr,uint8 *p)
{
	WrOp(addr);
	while(*p !='\0')WrDat(*(p++));
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -