学习笔记 从零开始学单片机(7) 液晶接口

本文介绍了一种常见的1602液晶显示屏的驱动方法,包括其基本配置、指令码解析及其初始化流程。通过实例代码展示了如何在单片机上进行简单的文字输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这里我买的板子上带有一个SMC1602A LCM。使用也很简单很方便,但是还是要看它的使用说明书才行。

先看看引脚说明,在开发板上,D0-D7接到P0口上,RS接到P3.5,使能信号E接到P3.6上,读写端RW接地(通常不需要读),没有结背光电源。

1

 

 

 

 

 

2

 

RAM要比实际显示的多很多(16字×2行),将来做平移就比较方便了。

 

 

 

时序图还是要看的。

1602的指令码(用于设置系统属性的)

显示模式设定:

    38H(16×2显示,5×7点阵,8位数据接口)

显示开关及光标设置:

    08H+x(x=4:开显示; x=2:显示光标; x=1:光标闪烁)

    04H+x(x=2:读写一个字符后地址指针加1,光标加1; x=1:当写一个字符,整屏左移)

数据指针设置:

    80H+地址吗(0H-27H,40H-67H)

其他:

    01H:显示清屏(数据指针清零,显示清零)

    02H:显示回车(数据指针清零,

 

 1602初始化过程

延时15ms

写指令38H(不检测忙信号)

延时5ms

写指令38H(不检测忙信号)

延时5ms 

写指令38H(不检测忙信号)

(以后,每次写指令,读写操作都需要检测忙信号)

写指令38H:显示模式设置

写指令08H:显示关闭

写指令01H:显示清屏

写指令06H:显示光标移动设置

写指令0CH:显示开及光标设置

 

 #include <reg52.h>


#define  LCD_Data P0
sbit LCD_RS = P3^5;
sbit LCD_E  = P3^4;

void delay(unsigned int ms);
void WriteCommand(unsigned char com);
void WriteData(unsigned char chr);

void ini_LCD();

void main(void)
{
 ini_LCD();
 WriteData('A');
 WriteData('B');
 WriteData('C');
 WriteData('D');
 WriteData('E');
 while(1)
 {
 }
}

void delay(unsigned int ms)
{
 unsigned int Temp;
 while(ms--){Temp=82;while(Temp--);}
}
void ini_LCD()
{
 delay(15);
    WriteCommand(0x38);
 delay(5);
 WriteCommand(0x38);
 delay(5);
 WriteCommand(0x38);
 delay(5);

 WriteCommand(0x38);
 WriteCommand(0x0f);
 WriteCommand(0x06);
 WriteCommand(0x01);
  WriteCommand(0x80);
}
void WriteCommand(unsigned char com)
{
 LCD_RS = 0;
 LCD_Data = com;
 delay(1);
 LCD_E = 1;
 delay(2);
 LCD_E = 0;
 LCD_RS = 1;
 
}
void WriteData(unsigned char chr)
{
 LCD_RS = 1;
 LCD_Data = chr;
 delay(1);
 LCD_E = 1;
 delay(2);
 LCD_E = 0;
 LCD_RS = 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值