|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
- p: G5 K* \+ m6 L! H第9讲
8 j% e9 e2 m, \3 X m7 {+ A& ?复习:& l& h3 B0 c; S; J6 O, b9 u- X* ]
1、 51 单片机 P1 口的特点
* V; z5 T- r( r g3 Q( Y h2、 switch() case{}多分支选择语句
* V" [$ U0 |. K7 F3、 74HC138 译码器) U2 ?8 J& A' S4 b0 Q
D8 v: D2 i- E7 o: [, m) o
3 Q) @( }! x3 T* Z8 V新知识:
1 f+ P1 @2 X/ T- ^' ^1、二维数组定义,引用
8 T% M- Z$ j2 L$ W6 \3 F2、if 语句
9 S- B l; I% d+ M2 h+ Z4 X3、8*8 点阵 LED 编码、扫描方式 一、51 单片机 P1 口的特点4 a Z* O+ ]- X9 |& |% G: i
. l: c% @' m& u* W# {P1口的要点:% y$ c; C: |1 j& K# ?2 ?
4 Y# _/ J! L2 X3 Y/ g
二、多分支选择语句; R4 n8 j t1 h+ s5 O, X
前几次课,我们学习了循环语句 for 的用法,知道了 for 语句的执行流程。今天,我们再学 习一个分支语句 switch case default。这种语句把一个表达式的值和一个整数或字符常量 表中的元素逐一比较。发生匹配时,与匹配常数关联的语句被执行。switch 语句的一般形 式如下:
$ ~# P8 }! B$ d& k, Pswitch(expession)
% h$ W+ v7 V# d& R{) \$ O% ?2 {) d3 f3 w, H- Q
case constant1:
# _! Z, m5 S. {9 a- V l1 h/ W+ U1 C语句 1;
6 ~5 B+ h8 ]/ B4 ~+ K/ P% K# \5 i- k* ~( P
break;
4 t( Y# A( ]4 ]. i% g3 O# ?6 kcase constant2:
/ t" g, U x8 o/ \' l1 L- C& P语句 2;5 y- L% L$ |- a/ H1 G+ j9 d3 [
break;
5 K! X- x2 F1 Ycase constant3:) ~/ Q' _/ B& x0 b! x( n; r
语句 3; break; default: 语句 4;
h- h+ W( Z$ r7 \; H6 T+ {5 I3 J}* P7 ?1 g: N) M! \5 e8 |
注意:
) n: D, |/ v, K1、 表达式 expession 必须对整数求值,因此,可使用字符或整数值,但不能使用浮点表达 式。( H/ g1 f/ I) V8 [
2、 表达式的值顺序与 case 语句中的常量逐一比较,发生匹配时,与匹配常数关联的语句 被执行。直到遇到 break 语句或到达 switch 语句结尾时停止。# \ |' P; P( e/ Z) r
3、 default 是可选项。# [2 U! N& g: f" [- [2 r, X
& R+ t- K) s# {0 V1 R) S
三、74HC138 译码器+ d& R) ^ n6 m* x
在我们设计单片机电路的时候,单片机的 IO 数量是有限的,有时并满足不了我们的设计需 求,比如我们正使用的 STC89C52RC 单片机一共是 32 个 IO 口,但是我们为了控制更多的器 件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如
9 {8 \& ?/ P j8 L4 H3 q. Z3 |) t74hc138 这个 3-8 译码器。
/ ]! v6 q' k3 a9 Z6 y7 L
- p. {- d( B# Q& w
从这个名字来分析,三八译码器,就是把三种输入状态翻译成 8 种输出状态。从图中可以看 到 74HC138 一共有 6 个输入引脚 ,但其中 4、5、6 引脚是使能引脚 ,这三个引脚如果不符 合规定的输入要求,1,2,3 引脚不管你输入的什么电平,Y0 ~ Y7 都是高电平。所以必须 按图示方式连接。大家可以看下面的真值表,输入与输出的对应关系:
) b* u# [3 j7 g+ p; c& K4 z
2 x o: e1 b" `0 K
四、二维数组
$ U5 N# |$ C6 T o# F1 c! d定义:6 g" q( F/ `; b- k( j
数组类型 数组名[行数][列数]={元素列表};1 u/ _. d( K5 @ _, q4 w7 S' R
如:char arrzy[3][4] = {1 [; o4 g- |# Y2 e' J. _9 y
{1,2,3,4},3 v$ M% A0 g$ {/ l) h$ I
{5,6,7,8}," ^# E7 @& x# F4 \/ f. ~
{9,10,11,12}," x9 U* a- \4 Y* t& Q: y6 `2 q
};
3 z* o' e; w# [8 X' Y引用:下标法" C6 D; b$ m3 ]
! a4 v2 G- D8 B/ y5 t7 e五、if 语句 if(表达式)
; K' T# q ~% \' A8 t# o Z{
7 p+ |$ o! q* |% x0 z语句 1;! J* T1 G2 P! b" J z# g
}
; Z M! \# G6 j2 Q& c2 Y; Pelse5 b8 t9 C) u5 \. B2 I6 E+ W
{* C! g1 x( Z; W O. }. u1 x% x% o
语句 2;
, l: H* h" v: s3 z}
6 u W- l+ n( f0 I c当表达式为真时,执行语句 1,否则执行语句 2;其中 else 语句可以省略。 更复杂一点:, _9 T h. p1 m- X; g2 q
if()) I/ { W; K7 {# k/ L
{}
0 v% l/ n f, K( oelse if()) ~/ `% W' f9 L( ^( F7 u
{}
$ e) ~2 p; B7 \…
, v, b a+ L& h# celse2 X# L" {0 L, l3 L& h, K" L
{}
. A9 U; y |# D0 Z7 v- O% i$ I5 |; b( T% s
六、8*8 点阵 LED 编码、扫描方式6 A; z, S# h5 t& t
! Z" e# R$ o3 r% l5 S0 u
以下是数字 0 的编码
4 T- H1 }" c$ V/ V& T' i( m) B; \ b
, i. j* e9 M% k
与 8 段数码管编码一样,按行扫描,空白处是 0,显示为 1 |
|