📄 l5-6.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 + -