"景先生毕设|www.jxszl.com

基于8255扩展的多模式跑马灯设计

2023-02-23 22:00编辑: www.jxszl.com景先生毕设
基于8255扩展的多模式跑马灯设计
一、    设计目的
为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知 识解决实际问题的能力,开始为期两周的课程设计。通过设计使学生在巩固所学知识的基础 之上具有初步的单片机系统设计与应用能力。
1、    通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语 言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、 软件编程、系统控制等工作奠定一定的基础。
2、    学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实
用程序,并仿真运行,保证设计的正确性。
3、    了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、 编程、调试、撰写报告等。

二、    设计内容与要求
内容:用8155或8255扩展I0实现16个LED的跑马灯,提供多种跑马灯运行模式。
要求:1、掌握原理图画法,在PROTEUS平台上用单片机完成所选题目的原理图设计。
2、    在KEILC平台上使用C语言编程实现编程,并调试通过。
3、    在PROTEUS平台上利用设计好的原理图和调试好的程序完成整个仿真。
4、    按设计报告要求完成课程设计报告。

三、    系统总体设计
3.1、    问题分析
本次课程设计的题目是单片机课程设计,根据我们所学的单片机知识和本次课设的内容 要求,我们知道虽然在80C52系列单片机中,有四个8位I/O端口,但真正能够提供给用户使 用的只有P1 口,因为P0口和P2口通常需要用来传送外部存储器的地址和数据,P3口也需 要使用它的第二功能。因此,单片机提供给用户的I/O接口线并不多,对于复杂的一些的应 用系统都应该进行I/O 口的扩展。而本次课设又要求跑马灯有多种运行模式,而这些操作模 式可以完全由8255的控制寄存器的控制字决定。利用8255的控制字模式来定义8255输出口 的个数,驱动所需的LED灯的个数,从而实现课设的目的。
3.2、    方案提出
本次课程设计的内容是用8155或8255扩展I/O实现16个LED的跑马灯,并且要提供多 种跑马灯运行模式。基于这一设计内容和上面的问题分析,我提岀利用AT89C52驱动扩展 8255数据输出口来实现16个LED跑马灯的显示,并且利用AT89C52的外围按键电路(设置 三个按按键,其中一个按键用于控制16R LED灯模式的输出,另两个用于控制16R LED灯 速度的输出。)实现16个LED的不同运行模式。
3.3、    设计思路
根据以上方案,AT89C52的P2.5--P2.7三个接口接按键电路,不论加速、减速还是运 行模式都是由单片机内部的程序控制;P0 口接7段共阳数码管,用来显示跑马灯的9种不 同运行模式;P0 口接8255的输入口 D0--D7; 8255的PA、PB 口外接16个LED,通过程 序控制这两个端口的电平高低,将16个LED的正极接+5V电源,负极接PA和PB 口,即 PA和PB 口的相应端口为高电平时,LED的两端都为高电平,所以LED不亮,当LED的相 应端口为低电平时就能被点亮。再通过程序循环让各个LED以不同的方式被点亮来达到跑马 的效果,并且其中要有一定的延时,延时时间要大于人眼视觉暂留时间,否则人眼看上去每 个灯都是亮的也就没有跑马效果。
3.4、    系统总体框图

四、系统硬件设计
4.1、整体电路设计
41.1、电路设计及功能
本设计采用AT89C52驱动可编程接口芯片8255的扩展来实现LED的多种显示模式。让 AT89C52芯片的P0 口与8255芯片的三态双向数据总线D0-D7连接,实现数据传送。当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线 传送。8255的地址选择线A1、A0分别与AT89C52的P2.1和P2.0连接,通过定义不同的地 址来选择8255芯片的PA 口或PB 口工作。读写命令线分别与单片机的读写命令线相连,片 选线和复位线直接接地。同时16个LED灯的左侧8个从左到右依次与PA7-PA0口相连,右 侧8个从左到右也依次与PB7-PB0口相连,通过K1按键可以选择不同的运行模式,通过K2、 K3按键可以选择不同的速度,本次设计实现了9种跑马灯的运行模式。
4.1.2,硬件原理框图
图2硬件原理框图
4.L3、电路原理图
名称:16只LED不同模式的跑马灯 说明:
单击模式按键可在勢8个模式中选择, 加速和减速按键可调整LED滚动显示 的速度。

图3电路原理图
4.2、单元电路设计
4.2.1、单片机最小系统
1、    方案设计与论证
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的 系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路、电源 电路。本设计没有用到晶振电路。无论用户使用哪种类型的单片机,总要涉及到单片机复位 电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。
2、    复位电路设计
无论是在单片机刚开始接上电源时,还是运行过程中发生故障时都需要复位。复位电路 用于将单片机内部各状态恢复到一个确定的初始值,并从这个状态开始工作。单片机的复位 条件:必须使其RST引脚上持续出现两个(或以上)机器周期的高电平。
单片机的复位形式:上电复位、按键复位。上电复位电路中,利用电容充电来实现复位。 在电源接通瞬间,RST引脚上的电位是高电平,电源接通后对电容进行快速充电,随着充电

的进行,RST引脚上的电位也会逐渐下降为低电平。只要保证RST引脚上高电平出现的时 间大于两个机器周期,便可以实现正常复位。按键复位电路中,当按键没有按下时,电路同 上电复位电路。如在单片机运行过程中,按下复位键K4,已经充好电的电容会快速通过200Q 电阻的回路放电,从而使得RST引脚上的电位快速变为高电平,此高电平会维持到按键释放, 从而满足单片机复位的条件实现按键复位。本设计采用按键复位。

图4复位电路图
3、芯片简介
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦 写的Flash °读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用 ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置 通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多 较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中 断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52 可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

图5 AT89C52引脚排列图
4.2.2,按键电路设计
1、方案设计与论证
按键电路主要向AT89C52单片机发送动作信息来控制整个系统。K1是选择模式键,K2
可以对跑马灯的速度进行加速,K3可以对跑马灯的速度进行减速。整个系统可以实现对跑马 灯模式的多层控制,可以进行加减速。模式、加速、减速分别接P2.5、P2.6、P2.7 口,再 通过按键接地。当按键按下时向单片机发送低电平信号,当单片机釆集到低电平信号时,启 动中断进而转向处理相应的中断处理程序,实现预期的功能。基于本设计要求选择的按键是 不带锁存的,向单片机发开关信号,即低电平信号。
P2.3/A11
P2 4/A12
P2 5/A13
P2.6/A14
P2 7/A15
P3.0/RXD
P3 1/TXD
P3 力WiT
图6按键电路图
4.2.3、显示电路设计
1、LED显不部分
显示部分用16个发光二极管分别接在PA和PB 口,通过程序控制PA和PB的16个端 口按照一定的方式依次为低电平以点亮相应端口的LEDo
                            
图7 LED显示电路图
2、数码管显示部分
选取共阳极数码管,它有7段每段都有一个引脚,通过单片机的I/O 口向其写低电平并 用电阻限流就可以点亮相应的段,通过0-9 I-进制编出相应的数码显示数字编码。本设计数 码管显示的模式共9种,相应模式由数码管显示出来,每当模式按钮按下时,相应的模式加 一,数码管显示相应模式。
共阳数码管简介:
图8数码管引脚图
图9数码显示电路图
424、I/O 扩展
本设计采用8255进行I/O 口扩展o8255的地址选择线A1、A0分别与AT89C52的P2.1 和P2.0连接,当A1A0=00时,选择PA 口工作,当A1A0=01时,选择PB 口工作。读写命 令线分别与单片机的读写命令线相连,片选线和复位线直接接地。
8255芯片简介如下:
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O 口。具有3个 通道3种工作方式的可编程并行接口芯片(40引脚)o 8255作为主机与外设的连接芯片,必 须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设 连接的接口 A、B、C 口。

8255引脚功能:
RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器) 均被清除,所有I/O 口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/cs=o时,表示芯片被选中,允 许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输。
RD:读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=O时,允 许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=O时, 允许CPU将数据或控制字写入8255o
DO〜D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指 令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式 下工作:方式0——基本输入输出方式;方式1——选通输入/出方式;方式2——双向选通 输入/输出方式。
PA0〜PA7:端口 A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据 输入锁存器。工作于三种方式中的任何一种。
PBO〜PB7:端口 B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。 不能工作于方式二。
PCO〜PC7:端口 C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据 输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一 个4位的锁存器,分别与端口A和端口 B配合使用,可作为控制信号输出或状态信号输入端 口。不能工作于方式一或二。
A1、A0:地址选择线,用来选择8255的PAD、PB 口、PC 口和控制寄存器。

五、系统软件设计
5・1、程序流程图
程序设计思路:主程序中默认执行0模式跑马灯。在中断服务程序中,首先读取按键状 态,然后延时10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示 是抖动,退出中断;否则,就去判断是哪个按键按下。如果是K1,就执行下一个跑马模式; 如果是K2,就执行跑马加速;如果是K3,就执行跑马减速。
图11中断子程序流程图
5.2、算法
1、    程序的开始,先包含相应函数的头文件名,再定义8255控制字、PAD、PB 口以 及各个参数和及各个位等。
2、    编译三个函数,分别是void Delay()函数、void Led_Display()函数和void KeyProcess()函数,它们依次是延时函数、LED显示函数和按键处理函数。
3、    主函数中,开中断,启动定时器,设置8255的PA、PB 口为输出口,并且用while(1) 函数进行按键的判断和处理。
4、    延时函数中,使用while()和for(;;;)构成的嵌套函数来达到延时的目的。
5、    LED显示函数中,让PA 口显示高八位,PB 口显示低八位,再使用开关函数执行 LED不同的跑马模式。如果LED滚动方向是逻辑“T,那么LED从右向左循环亮灯,如果 LED滚动方向是逻辑“0”,那么LED从左向右循环亮灯。
6、    按键处理函数中,如果检测到K1按下,那么LED的滚动方向Dirtect和移动位数 mb_Count重新设置为初始值,LED的滚动模式加1,并在数码管上显示相应的模式号。如 果检测到K2按下,那么在相应的模式上LED的滚动速度加1,如果检测到K3按下,那么 在相应的模式上LED的滚动速度减1o
程序中各个参数之间都一一对应,根据要求相互呼应。通过控制这些参数的量值来实

现硬件仿真中多种跑马灯的运行模式。
5.3、    编程技巧
设计中,将PA 口设置为显示高八位LED灯,PB 口设置为显示低八位LED灯,要注意 两组初始值并不相同,多个函数和参数组合使用,实现跑马灯的多种运行方式。
5.4、    源程序清单(见附录一)
六、仿真过程综述
用KEILC将程序编写好之后,先编译程序,检查程序有无错误。如果有错误就要改正, 直到没有错误,最后编译、链接生成.HEX文件,再用PROTEUS画好硬件电路图,将刚生 成的.HEX文件添加到AT89C52中,点击运行按钮进行仿真调试,在调试过程当中通过调试 的结果完善程序。仿真过程中,打开仿真开关,系统工作在默认的0模式,跑马速度也是默 认的,当不断地按下按钮K1时,系统的跑马模式在0~8模式中更换;当不断地按下按钮K2 时,16只LED灯的跑马速度会在当前运行模式下不断地增加,直到达到最大跑马速度;当 不断地按下按钮K3时,16只LED灯的跑马速度会在当前运行模式下不断地减小,直到达 到最小跑马速度。

七、调试过程中的主要难点及解决思路和办法
刚开始调试时,我发现数码管显示不正常,LED灯没有跑马的运行方式,按键部分K1、 K2和K3都不起作用。后来经过仔细检查源程序和同学们的讲解,我找到了问题的原因所在 o因为我在主函数main()中对AT89C52的PO、P1、P2和P3端口都赋了初值OxFF,才导 致这四个端口处都是高电平,从而导致电路工作不正常。把这一句代码删掉后,再进行仿真, 这时电路的各个部分工作都正常了,但是美中不足的是16只LED灯的显示方式看起来不连 贯,然后我又根据源程序更改了 8255的PA、PB端口与16只LED灯的连接顺序,直到16 只LED灯的显示方式看起来循环连续。
八、课设结果及分析、收获、体会和建议
8.1 >结果及分析
打开仿真开关,系统工作在默认的0模式,如果Dirtect=1, LEDFIag=1,那么执行语句 Led_Display(OxFFFE«mb_Count), 16只LED灯从右向左依次全亮;这时如果移动位数 mb_Count=15,那么 Dirtect=!1=O, LEDFIag=1 不变,同时 mb_Count 也变为初始值 0,并 且16只LED灯立即全灭,然后执行else中的语句Led_Display(0x7FFF»mb_Count), 16 只LED灯从左向右依次全亮;这时如果mb_Count=15,那么Dirtect=!0=1, LEDFIag=!1=0, 同时mb_Count重新变为初始值0,然后再执行第一个嵌套语句的else中的语句 Led_Display(~(0x7FFF»mb_Count)), 16只LED灯第一个不亮,后15个同时全亮,接着 从左向右LED灯依次全灭,在这一过程中,由于人眼视觉暂留原因,看不到16只LED灯立 即全灭接着第一个灯不亮,后15个同时全亮的过程;这时如果mb_Count=15,那么 Dirtect=!1=0, LEDFIag=O不变,同时mb_Count也变为0,然后执行第二个嵌套语句的else 中的语句Led_Display(~(OxFFFE«mb_Count)), 16只LED灯前15个同时全亮,最后一个 不亮,接着从右向左LED灯依次全灭,这样就完成了一轮循环,然后按上述顺序再进行第二 轮、第三轮……循环。

8.1、收获体会
为期两周的单片机课程设计已经接近尾声,回顾这两周的课程设计,我感觉自己收获颇 丰。首先,我对单片机以及C语言的认识和理解水平又上升了一个台阶,并且加深了我对软 硬件结合的认识;其次,本次课设将我们平时学到的理论知识真正应用到了实际应用中去, 实现了学与用相结合这一宗旨;最后,本次课设涉及到了对两个软件KEIL C和PROTEUS 的学习,现在我已经基本熟悉了这两个仿真软件的相关知识和操作方法。总之,从本次课设 中我所收获到的知识,虽然目前看来没有用武之地,但是它为我们将来从事电子产品设计、 软件编程等工作必会奠定良好的基础。
万事开头难,在刚开始课程设计的时候,大家都有点茫然而且都有无从下手的感觉。首 先是题目的选择,在没有决定题目之前,查找资料是毫无目的的,基本是查查这个资料,待 会又查查另一个,这大大的浪费时间。最后,经过老师的指导以及自己查阅相关的资料,逐
渐有了自己的设计想法,终于定下了题冃,并且制定出了系统的结构框图。
此次课程设计,关键的是整个课设过程。回顾起此次课程设计,至今我仍然感慨颇多。
在这段时间里,从理论到实践,可以说得是苦多于甜,但是我们从中可以学到很多很多的东 西,同时,不仅可以巩固我们以前所学过的专业知识,而且学到了很多在书本上所没有学到 过的知识。通过这次课程设计,我懂得了理论与实际相结合是很重要的,只有理论知识是远 远不够的,只有把所学的理论知识与实践相结合起来,从实践中得出结论,才能真正掌握所 学的知识,从而提高自己的实际动手能力和独立思考能力。这次课程设计不仅锻炼了我们的 动手能力,更开阔了我们的思维境界,使我们的知识更丰富,同时也增加了我们对所学专业 的兴趣。在这次课程设计的过程中我也遇到了诸多的问题,可以说是困难重重,但是通过对 设计的认真分析以及与同学们的讨论,我找到了其中的出错点,将其一一改正,最终这些问 题都得到了解决。
希望学院平时多给我们出一些小设计课题,我认为像这样自己做一个设计对理论知识的 学习和掌握还是很有帮助的,当我们遇到不懂的问题的时候,还可以得到老师的细心指点, 这样才能够更全面的认识和掌握某一方面的知识。

九、致谢
单片机课程设计为我们提供了一个展现自己的舞台,一次难得的锻炼理论和实践相结合 能力的机会。因此,在这里我应该感谢的人很多,首先,感谢实验室的各位指导老师们,谢 谢您们的悉心指导,特别是我们的指导老师——李贺老师的细心指导,其次,感谢各位同学 对我的耐心帮助。所有的这些,都将激励我在将来的学习中积极进取,用优良的表现来回报 老师和同学对我的关心和帮助。

十、参考文献
[1]徐爱钧,彭秀华.Keil C52 V7. 0单片机高级语言编程与pVision2应用实践(第二版). 北京:电子工业出版社,2008
[2]李学礼.基于Proteus的8051单片机实例教程(第二版).北京:电子工业岀版社,2008
[3]谭浩强.C程序设计(第三版).北京:清华大学出版社,2006
[4]胡汉才.单片机原理及其接口技术(第三版).北京:清华大学出版社,2010
[5]阎石.数字电子技术基础(第五版).北京:高等教育出版社,2006
[6]谢自美.电子线路设计与实验.武汉:华中科技大学出版社,2006
[7]百度搜索引擎.网址:http://baike.baidu.com/view/2251929.htm
[8]百度搜索引擎.网址:http://baike.baidu.com/view/1684872.htm
原文链接:http://www.jxszl.com/lwqt/yzlw/181802.html