任务引入
在我们给手机充电时,看到指示灯亮,当我们的手机充满电时,充电指示灯自动熄灭;当我们开空调时,指示灯亮给我们提示压缩机工作,当室内温度到达设定温度时,压缩机指示灯自动熄灭;当我们用电饭煲做饭时,加热工作灯提示,当处于保温状态时,加热指示灯自动熄灭。它们的实现不但有相关的硬件支持,也是通过单片机软件控制实现的,如何控制LED灯的亮或灭呢?今天我们一起解开这魔幻奥秘吧!
任务目标
知识目标:1.熟悉十进制、二进制、十六进制、八进制等计数方式和相互转换。
2.掌握发光二极管工作原理和检测方法。
3.了解单片机各个接口工作特性。
4.掌握单片机亮(灭)的相关指令。
技能目标:1.能使用相关仪表检测应用元器件的性能。
2.会各电子元器件的焊接方法。
3.能编写单灯亮(灭)的程序。
4.会调试单片机。
情感目标:1.在制作任务过程中养成严谨的工作态度。
2.在任务实施过程中加强沟通,团队合作。
任务描述
1.利用开发板,设计单灯控制程序,绘制单灯控制流程图。
2.对单灯控制电路相关元器件进行检测和安装,并完成联机调试,如图2-2所示。
图2-2 单灯控制电路实物图
任务实施
一、任务分析
本任务要求编写程序,并下载到开发板单片机中,完成对LED灯亮(灭)控制。本任务利用510Ω电阻限制发光二极管电流,P2.0输出信号控制LED亮(灭)。
二、画程序流程图
图2-3 程序流程图
根据任务画出程序流程图,如图2-3所示。
三、编写程序
根据流程图和相关指令编写程序。
四、硬件制作
1.器材准备
单个LED亮(灭)电路是AT89S52单片机的控制较为简单的电路,它包含有:基本电路、单灯工作电路。
1)元器件表如表2-1所示。
表2-1 元器件表
2)单灯控制电路如图2-4所示。
图2-4 单灯控制电路
2.工具准备
安装基本电路的焊接工具有:电烙铁、镊子、焊锡、松香等,如图1-58所示。
3.制作要求
(1)按元器件表清点所需安装元器件
(2)检测所有元器件的特性、好坏
(3)焊接要求
1)焊接元件整体美观、分布均匀、焊接过程先焊接大件,再焊接小件。
2)焊接过程中严格按照电路施工,注重电源的正负极。
3)要求焊接的焊点光滑、饱满、无毛刺,导电性能良好。
4)焊接整体应居中部以底座分布,为以后的电路焊接调试预留布置地方。
4.电路安装
五、联机调试
1)将编写程序输入Keil中,进行程序检查,编译及下载。
2)将hex文件通过双龙下载器烧入单片机并调试。
知识链接
一、数制的转换
(1)各种进制
数制:用一组固定的数字、一套统一的规则表示数的进位制,叫数制。例如:X进制,逢X进一。
种类:十进制、二进制、十六进制、八进制等。
1)十进制
十进制:逢十进一。
基数:0、1、2、3、4、5、6、7、8、9。
2)二进制
二进制:逢二进一。
基数:0、1。
3)十六进制
十六进制:逢十六进一。
基数:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
4)八进制
八进制:逢八进一。
基数:0、1、2、3、4、5、6、7。
(2)二进制使用
在单片机中,广泛采用的是只有“0”和“1”两个基本符号组成的二进制数,而不使用人们习惯的十进制数,原因如下。
1)二进制数在物理上最容易实现。例如,可以只用高、低两个电平表示“1”和“0”,也可以用脉冲的有无或者脉冲的正负极性表示它们。
2)二进制数用来表示的二进制数的编码、计数、加减运算规则简单。
3)二进制数的两个符号“1”和“0”正好与逻辑命题的两个值“是”和“否”或称“真”和“假”相对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利的条件。
(3)八进制数和十六进制数的使用
二进制数书写冗长、易错、难记,而十进制数与二进制数之间的转换过程复杂,所以一般用十六进制数或八进制数作为二进制数的缩写。而在单片机中,最常用的就是十六进制数。
(4)认识各种数制的关系
各种数制的关系如表2-2所示。
表2-2 各种数制的关系
(5)进制的转换
1)二进制数转换为十进制数。
2)八进制数转换为十进制数。
3)十六进制数转换为十进制数。
4)十进制数转换为二进制数。除二取余,先余为低,后余为高。
5)十进制数转换为十六进制数。除十六取余,先余为低,后余为高。
(www.daowen.com)
6)二进制数与八进制数间的转换。例如,把(10100101.01011101)2转换为八进制数。
由于八进制的1位数相当于二进制的3位数,所以只要将二进制数从小数点开始,整数部分从右向左每3位数一组,小数部分从左向右每3位数一组,最后不足3位补零(无论向左还是向右)。
7)二进制数与十六进制数间的转换。由于十六进制的1位数相当于二进制的4位数,所以只要将二进制数从小数点开始,整数部分从右向左每4位数一组,小数部分从左向右每4位数一组,最后不足4位补零(无论向左还是向右)。
二、单片机的I/O口
AT89S52共有32条并行双向I/O口,分成4组输入/输出端口,分别记作P0、P1、P2和P3。每个端口均由数据输入缓冲器、数据输出驱动及锁存器等组成。4个端口在结构和特性上是基本相同的,但是又各有特点。
1.P0
P0口为8位、可寻址的I/O端口,以AT89S52为例,P0口分8个引脚单元及8位,分别表示P0.1~P0.7,如图2-5a所示为P0口某位内部电路结构,电路中包含有一个数据输出锁存器、两个三态数据输入缓冲器、一个数据输出的驱动电路和一个输出控制电路。当对P0口进行写操作时,由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。
当P0口作为一般的I/O输出时,由于输出电路是漏极开路电路,因此必须外接1kΩ上拉电阻才能有高电平输出;当P0口作为一般的I/O输入时,必须先向电路中的锁存器写入1,使FET截止,以避免锁存器为0状态时对引脚读入的干扰。
图2-5 P0~P3口内部电路结构
2.P1
P1口是一个准双向口,通常作为通用I/O口使用,在电路结构上要比P0简单,当它作为输出口使用时,能向外提供推拉电流而无需外接上拉电阻;当它作为输入口使用时,同样也需要向锁存器写入1,使输出驱动电路的FET截止,P1口某位内部电路结构如图2-5b所示。
3.P2
P2口也是一个准双向口,如图2-5c所示,可以作为通用I/O口使用。由于P2口有时要作为地址线使用,因此它比P1口多了一个多路开关MUX。当它作为高位地址线使用时,MUX接通地址信号;当它作为通用I/O口使用时,MUX接通锁存器,使内部总线与其接通。当它作为输出口使用时,无须外接上拉电阻;作为输入口使用时,应区分读引脚和读锁存器。读引脚时,应先向锁存器写1。
4.P3
P3口是一个双功能口,如图2-5d所示,也是一个准双向口,既可以作为通用I/O口使用,又具有第二功能。当P3口作为通用输出口时,第二功能输出应保持高电平,与非门开通,数据可顺利地从锁存器到输出端引脚上。当作为第二功能信号输出时,该位的锁存器Q端应置1,使与门对第二功能信号的输出打开,从而实现第二功能信号的输出。当P3口作为通用输入口,或第二功能输入的信号引脚使用时,输出电路的锁存器Q端和第二功能输出信号线都应置1。当P3口的某些端口线作为第二功能用时,就不能再作为通用I/O口使用了,其他未使用的端口线仍可作为通用I/O端口使用。相反,若P3口作为通用I/O口使用,就不能再作为第二功能使用了。P3口第二功能如表2-3所示。
表2-3 P3口第二功能
三、LED灯
发光二极管(LED)是由镓(Ga)与砷(As)、磷(P)的化合物制成的二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,当电子与空穴复合时能辐射出可见光,把电能转化成光能。
发光二极管与普通二极管一样是由一个PN结组成的,也具有单向导电性。当给发光二极管的A极(阳极)、K极(阴极)加上正向电压后,产生荧光。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。LED的实物图及符号如图2-6所示。
图2-6 LED的实物图及符号
LED耗电非常低,一般来说LED的工作电压是2~3.6V,工作电流是0.02~0.03A。这就是说它消耗的电不超过0.1W。在恰当的电流和电压下,LED的使用寿命可达10万小时。并具有高亮度、低热量特点,在工业、民用、市政中广泛使用。
随着流过LED的电流的增加,LED的亮度也会增加,但LED的寿命也会相应缩短,因此电流以10~20mA为宜。MCS-51系列单片机的I/O口都是漏极开路的输出,想从P1、P2和P3流出10~20mA的电流会比较困难,但如果从外面流入单片机的I/O口,电流就可以大些。根据单片机的内部工作控制特性,P1、P2、P3口外部连接LED时,LED应连接电源的正极,而不接电源的负极。这样能更有效控制LED。但特别注意在用P0口控制LED时,应外接上拉电阻,LED控制示意图如图2-7所示。
图2-7 LED控制示意图
四、指令介绍
MCS-51系列单片机共有111条汇编指令,其中数据传送指令28条,算数运算指令24条,逻辑运算指令25条,控制转移类22条,位操作指令12条。它们都有与之相对应的机器码,并由机器在汇编时翻译成目标代码,以供CPU执行,除此之外,还定义了8条伪指令。伪指令和CPU可执行指令的形式类似,但不参加汇编的机器代码的生成,因此伪指令不被CPU执行,在汇编和机器代码执行中起着控制信息作用。MCS-51系列单片机指令的格式由标号操作码、操作数、注释字段组成,格式如下:
【标号:】操作码 【第一操作数】,【第二操作数】,【第三操作数】;【注释】
标号——表示该指令位置的符号地址,它是以英文字母开始或数字组成的字符串。通常在程序的分支程序或转移程序的目的地址处标出,其他地方可省略。
操作码——表示指令执行意义,如加、减、乘、除、传递等,是指令的核心部分。
操作数——表示操作码执行的具体数据或内容。
注释——指令功能的文字解释。
例如:LOOP:MOV R0,00H;将00H地址的内容传送到R0寄存器中。
MCS-51系列单片机常用符号标识:
A——累加器A为8位寄存器,是常用的专用寄存器,它既可以存储数据,也可以存放中间运算结果。在指令运行中,还可以用作中间数据转递或中转站。
B——寄存器B为8位寄存器,是专门为数据的乘或除来放置乘数和被除数的,在计算完成后放置乘数的高8位或除后的余数。同时也可以作普通寄存器使用。
Ri——工作寄存器,即R0,R1。数据运算时作间接寻址时存放地址。
Rn——工作寄存器,即R0,R7。数据运算时存储数据或控制程序时用到。
Direct——内部ROM地址,表示ROM中00H~FFH中的某一个地址。
#data——8位立即数,表示一个数据。
PC——16位程序寄存器,存放程序执行的下一条指令的地址。
DPTR——16位数据寄存器,通常用于存放间接寻址的地址。
1.起始地址伪指令ORG
伪指令不是单片机本身的操作指令,不会命令单片机进行任何操作,从而不影响程序的执行,仅仅是用来帮助进行汇编或编辑程序时指示紧后程序放置地址。ORG主要用来指定程序或数据的起始地址,起指示作用。
ORG0030H表示的意义是:紧后指令MOVA,56H及以后的程序存放的地址从0030H单元开始。
2.汇编结束伪指令END
用于汇编语言源程序末尾,指示源程序到此结束。在机器汇编时,放置在END后的程序指令不会被编译,即不会被执行。所以,END必须放置在整个程序的结尾。
3.置位指令SETB
指令功能:内部RAM可寻址位或专用寄存器指定位置位;操作针对二进制数的一位。
指令格式:SETB bit;bit←1。
例如:SETBP1.0功能是将P1.0,即P1口第1引脚置位(高电平)。不管P1.0原来是什么状态,执行该指令后,P1.0=1。
4.清零指令CLR(与SETB相对应)
指令功能:内部RAM可寻址位或专用寄存器指定位复位;操作可针对二进制数的一位。但也可针对累加器A。
指令格式:CLR bit; bit←0。
例如:CLRP1.0功能是将P1.0,即P1口第1引脚复位(低电平)。不管P1.0原来是什么状态,执行该指令后,P1.0=0。
5.数据传输指令MOV(内部数据传输指令)
指令功能:它是指令中最基本、最重要的指令,承担存储空间中相互数据的传递,相当于计算机应用中的复制功能。指令中把源操作数(右边操作数)中的数据传送到目的操作数(左边操作数)中区,而源操作数中的内容不会改变。
指令格式:MOV 操作数1,操作数2;操作数1←操作数2。
例如:MOVA,20H功能是将内部数据寄存器地址为20H内的数据传送到累加器A中,如图2-8所示。
图2-8 MOV指令示意图
6.无条件转移指令
指令功能:无条件转移指令的功能是当程序碰到该指令时,无条件的转移到该指令提供的地址去。
(1)长转移指令LJMP adde16
例如:LJMP KK1功能是执行该指令后,将KK1地址装入PC中,程序下一条指令就执行KK1为地址的程序指令。KK1可代表转移地址范围0000H~FFFFH即64KB存储空间单元。
(2)短转移指令AJMPadde11
例如:AJMP KK1功能是执行该指令后,将KK1地址装入PC中,程序下一条指令就执行KK1为地址的程序指令。KK1可代表转移地址范围0000H~07FFH即2KB存储空间单元。
(3)相对转移指令SJMPrel
例如:SJMP KK1功能是执行该指令后,将KK1地址装入PC中,程序下一条指令就执行KK1为地址的程序指令。KK1可代表转移地址范围00H~FFH即256B存储空间单元。
说明:绝对转移指令后地址通常不给出具体地址,一般用字母和数字表示转移到的指令地址号。
五、程序设计步骤
单片机不仅需要硬件电路,也需要软件设计,才能按照要求工作。所以在硬件电路安装完成后,必须进行软件设计及调试。
1.程序设计步骤
1)分析任务,确定设计思路和程序算法。
2)制定合理的程序流程图。
3)根据流程图编写程序。
4)调试、优化程序。
2.流程图表示
流程图是设计人员的设计思路的体现,也是编写程序的依据,是对设计题目内容的具体化和明确化,是设计程序的必经过程。
流程图的符号及意义如表2-4所示。
表2-4 流程图的符号及意义
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。