TA的每日心情 | 开心 2023-6-1 15:13 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上有用的内容提取,掌握。介于中国目前的芯片设计能力有限,所以大部分的器件都是外国几个IC巨头比如TI、AT、MAXIM这些公司生产的,器件资料自然也是英文的多,所以,英文的基础要在阅读这些数据手册时得到提高哦。即便有中文翻译版本,还是建议看英文原版,看不懂时不妨再参考中文版,这样比较利于提高。$ I3 `# b: u4 g1 z
% g* S! j& T; ?3 a/ I$ \1 c, S) W9 u6 R8 j3 w2 r9 x$ d, U6 q' T1 q: F! R
7 Q6 j5 ?+ G+ Z: @* z8 b$ P& u5 T" g' a; N# R& @& G
我们首先来看1602的引脚定义,1602的引脚是很整齐的SIP单列直插封装,所以器件手册只给出了引脚的功能数据表:
9 Y, f' d8 G* q/ s! K5 X. r3 T+ `$ {6 c" p, n3 F0 f& ^7 ]+ a
4 I8 g/ L8 u) H. K; P$ _! G& g: y1 w4 X( b5 q
; I A% f1 W( ?8 r8 O* s' z) v' e: x9 g) Y
# y! z" ^' E6 ` 我们只需要关注以下几个管脚:2 V2 ]- o& H3 t4 @
$ a+ ?5 B5 N. Z8 d! n% [3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。) R5 S& W' D+ s
- S) V% J. p7 L, b3 X: t% I4 C" c- d! h8 O
1 [4 q$ B1 y) G! m
4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而此脚为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。; O/ w+ v; S- a! @0 v9 ~
2 A$ X. u* d9 ^8 \+ }0 u4 S: K9 g; g! i6 Z4 A5 C2 \8 e/ I+ W
. p- [# U8 ]6 \3 [# o# L( {2 |+ G
9 W2 }! a0 j+ f- z' ~5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。笔者认为,此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。5 C7 t: i# Z7 ^. w1 l
# B2 f1 R1 {, b* j6 P( T( d o+ N9 L0 ^2 F6 o
/ U, }. r9 _0 K+ `: e/ e6 O" B" a/ X% F8 e5 j& H$ r: r. c6 ~ V4 ^0 @& U! C2 e
6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。' @7 Z' M; t/ z1 ~4 M) ]% T9 V7 h/ k2 n5 e- c9 V! f8 F: A
, H5 G( I# y* W0 R, b9 E3 D* A8 G4 R
: W4 Z, s3 z& U1 z+ O* W7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。9 i7 S8 a6 I% I" n7 `9 K1 E5 o" H! o9 e
6 ]% ?. z# c7 [; m
' X8 c: V U& O9 ^- A& Y现在来看LCD1602的操作时序:+ {8 u5 ?' r; l: Z
; P1 o, S2 k) n- G* C
/ r4 p# @7 L* w/ n7 R ~' I- T8 L0 }/ P3 j8 w8 V
# i% _+ v: H, X3 D% n
! O: f. n. d i! V( y( X
! [' Y3 f9 M6 D% X在此,我们可以先不读出它的数据的状态或者数据本身。所以只需要看两个写时序:
; ^0 R' ^( e+ k1 w( d# b9 Q, X' @: n, @: V+ [7 J% F' x! e" c
2 S9 a' l3 v6 a
; l4 @5 n% f% B' |/ Y+ z4 g \; f/ ^ G5 O; k- [+ W, H F, z& }, Z: ^' B8 i, z
$ B! o0 k7 i( j3 x* k2 Y5 Y( v" H) Z5 I- O& |3 R
① 当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。2 U- A1 q H# C6 ~: a! V
- ^6 \+ W! b# \" C2 c0 }7 q" z2 G" P1 {' I% I
% q, \) Q5 }# D+ T# i4 X: J# w/ H' C
② 当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。% c2 a" x/ |+ s6 o
9 q6 @* X7 Y' `/ c$ f' Z" P- Q& W) y& t$ m( m
发现了么,写指令和写数据,差别仅仅在于RS的电平不一样而已。以下是LCD1602的时序图:- c( h+ e/ |* P- L9 L% r4 P9 s( h
; k. N! V0 d" }1 ~2 }3 V1 c' l. h
) {+ p% ^# Z; L( h" M: x3 [
" w5 P% |4 l" v7 v3 `; T- o大家要慢慢学会看时序图,要知道操作一个器件的精华便蕴藏在其中,看懂看准了时序,你操控这个芯片就是非常容易的事了。1602的时序是我见过的一个最简单的时序:2 p X9 M i6 A4 g8 F% q. A. g7 ~( }9 h! O+ W; B% }. `
2 Q- n: U4 y/ d1、注意时间轴,如果没有标明(其实大部分也都是不标明的),那么从左往右的方向为时间正向轴,即时间在增长。
9 y- _, Y; h6 ?( V7 n+ ` g! Q. H& v
+ z0 P( Q+ G+ ~0 I$ `- w- H! k
5 k+ d; k" ?' m1 f+ k! {5 {5 }$ v& m2、上图框出并注明了看懂此图的一些常识:1 G' X1 J) l6 K% T( r4 p
/ O D: u. {9 N& u* k/ {/ X! l(1).时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。2 N: n* }2 j. Q* \2 c
1 m0 p `7 Z% J ^% m: B. t% Y* S: f
e0 G' h0 `: t4 M* u0 W4 Y. Q! y! m& q9 v" y* R
(2).有线交叉状的部分,表示电平在变化,如上所标注。6 X! S7 N0 u& l7 x. `1 ]! z" C* i( ]7 _. N" O( b! B, C
, \, H1 e# z2 Q& I& P) l+ A" z3 C- i% s2 @2 {, S( d$ x+ m
(3).应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。
' y* N" ?: h1 R0 D+ `6 ?$ c" o: c: x2 b2 v( S* R+ f L+ v# @4 n4 h; F
) f% Q. U! ~+ W8 A# {
' j& d3 w6 H' C4 l(4).上图下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。# ?3 L4 O/ s# A- d6 e
+ I; C- C( G1 y6 X3 e8 P& ~4 q1 _
( _/ J" E v( g- X- U
! G3 E; _' M5 d" x% ]3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。$ w$ M- [: E; l+ h) Q6 \: A' S
4 E8 e( |1 j5 w5 C8 A* B+ \: r3 l& y |* ?. V. Y/ s
# H: P& e% Z3 C. c$ G4 B5 h" O: N* u. _. r A4 }& o: ], a2 E2 b) Q
4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。& u! U6 e2 a- v& ]
+ n5 c9 H- x9 ^5 H: v3 q
3 R' @) P" Z4 Q; |0 N# I* P, j6 `1 Z; W- ]& w' v' v
也许你还注意到了上面有许多关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长,日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表:3 E. e9 I" K0 y+ V
2 @% O/ S' }4 d# S. o7 g, a- B! W8 \/ g% H5 f5 z% m: G6 E! L: G+ Z
- z! S% I4 h) G
& C; X0 x8 X) Q8 B, K3 I( g. a( O' L+ B/ B8 v3 a% N8 U( c0 d7 G* w
6 Z! f/ s# G6 J. G( u, @( d0 A大家要懂得估计主控芯片的指令时间,可以在官方数据手册上查到mcu的一些级别参数。比如我们现在用AVR M16做为主控芯片,外部12MHz晶振,指令周期就是一个时钟周期为(2/12MHz)s,所以至少确定了它执行一条指令的时间是us级别的。我们看到,以上给的时间参数全部是ns级别的,所以即便我们在程序里不加延时程序,也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢?很简单,我们在时序图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。大家看是不是这个意思?* `7 h) l7 m! g' p( d# w* l) v1 C) D" h# q! f
' I. p" {) L9 u9 J6 ~9 {- T. d ?6 |- Y
4 L: I1 |6 I7 f* G+ m3 C
现在我来解读我对这个时序图的理解:
2 A) f& A! }: @ y5 P当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。
8 P' d3 ^* ^6 g, L( V J% g
2 u0 q9 o/ a) |9 @2 s
' X3 W m( Y6 |3 n+ F( K2 F7 Wps感谢热心网友的指出错误之处:; i0 V4 y3 I; v1 Y: x& C; _& p% ^- _$ P
(1/12MHz)s是振荡周期,而不是时钟周期,因为时钟周期(状态周期)等于两个振荡周期,换句话说就是对振动频率进行“二分频”的振荡信号,所以(2/12MHz)s才是晶振为12MHz时的时钟周期。
- s7 {9 S& Y+ G3 n! P- i. B& c1 {% g7 c; }+ S% S% \, I
|
|