就是这个时序图怎么看 单片机时序图 液晶显示

怎么由芯片的时序图写它的程序? - 单片机论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
怎么由芯片的时序图写它的程序?
10:10:57  
问个问题,拿过来一个芯片datasheet,怎么由它的时序图把程序写出来? 我看过一些芯片的时序图,懂是可以懂得,但再看程序,里面定义了很多函数,向I2C总线结构的程序,还有开启和关闭I2C,类似这种。。。能否只从时序图直接写出它的程序? 路过的朋友可以探讨下并留下你的宝贵建议,谢谢。
10:35:28  
根据时序图上的时间先后由左至右,依次编写程序即可。注意:使能端要先开启。
11:14:47  
看时序图了解通信协议。时间掌握多调试。一般的芯片驱动网上都有,可以多参考。
11:17:16  
根据时序图上的时间先后由左至右,依次编写程序即可。注意:使能端要先开启。 ...
你说的使能端 是类似Cs这种信号么?
11:18:52  
看时序图了解通信协议。时间掌握多调试。一般的芯片驱动网上都有,可以多参考。 ...
我在写一个ad模块的程序 型号:ads7822&&这个你可以一起看下么?
助理工程师
11:56:57  
就按照时序图画的写程序,看几个例程就明白了
16:35:25  
{:1:}{:1:}{:1:}{:1:}
11:17:31  
12:07:40  
对看看一些例程,对着时序图,实际上就那样的
09:35:27  
肯定要封装成函数,因为数据传输都是靠相同的时序,你不能每次传输数据都重写一遍时序吧
助理工程师
16:03:29  
多注意时延,很多程序由于延时不够而不能用
等待验证会员
23:11:53  
和芯片的数据交互肯定要有通信接口,常见的简单接口有并口,SPI,UART,IIC。。。。。。当然还有一些其他厂家自定义的接口,这些接口都可以通过单片机IO来模拟,说白了就是参考时序图,通过程序来拉IO电平,这里面就是时序图上信号变化的先后及保持时间的要求。。。
10:56:54  
有时序图当然就可以直观地参考时序图&&更加方便易懂,没有时序IC的话我这里一般直接看各引脚功能表
23:31:15  
有时序图当然就可以直观地参考时序图&&更加方便易懂,没有时序IC的话我这里一般直接看各引脚功能表 ...
引脚功能表也有这功能?可以写程序?
23:32:18  
我这个帖子发的时间比较久了,但是有很多朋友跟帖回复,非常感谢你们的指点!谢谢!
等待验证会员
18:52:02  
我觉得最麻烦的地方应该是程序开始的部分,以及MCU初始化时的状态
11:47:03  
我也想知道这个问题
10:34:22  
这个问题很有实际意义
10:48:14  
也在研究这个问题!!
13:49:46  
我也在研究这个问题,很有意思。
Powered by21ic官方微信-->
后使用快捷导航没有帐号?
查看: 256|回复: 5
如何看懂时序图?
&&已结帖(0)
主题帖子积分
高级技术员, 积分 874, 距离下一级还需 126 积分
高级技术员, 积分 874, 距离下一级还需 126 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 874, 距离下一级还需 126 积分
高级技术员, 积分 874, 距离下一级还需 126 积分
操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握。介于中国目前的芯片设计能力有限,所以大部分的器件都是外国几个IC巨头比如TI、AT、MAXIM这些公司生产的,器件资料自然也是英文的多,所以,英文的基础要在阅读这些数据手册时得到提高哦。即便有中文翻译版本,还是建议看英文原版,看不懂时不妨再参考中文版,这样比较利于提高。我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能数据表:我们只需要关注以下几个管脚:3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而此脚为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。笔者认为,此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。现在来看LCD1602的操作时序:在此,我们可以先不读出它的数据的状态或者数据本身。所以只需要看两个写时序:① 当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。② 当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图:大家要慢慢学会看时序图,要知道操作一个器件的精华便蕴藏在其中,看懂看准了时序,你操控这个芯片就是非常容易的事了。1602的时序是我见过的一个最简单的时序:1、注意时间轴,如果没有标明(其实大部分也都是不标明的),那么从左往右的方向为时间正向轴,即时间在增长。2、上图框出并注明了看懂此图的一些常识:(1).时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。(2).有线交叉状的部分,表示电平在变化,如上所标注。(3).应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。(4).上图下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。也许你还注意到了上面有许多关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长,日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表:大家要懂得估计主控芯片的指令时间,可以在官方数据手册上查到MCU的一些级别参数。比如我们现在用AVR M16做为主控芯片,外部12MHz晶振,指令周期就是一个时钟周期为(2/12MHz)s,所以至少确定了它执行一条指令的时间是us级别的。我们看到,以上给的时间参数全部是ns级别的,所以即便我们在程序里不加延时程序,也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢?很简单,我们在时序图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。大家看是不是这个意思?现在我来解读我对这个时序图的理解:当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。
(1/12MHz)s是振荡周期,而不是时钟周期,因为时钟周期(状态周期)等于两个振荡周期,换句话说就是对振动频率进行“二分频”的振荡信号,所以(2/12MHz)s才是晶振为12MHz时的时钟周期。
主题帖子积分
高级技术员, 积分 874, 距离下一级还需 126 积分
高级技术员, 积分 874, 距离下一级还需 126 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 874, 距离下一级还需 126 积分
高级技术员, 积分 874, 距离下一级还需 126 积分
一直不是很明白时序图的读写操作,上网搜了很久都找不到一份很好的资料,我故自己知道一点后就来记录一些,经常更新自己对时序图的理解吧,上网搜的时候很多人说时序图比较简单不知道是不是这样的。
因为csdn上传图片比较麻烦就不上传了,总结一下吧。
1. 时序图都是共用一个时钟信号,注意时钟信号在上下图中的对应。
2. 时序图中有叉或者上升下降的如果是数据线的话表示数据有变化。菱形封闭的一段表示有效数据。
3. 数据需要一段时间稳定,一般在数据变化后,时钟的上升沿或者下降沿读入数据或者写入数据。
主题帖子积分
技术达人, 积分 9412, 距离下一级还需 588 积分
技术达人, 积分 9412, 距离下一级还需 588 积分
主题帖子积分
专家等级:结帖率:75%打赏:0.00受赏:2.00
主题帖子积分
技术达人, 积分 9412, 距离下一级还需 588 积分
技术达人, 积分 9412, 距离下一级还需 588 积分
一般模拟操作的比较好做,那个硬件实现的就比较麻烦,要记好多个寄存器的操作方法
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
主题帖子积分
高级技术员, 积分 669, 距离下一级还需 331 积分
高级技术员, 积分 669, 距离下一级还需 331 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 669, 距离下一级还需 331 积分
高级技术员, 积分 669, 距离下一级还需 331 积分
这种1602的LCD一般是用什么样的方法驱动的啊?
主题帖子积分
高级技术员, 积分 874, 距离下一级还需 126 积分
高级技术员, 积分 874, 距离下一级还需 126 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
高级技术员, 积分 874, 距离下一级还需 126 积分
高级技术员, 积分 874, 距离下一级还需 126 积分
这种1602的LCD一般是用什么样的方法驱动的啊?
结合LCD1602的时序图啊,根据时序图写代码,有8线数据制,也有4线数据制,你看你适合哪个了。
技术新星奖章
人才类勋章
湍急之河流
发帖类勋章
社区建设奖章
等级类勋章
时间类勋章单片机如何根据LCD时序图来写底层驱动
> 单片机如何根据LCD时序图来写底层驱动
单片机如何根据LCD时序图来写底层驱动
一般来说,LCD 模块的控制都是通过 MCU 对 LCD 模块的内部寄存器、显存进行操作来最终完成的;在此我们设计了三个基本的时序控制程序,分别是:写寄存器函数(LCD_RegWrite) 数据写函数(LCD_DataWrite) 数据读函数(LCD_DataRead)
这三个函数需要严格的按照 LCD 所要求的时序来编写,下面可以看看 MzL02 模块时序图:图 3.2 MzL02 模块的 6800 时序示意注意:上图是该模块的控制 IC 资料中的原版时序图,其实有些示意不是太稳妥(少标出了RW 线信号的要求),或者说是不太严谨,不过这些不作讨论,请看分析即可;而 EP 的有效触发沿在图中很有可能示意有误,实测为上升沿。图中 CS1B(CS2)的信号即为片选 CS,RS 即为数据/寄存器的选择端口 A0 信号,E 为 EP;当作写入寄存器数据操作时,首先要将 A0 置低,以通知 LCD 模块即将进行的是对寄存器的操作;而 RW 线需要置低,以示即将要进行的是写入的操作;然后片选 CS 信号置低,装载数据至总线,然后在 EP 线上产生一个上升沿以触发 LCD 模块将总线上的数据最终载入;在前面的操作完成后一般都会将各个信号线的状态恢复。而数据(显存)写入、数据读出的操作时序也比较类似,这里就不多作介绍,直接参考例程即可。//=======================================================// 函数: void LCD_RegWrite(unsigned char Command)// 描述: 写一个字节的数据至 LCD 中的控制寄存器当中 // 参数: Command 写入的数据,低八位有效(byte) // 返回: 无 //======================================================void LCD_RegWrite(unsigned char Command) { LCD_A0 = 0; //A0 置低,示意进行寄存器操作 LCD_RW = 0; //RW 置低,示意进行写入操作 LCD_EP = 0; //EP 先置低,以便后面产生跳变沿 LCD_CS = 0; //片选 CS 置低DAT_PORT = C //装载数据置总线 LCD_EP = 1; //产生有效的跳变沿 LCD_CS = 1; //片选置高 }数据写入以及读出的函数源码如下: //================================================= // 函数: void LCD_DataWrite(unsigned char Dat) // 描述: 写一个字节的显示数据至 LCD 中的显示缓冲 RAM 当中 // 参数: Data 写入的数据 // 返回: 无//====================================================void LCD_DataWrite(unsigned char Dat) { LCD_A0 = 1; //A0 置高,示意进行显存数据操作 LCD_RW = 0; //RW 置低,示意进行写入操作 LCD_EP = 0; //EP 先置低,以便后面产生跳变沿 LCD_CS = 0; //片选 CS 置低 DAT_PORT = D //装载数据置总线 LCD_EP = 1; //产生有效的跳变沿 LCD_CS = 1; //片选置高 }//=========================================== // 函数: unsigned char LCD_DataRead(void) // 描述: 从 LCD 中的显示缓冲 RAM 当中读一个字节的显示数据 // 参数: 无 // 返回: 读出的数据, //==============================unsigned char LCD_DataRead(void) { unsigned char Read_D DAT_PORT = 0 //51 的端口想要输入前,要先给端口全置 1 LCD_A0 = 1; //A0 置高,示意进行显存数据操作 LCD_RW = 1; //RW 置高,示意进行读出操作 LCD_EP = 0; //EP 先置低,以便后面产生跳变沿 LCD_CS = 0; //片选 CS 置低 LCD_EP = 1; //产生有效的跳变沿 LCD_EP = 0; Read_Data = DAT_PORT; //读出数据 LCD_CS = 1; //片选置高return Read_D //返回读到的数据 } 以上便是要介绍的最基本的时序操作程序,它们几乎是整个 LCD 驱动程序当中与底层硬件打交道的代码了,这样的话,当要改变驱动 LCD 的 MCU 端口时或者换用别的 MCU 来驱动 LCD 时,基本上只需要在这些代码里作一下修改即可。关于读 LCD 状态 而在一般的 LCD 模块当中,还有一个功能同样重要,就是读 LCD 状态;可以通过此操作获取当前 LCD 模块的忙状态以及一些相关的状态信息,当 LCD 模块正处于忙状态时,则不宜对它进行数据的写入或读出操作(有很多较老式的 LCD 控制器规定在忙的状态下时不允许写入或读出数据)。 所以在很多 LCD 的驱动程序当中,会在寄存器写入、数据写入/读出的操作前加入读取 LCD状态并判别忙状态的代码;这点可以参考网上流传的很多 LCD 驱动程序。不过,对于 MzL02这样的较新出的 LCD 控制器来说,已经对忙状态不是很在乎了,或者说影响已经很小甚至没有了;所以我们在前面的代码当中并没有加入这样的代码。至于有没有必要加读状态判忙的代码,要视具体的 LCD 控制器而定。关于时序的时间要求 时序的一个非常重要的数据就是类似上图中标出的tAS88之类的时间长短要求,只是上图中并没有标出它们的具体最大最小值要求而已;但在编写这类的时序接口程序时它们还是非常重要的,当然还要看 MCU 的端口操作速度以及 MCU 的指令执行速度。打个比方,有的时序里就会有要求某些信号的电平保持最小宽度,而如果 MCU 的指令执行速度以及端口操作速度非常快的话,就需要酌情在连续操作端口的代码之间加入适量的延时(通用用空操作来代替,具体多少个多少时长视具体的 MCU 以及 LCD 控制器而定)以保证该信号的脉冲宽度满足要求。 在本文的所列出的源代码当中,并没有如前所述的为时序的要求而插入空操作或延时处理,因为 MCU 的速度并不是非常快,况且现在的 LCD 控制器的总线速度都挺快的了,没有必要加入而已。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一还没有帐号? 赶紧
用户版块帖子
哪位大仙给讲一下12864液晶的时序图如何理解
UID:1266535
在线时间709小时
M币122专家1
我在看人家编写12864液晶电子钟程序时结合12864液晶的时序图编写,但是对于时序图感觉有点不好懂。麻烦哪位大仙给讲一下12864液晶的时序图。顺便能以实际的电子钟C语言再讲一讲程序的每一步的意思,和每编一步的必要性。谢谢。
UID:1266535
在线时间709小时
M币122专家1
我在看人家编写12864液晶电子钟程序时结合12864液晶的时序图编写,但是对于时序图感觉有点不好懂。麻烦哪位大仙给讲一下12864液晶的时序图。顺便能以实际的电子钟C语言再讲一讲程序的每一步的意思,和每编一步的必要性。谢谢。
UID:238997
在线时间119小时
M币324专家9
打字讲解这个问题太累~~~~~~~~~~~
UID:1496814
在线时间618小时
M币93专家15
其实没必要把时间花在理解他的时序图上,底层函数知道怎么调用就可以了
UID:1731462
在线时间245小时
M币945专家4
给你一个函数,要的话知己恩调用留下邮箱
UID:1266535
在线时间709小时
M币122专家1
回 我是鑫鑫 的帖子
:给你一个函数,要的话知己恩调用留下邮箱 ( 10:23) 谢谢:我是刚学完全是的新手,能得到指导非常高兴再一次谢谢,欢迎指导。
UID:559247
在线时间525小时
M币1001专家5
1.首先找到手册2.找到数据线,时钟线。如果复合使用,再找到区分时钟/数据的控制端。3.看时钟何在什么状态下数据才是有效的,是高电平、低电平、上升沿还是下降沿。然后就是按照这个顺序继续重复相同操作。
访问内容超出本站范围,不能确定是否安全
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:11-01 22:33,
Gzip enabled&

我要回帖

更多关于 芯片时序图怎么看 的文章

 

随机推荐