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

📄 l5-6.c

📁 单片机C语言程序设计教程与实训源代码及图片 单片机C语言程序设计教程与实训源代码及图片
💻 C
字号:
/**********************************************************************
程序名称:L5-6.c
程序功能:用16×2点阵字符型LCD显示两行指定的字符串
程序作者:张三
创建时间:2008-3-28
**********************************************************************/
#include <reg51.h>
#define unchar unsigned char
#define unint  unsigned int

sbit	RS = P3^0;			// 定义LCD的控制信号线
sbit	RW = P3^1;
sbit	E  = P3^5;

unchar code L1[]= "ZhuHai ChengShi";	// 第1行15个字符
unchar code L2[]= " JiShu XueYuan" ;	// 第2行14个字符

void delayXms( unint x );		// 函数声明
void lcd_init( void );
void write_ir( void );
void write_dr( unchar *ch, unchar n );
/**********************************************************************
函数名称:main( void )
函数功能:主函数,在指定的位置显示指定的字符串
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void main( void )
{
	unchar *ptr, n;
	
	while( 1 ){
		lcd_init( );		// LCD初始化
		
		P1 = 0x80;		// 第1行起始地址:设定字符显示位置
		write_ir( );
		ptr = &L1; n=15;
		write_dr( ptr, n );

		P1 = 0xc0;		// 第2行起始地址:设定字符显示位置
		write_ir( );
		ptr = &L2; n=14;
		write_dr( ptr, n );

		P1 = 0xcf;		// 光标最后停留在LCD 的0xcf位置
		write_ir( );
	}
}
/**********************************************************************
函数名称:delayXms( unint x )
函数功能:延时x ,振荡器频率为12MHz
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void delayXms( unint x )
{
	unint y,z;
	for( ; x>0; x-- )
		for( y=4; y>0; y-- )
			for( z=250; z>0; z--);
}
/**********************************************************************
函数名称:lcd_init( void )
函数功能:LCD初始化
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void lcd_init( void )
{
	P1 = 0x01;	// 清屏指令
	write_ir( );	 

	P1 = 0x38;	// 功能设定指令:8位,2行,5×7点矩阵
	write_ir( );

	P1 = 0x0f;	// 开显示指令:显示屏ON,光标ON,闪烁ON
	write_ir( );

	P1 = 0x06;	// 设置字符/光标移动模式:光标右移,整屏显示不移动
	write_ir( );
}
/**********************************************************************
函数名称:write_ir( void )
函数功能:写指令到LCD指令寄存器
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void write_ir( void )
{
	RS = 0;				// 选择LCD指令寄存器
	RW = 0;				// 执行写入操作
	E = 0;				// 禁用LCD
	delayXms( 50 );
	E = 1;				// 启动LCD 
}
/**********************************************************************
函数名称:write_dr( unchar *ch, unchar n )
函数功能:写数据到LCD数据寄存器。指针ch指向数据的首地址,n为数据个数
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void write_dr( unchar *ch, unchar n )
{
	unchar i;
	for( i=0; i<n; i++ ){
		P1 = *(ch+i);		// 送字符数据
		RS = 1;			// 选择LCD数据寄存器
		RW = 0;			// 执行写入操作
		E = 0;			// 禁用LCD
		delayXms( 50 );
		E = 1;			// 启动LCD
	}
}

⌨️ 快捷键说明

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