|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
& q; G5 q2 I) e3 z第9讲
; Z3 ?8 A' @! V复习:
; |% m" d$ L0 y0 f1、 51 单片机 P1 口的特点! w" }# t- j/ s* k
2、 switch() case{}多分支选择语句
$ s& f" [/ ~& S3、 74HC138 译码器+ ?7 `* q! P. z. [4 a
7 x4 g, J" ~# H2 g
! `" Y2 Y* F, y' X新知识:0 U; \) c6 ]( M' g7 m* B4 s) T% {; h
1、二维数组定义,引用2 q, s' ?( x2 C5 {1 w; m
2、if 语句
0 b3 H9 a; b/ o+ N8 Z, L3 S+ l m3、8*8 点阵 LED 编码、扫描方式 一、51 单片机 P1 口的特点
6 V3 ]; K; M; u9 E& K
' s; k8 p8 \, SP1口的要点:6 t: p( L! g. m8 \+ J* S6 e
/ q( J, D# Q# K+ K s+ _
二、多分支选择语句+ P: q' W' P% S' f. {5 j6 k
前几次课,我们学习了循环语句 for 的用法,知道了 for 语句的执行流程。今天,我们再学 习一个分支语句 switch case default。这种语句把一个表达式的值和一个整数或字符常量 表中的元素逐一比较。发生匹配时,与匹配常数关联的语句被执行。switch 语句的一般形 式如下:
. Q( [4 C1 @- B+ ]switch(expession)1 ^4 m h) {* P' h9 p
{) t0 {( V5 J u& N
case constant1:) F/ C% }2 o# C( s# C
语句 1;
* M9 b0 j2 t5 T- _
. g2 O. }4 z, F3 bbreak;
7 e( R5 t7 I! f# Scase constant2:8 X7 l2 N" \! l7 p* z9 c
语句 2;' Z, K- ]$ ]( P3 v% m: j( R' i
break;
5 o4 W9 l$ Q2 T5 Qcase constant3:
. Z' J1 ~0 c/ }( s" L语句 3; break; default: 语句 4;
# j [8 k3 o/ ?}7 S: i1 F1 x9 m, \: P
注意:
; v2 m& h6 M3 S# [+ w1、 表达式 expession 必须对整数求值,因此,可使用字符或整数值,但不能使用浮点表达 式。, a1 Y, g- O- G+ Q0 A
2、 表达式的值顺序与 case 语句中的常量逐一比较,发生匹配时,与匹配常数关联的语句 被执行。直到遇到 break 语句或到达 switch 语句结尾时停止。
& g# Q" t7 r* l, p$ n: C) P Z& H8 B, [3、 default 是可选项。
4 S- t/ \/ F0 s3 o+ l0 E5 K+ G1 o8 u3 |) ~+ i/ Q! Y
三、74HC138 译码器) `1 l6 ~6 ^& }- a8 q4 O0 c* G/ {
在我们设计单片机电路的时候,单片机的 IO 数量是有限的,有时并满足不了我们的设计需 求,比如我们正使用的 STC89C52RC 单片机一共是 32 个 IO 口,但是我们为了控制更多的器 件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如1 ^4 W9 Z! j; O, s( }7 P1 D* a
74hc138 这个 3-8 译码器。0 ~; \0 }" L7 A M; I& r. W
& r7 B F) w; M2 w从这个名字来分析,三八译码器,就是把三种输入状态翻译成 8 种输出状态。从图中可以看 到 74HC138 一共有 6 个输入引脚 ,但其中 4、5、6 引脚是使能引脚 ,这三个引脚如果不符 合规定的输入要求,1,2,3 引脚不管你输入的什么电平,Y0 ~ Y7 都是高电平。所以必须 按图示方式连接。大家可以看下面的真值表,输入与输出的对应关系:- M& ?+ x9 F) J
2 G& W0 z" @9 F
四、二维数组6 m R. J/ j4 t. k- T U' s
定义:
, \) C1 N0 f6 F% ^; Z }数组类型 数组名[行数][列数]={元素列表};
: u3 ]3 p. g+ b: P+ C如:char arrzy[3][4] = {9 p0 n' R( k( e( [! b, c1 W
{1,2,3,4},, W" _! D( w1 t* h' M
{5,6,7,8},
6 V* [5 i( {! P5 Y1 V" m8 ?/ j{9,10,11,12},9 T, f( Q$ }2 \) V, ?: `
};
. O7 F1 f9 \0 K引用:下标法: u; B* m1 B$ @% u; v7 k
/ |5 D4 Z0 _; K$ ~" @3 i
五、if 语句 if(表达式)
3 y% F" T$ ~( a' e{
2 j$ G u6 Z* E# o! V& x语句 1;
B! v3 f+ |- i( V% K; g- u8 B9 N}
2 a y$ a |" J1 [else
. G& u+ T8 j' |) |! j# ?{
. e5 s8 V h6 A* s语句 2;* Y7 S& d" C2 [4 K
}) Y5 G2 `( S- v$ {4 y6 @3 x
当表达式为真时,执行语句 1,否则执行语句 2;其中 else 语句可以省略。 更复杂一点:
5 `' s+ z, [- d2 [if(), _& M1 m8 `3 f8 T
{}
5 z8 b- _/ M/ O& p& [' p# Velse if()
8 R8 `' h1 u" \) H, M3 A1 `# d( |* [{}1 P" O8 h; x3 W1 k7 }* E: Z- a+ ?
…' R M; M K0 S1 F* h
else( ]' \9 e% ^# z3 v2 P$ K" S$ o5 Z" n
{}: o6 ?8 m c) @% L6 A. d
, j. U7 w! h7 s* C六、8*8 点阵 LED 编码、扫描方式9 m0 h+ g6 d/ D8 r
: H+ a4 b3 @5 y以下是数字 0 的编码
: J* N5 u1 h7 w- o% E
% G% z) |+ x6 S/ Q与 8 段数码管编码一样,按行扫描,空白处是 0,显示为 1 |
|