流水灯控制系统设计.docx
《流水灯控制系统设计.docx》由会员分享,可在线阅读,更多相关《流水灯控制系统设计.docx(14页珍藏版)》请在冰豆网上搜索。
流水灯控制系统设计
第1章方案的论述以及与最终方案的确定
1.1第一种方案的论述
第一种方案,使用AT89C51单片机实现流水灯闪烁设计。
AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,具有丰富的内部资源:
4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。
因此,方案一中设计的流水灯实际上是一个带有八个发光二极管的单片机最小应用系统,即由发光二极管、晶振、复位、电源等电路和必要软件组成的单个单片机。
1.2第二种方案的论证
第二种方案,我们使用了AT89C51单片机与8255A芯片一起实现了流水灯闪烁的设计。
74LS373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。
我们了解到74ls373是常用的地址锁存器芯片,它是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。
1.3第三种方案的论述
第三种方案,使用8086CPU芯片并行8255A芯片一起实现了流水灯闪烁的设计,同时还使用了地址锁存器74LS373芯片。
从前两种方案中,我们分别熟悉与掌握了地址锁存器74LS373芯片和8086CPU。
在方案中,当8086CPU的引脚ALE处于下降沿时将8086CPU输出的地址信息进行锁存,以定义8255A的工作方式。
在方案中,我们将详细地介绍8255A的内部电路、功能特点、工作原理以及在电路中的功能扩展与应用,这也是我们这次课程设计中一个需要重点掌握的芯片。
1.4最终方案的确定
通过课程设计的要求和以上的论证,我们决定采用第三种方案,即以8086CPU为核心、并行接口芯片8255A和3个逻辑电平开关设计多路流水灯控制程序。
第2章硬件设计
2.1总体方案设计分析
在本实验中要求用8255A的B口做为输出,接8个发光二极管,从而实现8位流水灯的显示效果,基本的接线可以如下图所示。
在C口的低三位接3个逻辑电平开关,实现3个扩展功能的控制,在PB0-PB7口分别对应的接八个发光二极管。
8个发光二极管竖向安放,自上到下对应两种模拟流水形式的自左到右。
2.2系统逻辑框图
图2.1系统逻辑框图
2.3主要元器件简介
2.3.18086CPU
Intel8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。
不久,Intel8088就推出了,拥有一个外部的8位数据总线,允许便宜的芯片用途。
它是以8080和8085的设计为基础,拥有类似的寄存器组,但是数据总线扩充为16位。
总线界面单元(BusInterfaceUnit)透过6字节预存(prefecth)的队列(queue)喂指令给执行单元(ExecutionUnit),所以取指令和执行是同步的,8086CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。
图2.28086CPU外部引脚
图2.38086CPU内部结构框图
Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。
资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。
它提供64K8位元的输出输入(或32K16位元),以及固定的向量中断。
大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。
运算结果会储存在操作数中的一个寄存器。
Intel8086有四个内存区段(segment)寄存器,可以从索引寄存器来设定。
区段寄存器可以让CPU利用特殊的方式存取1MB内存。
8086把段地址左移4位然后把它加上偏移地址。
大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。
尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,,使在编程中使用指针(如C编程语言)变得困难。
它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。
更坏的是,这种方式产生要让内存扩充到大于1MB难。
而8086的寻址方式改变让内存扩充较有效率。
2.3.2地址锁存器74LS373的内部电路与工作原理
图2.4引脚功能图
注:
管脚引出端功能符号:
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.58086CPU与74LS373、74LS138的连接及外部接线图
2.3.3可编程外围接口芯片8255A的简介
8255A是Intel公司生产的一种通用的可编程并行I/O接口芯片,它是为Inter系列微处理器设计的配套电路,也可用于其它微处理器系统中。
通过对它进行编程,芯片可工作于不同的工作方式。
8255A有3个8位并行I/O口,具有3个通道3种工作方式,其各口功能可由软件选择,使用灵活,通用性强。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口;同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
图2.68255A的外部引脚
图2.78255A的内部结构
注:
管脚引出端功能符号:
◆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:
双向选通传送方式,适用于与双向传送数据的外设和查询和中断方式的接口电路
图2.8工作方式控制字图2.9C口按位置位/复位控制字
8255A初始化编程:
8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。
8255A由编程写入的控制字有两个:
方式控制字和置位/复位控制字。
方式控制字用于设置端口A,B,C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平。
两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。
图2.108255A与LED及开关的连接及外部接线图
第3章软件设计
3.1程序流程设计
3.1.1主程序流程
图3.1主程序流程图
3.1.2程序流程图
左向移动流水灯
图3.2左向移动流水灯子程序图
右向移动流水灯
图3.3左向移动流水灯子程序图
3.1.3系统硬件连接图
图3.4系统硬件连接图
3.1.4源程序设计(附录)
3.2设计最终理想结果及原理
3.2.1左向移动流水灯
(1)现象
左向移动流水灯的实验现象是首先最右边的灯亮,然后是最右边的灯灭,此时右起第二个灯亮,依次轮流亮,直到第八个灯亮。
然后循环上述过程。
(2)原理
左向移动流水灯是根据发光二极管的显示原理,首先点亮最右的二极管,然后进位置一,通过带进位的循环左移指令编写程序以实现模拟流水灯的左向移动。
3.2.2右向移动流水灯
(1)现象
右向移动流水灯的实验现象是首先最左边的灯亮,然后是最左边的灯灭,此时左起第二个灯亮,依次轮流亮,直到第八个灯亮。
然后循环上述过程。
(2)原理
右向移动流水灯是根据发光二极管的显示原理,首先点亮最左的二极管,然后进位置一,通过带进位的循环右移指令编写程序以实现模拟流水灯的右向移动。
设计心得
在此,我们郑重感谢系里给我们提供的这次珍贵的锻炼机会以及吴学娟老师的热情指导与帮助。
在我们遇到困难而无法解决的时候,吴学娟老师给我们提供了很多有用的方案建议,并为我们提供了对我们极为有用的资料;当我们有些问题不懂疑惑时,吴学娟老师也耐心给了我们做了清楚的解释,在此我们表示真挚的感谢。
这次微机原理课程设计我学到了很多在书本上所没有学到过的知识。
以前在上课的时候对于编程工具的使用还处于一知半解的状态上,但是经过一段时间的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以及当寄存器不够用时如何用存储单元代替寄存器、怎么去使用循环嵌套、怎么去正确使用8255芯片等方面都有了很大程度的提高。
通过课程设计,我们学到了很多东西。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,但总的来说还是圆满的。
感谢所有帮过我们的老师和同学们,他们都很热情帮助我们,为我们提供了他们力所能及的帮助,在此我们对他们表示真挚的感谢。
参考文献
[1]周荷琴,吴秀清编著.微机原理与接口技术合肥:
中国科学技术大学出版社,2008.6
[2]潘新民,王燕芳编著.微型计算机控制技术北京:
高等教育出版社,2004。
[3]周明德编著微型计算机系统原理及应用北京:
人民邮电出版社,2007.
附录:
;端口地址
PORT_AEQU0F0H
PORT_BEQU0F2H
PORT_CEQU0F4H
PORT_CTLEQU0F6H
;代码段
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,PORT_CTL;指向控制口
MOVAL,10000001B;控制字
OUTDX,AL;写入控制字
MO:
MOVDX,PORT_C;检测开关信号
INAL,DX
TESTAL,01H;检测按键1是否被按下
JZK1
TESTAL,02H;检测按键2是否被按下
JZK2
JMPTHEEND;无有效按键时输出
K1:
CALLL1
JMPMO
K2:
CALLL2
JMPMO
L1:
;模拟流水灯左移
MOVDX,PORT_B;设置B口输出
MOVAL,07FH
L10:
OUTDX,AL;B口输出
ROLAL,1;AL带进位左移一位
CALLDELAY;调用延时子程序
MOVDX,PORT_C
INAL,DX
TESTAL,01H
JZL10
RET
L2:
MOVDX,PORT_B;模拟流水灯右移
MOVAL,0FEH
L20:
OUTDX,AL;B口输出
RORAL,1;AL带进位右+移一位
CALLDELAY;调用延时子程序
MOVDX,PORT_C
INAL,DX
TESTAL,02H
JZL20
RET
THEEND:
MOVAL,0FFH
MOVDX,PORT_B
OUTDX,AL
JMPMO
DELAY:
MOVBX,200;用双层循环嵌套实现延时功能
DEL1:
MOVCX,1000
DEL2:
LOOPDEL2
DECBX
JNZDEL1
RET
CODEENDS
ENDSTART
◆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:
双向选通传送方式,适用于与双向传送数据的外设和查询和中断方式的接口电路
参考文献
[1]周荷琴,吴秀清编著.微机原理与接口技术合肥:
中国科学技术大学出版社,2008.6
[2]潘新民,王燕芳编著.微型计算机控制技术北京:
高等教育出版社,2004。
[3]周明德编著微型计算机系统原理及应用北京:
人民邮电出版社,2007。