|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
) j9 y& D! u9 C& }5 v3 G
第9讲! D9 I8 S! ?4 q. ~, c+ N; I9 Q
复习:
$ t4 L! S: r3 X( H- |1 v' ^1、 51 单片机 P1 口的特点
+ O& I6 a! {( u% X! v$ W2、 switch() case{}多分支选择语句 F9 K' r. O: m
3、 74HC138 译码器
* v4 f7 w0 c% ]' q! ?9 a9 P( X. ]; ]4 y0 i* Z& } `
7 |! B/ V# j; l" g4 ~
新知识:
$ z% Z$ t# V2 R1、二维数组定义,引用
/ Q; p' t. o" P; y9 l2 v2、if 语句
! c# _/ ]/ n+ G/ T1 D9 F$ b3、8*8 点阵 LED 编码、扫描方式 一、51 单片机 P1 口的特点
5 |1 t: v% j6 w) I# i9 M
' B1 R; b2 o5 q* \6 VP1口的要点:
: B# p- `2 b3 a2 ^7 w
4 W Z) A- j5 c* @二、多分支选择语句
7 T# j" O( C* e+ V- C! ?0 p( N前几次课,我们学习了循环语句 for 的用法,知道了 for 语句的执行流程。今天,我们再学 习一个分支语句 switch case default。这种语句把一个表达式的值和一个整数或字符常量 表中的元素逐一比较。发生匹配时,与匹配常数关联的语句被执行。switch 语句的一般形 式如下:' L0 `/ A* f# v8 Q+ e
switch(expession)
& t3 A8 ^) e! J! P; d9 r9 p2 d7 Q{$ J% O8 V9 }9 ]& e, r$ g
case constant1:
D3 }! l t/ @ c' B% m5 x/ C语句 1;4 _5 X4 i z0 K1 M2 z! B& {3 M4 e
- U% S4 t/ }& ~9 _& T2 p o
break;
, D* C( i4 M2 B4 L3 qcase constant2:- N7 I; r/ N' u# c& j2 t/ `3 h3 \- }
语句 2;
9 [! m* y6 N4 h" D+ ~! Tbreak;
8 O% C# g/ A M0 H' Q7 T* P3 ]case constant3:
5 z D2 A* J/ n2 U语句 3; break; default: 语句 4;
& L; y9 Z- z# O0 P4 p9 d4 R}
& f7 ~' f/ w' n2 b; r4 x" P( P注意:
+ D- E, m+ b. [# [) B1、 表达式 expession 必须对整数求值,因此,可使用字符或整数值,但不能使用浮点表达 式。2 s3 B: U' T% J& E" }) K
2、 表达式的值顺序与 case 语句中的常量逐一比较,发生匹配时,与匹配常数关联的语句 被执行。直到遇到 break 语句或到达 switch 语句结尾时停止。
& d2 A( C7 q/ w p f1 ^3、 default 是可选项。) h1 O# a7 F- [8 \. H" |
* x( g9 [$ W: b3 L
三、74HC138 译码器
" h% ]0 f' H8 m5 P5 S" W5 p2 |在我们设计单片机电路的时候,单片机的 IO 数量是有限的,有时并满足不了我们的设计需 求,比如我们正使用的 STC89C52RC 单片机一共是 32 个 IO 口,但是我们为了控制更多的器 件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如
+ v$ D( L) E* o' e74hc138 这个 3-8 译码器。
4 I! i: V5 S3 `+ r6 O$ \$ v
9 _, l* G+ X4 o& ]" }4 E; [+ X
从这个名字来分析,三八译码器,就是把三种输入状态翻译成 8 种输出状态。从图中可以看 到 74HC138 一共有 6 个输入引脚 ,但其中 4、5、6 引脚是使能引脚 ,这三个引脚如果不符 合规定的输入要求,1,2,3 引脚不管你输入的什么电平,Y0 ~ Y7 都是高电平。所以必须 按图示方式连接。大家可以看下面的真值表,输入与输出的对应关系:
3 v9 E" q. _ Q/ E
) b9 L% L# g" o$ o3 P9 V四、二维数组
0 h5 E X/ C# g/ I _& B定义:1 Y3 r6 u+ |( L8 A; o2 w
数组类型 数组名[行数][列数]={元素列表};
8 A- y5 {: p7 [1 o如:char arrzy[3][4] = {) g7 s4 k' Z( w( E' j3 y3 J$ |- e
{1,2,3,4},
- h. _2 B2 i$ D& F{5,6,7,8},9 b; N+ S7 d: ^/ m" r# T
{9,10,11,12},4 ^. U; X! _# P5 J
};
3 W* f8 j8 y/ K; {引用:下标法4 W& H% Z. h, @: j+ i
3 g" I/ x/ q3 j+ `; ^& v
五、if 语句 if(表达式)
/ O& E6 q7 n5 l& S( ^{
1 Y! ?# ?2 u6 I; d语句 1;
/ p1 w8 j5 d* A$ A$ @- E! R+ B2 R}
3 A0 d" ^3 y, Y( _8 E: T3 _" {else! g+ ~& P, J& S& }1 M; |
{2 ~" `" _$ A q: q( r4 v, i2 Z
语句 2;2 E5 Z. O/ [& q @% B
}
: @4 ^4 ?! M" e$ _当表达式为真时,执行语句 1,否则执行语句 2;其中 else 语句可以省略。 更复杂一点:2 l9 P4 L8 O K8 _
if()! ?7 I* l( x* j! I2 c- f
{}
7 Z" b2 z, ^9 ]5 T0 xelse if()) n# T4 O) e. T g* E) C+ Y
{}
' e8 E! W6 Z7 M7 J8 u Z, Z…
( U) ~7 O) C* ? E' Velse. v: V( @4 M. J! v8 P K! f2 _2 B
{}/ s: N- f3 i0 M
$ [. @& t- e' ?9 S
六、8*8 点阵 LED 编码、扫描方式. G- H7 V% L7 J
% ` L+ S: S2 \% T
以下是数字 0 的编码
8 Q8 A M- _/ X7 L6 }! d% t
) z d1 `8 O N8 X: S; m7 C' M
与 8 段数码管编码一样,按行扫描,空白处是 0,显示为 1 |
|