第四篇:从驱动 lcd1602显示字符例程学习---软件驱动硬件的开发流程

本文介绍了如何通过编程驱动LCD1602液晶屏显示字符,详细阐述了开发流程,包括硬件连接规划、指令编写和数据传输。通过设置寄存器、理解时序图以及编写通用的写指令和写数据函数,实现了显示功能。文中还讨论了读忙信号的处理,提供了一个完整的无读忙判断的简化程序,强调了适当延时的重要性。

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

第四篇 lcd1602

亚龙236实验台显示模块上的小长条液晶屏就是今天的主角:1602液晶。我们的任务是编程序驱动它来显示一些英文字母。1602这个名字来源于它可以每行显示16个字母,一共两行。
玩过乐高类的拼装玩具吗?厚厚的一叠说明书,按照说明一步一步拼。搞开发也一样,必须从第一个语句慢慢拼起来,这是急不得的事情。心平气和、头脑清醒是必须的。驱动1602也需要看看1602的说明书—亚龙资料里面有的,在datasheet文件夹里找RT1602.pdf。rt1602pdf文件—来自百度文库
最有用的是 第三页 引脚说明、第四页 读写时序、12页开始的指令解释。

pg3:

RS:寄存器选择输入端
RS=1:指向数据寄存器
RS=0:指向指令寄存器

RW:读写控制输入端
RW=0:写操作 RW=1:读操作

E:使能信号输入端
读操作时,高电平有效;
写操作时,下降沿有效;

pg4:

pdf自己看。关键点:
1、E信号频率:最小周期1000ns,意思就是每1us最多操作一次----lcd1602是个老牛车,反应慢的很,为了信号稳定,需要每次延时4us以上。
2、E信号脉宽:最小450ns。意思是 E信号的高电平最少保持0.4us,实际上可能需要1us或更长(数据线过长、没有屏蔽等都会影响传输)。
3、读忙不是必须,如果是竞赛等环境,可以用牺牲效率(延时到肯定不忙)的方法来避免读忙。这样可以少写几行程序。

编程过程:
1 、先定好硬件连接计划
#define  lcd_data  P0 
 sbit lcd_rs=P2^0;
 sbit lcd_rw =P2^1;
 sbit lcd_e =P2^2;

数据端口接P0,rs接P2.0,rw接P2.1,en接P2.2。
这几句可以看作是—硬件接口层。把硬件操作接口转换成四个符号,操作硬件就是读写这四个符号。

2、根据硬件手册写基本操作指令

比如:手册第12页第一个指令—清屏
在这里插入图片描述按照手册,我们应该把rs置0,rw置0,DB置00000001(16进制0x01),然后要把DB上的数据写入到寄存器,写入的方法在第4页
在这里插入图片描述时序图上明确了步骤:rs和rw置0,再把e置1,再送DB数据,再把e置0,在e下降沿这一瞬间锁存数据到寄存器。然后可以撤掉DB,撤掉rs、rw。
写成c语句:

	lcd_rs= 0;		//置0 rs
   	lcd_rw = 0;		//置0 rw
   	lcd_e = 1;		//置1 e
   	lcd_data = 0x01;	//送清屏命令到端口
   	lcd_e= 0;		//置0 e,产生e信号下降沿,写入指令到寄存器

看其它指令,大同小异,就是命令字节不一样,比如显示开关指令
在这里插入图片描述
只需要把0x01换成0x0c(00001000)就可以设置指令:开显示、关光标、关闪烁。
那就改一改,写成通用的写指令函数,如下:

void write_command(uchar com)
 {
    
   	lcd_rs= 0;
   	lcd_rw = 0;
	lcd_e=1;
   	lcd_data = com;
   	lcd_e= 0;
 }

这样就可以直接传指令码写指令了。
使用方法如下:

write_command(0x01); 		//清屏指令
3、写要显示的数据

方法同写指令,只是rs不一样

void write_data(uchar dat)
 {
   
	lcd_rs = 1;
	lcd_rw = 0;
	lcd_e=1;
	lcd_data = dat;
	lcd_e= 0;
 }

注意,这里面都没有加读忙程序,有时候会显示不完全,可以这样改一改:加延时

void write_data(uchar dat)
 {
   
	lcd_rs = 1;
	lcd_rw = 0;
	lcd_e=1;
	lcd_data = dat;
	lcd_e= 0;
	delayms(1);			//延时1ms,确保lcd不忙。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值