-
1
)
二极管
导通电流
I
:
3mA-10mA
;
导通压降
v
:
1.7V
。
(
排阻计算公式:
R =
VCC(5V)-v(1.7V)/I(3mA)
)
。
2
)
电源指示灯
开关电源:
内部有开关控制电流大小,不稳定。
去耦电容:
稳压,去波。
3
)
锁存器
(
74HC573
)
OE
:
OutEnable
,
低电平有效(必须为低电平)
。
输入
端:
OE
(
1
)
,
LE(11
锁存端
diola)
,
D
(
D0(2)-D7(9)
,一般接
P1^0-P
1^7
)
。
输出端:
Q
(
1Q-8Q
)
。
Z
< br>:
高阻状态,非高非低电瓶。
LE
:
为高时,
Q
端与
D
同变换;为低电平时,
Q<
/p>
端保持上次状态。
sbit
LED00 = 0x80;
//
位指针;指针大小占一个字节;指针控制一个位的值;
sfr
LED0 = 0x80;
//
字节
指针;指针大小占一个字节;指针控制一个字节的值;
4
)
51<
/p>
库函数
头文件:
#include
函数:
unsigned char _crol_(unsigned char
c,
unsigned char
b);
描述:
The _crol_
routine rotates the bit pattern for the character
c left b bits. This
routine is
implemented as an intrinsic function. The _crol_
routine returns the
rotated value
of
c.
5)
蜂鸣器
名称:
b:
基极;
C:
集电极;
e:
发射集;
原理:
e<
/p>
极发射电子;
当
b
极接低电平时,
ce
导通,
并且放大
电流;
当
b
接高电平时,
ce
截止。
JPFMQ<
/p>
接
P3.6
管脚。
分类:有源蜂鸣器;无缘蜂鸣器。
(源:
< br>震荡源)
Proteus
:<
/p>
buzzer-
有源;
sounder<
/p>
、
speaker-
无源。
端口电压:
< br>0.02v
。
6)
数码管
P0
管脚:
没有上拉电阻,所有有三态。
P1
、
P2
、
P3
管脚:
有上拉电阻,没有
三态。<
/p>
分类:
共阴极;共阳极。
显示方法:
静态,动态。
段选:
P0.0-P0.7
。
位选:
P2.0-P2.7
。
7)
继电器
接口:
P3.7
。
< br>D4:
引流二极管,防止断电烧坏电炉
原件。
8
)独立键盘
K1-K4
:
P3.2-P3.5
。
K5-K8
:
P1.4-P1.7
。
独立键盘检测程序:
#include
void
main
()
{
while
(
1
)
{
if
(
K1
==
0
)
{
delay
(
20
);
//
大约延时
10-20
ms
if
(
K1
==
0
)
{
< br>//
确独立按键
K1
按下
}
}
while
(!
K1
);
//
确认为一次动作
}
}
p>
9
)
4*4
矩阵键
盘
行线:
P1.0-P1.3
。
竖线:
P1.4
-P1.7
。
优点:
占用端口少,硬件电
路简单。
缺点:
编程较复杂。
矩阵键盘的检测方法:
扫描
法和线反转法。
程序实例:
1)
扫描法
#include
#define uchar
unsigned char
#define uint unsigned int
uchar i
,
< br>j
,
temp_num
,
num
=
16
;
uchar code
scan
[]
=
{
0xf
e
,
0xfd
,
0xfb
,
0xf7
};
//1111 1110 - 1111 0111
uchar
code coding
[][
4
]<
/p>
=
{
//
扫描码
0xee
,
0xde
,
0xbe
,
0x7e
,
0xed
,
0xdd
,
0xbd
,
0x7d
< br>,
0xeb
,
0xdb
,
0xbb
,
0x7b
,
p>
0xe7
,
0x
d7
,
0xb7
,
0x77
};
uchar code
num_code
[]
=
{
0x
c0
,
0xf9
,
0xa4
,
0xb0
,
//
数码管
0-16
编码
0x99
,
0x92
,
0x82
,
0xf8
,
0x80
,
0x90
,
0x8
8
,
0x83
,
0xc6
,
0xa1
,
0x86
,
0x8e
p>
,
0xfe
};
void
delay
(
uint
k
)
//
延迟函数
{
uint data
i
,
j
;
for
(
i
=
0
;
i
<
k
;
i
++)
{
for
(
j
=
0
;
j
<
p>
180
;
j
++)
{;}}
}
void
main
()
{
P1
=
0xff
;
while
(
1
)
{
P1
=
0xf0
;
if
(
0xf0
!=
P1
)
//
第一次检测
{
// delay(20);
//
消抖
// P1 = 0xf0;
//
第二次检测
// if(0xf0 !=
P1)//
实践证明不必消抖也是可以的
// {
temp_num
=
num
;
for
(
i
=
0
;
i
<
4
;
i
p>
++)
{
P1
=
scan
[
i
];
for
(
j
=
0
;
j
<
4
;
j
++)
{
< br>if
(
coding
[
i
][
j
]
==
P1
)
{
num
=
4
*
i
+
j
;
break
;
}
if
(
num
!=
temp_num
)
break
;
}
}
//}
P1
=
0xf0
;
while
(
0xf0
!=
P1
);
//
防止多次检测
}
P0
=
num_code
[
num
];
P2
=
0x7F
;
}
}
2)
线反转法
#include
#define uchar
unsigned char
#define uint unsigned int
sbit P37
=
P3
^
7
;
//
继电器接口
uchar code
coding
[]
=
{
0xee
,
0xde
,
0xbe
,
0x7e
,
0xed
,
0xdd
,
0xbd
,
0x7d
,
0xeb
,
0xdb
,
0xbb
,
0x7b
,
p>
0xe7
,
0xd7
,
0xb7
,
0x77
};
uchar code
num_code
[]
=
{
0xc
0
,
0xf9
,
0xa4
,
0xb0
,
0x99
,
0x92
,
0x82
,
0xf8
,
0x80
,
0x90
,
0x88
,
0x83
,
0xc6
,
0xa1
,
0x86
,
0x8e
,
0xfe
};
uchar Key
=
16
;
//
表示按键编号
void
delay
(
uint
m
)
{
uint k
;
while
(--
m
)
{
for
(
k
=
0
;
k
p>
<
180
;
k
p>
++);
}
}
-
-
-
-
-
-
-
-
-
上一篇:描写春夏秋冬的词语大全
下一篇:潜心钻研