版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务7用单片机和可编程并行接口控制交通灯教学导航任务单任务准备案例示范知识梳理与总结任务作业教学导航教知识重点(1)外部总线结构、锁存器、总线驱动器(2)存储器芯片结构及存储器的扩展(3)8255A结构及工作方式、控制字的设置知识难点存储器扩展芯片地址确定、8255A工作方式的应用推荐教学方式以任务入手,通过8255A控制交通灯系统这一任务的实现,让读者掌握单片机输入/输出口扩展、存储器扩展、8255A的应用。建议学时8学时学推荐学习方法通过硬件电路设计及制作、软件编程、仿真调试与系统运行,理解相关理论知识,学会应用。必须掌握的理论知识(1)外部总线结构、锁存器、总线驱动器(2)存储器芯片结构及存储器扩展的方法(3)扩展的存储器芯片地址范围的确定(4)8255A结构及工作方式、控制字的设置必须掌握的技能(1)利用相关芯片扩展I/O口及存储器扩展技术;(2)8255A三种工作方式的应用[任务单]任务描述用8255做输出口,控制十二个发光二极管亮灭,模拟交通灯系统。初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车;延时20s,东西路口的绿灯闪烁3次后熄灭,黄灯亮3s后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车;南北路口的绿灯闪烁3次后熄灭,黄灯亮3s后,再切换到南北路口红灯亮,东西路口的绿灯亮,东西方向通车;之后重复以上过程。任务要求1、自行设计利用8255做输出口连接十二个发光二极管实现交通灯功能的电路图;2、按上述设计的电路图设计交通灯控制系统程序。实现方法(1)利用Proteus仿真软件对设计的电路及程序进行调试;(2)绘制电路板,焊接元件;(3)硬件仿真,烧录程序。任务准备7.1单片机简单I/O扩展7.2存储器的扩展7.38255A可编程并行I/O接口7.1MCS-51单片机的简单扩展7.1.1外部总线结构地址锁存器A15~A8A7~A0D7~D0数据总线DB控制总线CB并行串行中断输入计数脉冲复位RXDTXDINT0INT1T0T1RESETP1P2P0ALEWRRDPSENEA8051地址总线AB7.1.1外部总线结构1.地址总线传送存储单元或外设的地址P0口低8位地址总线(一般需要加一级锁存器)P2口高8位地址总线2.数据总线P0提供数据线,传送数据、指令和信息P0口分时复用的双向数据总线和低8位地址总线3.控制总线3.控制总线用来传送各种控制信息/:片外数据存储器RAM和外设接口的读写控制信号。PSEN:片外程序存储器的读控制;ALE:地址锁存控制;下降沿锁存P0口的低8位地址EA:片内/片外程序存储器选择信号,EA=0时,只访问外部程序存储器7.1.2地址锁存器和总线驱动器1.地址锁存器带三态缓冲输出:74LS373、8282带清除端:74LS273D0D1D2D3D4D5D6D7LEOEQ0Q1Q2Q3Q4Q5Q6Q774LS373347813141718112569121516191ALED0D1D2D3D4D5D6D7STBOEQ0Q1Q2Q3Q4Q5Q6Q78282123456781191918171615141312VCCGND1020D0D1D2D3D4D5D6D7CLKCLRQ0Q1Q2Q3Q4Q5Q6Q774LS2733478131417181112569121516191ALE10kΩ74LS373功能表8282的功能表和74LS373相似,表中的G端和8282的STB端对应输入输出OELEDQLHHHLHLLLL×Q不变H××高阻态74LS273功能表74LS273只有清除端为高电平才具锁存功能,锁存器控制为CLK,上升沿锁存数据。单片机ALE(下降沿锁存地址)引脚需接反相器输入输出CLRCLKDQL××LH↑HHH↑LLHL×Q不变2.总线驱动器当单片机外接芯片较多,超出总线负载能力,必须加总线驱动器。驱动器可增强单片机对外围接口电路的驱动能力,而且可以起到对负载波动的隔离作用根据驱动的方向可分为单向总线驱动器和双向总线驱动器
单向驱动器74LS244、74LS241用于地址总线驱动双向驱动器74LS245用于数据总线驱动总线驱动器芯片管脚1A121A241A361A482A1112A2132A3152A4171Y1181Y2161Y3141Y4122Y192Y272Y352Y431G12G1974LS24410231617198765418191112131415&A0A1B0A2A3A4A5A6A7DIRB3B4B5B6B720B1B274LS245+5VPSENRDGGND7.1.3并行I/O口简单扩展1、用锁存器扩展简单输出口(1)用74LS377扩展8位输出口图7-4为利用锁存器74LS377扩展的简单输出口的接口电路。74LS377为带有允许输出端的8D锁存器。D7~D0为其输入端口,输出端口为Q7~Q0,CLK为时钟控制端,上升沿锁存。图中P0口的P0.0和P0.1引脚分别作为地址选择线与两个74LS377的片选控制端相连,使得两个74LS377的口地址分别为0XFFFE和0XFFFD。当某一个74LS377该输出口被选中,且CLK端电平正跳时,P0口数据锁存到74LS377的输出端,从而实现数码管的静态显示。案例12用单片机扩展口控制秒表源程序清单:#include<reg51.h>#include<absacc.h>#defineaddr377_1XBYTE[0XFFFE]#defineaddr377_2XBYTE[0XFFFD]unsignedcharled[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedtime=0,count=20;主函数和中断服务函数voidmain(){addr377_1=addr377_2=led[0];TMOD=01;TH0=-50000>>8;TL0=-50000;EA=1;ET0=1;TR0=1;while(1);}voidisr_time()interrupt1{TH0=-50000>>8;TL0=-50000;count--;if(count==0){count=20;time=(time+1)%60;addr377_1=led[time/10];addr377_2=led[time%10];}}(2)74LS373扩展简单的8位输出口案例13:用单片机扩展口控制流水灯P2.7、P2.6引脚分别与片选控制G端相连,以选通锁存器案例13:用单片机扩展口控制流水灯利用该电路使16个发光二极管实现从左至右逐一点亮的流水灯效果的程序#include<reg51.h>sbitp27=P2^7;sbitp26=P2^6;sbitp36=P3^6;unsignedcharcword=0xfe;voidmain(){unsignedinti,j;p27=1;p26=0;p36=0;while(1)
{
for(i=0;i<8;i++){P0=cword;for(j=50000;j>0;j--);cword=(cword<<1)|1;}P0=cword;cword=0xfe;p27=~p27;p26=~p26;
}}2、用三态门74LS244扩展8位输入口P2.7和相“或”控制信息的输入案例14用单片机扩展输入口进行开关控制#include<reg51.h>#include<absacc.h>#defineaddr244XBYTE[0X3FFF]//74LS244的地址为3FFFHvoidmain(){unsignedcharmdata;while(1){mdata=addr244;//从74LS244中读取数据(按键的开合状态)P1=mdata;}}7.2存储器的扩展7.2.1程序存储器的扩展7.2.2数据存储器的扩展7.2.3存储器的综合扩展7.2.1程序存储器的扩展外扩的存储器芯片通过地址总线、数据总线和控制总线同单片机相连地址总线是单向输入的,其数目与芯片容量有关。如容量为2K×8时,地址线有11根,即211=2048。容量为16K×8时,地址线有14根,即214。数据线是双向的,即可输入,也可输出,其数目与数据位数有关。如2K×8的芯片,其数据线有8根;控制线主要有读/写控制线与片选线两种。由于可以扩展多个存储芯片,需要用片选信号来确定哪个芯片被选中。读/写控制线决定芯片进行读/写操作。
1.程序存储器芯片MaskROM型:掩膜ROMOPTROM型:一次可编程ROMEPROM型:可擦除可编程ROME2PROM型:电可擦除可编程ROMFlashROM型:闪速只读存储器1.程序存储器芯片典型的EPROM芯片(Intel公司):2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27256(32K×8)、27512(64K×8)等。在这些芯片上均设有玻璃窗口,在紫外线下照射20分钟左右,存储器的各位信息均变为1,通过相应的编程器将工作程序固化到这些芯片中,便可成为MCS-51的外部程序存储器。(1)并行2716EPROM的特点2716的存储容量为16384(2K×8)位,24线的双列直插式器件,单一+5V供电,运行时最大功耗为252mW,维持功耗为132mW,读出时间最大为450ns。(2)引脚说明O0~O7数据线:传送存储单元内容。根数与单元数据位数相同。A0~A10地址线:选择芯片内部一个存储单元。根数由存储器容量决定。CE片选线:选择存储器芯片。CE无效,其他信号线不起作用。OE:数据读选通线,Vcc:+5V主电源Vpp:编程电源(+25V)GND:接地端(3)2716的工作方式P2.2P2.0P0.78031P0.0ALEPSEN………2.单片程序存储器扩展...D7Q7
373D0Q0
G控制线11根地址线8根数据线(1)单片2716存储器扩展电路A10A8A7A0
2716O7O0OECEGND…………EA总线连接1)地址总线的连接P0.0~P0.7和P2.0~P2.2连接地址总线A0~A10低8位地址信号AB0~AB7,高3位地址信号AB8~AB102)数据总线的连接P0.0~P0.7连接数据总线D0~D73)片选端及控制总线的连接PSEN连接OE:片外程序存储器读控制信号ALE连接锁存器G:地址锁存允许控制信号EA接地:选择片外程序存储器(2)读取外部程序存储器的时序不执行MOVX指令数据输入执行MOVX指令3.多片程序存储器扩展最大扩展容量64K外扩多片存储器进行的选择:片选:选存储器芯片,片选信号区别不同芯片的地址空间。字选:选中该芯片中的相应存储器单元片选方法:(1)线选法
单片机剩余高位地址总线直接连接各存储器片选线。各芯片间地址不连续有相当数量的地址不能使用,否则造成片选混乱(2)地址译码法单片机剩余高位地址总线通过地址译码器输出片选信号。(1)线选法 各存储器芯片的地址空间:ABi:1514131211109876543210~1514131211109876543210
Ⅰ:1100000000000000~1100
011111111111=C000H~C7FFHⅡ:1010
000000000000~1010
011111111111=A000H~A7FFHⅢ:0110
000000000000~0110
011111111111=6000H~67FFHA0~A7A8~A10D0~D7CEOE2716(I)A0~A7A8~A10D0~D7CEOE2716(II)A0~A7A8~A10D0~D7CEOE2716(III)O0~O7GD0~D7OE74LS373P0.0~P0.7PSEN
P2.7P2.6P2.5ALEP2.2~P2.08051(2)地址译码法3-8地址译码器:74LS138地址译码法原理译码法选址就是利用地址译码器对系统的片外高位地址进行译码,以其译码输出作为存储器芯片的片选信号,将地址划分为连续的地址空间块,避免了地址的间断。(1)完全译码:地址译码器使用了全部地址线,地址与存储单元一一对应。
(2)部分译码:地址译码器仅使用了部分地址,地址与存储单元不是一一对应。部分译码也会浪费大量的存储单元,对于要求存储器容量较大的微机系统,一般不采用。但对于单片机系统来说,由于实际需要的存储器容量不大,采用部分译码器可以简化译码电路。
A0~A7A8~A10D0~D7CEOE2716(III)A0~A7A8~A10D0~D7CEOE2716(II)A0~A7A8~A10D0~D7CEOE2716(I)O0~O7GD0~D7OE74LS373P0.0~P0.7PSENP2.5P2.4P2.3ALEP2.2~P2.08051各存储器芯片的地址空间:Abi:1514131211109876543210~15141312
111098
76543210
Ⅰ:0000000000000000~0000
011111111111=0000H~07FFHⅡ:0000
100000000000~0000
111111111111=0800H~0FFFHⅢ:0001
000000000000~0001
011111111111=1000H~17FFH
CY0BY1AY2G2AG2BG1+5V1387.2.2数据存储器的扩展MCS-51系列单片机的内部一般都仅有128字节或256字节的RAM数据存储器。数据存储器和程序存储器使用相同的64KB地址空间,但两者却是相互独立的的存储空间,具有各自独立的控制信号线和读写操作指令。同时,外部的数据存储器和其它I/O接口芯片的扩展统一编址。1.数据存储器芯片典型的SRAM芯片有Intel公司的:6216(2K×8)、6264(8K×8)、62128(16K×8)等存储器的外部信号线:I/O0~I/O7:8位数据线A0~A12:
13位地址线:
CE1片选线1:低电平有效CE2片选线2:高电平有效OE:读选通信号输入线WE:写允许信号输入线CE1CE2WEOE方式D0~D71×××未选中高阻抗×0××未选中高阻抗0111输出禁止高阻抗0101写Din0110读Dout6264的工作方式2.数据存储器扩展(1)单片6264数据存储器扩展(2)多片6264数据存储器扩展ABi:15141312111098
76543210~1514131211109876543210
Ⅰ:0100000000000000~0100011111111111=4000H~5FFFHⅡ:0010100000000000~0010111111111111=2000H~3FFFHⅢ:0000000000000000~0001111111111111=0000H~1FFFHO0~O7GD0~D7OE74LS373+5VCY0BY1AY2G2AG2B
G1138A0~A7A8~A10D0~D7CE1OE6264(I)WEA0~A7A8~A10D0~D7CE1OE6264(II)WEA0~A7A8~A10D0~D7CE1OE6264(III)WEP0.0~P0.7RDP2.7P2.6P2.5ALEP2.4~P2.08051WR(3)外部数据存储器的数据传送#include<reg51.h>unsignedcharxdataDATABUFF[100]_at_0x00;//外部RAM,地址从0000H开始voiddelay();voidmain(){unsignedcharcword;inti;for(i=0;i<100;i++)DATABUFF[i]=i;for(i=0;i<100;i++){cword=DATABUFF[i];P1=cword;delay();}while(1);}voiddelay(){unsignedinti,j;for(i=1000;i>0;i--)for(j=100;j>0;j--);}利用Proteus调试程序的方法:(1)点击仿真按钮,系统开始全速运行,可以看到写入P1的数据由P1连接的发光二极管以二进制形式显示。(2)点击暂停按钮,系统暂时停下来了,点击“Debug”菜单下的“MemoryContents-U3”子菜单,这时系统将弹出“MemoryContents-U3”窗口,(4)读取外部存储器的时序1)外部数据存储器读周期2)外部数据存储器写周期7.2.3存储器的综合扩展地址总线和数据总线公用片外ROM用到PSEN,片外RAM用到RD与WE各芯片地址是多少?7.38255A可编程并行I/O接口7.3.18255A的结构及引脚数据端口A、B、C(包含I/O数据锁存器,控制寄存器和状态寄存器)端口A:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入锁存器,可作为数据输入或输出端口,并工作于三种方式中的任何一种。端口B:包括一个8位的数据输出锁存/缓冲器和一个8位的数据输入缓冲器,可作为数据输入或输出端口,作数据输入口时,没有锁存功能。端口B不能工作于方式2。端口C:
结构和B口相同,但在方式字控制下分为两个4位的端口,每个4位端口都有4位的锁存器,用来配合端口A与端口B锁存输出控制信号和输入状态信号1.8255A组成结构A组控制和B组控制电路实现对8255A端口工作方式的控制
A组:PA和PC4~7B组:PB和PC0~3
数据总线缓冲器三态双向8位缓冲器,8255A和单片机数据总线接口读/写控制逻辑电路单片机控制信号(RD、WR、RESET)地址总线控制信号(A1、A0)片选信号(CS)1.8255A组成结构2.8255A的引脚电源和地线:VCC、GND与单片机相连的引脚(14条)RESET复位信号,高电平有效CS片选信号,低电平有效RD读信号,低电平有效WR写信号,低电平有效D7~D0双向三态数据线,和单片机数据总线相连A1、A0端口选择信号与外设相连的引脚(24条)PA7~PA0:A口输入/输出引脚PB7~PB0:B口输入/输出引脚PC7~PC0:C口输入/输出引脚8255A的控制信号与端口工作状态CSA1A0RDWR工作状态00000000000010011×1×0100101×1×0001111×011110000×11读A口读B口读C口写A口写B口写C口写控制字寄存器芯片未选中非法状态非法状态7.3.28255A的工作方式1.方式0——基本的输入/输出方式不需要任何联络(选通、握手)信号,相当于该端口在单片机与外设之间建立一个直接的数据通信,端口A、B、C都可作为输入或输出口使用。应用场合:无条件传送数据:默认为传送数据的双方均已准备好。查询方式传送数据:可以由程序定义C口的某些位作为联络信号线,以配合A口、B口完成查询方式下的数据传送。2.方式1——选通的输入/输出方式无论是输入还是输出都通过应答关系实现,这时端口A或B用作数据口,端口C的一部分引脚用作握手信号线与中断请求线。若端口A、B只有一个工作于方式1,另一个端口和端口C的其它位可工作于方式0若端口A和B同时工作于方式1,端口C余下的两位还可用于传送数据或控制信号等。A口方式1输入组态
B口方式1输入组态A口方式1输出组态
B口方式1输出组态INTE:中断允许信号INTR:中断请求信号项目
PC7PC6PC5PC4PC3PC2PC1PC0输入方式I/OI/OIBFASTBAINTRASTBBIBFBINTRB输出方式OBFAACKAI/OI/OINTRAACKBOBFBINTRB输入选通信号,有效时,外设把数据送至A口或B口的输入锁存器输入缓冲器满信号,有效时,表示数据已送入输入锁存器,尚未被单片机取走。它由信号置位,由信号的上升沿复位。
输出缓冲器满信号,有效时,表示A口或B口已经接收到了来自单片机的数据,外设可以取走该数据。它由信号上升沿置为有效,由的有效信号置为高电平。外设收到输出数据后的响应信号,有效时,表示外设已经接收到了A口或B口的数据,同时置位信号。方式1的输入过程方式1的输出过程方式2双向传送方式仅适用于端口A,PA7~PA0作为双向的数据总线端口C有5条引脚用作A的握手信号线和中断请求线B口和C口余下的3位仍可工作于方式0或1A组方式选择00-方式001—方式11×—方式2端口A1—输入0—输出端口C(上半部1—输入0—输出7.3.38255A的控制字1.方式选择控制字B组方式选择0—方式01—方式1端口B1—输入0—输出端口C(下半部)1—输入0—输出标志位D7=1D7D6D5D4D3D2D1D02.C口按位置位/复位控制字D7D6D5D4D3D2D1D0标志位D7=0未使用位选择000—PC0001—PC1010—PC2011—PC3100—PC4101—PC5110—PC6111—PC70—复位1—置位7.3.48255A应用实例8255A各端口的地址A口:0111111111111100B7FFCHB口:0111111111111101B7FFDHC口:0111111111111110B7FFEHD口:0111111111111111B7FFFH1.8255工作方式设定实例7-1:用8255A芯片扩展MCS-51单片机的并行I/O接口,由图示可知8255A芯片A口、B口、C口和控制字寄存器的地址分别为7FFCH、7FFDH、7FFEH和7FFFH,现要求其3个数据端口均工作在方式0,其中A口和C口的高4位作为输出口,B口和C口的低4位作为输入口。实例7-1根据题意,A口方式0输出:D6D5D4=000B口方式0输入:D2D1=01C口的高4位输出:D3=0C口的低4位输出:D0=1因此8255A的工作方式控制字为10000011B,即83H实例7-1#include<reg51.h>#include<absacc.h>#defineaddrcXBYTE[0x7FFF]voidmain(){addrc=0x83;……}例6-2:同上题8255A芯片,要求对C口的PC7位置0,PC5位置1。解:根据C口按位置位/复位控制字的格式,对PC7位置0其控制字为0EH,对PC5位置1其控制字为0BH。#include<reg51.h>#include<absacc.h>#defineaddrcXBYTE[0x7FFF]voidmain(){addrc=0x0E;addrc=0x0B;……}2.工作方式0的应用
8255A工作在基本的输入输出方式下,A口、B口均可置为输入方式或输出方式,但不能既作输入又作输出;在工作方式0下,C口不提供固定的联络信号,C口的高4位和低4位也可分别设置为输入方式或输出方式。实例7-4从8255A的A口读入8个按钮状态,送到8255A的B口输出,当某一按钮按下则对应发光二极管亮,否则灭。
实例7-4#include<reg51.h>#include<absacc.h>#defineaddraXBYTE[0xFFF8]#defineaddrbXBYTE[0xFFF9]#defineaddrconXBYTE[0xFFFB]voidmain(){unsignedcharcdata;addrcon=0x90;while(1){cdata=addra;addrb=cdata;}}小技巧:1.8255A的负载能力有限,因此外接I/O设备时要接总线驱动器,本例用的是74LS240。2.8255A的、A1、A0分别接74LS373的Q2、Q1、Q0,则其A口、B口、控制字寄存器的地址的最后三位为000、001和011,不用地址位设为1,则地址分别为FFF8H、FFF9H、FFFBH。3.工作方式1的应用
8255A工作在选通的输入输出方式下,A口、B口由编程可分别设定为输入口或输出口,而C口则分为两部分,分别用作A口和B口的控制信号和同步信号,为8255A与CPU或外部设备之间传送状态信息及中断请求信号。7.3.5单片机应用系统设计方法(1)确定任务:开发任何一个应用系统,都必须以市场需求为前提。因此,在系统设计前,首先要进行广泛的市场调查,了解该系统的市场应用概况,分析系统当前存在的问题,研究系统的市场前景,确定系统开发设计的目的和目标。在此基础上,再对系统的具体实现进行规划,包括应该采集的信号的种类、数量、范围,输出信号的匹配和转换,控制算法的选择,技术指标的确定等。(2)总体设计在对应用系统进行总体设计时,应根据应用系统提出的各项技术性能指标,拟订出性价比最高的一套方案。首先,应根据任务的繁杂程度和技术指标要求选择机型。选定机型后,再选择系统中要用到的其它外围元器件,如传感器、执行器件等。在总体方案设计过程中,对软件和硬件进行分工是一个重要的环节。用硬件实现速度比较快,节省CPU的时间,但系统的硬件接线复杂、系统成本较高。用软件实现则较为经济,但要更多地占用CPU的时间,原则上,能够由软件实现的任务就尽量用软件来实现,以降低成本,简化硬件结构。如果系统回路多、实时性要求强,则要考虑用硬件完成。同时,还要求大致规定各接口电路的地址、软件的结构和功能、上下位机的通信协议、程序的驻留区域及工作缓冲区等。总体方案一旦确定,系统的大致规模及软件的基本框架就确定了。(3)硬件电路图设计硬件的设计是根据总体设计要求,在选择完单片机机型的基础上,具体确定系统中所要使用的元件,并设计出系统的电路原理图,经过必要的实验后完成工艺结构设计、电路板制作和样机的组装。主要硬件设计包括:1)单片机电路设计:主要完成时钟电路、复位电路、供电电路的设计。2)扩展电路和输入/输出通道设计:主要完成程序存储器、数据存储器、I/O接口电路、传感器电路、放大电路、多路开关、A/D转换电路、开关量接口电路、驱动及执行机构的设计。3)控制面板设计:主要完成按键、开关、显示器、报警等电路的设计。4)软件设计单片机应用系统的软件设计是研制过程中任务最繁重的一项工作,难度也比较大。单片机应用系统的软件主要包括两大部分:用于管理单片机微机系统工作的监控程序和用于执行实际具体任务的功能程序。对于前者,应尽可能利用现成微机系统的监控程序。为了适应各种应用的需要,许多单片机开发系统的监控软件功能相当强,并附有丰富的实用子程序,可供用户直接调用,例如键盘管理程序、显示程序等。因此,在设计系统硬件逻辑和确定应用系统的操作方式时,就应充分考虑这一点。这样可大大减少软件设计的工作量,提高编程效率。后者要根据应用系统的功能要求来编程序。例如,外部数据采集、控制算法的实现、外设驱动、故障处理及报警程序等等。软件设计通常采用模块化程序设计、自顶向下的程序设计方法。(5)系统调试包括硬件调试和软件调试。硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障。软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。案例15单片机控制简单智能设备假设8255A连接一台智能设备(该智能设备由89C51控制,例如打印机等),主控机U1向8255A分别传送0~9,8255A接收到将该数字在智能设备的数码管中闪烁5次,如果8255A工作在方式1,请实现之。请单击左图(1)控制字分析:8255A的A口PA0~PA7,连接智能外部设备的8根数据线(本例是U3的P2口),作为输出口;工作在方式1的中断方式下,方式控制字为10100000B,即A0H;根据产生中断的条件,应先置PC6(INTEA)为1,因此,C口的控制字为0DH。(2)源程序:#include<reg51.h>#include<absacc.h>#defineaddraXBYTE[0xFFF8]#defineaddrconXBYTE[0xFFFB]unsignedcharcword=0;voidmain(){addrcon=0x0D;//PC6(INTEA)置1,允许B口中断addrcon=0xA0;//A口的输出方式1IT1=0;EX1=1;EA=1;addra=cword;while(1);}中断服务函数voidisr_int1()interrupt2{cword++;if(cword<10){addra=cword;}elseEX1=0;}/*中断服务函数:当一个数字输出到8255A处理完后,再将下一个数字送到8255A再进行处理,依次类推,直到将9送到8255A处理完成后停止传送数据。*/智能设备程序:本例中的智能设备是由89C51控制的,要把从8255A的A口收到的数据从P2口接收,再从P1口输出到数码管显示。为了配合8255A的方式1,8255A的PC7连接U3(89C51)的P3.3(外部中断1的输入端),PC6连接U3的P3.0,当8255A的A口接收到数据,则将PC7()变为低电平,即可向U3发出中断请求,在中断服务程序中,读取P2的值,将P2的值显示在数码管上,延时一段时间后数码管熄灭达到闪烁效果,闪烁5次完将P3.0变为低电平,使8255A的PC6变为低电平(),该引脚的低电平使置1,当返回主程序时,置P3.0为1,则满足INTRA为1的条件,则该信号经非门后送到主控机U1的P3.3,产生外部中断1的中断请求。智能设备程序#include<reg51.h>sbitP30=P3^0;unsignedcharled[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};voidmain(){IT1=0;EX1=1;EA=1;while(1){P30=1;}}智能设备中断服务函数voidint1()interrupt2{unsignedcharcword,i;inttime;P2=0XFF;cword=P2;for(i=0;i<5;i++){P1=led[cword];for(time=10000;time>0;time--);P1=0xff;for(time=10000;time>0;time--);}}本例是利用89C51和数码管虚拟一台智能设备,例如打印机,打印机内部是由单片机控制打印头运动实现打印功能,但在Proteus仿真软件中无法仿真打印机,因此笔者设计了这样一个虚拟的智能设备。案例16用单片机和8255A控制交通灯用8255做输出口,控制十二个发光二极管亮灭,模拟交通灯系统。
(1)确定任务可由8255A的PA、PB口连接12个发光二极管,分别代表四个路口的红、绿、黄灯,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮20秒,南北路口的红灯亮,东西路口方向通车;延时一段时间后,东西路口的绿灯熄灭,黄灯开始闪烁,每隔0.5s闪烁1次,闪烁3次后,东西路口红灯亮,而同时南北路口的绿灯亮20秒,南北路口方向开始通车;延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,每隔0.5s闪烁1次,闪烁6次后,,再切换到东西路口的绿灯亮,东西方向通车;之后重复以上过程。(2)总体设计根据本任务的要求,选用AT89S51,配备晶振电路和复位电路,晶振频率为12MHz,四个路口的红、绿、黄交通灯由8255A控制。(3)硬件电路设计为了方便线路连接,8255的PA的低6位分别接西、北路口的红、黄、绿灯(发光二极管,采用共阳极的连接方式),PB口的低6位分别接东、南路口的红、黄、绿灯,设计的原理图如图所示。请单击左图(4)软件设计参考任务5中的有关知识,各路口的灯亮的规律与PA、PB口的取值有关系到,其规律如表所示。规律PB5PB4PB3PB2PB1PB0PA5PA4PA3PA2PA1PA0十六进制数东绿东黄东红南绿南黄南红西绿西黄西红北绿北黄北红红灯全亮1101101101100x36东西绿灯亮,南北红灯亮0111100111100x1E东西黄灯亮,南北红灯亮1011101011100x2E东西红灯亮,南北绿灯亮1100111100110x33东西红灯亮,南北黄灯亮1101011101010x35(4)软件设计本任务涉及两个定时时间,一是每个路口的绿灯亮20s,另一个是黄灯闪烁时间间隔0.5s,显然最容易实现的方法就是利用定时器,可以用定时器0控制路口绿灯亮的时间,用定时器1控制黄灯闪烁的时间间隔,但是两个定时器的定时都不可达到20s或1s,所以可以让两个定时器都工作于方式1,定时时间为50ms,引进两个变量time(初值为400)和timey(初值为20),当定时器发出中断时,这两个变量分别减1,直到为0则达到定时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车设计工程师面试技巧与要点
- 轨道交通企业人力资源管理体系建设探索
- 高铁工程建设部长月度工作总结与展望
- 活动风险评估及应对措施
- 长城汽车公司行政支持团队的工作挑战与对策
- 江梦南演讲稿标题
- 演讲稿脸皮厚的好处
- 2026年妇产科护理学知识考试题库及答案(共100题)
- 创平安校园的演讲稿
- 2015清华大学演讲稿
- 《突发事件应急演练评估指南》培训课件
- 春节后开工第一课安全培训课件
- 2025预制菜包装材料行业市场格局与流通渠道研究报告
- DB54∕T 0527-2025 西藏自治区好住宅技术标准
- 2026年消化不良症状资料
- 2026年黑龙江省牡丹江市单招职业适应性测试题库及参考答案详解1套
- GB/T 6462-2025金属和氧化物覆盖层厚度测量显微镜法
- 2025年小学教师资格证考试(音乐学科知识与教学能力)考前测验卷后附答案
- 机械设备投标标书(范本)
- 锂离子电池生产线扩建项目技术方案
- 《重金属环境安全隐患排查评估整治技术指南(试行)》
评论
0/150
提交评论