|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. r) [ d* y( r: c. ^& n第9讲
4 x) V% O8 R) {; v9 p& }2 `1 X8 M$ A复习:
. @$ o- p' e' P9 s0 y& I/ ~7 ?, x) U) p1、 51 单片机 P1 口的特点) G# k5 w0 f! p6 U+ D0 f
2、 switch() case{}多分支选择语句: q; ^8 p) F) f" M( p0 F0 o' K& N
3、 74HC138 译码器
! l. o# a& m& H% T7 z; l$ L
6 r& d& q; r* A- h' H+ H- E! z5 b. ~6 C
新知识:3 o/ B8 L6 M# j
1、二维数组定义,引用, X$ }: B8 j! C. `( @
2、if 语句+ l' x! r1 Z; Y W& G# ]. ]
3、8*8 点阵 LED 编码、扫描方式 一、51 单片机 P1 口的特点. j. p$ R$ y$ i: s R
2 c& ?* _, M. ?2 M8 {) f0 c% v8 k& t; rP1口的要点:' ], x8 D- }8 p' j2 j+ T9 P) j
6 K1 M" c9 F9 x& ?, B" P: N7 p二、多分支选择语句
! ]* U ?( f' e- B前几次课,我们学习了循环语句 for 的用法,知道了 for 语句的执行流程。今天,我们再学 习一个分支语句 switch case default。这种语句把一个表达式的值和一个整数或字符常量 表中的元素逐一比较。发生匹配时,与匹配常数关联的语句被执行。switch 语句的一般形 式如下:
( H/ V5 s; D7 W2 B3 {3 Y* c2 dswitch(expession)
+ h+ r$ _: c S7 ]0 ~7 n{ X: a6 p5 j1 H0 ]/ b, V$ U+ {
case constant1:! [8 K5 b1 e# {5 E
语句 1;
" j" }; o6 G9 Z. g9 G7 B2 Z6 w" B& s( N& J1 b* g9 r' `4 B' Y
break;. l( W/ m$ V+ O5 ^# H
case constant2:
( e, [; i: R: C, q2 {% K语句 2;6 s3 g% Y* k: S+ d d
break;" b0 k; ]8 g9 A" v
case constant3:& ] A( G) n9 h/ g1 [
语句 3; break; default: 语句 4;, L k4 |2 R; Z I! J
}
4 G7 o9 P! x2 Z, ~) U注意:
+ b7 @* o# N# V! X) b5 u! c1、 表达式 expession 必须对整数求值,因此,可使用字符或整数值,但不能使用浮点表达 式。8 n: r- z5 p& B) {$ @; J
2、 表达式的值顺序与 case 语句中的常量逐一比较,发生匹配时,与匹配常数关联的语句 被执行。直到遇到 break 语句或到达 switch 语句结尾时停止。# Z9 j- E+ P1 Z8 I, e
3、 default 是可选项。$ n5 \0 q6 B4 \6 w; A6 l8 h8 T
8 B- @1 k% j6 M) X
三、74HC138 译码器9 w: ?0 \. P7 F6 b/ c
在我们设计单片机电路的时候,单片机的 IO 数量是有限的,有时并满足不了我们的设计需 求,比如我们正使用的 STC89C52RC 单片机一共是 32 个 IO 口,但是我们为了控制更多的器 件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如% c8 I& f( D/ f: h$ e- [* N
74hc138 这个 3-8 译码器。2 u2 `5 E1 s& E
, P8 }: u# r o
从这个名字来分析,三八译码器,就是把三种输入状态翻译成 8 种输出状态。从图中可以看 到 74HC138 一共有 6 个输入引脚 ,但其中 4、5、6 引脚是使能引脚 ,这三个引脚如果不符 合规定的输入要求,1,2,3 引脚不管你输入的什么电平,Y0 ~ Y7 都是高电平。所以必须 按图示方式连接。大家可以看下面的真值表,输入与输出的对应关系:5 @) y+ `! W* R: h+ K
+ \4 m/ ]8 w) M/ W H
四、二维数组: J$ G# `/ q6 D
定义:
% {7 I1 x, j( }* t! Z$ C数组类型 数组名[行数][列数]={元素列表};
6 d* `/ j( A7 ?9 V如:char arrzy[3][4] = {
5 p+ `' u, I; P5 G{1,2,3,4},
# ?3 j4 I8 Q5 x: @- ?{5,6,7,8},
0 ?% |; ^' I7 h, F1 g' g8 X! X6 P" f4 S{9,10,11,12},7 ?# p& p: ~+ j- f; O. Q% J
};
7 w: \3 l% D/ Q* F9 \引用:下标法
8 M3 g8 U, ^9 N p4 D; ], A4 K* }; t, I
五、if 语句 if(表达式)
& l) F2 P1 H4 h# C* i{5 N' J5 B* ]4 h4 y% ~6 e; X
语句 1;
% r+ q6 h3 M2 b" I- H& C- C}2 o$ D: Z5 y1 S# H/ _; \
else, I0 Z, w5 i+ l
{1 f3 G0 n* D+ @" P+ o/ ^2 J
语句 2;
7 w# o: b% D9 K! F# S# i) M, I2 z) u$ x}
4 Q P# N. n, R$ ]当表达式为真时,执行语句 1,否则执行语句 2;其中 else 语句可以省略。 更复杂一点:' g$ ]$ E9 s! Q; B
if()* ]7 z! Y$ s W7 h8 C) p% ?
{}
2 B6 Z/ e2 W" f# M! `7 f9 ~else if()
2 p8 Q% n- R1 ^5 _7 I( J+ V* A{}
0 U3 R6 I- H1 A* U7 o4 u…; L, c$ o1 q) F7 ^$ x8 f
else
& B" x5 P q( A" j{}
1 S7 U* H; f3 e% ~0 p* R }5 m9 ^; b: f- A0 ~; ]% S' Z
六、8*8 点阵 LED 编码、扫描方式
' H& f% N1 T3 s
' K4 _ Z9 f4 k- @. |0 A& m# Z( }以下是数字 0 的编码5 c+ W( U! r1 }8 j
5 u2 L/ Y5 H( U
与 8 段数码管编码一样,按行扫描,空白处是 0,显示为 1 |
|