- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
(一)硬件设计
1.电路需求分析
本系统要实现的功能是模拟十字路口红绿灯的工作状况。按照预先设定并优化的交通灯规则,控制LED指示灯的亮灭,同时在实验箱的数码管显示屏上显示剩余的时间。当时间递减到0的时候,改变LED灯的状态,并刷新显示屏显示的时间。
为了实现以上功能需求,本系统需要12个LED指示灯,来分别代表四个路口的直行、左转和右转灯;两个双位的数码管显示屏,用来显示1、3路口和2、4路口剩余的时间。
为了实时地更新数码管显示屏上的数字,需要使用8255A可编程芯片来即时地改变显示屏每个笔划的电平高低,从而准确地将需要显示的数字显示在数码管显示屏上。
由于交通灯需要按秒进行计数,所以需要一个均匀地时钟发生器。8253A芯片是个功能丰富、使用简单的定时/计数器。它可以根据需要设置不同的显示初值,从而产生所需频率的时钟脉冲,为系统提供计时和驱动其他事件的发生。8259A中断控制器芯片可以在收到8253A发出的时钟脉冲时,产生定时的中断,在中断服务程序中,更新显示缓冲区,并调用8255A芯片来执行相关程序,从而更新LED灯和数码管显示屏。
本系统使用集成的电路和实验环境,以方便进行电路的连接和测试,同时减少由于电路的复杂性而产生的错误。
2.电路连接设计
本系统所使用到的硬件包括8253A芯片、8259A芯片、8255A芯片、LED指示灯和数码管显示屏。
在电路连接的时候,将8255A芯片的PB4-PB7连接至四个路口的直行灯,PC0-PC3连接至四个路口的右转灯,PC4-PC7连接至四个路口的左转灯。通过改变8255A的PB口和PC口的值来实时地控制每个LED灯的亮灭,从而改变十字路口的交通状态。将8255A的CS插孔CS-8255接译码输出Y7插孔。
将8253A的T2CLK插孔连接至1MHZ的分频输出插孔。分频输出插孔所输出的频率是将系统的主频分解为一定的频率,以供其他硬件或者软件使用。8253A从分频插孔得到1MHZ的固定频率,再根据芯片内部设定的计数初值,从而产生需要频率的时钟脉冲,由T2OUT口输出,供其他芯片使用。
将8253A的T2OUT插孔连接至8259A的IRQ3插孔上。8259A的IRQ3中断口每隔固定的时间便会收到8253A发送过来的时钟脉冲,作为中断源来执行中断服务程序。在中断服务程序中,完成更新数码管显示值和改变交通灯状态的功能。
硬件的连接见图2-1和图2-2。
(二)软件设计
程序总体设计
本系统采用“自上而下总体规划、自下而上应用开发”的策略进行总体设计和开发。先根据其功能需要,设定需要的功能模块,确定需要编写的子程序,从而使程序结构清晰,便于阅读和调试,加快了系统完成的速度。结构化的程序设计方法很适合用来开发汇编语言程序,因为汇编语言的特性决定了其无法使用面向对象的程序开发方法;使用瀑布程序开发模型,从开始的时候把系统的需求分析透彻,对系统的功能和各个模块进行清晰的规划,从而缩短系统开发所用的时间。
为了完成系统的功能,系统的程序部分应包含以下几个模块(见图2-3)。各个模块有的为一个子程序,有的为几个子程序的集合,有的为一段代码,但是其功能却是相互独立和便于调用的。
程序定义模块。它用来定义系统的代码段、数据段、堆栈段、所使用到的常量和变量、8253A、8255A和8259A的各控制口和数据口地址,以及系统的储存地址的偏移量。汇编语言所编写的程序开头有固定的格式,为下面程序的运行建立必须的条件。
芯片初始化模块用来初始化各个芯片,分为以下几个步骤:写8253A芯片的控制字,选用方波发生器方式,并设定其使用通道2进行工作;定义8255A的工作方式,使A、B、C三个端口均工作于方式0,且为输出口;写8259A的ICW1、ICW2、ICW3和ICW4,设定其工作方式为循环等待中断方式。
地址赋初值模块(FORMAT)用来定义数字对应的显示字符,便于转换模块将时间缓冲区中的数值转换为便于数码管显示的字符;定义“ERR“显示区,供INT7中断服务程序调用;定义初始显示缓冲区中的字符,用于系统初始运行的时候,直接从此取值进行显示;定义显示缓冲区,用于存放系统运行时剩余时间所对应的显示字符;定义交通灯的初始状态、初始时间缓冲区的值,便于系统开始运行时从此数值开始递减,LED灯也按照这里定义的状态值进行点亮。
等待模块(WATING)在中断请求没有到来的时候,根据交通灯所处的状态,判断应调用哪个交通灯状态程序,从而点亮相应的LED灯;有中断请求时,调用相应的中断服务程序。
交通灯状态模块存放着四个交通灯状态子程序ZT1、ZT2、ZT3、ZT4,供等待模块调用。当某个子程序被调用时,便点亮相应的LED灯。
中断处理程序分
原创力文档


文档评论(0)