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

📄 l5-7.c

📁 单片机C语言程序设计教程与实训源代码及图片 单片机C语言程序设计教程与实训源代码及图片
💻 C
字号:
/**********************************************************************
程序名称:L5-7.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^4;

unchar  ch, key;		// ch为显示数据,key为键值

void delayXms( unint x );	// 函数声明
void lcd_init( void );
void write_ir( void );
void write_dr1( unchar ch );
/**********************************************************************
函数名称:main( void )
函数功能:主函数,根据按键在指定的位置显示指定的字符
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void main( void )
{
	lcd_init( );				// LCD初始化
	while( 1 ){
		key = P3&0xe0;
		switch( key ){
			case 0xc0: ch = 'A';
				   P1 = 0x80;	// 在第1行起始地址显示A
				   write_ir( );
				   write_dr1( ch );
				   break;
			case 0xa0: ch = 'B';
				   P1 = 0x80;	// 在第1行起始地址显示B
				   write_ir( );
				   write_dr1( ch );
				   break;
			case 0x60: ch = 'C';
				   P1 = 0x80;	// 在第1行起始地址显示C
				   write_ir( );
				   write_dr1( ch );
				   break;
			default:   P1 = 0x81;	// 光标最后停留在LCD 的位置
				   write_ir( );
		}
	}
}
/**********************************************************************
函数名称:delayXms( unint x )
函数功能:延时xms,振荡器频率为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( 30 );
	E = 1;				// 启动LCD 
}
/**********************************************************************
函数名称:write_dr1( unchar x )
函数功能:将单个数据x写到LCD数据寄存器
函数作者:张三
创建时间:2008-3-28
**********************************************************************/
void write_dr1( unchar x )
{
	P1 = x;				// 送字符x
	RS = 1;				// 选择LCD数据寄存器
	RW = 0;				// 执行写入操作
	E = 0;				// 禁用LCD
	delayXms( 30 );
	E = 1;				// 启动LCD
}

⌨️ 快捷键说明

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