完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 alittleharry 于 2014-3-16 20:09 编辑
下面是1602液晶初始化代码 ,4位模式数据线模式;第2段到第5段是什么意思?LCD指令码没有0X0002和 0X0003 //LCD_DATA 为数据总线 //LCD_CMD_W_timing() 为写指令操作时序 void OpenLCD(void) { Temp_LCD_DATA = LCD_DATA ; // Save the Port Value of LCD_DATA LCD_E = 0 ; LCD_DATA &= 0xfff0; // LCD DB[4:7] & RS & R/W --> Low DIR_LCD_DATA &= 0xfff0; // LCD DB[4:7} & RS & R/W are output function DIR_LCD_E = 0; // Set E pin as output DIR_LCD_RS = 0 ; DIR_LCD_RW = 0 ; //第2段 LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0003 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0003 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0003 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; //第5段 LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0002 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; WriteCmdLCD(DISP_2Line_4Bit) ; LCD_S_Delay() ; WriteCmdLCD(DISP_ON) ; LCD_S_Delay() ; WriteCmdLCD(ENTRY_INC) ; LCD_S_Delay() ; WriteCmdLCD(CLR_DISP) ; LCD_L_Delay() ; LCD_DATA = Temp_LCD_DATA ; } |
|
相关推荐
9个回答
|
|
没弄明白你说的问题是啥
|
|
|
|
LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0003 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0003 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0003 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; LCD_DATA &= 0xfff0 ; LCD_DATA |= 0x0002 ; LCD_CMD_W_Timing() ; LCD_L_Delay() ; 就是问上面这些是什么意思,LCD指令码中没有0X0003和0x0002 |
|
|
|
自顶一下{:1:}
|
|
|
|
前3组设置数据长度为8位,行数和字型点阵不明,因为低4位数据线未连接
第四组将数据长度设置成4位,紧随其后的一组将行数设置成2行,字型设置成5*7点阵 这个不是3和2编码的指令,这个是0X3?和0X2?,因为数据线在4位操作时是和LCD1602的DB7-DB4连接,所以出现在 位3-位0 的指令要作为lcd1602的 位7-位4 来看 |
|
|
|
多看一下器件资料,这个问题就明白了
|
|
|
|
本帖最后由 alittleharry 于 2014-4-1 01:46 编辑
WriteCmdLCD(DISP_2Line_4Bit) ;这个函数是设置工作方式的,DISP_2Line_4Bit 就是指令码0x28,这个函数把指令码先送高4位再送低4位. 那么在没有设置工作方式之前默认是 8位数据线吧?那么从 第2段到第5段 先送3次指令码0x03 又送一次指令码0x02是什么东西? 假如开始就是4位数据线工作方式,第1段设置后,从第2段到第5段 实际上就是送了两个指令码,因为是4位线所以每个指令码先送高4位再送低4位,所以两个指令码是 0x33 和0x32,但实际上没有这些指令码,那么 0X33 , 0X32 是什么东西? |
|
|
|
你还是没有看资料!,仔细看资料你就不会这样问了
LCD1602 按4位数据宽度连接时,数据线只连接DB7-DB4; 根据你提供的代码判断,主CPU是由db3-db0连接LCD1602的DB7-DB4; LCD1602复位时是8位数据总线宽度方式工作,所以,设置数据总线宽度为4bit前,你发送的数据对于LCD1602来说低4位bit3-bit0的数据是不定的; 你标记的‘第2段’之前都是对CPU设置操作; 第2段到第4段都是发送指令0x3?(设置成8bit); 第5段操作是发送指令0x2?(设置成4bit,但该指令还是按8bit总线时序操作); 后面才是标准的C函数调用; |
|
|
|
所以说为啥第2段到4段要重复3次发送指令0x3 然后第5段才发送指令0X2?
|
|
|
|
WriteLcd_Com(0x33);//原来1602初始化成4位数据线之前必需先初始化成8位(此时命令发送方式是8位格式,但数据线只需接4位)
delay(10); WriteLcd_Com(0x32);//然后再改到4位线宽,这样初始化才稳定 delay(10); WriteLcd_Com(0x28);//四线模式设置 delay(10); WriteLcd_Com(0x0c);//显示开--对应开关显示控制指令 delay(10); WriteLcd_Com(0x06); delay(10); WriteLcd_Com(0x01); |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
952 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
469 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之开发板测试
400 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-网络编程示例之网络socket程序编程
933 浏览 0 评论
飞凌嵌入式-ELFBOARD-RGB LCD屏接口的PCB设计要点
920 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11729 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-17 20:20 , Processed in 0.637807 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号