当前位置:文档之家› 单片机原理及应用-C51语言

单片机原理及应用-C51语言


T
VCC 10K
RL=(5V1.75V0.45V)/ 10mA 取270Ω
P0口要加外 部上拉电阻
2019/10/30
3
多个LED
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
89S51
+VCC
阻排 1K×8
并口直接驱动
+VCC
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
//关闭蜂鸣器
d622us();
}
}
4.2 按键及键盘接口技术
4.2.1 独立按键接口 按键及其消抖
简单开关及输入接口
按键开关
拨动开关
ON 12 345 67 8
按键开关符号
拨动开关符号
80C51
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
开关闭合与断开时的抖动及去抖电路
判按下哪个键。先置列线C0为低电平,其余列线为 高电平,读行线状态,如行线状态不全为“1”,则 说明所按键在该列;否则所按键不在该列,再使C1列 线为低电平,其它列为高电平,判断C1列有无按键按 下。其余类推。
uchar DispBuf[4]; //显示数字要先送入此缓冲数组
void BufToSeg(void)
{ uchar i;
for(i = 0; i < 4; i++)
{ P0=SegCode[DispBuf[i]]; //送段码
P2=BitCode[i];
//送位码
DelayMs(1);
}
}
2019/10/30
2019/10/30
9
// 段码
【例4-2】部分代码
uchar code SegCode[] = // 段码 {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar code BitCode[]= {0xfe,0xfd,0xfb,0xf7}; // 位码
10
非常序相接时
P07 P06 P05 P04 P03 P02 P01 P00 b g c dp f d e a
g f com a b
P0.0
a
fgb
字形“1”常序编码: 06H
e
c
d
dp
P0.7
b g c dp f d e a
a
a
a
a

f g bf g bf g bf g b 阴
e d com c dp
4.1 LED、数码管及蜂鸣器接口技术
4.1.1 LED接口
LED的特性及其灌电流驱动 LED典型工作点:1.75V,10mA。单个LED驱动特性如下图:
Id
30mA
+ Id
Vd
- 1.85V
10mA 3mA
0
1.75V
1.65V
Vd
1V 2V
VCC
P1、P2、P3
R
口内部上拉电
阻约30K,P0
口没有
{
for (j = 400; j > 0; j--) //发声250ms
{
BEEP = ~BEEP; //取反及调用指令占用约3us
d622us(); //共延时625us,周期1250us,频率800Hz
}
for (j = 400*4; j > 0; j--) //静音1000ms
{
BEEP = 1;
键号
E
R3 C0 C1 C2 C3
P1.0 P1.1 P1.2 P1.3
P1.4
P0.0 P0.1
P0.2 P0.3 P0.4
P0.5 P0.6
P0.7
P1.5
P1.6
P1.7 89S51
a
com
+5V
b c
100Ω
d e
f g
dp
共阳极
2019/10/30
16
判有无键按下。将列线设置为输出口,输出全0 (所有列线为低电平),然后读行线状态,若行线状 态不全为高电平,则可断定有键按下。
89S51
阻排 1K×8
ULN2003 L1 P2.1
限流与上拉电阻共享驱动
【例4-1】
+VCC
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
89S51
阻排 1K×8
ULN2003 L1 P2.1
void main(void) {
uchar i; P21 = 1; while(1) {
P2.5 P2.4P2.3 P2.2
void BufToSeg(void)不变!
4.1.3 蜂鸣器接口
蜂鸣器及其接口
有源蜂鸣器:接额定电压就可连续发声 无源蜂鸣器:接入变频方波,可得到不同音调的声音
2019/10/30
12
例:以频率800Hz发声,发声时间250ms,静音1000ms。
while (1)
字形“1”该序编码: A0H
e
ce
ce
ce
c
d
d
d
d

dp
dp
dp
dp




L3
L4
L5
L2
L5 L4 L3 L2
uchar code SegCode[] = {0xAF,0xA0,0xC7,0xE5}; uchar code BitCode[]=
ULN2003 {0x04,0x20,0x10,0x08};
for(i=0;i<8;i++) {
DataPort= ScanCode[i]; DelayMs(500); } } }
2019/10/30
5
4.1.2 数码管接口 数码管
g f com a b
a
fgb
e
c
d
dp
e d com c dp
dp g f e d c b a
com
com
dp g f e d c b a
2019/10/30
6
晶体三极管驱动
共阳极
2019/10/30
7
达林顿阵列驱动
共阴极
2019/10/30
8
常序相接时
共阴极字形“1” 编码示例:06H
dp g f e d c b a
00 0 0 0 1 1 0
g f com a b
a
fgb
e
c
d
dp
e d com c dp
uchar code SegCode[] = {0x3F,0x06,0x5B,0x4F};
按键较少时:去抖电路
理想波形
实际波形
按下抖动
稳定闭合
释放抖动
+5V
A B

有抖动
按键较多时:软件延时,通常为10ms
无抖动
按下时 未按时
2019/10/30
15
4.2.2 键盘接口 矩阵键盘接口电路
逐行扫描法
行首号
+5V
5.1K×4 0 1 2 3
4567
R0
8 9 AB
R1
C D E F R2
第4章 80C51人机接口技术
4.1 LED、数码管及蜂鸣器接口技术 4.2 按键及键盘接口技术 4.3 字符型LCD显示器接口技术
2019/10/30
1
按键 键盘 开关
单片机 最小系统 AT89S52
LED 数码管 蜂鸣器 LCD
每根口线最大可吸收10mA的(灌)电流 P0口吸收电流的总和不能超过26mA P1、P2和P3每个口吸收电流的总和限制在15mA 4个口所有口线的吸收电流总和限制在71mA
相关主题