内容正文:
项目2 霓虹灯控制系统
任务2.1 LED指示灯
明确任务
在日常生活中,经常看到有些电器上带有LED指示灯有节奏的闪动,通过LED灯可以指示电器工作状态。制作一个单片机控制的LED指示灯,实现最简单的亮灭功能。要完成任务,必须知道LED与单片机接口驱动方式,怎么让单片机动起来。
任务:设计制作一个LED灯的闪烁控制。
一 单片机最小系统概念
思考:1、人类要活着必须具备什么条件?
2、个人电脑要想能工作必须具备什么条件?
人活着
躯体
活的血液
跳动的心脏
运行的大脑
个人电脑
CPU
显示、键盘
电源
存储设备
主板
知识链接
单片机最小系统,指利用单片机内部资源和最小的外部扩展构成一个真正可用的单片机最小配置系统。
思考:
那么单片机要能工作必须具备什么最基本的条件呢?
回顾:AT89S51单片机引脚
(1)电源引脚 Vcc(40)、GND(20)
(2)并行口
P0.0—P0.7(39-32)P1.0—P1.7(1-8)
P2.0—P2.7(21-28)P3.0—P3.7(10-17)
(3)时钟电路引脚
XTAL1 (19)、XTAL2 (18);
(4)控制信号引脚
RST(9) 、ALE(30)、PSEN(29)、EA(3l)。
1、 51单片机(AT89S51)电源
采用直流5V电源,范围4-5.5V
连接引脚40脚VCC(+5V)、20脚GND
通常采用电源芯片7805来实现
2 时钟电路
时钟电路
为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一的时序脉冲的驱动下的进行的。
在晶振引脚XTAL1(19脚)和XTAL2(18脚)引脚之间接入一个晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般在几十皮法,如30PF。
采用内部振荡器
外部振荡信号可以直接接入XTAL1或XTAL2端。通常XTAL1脚接地,XTAL2脚接片外振荡信号,需接一个5.1K的上拉电阻。
时钟电路选择:
因为单片机系统基本都是独立工作系统,大多数情况下选择内部振荡器模式。
采用外部振荡器
3 复位电路
思考:
当个人电脑或手机,出现死机或是程序跑飞不能正常工作的时候,我们一般都怎么处理?处理之后电脑或手机会怎么工作?
复位电路作用:
在复位时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。
单片机复位要求:
单片机在启动或重新运行时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位电路有:
上电复位和手动按钮复位。
上电复位
手动按钮复位
系统复位后PC=0000H,单片机的CPU执行第一条取自程序存储器的0000H开始的单元。大多数SFR都为0。SP和P0—P3除外。不影响RAM。
寄存器 初始状态值 寄存器 初始状态值
PC 0000H TMOD 00H
ACC 00H TCON 00H
B 00H TH0 00H
PSW 00H TL0 00H
SP 07H TH1 00H
DPTR 0000H TL1 00H
P0--P3 0FFH SCON 00H
IP XXX00000B PCON 0XX00000B
IE 0XX00000B SBUF 不定
4 存储系统配置
EA/VPP(31脚)为内外程序存储器选择控制引脚
当EA为低电位时,单片机从外部程序存储器取指令;
当EA接高电平时,单片机从内部程序存储器取指令。
对于8051/8751系列单片机内部有程序存储器(4KB),一般EA引脚接高电平;
对于8031单片机,因为其内部无程序存储器,EA引脚必须接地,以便选择外部程序存储器。
注意:EA引脚必须接到高低平或是低电平,绝不能悬空。
51系列单片机最小系统图
二 端口结构
AT89S51单片机有4个8位并行I/O端口,称为P0、P1、P2和P3口,每个端口都各有8条I/O口线,每条I/O口线都能独立用作输入或输出。
P0口既可作地址/数据总线使用,也可作通用I/O口使用。
通用I/O口时
P0口作输出口使用时,必须外接上拉电阻,才有高电平输出
P0口作输入口读引脚时,应先向锁存器写1,使T2截止。
P1口仅作通用I/O口。输出端接有上拉电阻。
当作输入口时,必须先向锁存器写“1”,使场效应管T截止。
P2口可以做普通IO口和地址线高8位输出。
普通IO口用时,当作输入口时,必须先向锁存器写“1”;
地址线高8位用时,只做输出传输地址。
P3口可以做普通IO口和第二功能口。
普通IO口用时,当作输入口时,必须先向锁存器写“1”;
第二功能口分为串口、中断、计数、读写控制功能。
引脚 第二功能 功能说明
P3.0 RXD 串行口输入
P3.1 TXD 串行口输出
P3.2 /INT0 外部中断0输入
P3.3 /INTI 外部中断1输入
P3.4 T0 定时器/计数器0计数输入
P3.5 T1 定时器/计数器1计数输入
P3.6 /WR 片外RAM写选通信号(输出)
P3.7 /RD 片外RAM读选通信号(输出)
I/O端口
P0:作普通I/O口用,需要硬件要加上拉电阻,软件读取时 需要先写“1”操作;
地址低8位与数据线分时使用。
P1:硬件上直接应用,软件上同P0口。
P2:普通I/O应用同P0口;
地址高8位输出口。
P3:普通I/O应用同P0、P1口;
第二功能。
三 发给二极管工作原理
单片机端口输出电流较弱直接驱动LED,发光太暗。所以一般都采用低电平驱动方式,即单片机端口输出0时,LED灯亮,输出1时LED灯灭。
单片机不提供能量,提高带负载能力。限流电阻选择510Ω左右。
四、软件设计与编程实现
1、一个LED灯亮
2、一个LED灯灭
3、一个LED闪烁
#include<at89x51.h> // 包含头文件
sbit LED=P1^0; //定义LED灯控制脚
void main(void) //主函数
{
LED=0; //引脚腿低电位有效,小灯亮。
}
sbit 位变量名=特殊功能寄存器名^位的位置;
LED=1; //引脚腿高电位,小灯灭。
void main(void) //主函数
{
LED=0; //小灯亮。
LED=1; //小灯灭。
}
两个问题: ①循环亮灭 ②延时停顿
C51常用循环语句
三种循环语句while语句、do-while语句和for语句。
(1)while语句
格式如下:
while(表达式)
循环体语句;
执行过程:在执行while时,先对表达式进行判断,若其值为真(非0),则执行循环体内语句;否则跳过循环体,转而执行该结构后面的语句。在进入循环体之后,每执行完一次循环体语句后,都对判断表达式进行一次计算和判断。当发现判断表达式的值为0时,立即退出循环。
特点是先判断条件,后执行循环体。
void main(void)
{
while(1)
{
LED=0; //小灯亮
LED=1; //小灯灭
}
}
格式:
for(初始化表达式;判断表达式;修正表达式)
循环体语句;
执行过程:
①首先执行表达式1,整个循序只执行一次。
②执行表达式2,若表达式2的值为真,则执行循环体中语句,然后执行表达式3的操作,如果表达式2为假,退出for循环。
③执行表达式3后,转到执行第②步。
(2)for语句
在一个循环的循环体内又包含另外一个完整的循环称为循环嵌套。循环嵌套可以多层,但是每一层在逻辑上必须是完整的。各层循环变量不能相同,不能交叉,只能从内层循环到外层循环。
unsigned char i; //定义局部变量for(i=0;i<200;i++);
unsigned char i, j; //定义局部变量for(i=0;i<200;i++)
for(j=0;j<200;j++);
//如果在后面加上;又有什么区别?
任务实施
1.学生分组,制定方案。
2.查阅资料,设计电路原理图,列出元件清单。
3.准备元件及工具,搭接电路。
4.注意安全。
评价总结
1.学生根据自己实施情况填写任务实施评价单。
2.组间互评,提出问题,解决问题。
3.回收元件及工具,清洁实施现场,6S标准。
4.知识整理总结。
2
1
P0.X引脚
读引脚
读锁存器
写锁存器
内部总线
VCC
控制信号C
地址/数据
锁存器
T2
T1
&
MUX
Q
Q
CP
D
1
2
1
P1.X引脚
读引脚
读锁存器
写锁存器
内部总线
VCC
锁存器
T
Q
Q
CP
D
2
1
P2.X引脚
VCC
T
读引脚
读锁存器
写锁存器
内部总线
控制信号C
地址
锁存器
1
MUX
Q
Q
CP
D
3
W
2
1
第二功能输入
P3.X引脚
VCC
T
读引脚
读锁存器
写锁存器
内部总线
第二功能输出
锁存器
&
Q
Q
CP
D
$$