580 likes | 764 Vues
第 4 章 MCS-51 输入输出接口. 4 .1 实 训 概 要 任何微型计算机与外部设备进行信息交换均由输入 / 输出接口电路(简称 I/O 接口)完成。 I/O 接口实质上就是计算机与外部设备之间起连接作用的逻辑控制器件,起桥梁和纽带作用。 I/O 接口中包含 I/O 端口。端口是在接口中存放各类信息的一组寄存器。这组寄存器通常分为三类:数据端口、状态端口和控制端口。 MCS-51 单片机有 4 个并行 I/O 端口,单片机通过这些端口与外设进行数据交换。. 实训内容: 闪烁灯控制。 开关状态的显示。 节日彩灯控制。 运算器电路。.
E N D
第4章 MCS-51输入输出接口 4 .1 实 训 概 要 任何微型计算机与外部设备进行信息交换均由输入/输出接口电路(简称I/O接口)完成。I/O接口实质上就是计算机与外部设备之间起连接作用的逻辑控制器件,起桥梁和纽带作用。I/O接口中包含I/O端口。端口是在接口中存放各类信息的一组寄存器。这组寄存器通常分为三类:数据端口、状态端口和控制端口。MCS-51单片机有4个并行I/O端口,单片机通过这些端口与外设进行数据交换。
实训内容: 闪烁灯控制。 开关状态的显示。 节日彩灯控制。 运算器电路。 预备知识: P0~P3口的功能 P0口 : P0口是双向I/O口,既可以作为通用I/O口使用,又可以分时作为地址/数据总线使用。当单片机系统需要扩展片外数据存储器或程序存储器时, P0 口
只能作地址/数据线,而不能再作通用I/O口使用。P0口作为地址/数据线使时,无需外接上拉电阻,作通用I/O口时,必须外接上拉电阻。只能作地址/数据线,而不能再作通用I/O口使用。P0口作为地址/数据线使时,无需外接上拉电阻,作通用I/O口时,必须外接上拉电阻。 P1口: P1口是一个准双向I/O口,它只能作为通用I/O口使用。准双向口是指当P1口作为输入口时,需要先向P1口锁存器写入“1”,然后读取P1口的输入信号。由于其内部已接有上拉电阻,使用时无需外接。
P2口: P2口既可以作为通用I/O口使用,也可作为地址线高8位。当作为一个通用I/O口且用于输入操作时,是一个准双向I/O口,不需外接上拉电阻。当系统扩展外部输入存储器时,只能作地址线高8位使用。 P3口 : P3口是一个准双向口。除可作为通用I/O口外,还具有第二功能。这主要包括:可以实现定时/计数控制、中断控制、串行口控制和外部数据存储器的读写控制。
P0~P3口的特点 • 功能不同。MCS-51单片机4个I/O口中,只有P1口具有单一功能,其它口都具有其它功能。 • 带负载能力不同。P0口每个引脚内部接有上拉场效应管,故每个引脚可驱动8个TTL,而P1口~P3口引脚内部只接有上拉电阻,只能驱动3个TTL。 • 复位状态相同。当系统复位后,P0~P3口均输出高电平。
4.2 实训13 闪烁灯控制 4.2.1 实训目的 通过本节实训,主要学习下面内容: MCS-51单片机I/O口的结构。 I/O端口的使用及编程方法。
4.2.2 实训要求 设计硬件电路,且编程控制,使接在P1.0引脚上的发光二极管不停地闪亮,亮灭的时间间隔为1秒。 手动开关控制接在P1.0引脚上的发光二极管闪亮。开关接在P1.7脚上。 4.2.3 硬件电路原理图 实训硬件电路如图4-1所示。
4.2.4 程序设计思路 1.输出发光二极管的控制 若接在P1.0端口的发光二极管为共阴极接法,当P1.0脚输出高电平,即P1.0=1时,发光二极管被点亮;若发光二极管为共阳极接法,则P1.0脚输出低电平则亮。我们可以使用SETBP1.0指令使P1.0端口输出高电平,使用CLRP1.0指令使P1.0端口输出低电平。发光二极管亮灭的时间可调用延时子程序控制。
2.延时子程序的设计方法 延时既可以通过软件实现,也可以通过定时/计数器进行定时控制。这里讨论软件延时。简单地说,计算机执行指令需要时间,若能通过循环,多次执行一些指令,将时间累加起来,就可以实现定时。作为单片机的指令的执行的时间是很短,数量为微秒级。因此,我们要求的闪烁时间间隔为1秒,相对于微秒来说,相差太大,可用循环实现。下面具体介绍其原理: 设单片机晶振为6MHz,则1个机器周期为2微秒。各指令的执行时间见表4-1所示。
内层循环的循环次数为100次,则累加时间为 1000μs=1ms,再循环250次,时间为250ms,第三重循环为4次,累计时间约为1s。 4.2.5 实训程序流程图 自动闪烁灯实训程序流程如图4-2所示。
开始 P1.0输出“1”点亮LED 延时1S P1.0输出“0”使LED熄灭 延时1S
4.2.6 实训程序 1.手控灯实训程序 手控灯实训程序见表4-2所示。
4.2.7 实训步骤 按电路原理图4-1连接电路。 将全部实训程序输入单片机开发系统中,并检查机器码是否正确。 为程序的每条指令加注释,填入实训程序表中。 输入第一个程序首地址1000H,用连续执行命令执行程序,并拨动手动开关,观察发光二极管亮灭变化情况。 输入第二个程序首地址2000H,用连续执行命令执行程序,观察发光二极管亮灭变化情况。
若通过P1.4脚控制发光二极管的亮灭,如何实现?若通过P1.4脚控制发光二极管的亮灭,如何实现? 若将延时时间变为0.2秒,如何修改程序? 若延时时间为半分钟呢?请用手表等计时工具验证时间。 提示: 编程控制发光二极管时,点亮或熄灭发光二极管与二极管的接法有关。 采用软件延时,延时子程序的定时时间不是非常精确,可采用定时/计数器定时。 由P1口直接连接发光二极管,其亮度较低,可增加三极管或74LS04、74LS07等驱动元件或电路,提高亮度,但要加限流电阻。
4.3 实训14 开关状态的显示 4.3.1 实训目的 通过本节实训,主要学习下面内容: MCS-51单片机I/O口的结构。 I/O端口的使用及程序控制方法。 判位转移指令在I/O接口电路中的应用。
4.3.2 实训要求 将单片机P1口某些位的状态通过发光二极管显示出来。设单片机的P1.0-P1.3连接四个发光二极管L1~L4,P1.4~P1.7连接四个开关K1~K4。编程将开关的状态反映到发光二极管亮灭上。即:开关闭合,对应的灯点亮,开关断开,对应的灯熄灭。 4.3.3 硬件电路原理图 实训硬件电路原理图如图4-3所示。
4.3.4 程序设计思路 通过指令将开关状态读入单片机中,并通过每个开关对应的发光二极管显示出来。可以采用判位转移指令JB或JNB来完成;也可以一次读入四路开关状态,用逻辑指令进行相应处理,然后送发光二极管显示。 编程时,要视具体硬件电路的结构而定。本电路发光二极管采用共阳接法。即:P1.0~P1.3为低电平时发光二极管点亮,高电平时熄灭。 4.3.5 实训程序 实训程序见表4-4所示。
4.3.6 实训器材 单片机开发系统、四个发光二极管、开关、电阻和导线等。 4.3.7 实训步骤 (1)按实训硬件电路图4-3连接电路。注意P1.0~P1.3接到发光二极管L1~L4上。P1.4~P1.7接到开关K1~K4上,顺序不能接错。即:开关K1~K4分别控制发光二极管L1~L4。
(2)仔细阅读并理解程序,画出程序流程图,并为每条指令加注释,填入实训程序表4-4中。(2)仔细阅读并理解程序,画出程序流程图,并为每条指令加注释,填入实训程序表4-4中。 (3)将程序机器码输入单片机中,并检查程序是否正确。 (4)输入程序首地址2000H,用连续执行命令执行程序。然后将开关按照表4-5顺序拨动,观察发光二极管的亮灭变化,填入表4-5中。
4.3.8 思考与讨论 已知程序见表4-6所示。按要求回答问题: 阅读程序,写出每条指令的注释。 查指令速查表,将程序翻译成机器语言。 使用图4-3硬件电路,将机器语言程序送入单片机执行,观察现象。
提示: 在实际连接电路时,连接时应连接一部分用万用电表测试一部分,以保证做独立系统时,电路能可靠工作。 做独立单片机系统时,通电后应先用示波器测试晶振是否工作。
4.4 实训15 节日彩灯控制 4.4.1 实训目的 通过本节实训,主要学习下面内容: I/O端口的使用及自动控制方法。 P1口的编程应用。 4.4.2 实训要求 设计一个节日彩灯电路,要求从两边向中间点亮,依次循环不止,亮灭时间为0.25秒。 4.4.3 硬件电路原理图 实训彩灯电路如图4-4所示。
4.4.4 程序设计思路 只要根据所设计的硬件电路,给P1口送入不同的二进制数,并延时即可达到控制P1口上发光二极管亮灭的目的。在电路原理图中,发光二极管采用共阴极接法,“1”亮,“0”灭。具体见表4-7所示。
4.4.5 实训器材 单片机开发系统、八个发光二极管和导线等。 4.4.6 实训步骤 (1)按实训硬件电路图4-4连接电路。发光二极管接成共阴极型,连接到P1口。 (2)仔细阅读并理解程序,画出程序流程图,并为每条指令加注释,填入实训程序表4-8中。
(3)将程序机器码输入单片机中,并检查程序是否正确。(3)将程序机器码输入单片机中,并检查程序是否正确。 (4)输入程序首地址2000H,用连续执行命令执行程序。观察发光二极管的亮灭变化,是否符合要求。 (5)若发光二极管接成共阳极型,试修改程序,并上机实践。 4.4.7 实训程序 节日彩灯实训程序见表4-8所示。
4.4.8 思考与讨论 (1)若要求彩灯从左到右一个一个循环点亮,试编制控制程序。 (2)若要求彩灯1、3、5、7同时点亮,延时后,2、4、6、8同时点亮,试编制控制程序。 (3)若要求彩灯从左第一个开始闪烁10次后,转移给下一个闪烁10次,循环不止,试编制控制程序。 (4)将各种不同点亮形式连接在一起,并能控制每一种点亮形式的闪烁次数,试编程实现。
提示: 编写软件延时程序时,必须考虑晶振频率。通常晶振频率为6MHz或12MHz。 编写控制循环次数的点亮形式时,可采用固定次数循环实现。通常使用DJNZ或CJNE指令。 当P1口所接彩灯不足以满足要求时,可考虑使用不可编程接口芯片或可编程接口芯片来扩展接口。
4.5 实训16 运算器电路 4.5.1 实训目的 通过本节实训,主要学习下面内容: I/O端口的使用及自动控制方法。 P1口的编程应用。
4.5.2实训要求 借助P1口上连接的发光二极管显示8032内部运算器的运算过程,以便完成两个8位二进制数各种运算,并将参加运算的操作数、运算结果和标志位的状态在发光二极管上以二进数的形式显示出来。 4.5.3 硬件电路原理图 运算器硬件电路如图4-5所示。
4.5.4 程序设计思路 实现两个8位二进制数运算,例如做加法,可设置四个时间段,间隔30秒。第一个时间段显示被加数,以二进制数形式在发光二极管上显示出来;第二时间段显示加数;第三时间段显示二者之和;最后显示标志寄存器PSW的值。之后,8个发光二极管同时闪动2次后从头开始。 4.5.5 实训器材 单片机开发系统、八个发光二极管和导线等。 4.5.6 实训程序 实训程序见表4-8所示。