利用D触发器构成计数器及利用8255A芯片实现流水灯闪烁设计_第1页
利用D触发器构成计数器及利用8255A芯片实现流水灯闪烁设计_第2页
利用D触发器构成计数器及利用8255A芯片实现流水灯闪烁设计_第3页
利用D触发器构成计数器及利用8255A芯片实现流水灯闪烁设计_第4页
利用D触发器构成计数器及利用8255A芯片实现流水灯闪烁设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1-数字电路实验设计:D触发器组成的4位异步二进制加法计数器一、选用芯片74LS74,管脚图如下:说明:74LS74是上升沿触发的双D触发器,D触发器的特性方程为二、设计方案:用触发器组成计数器。触发器具有0和1两种状态,因此用一个触发器就可以表示一位二进制数。如果把n个触发器串起来,就可以表示n位二进制数。对于十进制计数器,它的10个数码要求有10个状态,要用4位二进制数来构成。下图是由D触发器组成的4位异步二进制加法计数器。

三、实验台:四、布线:1、将芯片(1)的引脚4、10连到一起,2、将芯片(2)的引脚4、10连到一起,3、将芯片(1)的引脚10和芯片(2)的引脚10连到一起,4、将芯片(1)的引脚10连到+5V;5、将芯片(1)的引脚1、13连到一起,6、将芯片(2)的引脚1、13连到一起,7、将芯片(1)的引脚13和芯片(2)的引脚13连到一起,8、将芯片(1)的引脚13连到+5V;9、将芯片(1)的引脚3接到时钟信号CP10、将芯片(1)的引脚2、6接到一起,再将引脚2接到引脚1111、将芯片(1)的引脚8、12接到一起,再将芯片(1)的引脚8接到芯片(2)的引脚312、将芯片(2)的引脚2、6接到一起,再将引脚6接到引脚1113、将芯片(1)的引脚5、9分别接到Q0、Q1,再将芯片(2)的引脚5、9分别接到Q2、Q314、分别将两芯片的14脚接电源+5V,分别将两芯片的7脚接地0V。五、验证:接通电源on,默认输出原始状态0000每输入一个CP信号(单击CP),的状态就会相应的变化,变化规律为0000(原始状态)、1000、0100、1100、0010、1010、0110、1110、0001、1001、0101、1101、0011、1011、0111、1111目录摘要······················································2第1章利用8255A芯片实现流水灯闪烁设计的概述···········2第2章三种方案的论述与最终方案的确定····················22.1第一种方案的论述··································22.2第二种方案的论述··································52.3第三种方案(最终方案)的论证·······················10第3章测试结果及体会心得·······························13第4章致谢·············································14第5章参考文献·········································14附录1方案一Proteus仿真电路效果图·····················15附录2方案一源程序代码································16附录3方案二Proteus仿真电路效果图·····················18附录4方案二源程序代码································19附录5方案三(最终方案)Proteus仿真电路效果图·········20附录6方案三(最终方案)源程序代码····················21

摘要:8255A是一种通用的可编程并行I/O接口芯片(ProgrammablePeripherialInterface),它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。此次课程设计的目的就是利用端口和8255协同工作来实现LED显示功能,对8255A芯片进行编程使流水灯左移或右移,通过延时程序使流水灯进行顺序点亮。通过这次课程设计掌握8255A关键词:8086芯片AT89C51单片机8255A芯片LED流水灯第1章利用8255A芯片实现流水灯闪烁设计的概述流水灯在日常的生活中有着广泛的应用,例如,许多楼面上的彩灯广告就是应用了流水灯设计。此次的课程设计的题目是利用了端口和8255A协同工作来实现LED显示功能,编写程序,使用8255的A口和B口均为输出,接8个或16个发光二极管,实现流水灯的显示效果。在实验中8255A的A和B两个端口不能同时赋值,从而我们可以用通用寄存器BX对所需要赋值的数据进行存储,因为BX可以分从高8位寄存器BH和低8位寄存器BL两部分进行独立的操作,我们用寄存器BH对A口进行赋值,用寄存器BL对B口进行赋值,通过延时一段时间再对BH和BL进行移位和输出,实现了流水灯的效果。第2章三种方案的论述与最终方案的确定2.1第一种方案的论述第一种方案,我们使用了8086CPU芯片与8255A芯片一起实现了流水灯闪烁的设计,同时还使用了地址锁存器74LS373芯片。74ls373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。在方案一中,当8086CPU的引脚ALE(地址锁存允许信号,输出,高电平有效,用作地址锁存器74LS373的锁存控制信号)处于下降沿时将8086CPU输出的地址信息进行锁存,以定义8255A的工作方式。下面先对74LS373芯片进行简介:1.地址锁存器74LS373的内部电路与工作原理

引脚功能图注:管脚引出端功能符号:D0~D7数据输入端OE三态允许控制端(低电平有效)Q0~Q7输出端LE锁存允许端74373三态缓冲输出的8D锁存器(3S,锁存允许输入有回环特性),其输出端Q0~Q7可直接与总线相连,74LS373的LE端直接与8086CPU的ALE信号连接。1脚是三态允许控制端(OE),是低电平有效。当1脚是高电平时,不管输入3(D0)、4(D1)、7(D2)、8(D3)、13(D4)、14(D5)、17(D6)、18(D7)如何,也不管11脚(LE锁存允许端)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态)。当1脚是低电平时,只要11脚(LE锁存允许端)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3(D0)、4(D1)、7(D2)、8(D3)、13(D4)、14(D5)、17(D6)、18(D7)的状态。

11脚是锁存允许端(LE),当LE由高变低时,输出端8位信息被锁存,直到LE端再次有效。当三态允许控制端OE为低电平时,三态门导通,允许Q0~Q7输出,OE为高电平时,输出悬空。当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0~Q7状态与输入端D1~D7状态相同;当LE发生负的跳变时,输入端D0~D7数据锁入Q0~Q7。2.方案一的工作流程简述电路图硬件连接:硬件连线图注:8086CPU芯片与74LS373芯片在方案一中视为PC总线接口模块①8255A的引脚WR(写选通信号)、RD(读选通信号)分别连到PC总线接口模块的WR端口、RD端口。②8255A的数据端(AD0~AD7)、地址线(A0~A1)分别连到PC总线接口模块的数据线(D0~D7)、地址线(A1~A2)。③8255模块选通线CS连到PC总线接口模块的IOY1(CS片选信号,低电平有效,由地址总线经I/O端口译码电路产生)。④8255的PA0~PA7连到发光二极管的L1~L8;8255的PB0~PB7连到发光二极管的L9~L16。程序流程简述:8255A的片选信号CS与地相连,处于低电平有效状态,8086CPU与8255A之间始终保持通信,8086CPU对8255A进行读/写等操作。当8086CPU的地址锁存信号ALE处于高电平有效时,在T1状态,8086CPU通过地址/数据总线上传送地址信息,在ALE的下降沿将地址信息锁存到地址锁存器74LS373中,定义了8255A的工作方式,使其A口和B口为输出口,定义了8255A各端口地址。8086CPU先后写A、B口的起始数据,并调用延时子程序点亮A口灯、B口灯。然后分别调用左移、右移指令将A口起始数据左移再写入A口、B口起始数据右移再写入B口,点亮下一站盏灯,以此循环实现流水灯效果。程序框图结论:第一种方案虽然实现了流水灯闪烁效果,但由于8086CPU芯片所需的程序无法通过KC51实现编程,不能达到本次课程设计的培训目的,即对单片机的程序编程进行训练掌握,要求较高,方案实现的难度较大,所以我们没有把方案一作为最终方案。2.2第二种方案的论述第二种方案,我们使用了AT89C51单片机实现了流水灯闪烁设计。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,方案二中设计的流水灯实际上是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。下面先对AT89C51单片机进行简介:1.AT89C51单片机的简介AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS—51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可以提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89C51管脚分布注:管脚引出端功能符号:◆VCC:供电电压。◆GND:接地。◆P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。◆P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。◆P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。◆P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口。P3口同时为闪烁编程和编程校验接收一些控制信号。◆P3口管脚备选功能:·P3.0RXD(串行输入口)·P3.1TXD(串行输出口)·P3.2/INT0(外部中断0)·P3.3/INT1(外部中断1)·P3.4T0(记时器0外部输入)·P3.5T1(记时器1外部输入)·P3.6/WR(外部数据存储器写选通)·P3.7/RD(外部数据存储器读选通)◆RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。◆ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。◆PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。◆EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H—FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。◆XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。◆XTAL2:来自反向振荡器的输出。AT89C51提供标准功能有:4K字节Falsh闪存存储器,128字节内部RAM,32个I/O口线,两个16位定时、计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。2.方案二的工作流程简述单片机的应用系统由硬件和软件组成,当我们完成了上述硬件原理图搭建之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,也是我们这次课程设计学习的重点和难点。从电路原理图中可以看出,如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。在电路原理图中,我们还应注意的便是和AT89C51单片机接在一起的晶振电路,在电路图中为AT89C51单片机提供了频率参考作用。晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络。AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。硬件原理图结论:第二种方案也实现了流水灯闪烁效果,相对于第一种方案而言,更简单些,这也正是单片机能广泛应用于各种电路的原因。但由于该方案中,没有应用到8255A芯片实现接口扩展,而我们这次的课程设计中一个主要设计目的与要求便是:通过利用端口和8255协同工作来实现LED显示功能,对8255A芯片进行编程使流水灯左移或右移,实现流水灯闪烁效果。以此来掌握8255A的功能特点、工作原理以及显示器接口的基本原理与方法技术。所以我们没有把方案2.3第三种方案(最终方案)的论证第三种方案,我们使用了AT89C51单片机与8255A芯片一起实现了流水灯闪烁的设计。从前两种方案中,我们分别熟悉与掌握了地址锁存器74LS373芯片和AT89C51单片机。我们了解到74ls373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。而AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。在第三个方案中,我们将详细地介绍8255A的内部电路、功能特点、工作原理以及在电路中的功能扩展与应用,这也是我们这次课程设计中一个需要重点掌握的芯片。1.可编程外围接口芯片8255A的简介8255A是Intel公司生产的一种通用的可编程并行I/O接口芯片,它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。通过对它进行编程,芯片可工作于不同的工作方式。8255A有3个8位并行I/O口,具有3个通道3种工作方式,其各口功能可由软件选择,使用灵活,通用性强。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口;同时必须具有与外设连接的接口A、B、C口。由于8255可编程8255的外部引脚和内部结构注:管脚引出端功能符号:◆RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。◆CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.◆RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。◆WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。◆D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。◆PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。◆PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。◆PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'◆A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1.A1=1时,控制寄存器被选择.8255A的工作方式:方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式适用于查询和中断方式的接口电路方式2:双向选通传送方式适用于与双向传送数据的外设和查询和中断方式的接口电路工作方式控制字C口按位置位/复位控制字8255A初始化编程:8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字。方式控制字用于设置端口A,B,C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平。两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。2.方案三的工作流程简述方案三中AT89C51单片机的工作流程与方案一中的8086CPU的工作流程大致相同,但是相对于第一个方案而言,省略了地址锁存器74LS373芯片,直接通过P2.0、P2.1与8255A的A0、A1端相连,传送地址信号,定义8255A的工作方式,使其A口和B口为输出口,定义了8255A各端口地址。8255A的片选信号CS与地相连,处于低电平有效状态,AT89C51与8255A之间始终保持通信,AT89C51对8255A进行读/写等操作。AT89C51单片机先后写A、B口的起始数据,并调用延时子程序点亮A口灯、B口灯。然后分别调用左移、右移指令将A口起始数据左移再写入A口、B口起始数据右移再写入B口,点亮下一站盏灯,以此循环实现流水灯效果。与第二个方案相比较,结合了第二个方案的优点。在电路图中和AT89C51单片机接在一起的晶振电路,AT89C51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中,在电路图中晶振电路为AT89C51单片机提供了频率参考作用。开始开始设置8255A工作方式写入PA、PB口,并分别对其数值位移延时写入PA、PB口,并分别对其数值位移延时全部闪烁一次程序流程图第3章测试结果及体会心得我们把方案三确定为最终方案后,便开始在Proteus软件上绘制出了仿真效果图,并通过Keil软件编写出了相应的源程序汇编文件,导入到了仿真图中的AT89C51单片机上,并最终仿真成功,实现了流水灯闪烁的效果。但整个实验过程并不是一帆风顺的,更不是一蹴而就的。我们通过网上查找相关资料,在图书馆里查询与流水灯相关的书籍,搜集整理出了前面三种方案,并通过实际的仿真与比较,最终确定了方案三作为我们的最终方案。三个方案在仿真的过程中都出现了问题,不是源程序有误就是网上搜集到的相关资料是错误的,把我们带进了误区,但我们最终通过自己讨论研究和请教老师,解决了这些问题。把三个方案都通过Proteus软件仿真出来了。在这次课程设计中,我们分别熟悉掌握了地址锁存器74LS373芯片、AT89C51单片机、可编程外围接口芯片8255A的内部电路、功能特点、工作原理以及在电路中的功能扩展与应用等,使我们对这些芯片的认识更加深刻,并通过仿真电路图等实践操作更进一步掌握了这些芯片的实际应用效果与它们的优缺点、在提高我们理论知识水平与范围的同时,也提高了我们实践能力。“理论与实践相结合”永远使我们学习上一条不可绕过的道路,用理论指导实践,通过实践提高对理论知识的认知水平,这就是我们这次课程设计的一个较为深刻的体会。第4章致谢在此,我们郑重感谢系里给我们提供的这次珍贵的锻炼机会以及张斌老师的热情指导与帮助。在我们遇到困难而无法解决的时候,张斌老师给我们提供了很多有用的方案建议,并为我们提供了对我们极为有用的资料;当我们有些问题不懂疑惑时,张斌老师也耐心给了我们做了清楚的解释,在此我们表示真挚的感谢。通过课程设计,我们学到了很多东西。我们队友之间的精密合作与默契对我们也是一个重要帮助,没有我们的合作,不可能会有所成功。感谢所有帮过我们的老师和同学们,他们都很热情帮助我们,为我们提供了他们力所能及的帮助,在此我们对他们表示真挚的感谢。第5章参考文献[1]孙俊逸,盛秋林,张铮等单片机原理及应用[M]。北京:清华大学出版社,2001。[2]蔡美琴,MCS-51系列单片机系统及其应用[M]。北京:高等教育出版社,2000。[3]孙育才,孙华芳,王荣兴单片机原理及应用[M]。北京:电子工业出版社,2003。[4]李鸿,单片机原理及应用[M]。湖南:湖南大学出版社,2004。[5]丁元杰,单片微机原理及应用第二版[M]。北京:机械工业出版社,2001。[6]潘新民,王燕芳编著.微型计算机控制技术。北京:高等教育出版社,2004。[7]马忠梅单片机的C语言应用程序设计[M]。北京:北京北航出版社,2003。[8]范立南单片微机接口与控制技术[M]。沈阳:辽宁大学出版社,1996。[9]张友德单片微型机原理、应用与实践[M]。上海:复旦大学出版社,1992。[10]李华MCS-51系列单片机实用接口技术[M]。北京:北京航空航天大学出版社,1993。[11]何希庆,高伟MCS-51单片机原理、实验、实例[M].。山东:山东大学出版社,1989。[12]张毅刚,彭喜元,姜守达新编MCS-51单片机应用设计[M]。哈尔滨:哈尔滨工业大学出版社,2003。

附录1方案一Proteus仿真电路效果图附录2方案一源程序代码MY8255_AEQUIOY0+00H*2;8255的A口地址MY8255_BEQUIOY0+01H*2;8255的B口地址MY8255_CEQUIOY0+02H*2;8255的C口地址MY8255_MODEEQUIOY0+03H*2;8255的控制寄存器地址DATASEGMENTLALBDB1DUPAXXDW1BUPCXXDW1BUPDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,MY8255_MODE;定义8255工作方式MOVAL,80H;工作方式0,A口和B口为输出OUTDX,ALBEGIN:MOVDX,MY8255_A;写A口发出的起始数据MOVAL,01HOUTDX,ALMOVLA,ALMOVDX,MY8255_B;写B口发出的起始数据MOVAL,80HOUTDX,ALMOVLB,ALMOVCX,7LOOP1:CALLDALLYMOVAL,LA;将A口起始数据左移再写入A口ROLAL,1MOVLA,ALMOVDX,MY8255_AOUTDX,ALMOVAL,LB;将B口起始数据右移再写入B口RORAL,1MOVLB,ALMOVDX,MY8255_BOUTDX,ALLOOPLOOP1MOVCX,7LOOP2:CALLDALLYMOVAL,LA;将A口起始数据右移再写入A口RORAL,1MOVLA,ALMOVDX,MY8255_AOUTDX,ALMOVAL,LB;将B口起始数据左移再写入B口ROLAL,1MOVLB,ALMOVDX,MY8255_BOUTDX,ALLOOPLOOP2JMPBEGIN;流水灯重新开始DALLYPROC;软件延时子程序MOVCXX,CXMOVAXX,AX;这里本应该用堆栈,我用CXX,AXX变量代替了MOVCX,0FHD1:MOVAX,0FFFHD2:DECAXJNZD2LOOPD1MOVAX,AXXMOVCX,CXXRETDALLYENDPCODEENDSENDSTART

附录3方案二Proteus仿真电路效果图

附录4方案二源程序代码ORG

0000H

;单片机上电后从0000H地址执行AJMP

START

;跳转到主程序存放地址处ORG

0030H

;设置主程序开始地址START:MOV

SP,#60H

;设置堆栈起始地址为60HCLR

P1.0

;P1.0输出低电平,使LED1点亮ACALLDELAY

;调用延时子程序SETBP1.0

;P1.0输出高电平,使LED1熄灭CLRP1.1

;P1.1输出低电平,使LED2点亮ACALLDELAY

;调用延时子程序SETBP1.1

;P1.1输出高电平,使LED2熄灭CLRP1.2

;P1.2输出低电平,使LED3点亮ACALLDELAY

;调用延时子程序SETBP1.2

;P1.2输出高电平,使LED3熄灭CLRP1.3

;P1.3输出低电平,使LED4点亮ACALLDELAY

;调用延时子程序SETBP1.3

;P1.3输出高电平,使LED4熄灭CLRP1.4

;P1.4输出低电平,使LED5点亮ACALLDELAY

;调用延时子程序SETBP1.4

;P1.4输出高电平,使LED5熄灭CLRP1.5

;P1.5输出低电平,使LED6点亮ACALLDELAY

;调用延时子程序SETBP1.5

;P1.5输出高电平,使LED6熄灭CLRP1.6

;P1.6输出低电平,使LED7点亮ACALLDELAY

;调用延时子程序SETBP1.6

;P1.6输出高电平,使LED7熄灭CLRP1.7

;P1.7输出低电平,使LED8点亮ACALLDELAY

;调用延时子程序SETBP1.7

;P1.7输出高电平,使LED8熄灭ACALLDELAY

;调用延时子程序AJMP

START

;8个LED流了一遍后返回到标号START处再循环DELAY

;延时子程序MOV

R0,#255;延时一段时间D1:MOV

R1,#255DJNZ

R1,$DJNZ

R0,D1R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论