找回密码
 注册
关于网站域名变更的通知
查看: 40|回复: 0
打印 上一主题 下一主题

如何看懂单片机时序图

[复制链接]
  • TA的每日心情
    开心
    2023-6-1 15:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2023-1-9 17:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握。介于中国目前的芯片设计能力有限,所以大部分的器件都是外国几个IC巨头比如TI、AT、MAXIM这些公司生产的,器件资料自然也是英文的多,所以,英文的基础要在阅读这些数据手册时得到提高哦。即便有中文翻译版本,还是建议看英文原版,看不懂时不妨再参考中文版,这样比较利于提高。$ I3 `# b: u4 g1 z
    ( w2 t8 T: ?3 C0 H  Z) W9 u6 R8 j3 w
    2 L+ X+ `, n/ C, H4 c5 `% W$ [. B7 Q6 j5 ?+ G+ Z: @* z8 b$ P& u/ L, V' m/ e' ^# }( Z
    我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能数据表:
    ; }- z2 S0 I! j& N  y5 X. r3 T+ `$ {6 c" p
    & z# B6 @7 l$ d# l
    4 I8 g/ L8 u) H. K; P$ _# P) M- g9 V, r
    ; I  A% f1 W( ?8 r( i1 r; Y/ ?* D; o" A% I8 S5 k* t
    - T1 A. Y6 V" _/ b
      我们只需要关注以下几个管脚:2 V2 ]- o& H3 t4 @
    5 p% I; V8 M8 P1 p& V' ~2 n* n3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。0 p6 j2 \5 }' x/ U& a' a" \5 j
    - S) V% J. p7 L, b3 X: t
    $ [" K" D6 E( b. i$ z  o% L
    ; u4 t: L& N' B6 W7 P4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而此脚为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。; O/ w+ v; S- a! @0 v9 ~: X8 h8 U; p4 U( j8 J) ]

    8 C- l% u0 x* F# S6 Y0 u6 T% I, S. p- [# U8 ]6 \3 [# o# L( {2 |+ G
    : d0 ^. m$ f& X. L# x5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。笔者认为,此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。5 C7 t: i# Z7 ^. w1 l% D8 X& b; F6 a3 @
    ( d  o+ N9 L0 ^2 F6 o# C  L  h8 n6 o) G2 u, u- ]
    " B" a/ X% F8 e5 j& H$ r: r) {: ^. p1 E3 y& h# `" ^
    6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。' @7 Z' M; t/ z1 ~4 M) ]% T9 V7 h/ k2 n( X6 k: \# L. s" k

    # i7 V2 P$ O0 e# L/ a) V0 R, b9 E3 D* A8 G4 R& G4 [( q3 I4 J3 G
    7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。9 i7 S8 a6 I% I" n7 `
    2 g7 s5 J. J% P% N& Q2 Q+ G' e4 `4 f
      k/ v9 m$ K$ U. g$ c/ k" D
    现在来看LCD1602的操作时序:2 d/ ]9 z: i" L: ]9 I' ~9 w( g
    7 n- |6 W9 V3 w

    8 ?+ {6 ~- x9 }* B  l- [, }7 P2 C

    6 h+ D5 L' E* X  U
    6 B3 L& N3 W( h: J) j) b7 [) h0 g$ T1 N7 P! Z  V1 B
    在此,我们可以先不读出它的数据的状态或者数据本身。所以只需要看两个写时序:( m: ?) w5 C( n. Z. i
    / B8 }  d3 d+ ^* P  h* m  s9 \- `

    ' f! [+ x( j( t9 [/ b7 |
    8 B& Y6 w3 w: U& x6 U
    ; f/ ^  G5 O; k- [+ W4 C* w" g4 B' U: ^! N6 Y$ r
    $ B! o0 k7 i( j3 x* k! o3 |$ W3 U- U/ F
    ① 当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。2 U- A1 q  H# C6 ~: a! V/ ?" T( m: R( M' j

    0 {+ M* a  `. \: ?" S  h% q, \) Q5 }# D+ T# i
    2 A0 z7 B  O& I+ i5 r② 当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。
    1 C( x: U. d: [, d) y3 R
    # Y. g- e' A6 P& P
    ) z; m) d0 B; {0 c发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图:
    3 f8 ]  \5 C" r5 k* o+ [; k. N! V0 d" }1 ~
    0 M! [, L4 E- Q# _8 X$ a) T) {+ p% ^# Z; L( h" M: x3 [3 }( ?- `# A3 t5 G5 `% G2 G3 C
    大家要慢慢学会看时序图,要知道操作一个器件的精华便蕴藏在其中,看懂看准了时序,你操控这个芯片就是非常容易的事了。1602的时序是我见过的一个最简单的时序:2 p  X9 M  i6 A4 g8 F% q. A
    1 M" j! o: p1 \  k- x  j2 b
      V3 N* L9 ~( Z0 c- ^( g' U1、注意时间轴,如果没有标明(其实大部分也都是不标明的),那么从左往右的方向为时间正向轴,即时间在增长。2 Q( t$ W1 ]! g2 y/ c9 y
    ( V7 n+ `  g! Q. H& v
    7 X% J. v0 @3 A( e
    3 C8 Z# [# F; Q6 N% ?% F2、上图框出并注明了看懂此图的一些常识:1 G' X1 J) l6 K% T( r4 p
    " f2 _" N/ U! V) N7 f& \(1).时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。2 N: n* }2 j. Q* \2 c+ z$ d: U( L  ^
    ! [+ U3 y! X6 p! M
      e0 G' h0 `: t4 M* u0 W
    ! f6 P8 D$ Z& S; M$ L(2).有线交叉状的部分,表示电平在变化,如上所标注。6 X! S7 N0 u& l7 x. `1 ]! z# K9 g& r1 U) F9 z
    5 s2 J: [% u- \
    ) l+ A" z3 C- i% s2 @& y+ O4 u  M! I6 ?, D
    (3).应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。! e" k, z% F5 Q0 L9 P
    $ c" o: c: x2 b2 v( S* R+ f  L
    * V# f( T' R1 D! o5 ?# a) f% Q. U! ~+ W8 A# {! p3 R; ?9 [9 J' Q0 [2 J
    (4).上图下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。
    & H4 X; i4 z; W+ I; C- C( G1 y! K, X* A8 ~" x: }) J: O
    ( _/ J" E  v( g- X- U4 h9 z0 G' g6 A# \5 o# l$ S
    3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。
    , X  D. u& `% |: P& f) Y8 E, U4 E8 e( |1 j5 w5 C8 A* B+ \9 n- b/ }, K+ w: ^3 ~
    # H: P& e% Z3 C. c$ G4 B5 h" O: N* u. _. r& T4 m( i8 P1 {7 ]* Z1 \
    4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。: N" c% g9 q' m) q; D8 ~
    + n5 c9 H- x9 ^5 H: v3 q
    5 \! a+ c4 f/ w, E
    , ~1 W3 e3 K6 ~) N4 Z# i也许你还注意到了上面有许多关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长,日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表:
    , Y2 x/ F! h" p
    2 l% o0 G1 h( P. ]& K# S. o7 g, a- B! W* ^/ k7 f" f# ]% u  D1 g; Y
    - z! S% I4 h) G' M. t& s, O' Y  n# A9 o  D
    . a( O' L+ B/ B8 v
    6 a7 ~6 [. V9 w: u; {( l5 ^8 O) J
    1 F/ h: X+ q) S! W, t大家要懂得估计主控芯片的指令时间,可以在官方数据手册上查到mcu的一些级别参数。比如我们现在用AVR M16做为主控芯片,外部12MHz晶振,指令周期就是一个时钟周期为(2/12MHz)s,所以至少确定了它执行一条指令的时间是us级别的。我们看到,以上给的时间参数全部是ns级别的,所以即便我们在程序里不加延时程序,也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢?很简单,我们在时序图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。大家看是不是这个意思?* `7 h) l7 m! g' p( d# w( P1 |. G7 n/ k& L

    # `% d; M" F! o- Z& O$ m) i- K! R2 H' v2 E
    现在我来解读我对这个时序图的理解:
    - [- d+ w" V3 O; [2 [' t+ a当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。: H) H/ _- x+ Z- [3 ?2 u/ N

    ! P/ v: o8 ~: v3 }
    . I3 A, [2 I& g  x3 z0 H9 ups感谢热心网友的指出错误之处:; i0 V4 y3 I; v1 Y
    : w$ G  j  n! u8 x' z(1/12MHz)s是振荡周期,而不是时钟周期,因为时钟周期(状态周期)等于两个振荡周期,换句话说就是对振动频率进行“二分频”的振荡信号,所以(2/12MHz)s才是晶振为12MHz时的时钟周期。
    # Z1 o4 C! [3 D+ ~/ J+ c8 B
    0 p: [5 ~' i0 o! |: ~
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-24 12:08 , Processed in 0.156250 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表