《2023年综合系统设计试卷(最新版).pdf》由会员分享,可在线阅读,更多相关《2023年综合系统设计试卷(最新版).pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、综合系统设计题目 题目一:智能时控开关设计 主要内容:利用单片机中的定时器、IO 接口、中断系统等资源,设计一智能时控开关系统,能根据时刻信息或倒计时信息对多路开关进行控制。基本要求:(1)系统含 24 小时时钟,用数码管可显示小时、分钟及秒时间信息。(2)可通过按键对时钟进行校准,可对定时时刻或倒计时时间进行设置。(3)定时时间到时,用发光二极管闪烁及蜂鸣器发声提示。人工干预后停止闪烁及发声,并用发光管指示开关状态。提高部分:(4)可对多路(35 路)开关进行定时控制。(5)可对每路按多个时间顺序设置开关控制。(如:8:00 开,12:00 关,14:00 开,16:00 关)。(6)尝试为
2、系统设置语音提示功能。题目二:交通信号灯模拟系统设计 主要内容:利用单片机中的定时器、IO 接口、中断系统等资源,设计一个十字路口交通信号灯的控制模拟系统。基本要求:(1)利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭。(2)可通过按键对红绿灯点亮和熄灭时间进行调整及设置。(3)能对红绿灯点亮和熄灭时间进行倒计时时间显示。提高部分:(4)可进行紧急或特殊情况的人工处理控制。(5)有内部 24 小时钟,可根据时间表对对红绿灯点亮和熄灭时间进行自动调整。(如高峰期:7:30-8:30,17:00-18:30 或夜间时段红绿灯主次干道时长比等)。(6)可根据交通流量自动调整对红绿灯点亮和熄
3、灭时间。题目三:智能温度采集与控制系统的设计 主要内容:利用单片机中的定时器、IO 接口、中断系统等资源,设计一个数字温度计,要求能在数码管上显示两位温度数值(假设温度变化范围为 050),且当温度每变化 1 度时立即更新显示。基本要求:(1)系统能通过 I/O 接口线对加热装置进行控制,并通过 A/D 转换电路采集该装置温度信息。(2)具内部 24 小时时钟,可利用两位 LED 数码管即时显示采集的温度值。(3)当温度每变化 1 度时应立即更新显示。提高部分:(4)设计温度控制功能,对加热装置的某个温度值进行控制。(5)设计温度控制功能,对加热装置的某个温度范围进行控制。题目四:乒乓球游戏模
4、拟器设计 主要内容:利用单片机中的定时器、IO 接口、中断系统等资源,设计一个乒乓球游戏模拟器,在仿真环境下进行模拟乒乓球比赛。用 8 个 LED 发光管的来回滚动显示模拟打乒乓球时乒乓球在两边球台上的来回运动。比赛双方各用 1 个按钮来模拟发球与接球,即发球方按动其控制的按钮,球从发球方一侧向对方运动(LED 发光管从发球方到对方逐个点亮,滚动显示)。当球运动至接球方时,接球方立即按动其控制的按钮,“击球”使球“弹回”发球方一侧。如此周而复始,直至在规定的击球时间内有一方未能完成击球动作,从而对方得一分;然后继续比赛。基本要求:(1)记分。比赛双方各用 3 位八段管记录得分,其中 1 位记录
5、盘分(大比分,如 3:2),2 位记录局分(小比分,如 09:05),盘分局分初始值均可预先设定。(2)十一分制。7 局 4 胜,两球轮换发球,在一局比赛中,先得 11 分的一方为胜方。比赛结束八段管显示胜负局数,按键后重新开始。(3)发球方的初始状态为:靠近己方的第 1 个 LED 闪烁发光,表示发球权的归属。(4)球以 1 LED/0.5s 的速度移动。在球到达前按下按钮无效(不起回球作用);在球到达后的 0.5s 内按下按钮有效(回球),否则失球(失分),本回合结束,刷新比分。*设计提示:球到达接球方后,立即读接球方的按钮状态,若未按则有效(若已按下则无效),然后不断读按钮状态,直到按下
6、代表“击球”动作。提高部分:(5)在一局比赛中,先得 11 分的一方为胜方,10 平后,先多得 2 分的一方为胜方。(6)可改变球移动速度,即每个 LED 点亮时间分别为 0.5s、0.4S,0.3s、0.2s。(7)可改变允许击球时间 0.5s、0.4S、0.3s、0.2s。(8)球移动速度取决于击球时间,即球移动速度(每个 LED 点亮时间)在 0.20.5s 内可变,具体取决于球到达接球方后击球所花的时间 00.5s,如花的时间短则回球后球移动速度快,反之回球后移动速度慢,如下表所示。球移动速度与击球时间对应表 球到达至击球时间/s 00.2 0.20.3 0.30.4 0.40.5 球
7、移动速度(灯点亮时间)/s 0.2 0.3 0.4 0.5 (9)比赛开始前双方争发球权。开始时刻 8 个 LED 发光管的第 4 个或第 5 个(中间位置)闪烁,按键或拔动开关产生 1 个随机数(0、1),0 向左方向,1 则向右方向滚动,得分方获发球权,题目五:设计并制作 4 路 LED 定时显示控制电路 主要内容:利用单片机中的定时器、IO 接口、中断系统等资源,设计一个 4 路 LED 定时显示控制电路。基本要求:(1)单片机系统设计。包括实时时钟的显示与调整,显示屏的驱动、键盘接口驱动电路等外围硬件的设计及其软件编程。(2)4 路 LED定时时间设置与存贮。(3)4 路 LED定时时
8、间的控制。通过比较当前时间和已存贮的 4 路 LED定时时间,完成对 4 路 LED的驱动显示。提高部分:(4)在对 4 路 LED定时时刻启动显示的基础上,完成对 4 路 LED定时时段的控制。题目六:模拟电梯设计 主要内容:利用单片机中的定时器、IO 接口、中断系统等资源,用键盘、按钮、八段数码管和 LED 模拟电梯工作过程。楼层设为 8 层,键盘数字键 18 用来键入希望停的楼层,8 个 LED 显示希望停的楼层,八段数码管指示电梯当前所在楼层,按扭用来启、停电梯。电梯正常运行时以每 2 秒 1 层的速度上升或下降。基本要求:(1)运行按钮。设当前电梯停在某层(八段码显示相应楼层,8 个
9、 LED 全灭)。键入 18 数字键,如键入的数字与当前电梯停层相同,则不发生任何动作;若不同则相应楼层的 LED 亮。如再按运行键,则电梯自动判别上升或下降(在运行过程中八段码显示楼层变化)一直到达希望停的楼层(八段码显示该楼层,相应 LED 灭);(2)动态增加新的停靠楼层。设当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED 指示希望抵达的楼层),若键入新的希望停的楼层数字(相应的 LED 亮),则对同方向(上升或下降)未到的楼层能停,对其他情况则先停原希望停的楼层,然后按运行键后继续进行。如下几例:a)设电梯当前在 2 层,向上运行,LED 指示希望在 6 层停,此时若键入 4
10、,则电梯将在 4 层停;若再按运行键,则继续运行至 6 层停。b)同上情况,若键入的不是 4 而是 8,则电梯将先停在 6 层;再按运行键,运行至 8 层停。c)同上情况,若键入的不是 4 或 8,而是 1,则电梯先停在 6 层;再按运行键,运行至 1 层停。提高部分:(3)直达按钮。若按此按钮,电梯按直达方式运行,即对运行期间新键入的停靠楼层(即使是同方向未到楼层)不作停靠,直达终点楼层。(4)急停按钮。电梯运行中,若按此按钮,则电梯立即停在将要到达的楼层。(5)断电待修按钮。按下该按钮电梯不能工作,再按一下才能重新工作。附 1 论文形式(1)设计过程:系统分析及总体目标设计(含功能、使用规
11、范)总体方案确定 硬件设计、软件设计 系统组成及修改调试 实验设计报告(2)设计报告要求:必须独立完成,格式符合要求,文字(不含图形、程序)不少于 3000 字,图形绘制规范。设计报告的格式如下:1、封面 2、内容提要 3、目录 4、正文(1)所作题目的意义、本人所做的工作及系统的主要功能;(2)硬件电路设计及描述;(3)软件设计流程及描述;(4)源程序代码(要有注释);5、心得体会 6、参考文献 (3)论文形式示例 智能风扇设计报告 谭宇 何莹 姚瑶(武汉大学电子信息学院 430072)摘要:系统以单片机与 FPGA为核心,利用移相斩波法,使用光耦和可控硅,通过对 220V交流电的相位跟踪来
12、调节可控硅的导通角,实现对电压有效值的连续调节,从而实现风扇转速在 0-600 转的连续精确可调,并能控制风扇实现普通风、自然风、睡眠风三种智能功能,同时测出对应时刻的风扇转速,并且还带有红外遥控功能。整个系统结构简单,功能全面,达到了风扇转速的智能化控制的指标。关键字:0 引言 1 方案比较与论证 1.1 题目任务要求及相关指标的分析 1.2 方案的比较与选择 2 系统总体设计方案及实现方框图 3 理论分析与计算 4 主要功能电路的设计 5 系统软件的设计 6 测试数据与分析 7 结论 8 参考文献 附 2 乒乓球游戏模拟器设计 1)基本要求 用 8 个 LED 发光管的来回滚动显示模拟打乒
13、乓球时乒乓球在两边球台上的来回运动。比赛双方用按按钮(双方各用 1 个按钮)的方法来模拟发球与接球,即发球方按动其控制的按钮,球从发球方一侧向对方运动(LED 发光管从发球方到对方逐个点亮,滚动显示)。当球运动至接球方时,接球方立即按动其控制的按钮,“击球”使球“弹回”发球方一侧。如此周而复始,直至在规定的击球时间内有一方未能完成击球动作,从而对方得一分;然后继续比赛。比赛规则可参照一般的乒乓球比赛规则。比赛规则制订:(1)十一分制(两球轮换发球)二十一分制(五球轮换发球)。可用一位开关设定。(2)发球方的初始状态为:靠近已方的第 1 个 LED 闪烁发光,表示发球权的归属。应根据规则由系统自
14、动设定初始状态。一般要求可自行定义首次开局由左方先行发球。(3)失球后(未完成击球动作)应在八段码显示得失分数,并判断是否换发球,以继续比赛。(4)由开始时刻对规则的设定,当计满最高分时,(十一分、二十一分)结束当前局比赛,并熄灭所有 LED 发光管,(当前局结束标志)按键重新开始交换发球权,回到规则(2)。(5)设定 3 局 2 胜或 5 局 3 胜制,比赛结束八段码显示胜负局数,按键后可重新开始。设计要求:(1)球以每 0.5s 滚过 1 个 LED 的速度移动。(2)回球需在球到达后的 0.5s 内进行(按下按钮),否则按失球计。(3)球未到达提前按下按钮不起回球作用。(4)用 6 个八
15、段码为双方记分(每方 3 个八段码,十进制计数,初始值 0:0)。2)设计提示 球到达接球方后,立即读接球方的按钮状态,若未按则有效(若已按下则无效),然后不断读此按钮状态,直到按下代表“击球”动作。3)进一步设计要求(1)通过拨动开关改变球移动速度,即每个 LED 管点亮时间分别为 0.5s、0.4S,0.3s、0.2s。(2)通过拨动开关改变允许击球时间 0.3s、0.2s、0.1s。(3)球移动速度取决于击球时间,即球移动速度(每个 LED 点亮时间)在 0.20.5s 内可变,具体取决于球到达接球方后击球所花的时间 00.5s,如花的时间短则回球后球移动速度快,反之回球后移动速度慢,如
16、表 1 所示。表 1 球移动速度与击球时间对应表 球到达至击球时间/s 00.2 0.20.3 0.30.4 0.40.5 球移动速度(灯点亮时间)/s 0.2 0.3 0.4 0.5 (4)发球权由争球决定,开始时刻 8 个 LED 发光管的第 4 个或第 5 个(中间位置)闪烁,按键或拔动开关产生 1 个随机数(0、1),0 则向左方向,1 则向右方向滚动争球比赛开始,得分方获发球权,正式比赛开始。一、乒乓球比赛程序的数据设计 为叙述简单起见,将比赛双方称为 A 和 B(1)确定每局的比赛分数 即确定 11 分一局还是 21 分一局,这可定义一个称为 V1 的变量,它的内容为 11 或 2
17、1,表示一局比赛的分数,其数值用一个称为 K1 的拨动开关决定,可定义为当 K1 为“0”时,V1=11;K1 为“1”时,V1=21。(2)确定每方的发球次数 按照乒乓球比赛规定,若采用 11 分一局的赛制,每方发球次数为 2;若采用 21 分一局的赛制,每方发球次数为 5。故再定义一个称为 V2 的变量,它的内容为 2 或 5,表示每方的发球次数,其数值同样由上述的 K1 开关所确定,可定义为当 K1 为“0”时,V2=2;K1 为“1”时,V2=5。(3)确定每盘的获胜局数 这也是定义一个称为 V3 的变量,其内容为 2 或 3,分别表示“3 局 2 胜”或“5 局 3 胜”,其数值用一
18、个称为 K2 的拨动开关决定,可定义为当 K2 为“0”时,V3=2;K2 为“1”时,V3=3。(4)确定发球方 这可定义一个称为 V4 的逻辑变量,其内容为“0”或“1”,可规定为当 V4=“0”时由 A 发球;而当 V4=“1”时由 B 发球。若希望改变发球方,只要对 V4 变量执行“取反”操作即可。以下讲述“在比赛中如何确定发球方?”的处理方法,这只要为比赛双方分别定义两个“发球计数器”(用符号 CA 和 CB 表示),每赛完一分,先执行“将当前发球方的发球计数器的内容加 1”的操作,再进行“当前发球方的发球计数器的内容是否小于变量 V2?”的判断,若成立就维持当前发球方的发球权,否则
19、就执行“将当前发球方的发球计数器清除为 0”的动作后,再改变发球方。由于乒乓球比赛中有一个“轮换发球”的规定,即若比赛双方所获得的分数均不小于 10(或 20)分后,每赛完一分,就交换一次发球权,故只要当有这个条件,就要执行“将上述 V2 变量的数值设置为 1”的动作。(5)比赛分数统计 这只要为比赛双方分别定义两个“赛分计数器”(用符号FA和FB表示),比赛中谁获得了赛分,就执行“将与其对应的赛分计数器加 1”的动作。(6)确定获胜局 每获得一个赛分,都应进行“是否赛完了一局?”的判断,其处理过程如下(设想 A 获得了赛分),若“(FA)-(FB)不小于 2”和“(FA)不小于(V2)”这两
20、个条件都成立,那么 A 就得到了一个“获胜局”。(7)确定获胜方 每得到一个“获胜局”,都要进行“确定获胜方”的判断,为此应为比赛双方分别定义两个“局计数器”(用符号 JA 和 JB 表示),比赛中谁得到了一个获胜局,就执行“将与其对应的局计数器加1”的动作,再进行如下的判断(设想 A 得到了获胜局),若有“(JA)不小于(V3)”的条件成立,那么A 就是“获胜方”,否则执行“开始下一局比赛”的动作。二、系统的软件设计思路 任何软件的设计首先都应该对模型进行抽象使用形式化语言对任务进行描述。对于具体到本实验的设计:最需要描述和处理的事件就是击球动作(即按键的响应),比赛双方任何一人按下键都是一
21、个击球动作,需要判断是发球还是击球,是提前击球是滞后击球还是准确击球,这是本实验把乒乓球游戏抽象为系统模型的一个关键点。是否准确击球具体实现方法为:若有键按下则先判断 A 还是 B 击球(按下按键),再根据球所在位置(即当前 LED 的显示值)就可以判断击球准确还是失球。比如说现在 A 按键击球,而同时 LED 当前显示值为 01H(即 LED1 点亮,代表当前处于 A 的有效击球时间),则判 A 正确击球,反之若 LED 点亮处于其他任何状态都判 A 失球 B 得分;同样 B 的有效击球时间应为 LED显示值为 80H 的时间段内,其他时间段 B 有击球动作都判 B 失分。本实验另一个设计要
22、点就是 LED 的显示部分,球移动的动作抽象到系统模型即为 LED 的逐个点亮,而具体设计程序时,需要设计一个 LED 显示的子程序,再用不同的亮灯数值通过调用 LED 显示子程序刷新 LED 显示即可完成。另外定时中断在本实验中也占有相当大的比重,LED 逐个点亮的时间间隔,击球是否在规定时间内完成,这些都需要使用定时器来产生所需要的时间标度。本实验实现难点就在于程序编写过程中逻辑判断多且繁杂,为克服这一难点,对整个程序将用到的判断在程序开始统一设定标志位,这样既让程序显得简洁易懂又降低了程序的编写难度,例如:FZHI EQU 20H.0 ;20H.0 标志分制:0 为 11 分制;1 为
23、21 分制 FQIU EQU 20H.1 ;20H.1 标志发球权:0 为 A 发球;1 为 B 发球 其中各标志位的命名则由程序员的习惯而定。当程序实现功能较为复杂时,各子程序模块化的设计就显得尤为重要了。一个程序如果在模块化设计方面做得好,不仅使程序变得整洁易读,而且易于程序员修改与交流。本实验设计的程序主要包括主程序,键盘扫描子程序,判分子程序,显示子程序,中断服务子程序等五个大的模块。其中主程序主要初始化系统状态;键盘扫描子程序查询键盘返回键值并等待中断;显示子程序刷新 LED 和数码管的显示;定时中断服务子程序主要影响多个标志位。1 主程序 主程序在整个程序开始执行和乒乓球游戏重新开
24、始时被执行,实现系统的初始化,使软硬件各部分处于预定状态,其中对 8279 的初始化是相对比较复杂的一个部分,8279 初始化具体代码如下:MOV DPTR,#COM8279 ;8279 控制口地址 MOV A,#0D3H LOOP:MOVX A,DPTR JB ACC.7,LOOP ;8279 清零 MOV A,#34H ;20 分频 MOVX DPTR,A MOV A,#10H ;8 字符显示,右进,编码扫描,2 键锁定 MOVX DPTR,A ;8279 初始化 2 键盘查询程序 键盘查询程序应包含键盘扫描子程序和键值判断子程序,对于实验开发系统AEDK5196ET,键盘管理可以使用 8
25、255 或专用的键盘管理芯片 8279 来实现,在本文设计中,采用 8255 管理键盘,其中设计一个 2 行*8 列的键盘,2 根行线接在 PB0 和 PB1 上,8 根列线接在 PA0PA7 上,并将 8255 的片选信号 CS 接在编号为 8700H 的译码输出端.(具体代码可参考实验指导书)有了键盘扫描子程序,就可以设计键值判断程序调用键盘扫描程序后判断键值以转向不同的处理子程序.3 定时中断服务子程序 89C51 系统提供两个定时器,本文采用定时器 0 提供 10ms 的定时时间多次调用以产生10mS0.5S 或者更长的时间标度作为 LED 发光管移动的间隔时间。每次定时器溢出中断后程
26、序PC 被硬件设为 000BH,这时可在程序开头位置写一条转移指令如“ORG 000BH LJMP TOSEV ”即可在定时中断后转向自己编写的中断服务程序.4 判分处理子程序 在本实验中,判分程序是比较麻烦也比较容易出错的模块,在判分程序中,必须根据按键或是定时中断服务程序所设立的标志位来判断 A 和 B 的得失分和局比分情况,以及根据 AB得分和总的局比分刷新 LED 和数码管的显示数据。具体来说,A 提前击球或滞后击球(到 A 击球时间内 A 未击球也归于滞后击球),则 B 得分,此时应判断在 B 得分数加 1 后是否到最高分,是最高分则刷新局比分重新开始游戏。5 显示子程序 LED 的
27、显示在本实验中主要模拟球的滚动,实现方法和原理都很简单,首先在硬件连线上将 8个 LED 的接口连到 PO0PO7,再将作为输出锁存器的 74273 片选信号 CS 连到地址译码端口 8000H,这样只需向地址为 8000H 的外部 I/O 端口送数据即实现了 LED 的显示了。附 3 模拟电梯设计 基本要求:用键盘、按钮、八段码和 LED 模拟电梯工作过程。楼层设为 8 层,键盘数字键 18 用来键入希望停的楼层,8 个 LED 显示希望停的楼层,八段码指示电梯当前所在楼层,按扭用来启、停电梯。电梯正常运行时以每 2 秒 1 层的速度上升或下降。要求“电梯”能按以下方式运行:(1)设当前电梯
28、停在某层(八段码显示相应楼层,8 个 LED 全灭)。键入 18 数字键,如键入的数字与当前电梯停层同,则不发生任何动作;若不同则相应楼层的 LED 亮。如再按运行键,则电梯自动判别上升或下降(在运行过程中八段码显示楼层变化)一直到达希望停的楼层(八段码显示该楼层,相应 LED 灭);(2)设当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED 指示希望抵达的楼层),若键入新的希望停的楼层数字(相应的 LED 亮),则对同方向(上升或下降)未到的楼层能停,对其他情况则先停原希望停的楼层,然后按运行键后继续进行)。如下几例:a)设电梯当前在 2 层,向上运行,LED 指示希望在 6 层停,
29、此时若键入 4,则电梯将在 4 层停;若再按运行键,则继续运行至 6 层停。b)同上情况,若键入的不是 4 而是 8,则电梯将先停在 6 层;再按运行键,运行至 8 层停。c)同上情况,若键入的不是 4(或 8),而是 1,则电梯先停在 6 层;再按运行键,运行至 1层停。进一步设计要求:除运行按钮外,再设计几个按钮,模拟更多的电梯运行功能,如:1.直达按钮 若按此按钮,电梯按直达方式运行,即对运行期间新键入的停靠楼层(即使是同方向未到楼层)亦不停,直达终点楼层。2.急停按钮 电梯运行中,若按此按钮,则电梯立即停在将要到达的楼层。3.断电待修按钮 按下该钮电梯不能工作,再按一下才能重新工作。其
30、他功能按钮(由设计者自由发挥)。电梯状态的介绍 1)当电梯主体由低楼层向高楼层运动时,称为上升状态。2)当电梯主体由高楼层向低楼层运动时,称为下降状态。3)当电梯主体到达了某个乘客所希望到达的楼层(以下简称目标楼层)后,在系统中仍然有使用它的请求存在,称为暂停状态。4)当电梯主体到达目标楼层后,在系统再也没有使用它的请求存在,称为停止状态。5)当乘客进入电梯主体后,使用梯内控制器向系统发送到达其它楼层的请求时,称为楼层请求发送状态。6)当电梯正在运行时,产生了停电条件,此时称为停电状态。当电梯主体在进行状态转换时,将遵守以下的运行规则:1)上升状态能变为暂停状态,转变条件为电梯主体到达了目标楼
31、层。2)上升状态能变为停电状态,转变条件为电梯上升时遇到了停电条件。3)下降状态能变为暂停状态,转变条件为电梯主体到达了目标楼层。4)下降状态能变为停电状态,转变条件为电梯下降时遇到了停电条件。5)暂停状态能变为上升状态,转变条件为以下两个条件中的任意一个成立。键盘的管理策略的探讨及选择 方案一:实验装置上有一个 2*8 的键盘,它的 2 根行线接在 8255A 并行 I/O 接口的 PB0 和 PB1 上,8根列线接在 PA0PA7 上,使用行扫描法管理该键盘的子程序。方案二:采用实验装置上的 8279 来管理键盘。由于方案一可以满足设计需求。所以选择方案一来管理键盘。系统设计的主要难点 该
32、系统模拟真实电梯的运行,有生活经验可知电梯有楼层数字显示,内部面板按钮用以楼层请求且按下后相应的键亮(此处用 LED 模拟),上升下降显示(该系统不模拟电梯外部等待按键请求),所需控制的东西较多,实现起来逻辑需清晰。在基本要求及实现的功能中可知在电梯运行过程中有键按下后如何判断先满足哪个请求 系统的硬件设计思路 该实验在 ADEK5196 实验箱上实现电路设计。采用 8255 控制键盘查询,8279 控制的 8 段数码管(HL6,HL7)显示来表示当前电梯所在层,LED 控制楼层亮灯情况,串行口扩展并行输出接口的 8 段数码管(HL5)显示电梯运行状态“U”或“P”实验连线任务为:(具体电路可
33、参照单片机实验指导书)LED 控制部分:DL1DL8 接 74LS273 的 PO0PO7,其设备选择端“CS”接编号为 8100H 的译码器输出。8255 控制键盘查询部分:实验装置上有一个 2*8 的键盘,它的 2 根行线接在 8255A 并行 I/O接口的 PB0 和 PB1 上,8 根列线接在 PA0PA7 上,“CS”接编号为 8700H 的译码器输出.该部分只需将十个跳帽都跳至 8255 处即可。采用 8279 控制数码管显示:实验装置上该部分已连好所以无需连线。串行口扩展并行输出接口部分:将 74LS164 移位寄存器的 INDATA 连到 8031 的 RXD,CLK 连到 T
34、XD。系统的软件设计思路 一 软件算法 软件的设计是该设计的关键部分之一,对电梯模拟的显示控制不仅多而且复杂,尤其是对于在运行过程中有键按下的处理要用到多重判断,同时还要考虑键盘的响应问题,这些都是该系统设计着重解决的问题。下面先给出主程序流程图,从总体上说明该程序的实现,再从各个模块上进行分析。开始主程序键盘扫描子程序键值=0?点亮相应的 LEDK1K8按下?NYK1K8按下?Y返回主程序N键盘扫描子程序NY键盘扫描子程序2S到,当前楼层+1=键值?N存键值转判断子程序 二判断子程序:当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED 指示希望抵达的楼层),若键入新的希望停的楼层数字
35、(相应的 LED 亮),则对同方向(上升或下降)未到的楼层能停,对其他情况则先停原希望停的楼层,然后按运行键后继续进行。以下解释所用单元的含义:FLAG:上升下降标志。FLAG=1 上升,FLAG=0 下降。NOW:电梯当前值 FIR:第一次按键值(即第一次按下希望到的楼层)SEC:第二次按键值(即第二次按下希望到的楼层)其软件流程图如下所示:下面对各个模块的程序进行简要的分析:上电复位后即进入主程序,主程序对 8279、8255 及相应单元初始化,8 段数码管显示“1F”表示 1 层,系统等待键盘响应。下面给出 8279 初始化的程序片段:MOV DPTR,#COM8279 ;8279 端口
36、地址 MOV A,#0D3H 判断子程序SECFIR?NY先上升到SEC楼层FLAG=1?YSECNOW?YN先上升到FIR楼层0键按下?Y上升到未到的层返回主程序与上升类似的判断N返回主程序LOOP0:MOVX A,DPTR JB ACC.7,LOOP0 ;8279 总清零 MOV A,#34H ;CLK 20 分频 MOVX DPTR,A MOV A,#10H ;8 字符显示,右进,编码扫描,2 键锁定 MOVX DPTR,A ;8279 初始化完成 三、显示子程序的算法 a)采用 8279 来控制 8 段数码管的显示,用以模拟电梯楼层的显示。8279 采用 8 字符右进方式来显示当前楼层
37、值。从左到右依次将其记为 LED7-LED0。该实验 LED0 固定显示“F”,LED1 显示当前楼层值,LED2-LED7 灭灯。下面给出一程序片段:DISPLAY:MOV A,#71H MOV DPTR,#DATA8279 MOVX DPTR,A ;LED0 显示“F”MOV R1,#06H MOV DPTR,#SEGDA T1 ;取表格地址 MOV A,20H ;取当前电梯值 MOVC A,A+DPTR MOV DPTR,#DATA8279 ;LED1 显示当前楼层值 MOVX DPTR,A MOV A,#00H DISPLAY1:MOVX DPTR,A DJNZ R1,DISPLAY1
38、 ;LED7-LED2 灭 RET ;七段数码管的显示 b)采用串行口 0 方式来显示八段数码管的“U”或“D”,来模拟电梯的升降状态 程序片段如下:DIS:MOV A,22H ;存的“U”或“D”的值 MOV SCON,#00H MOV SBUF,A JNB TI,$CLR TI ;数据送显示 RET c)LED的 控 制 只 需 送 数 据LED即 可,但 键 盘 扫 描 的 值 为16进 制,需 转 化 成01H,02H,04H,08H,10H,20H,40H,80H 来模拟 1-8层的亮灯情况。这可采用查表来实现。四、键盘扫描子程序 所谓按查询方式工作的子程序,就是当引用该子程序的时候
39、若用户按下了键盘上的按键就会获得一个“有效键值”,否则将获得一个“无效键值”,对于 M 行 N 列的键盘来说,可认为的规定有效键值的取值范围为 0M*N-1,无效键值的数值为 M*N。此处给出该实验用到的键值及定义:1-8:对应的电梯楼层键。按下表示该楼层有请求 0:运行键。电梯按下需要到达的楼层显示对应的 LED,需按下此键才能运行到相应的楼层。9-F:可做为扩展功能的实现 程序可参考单片机实验指导书的键盘管理 五、定时器 1 延时 2S 子程序 定时器 1 采用模式 1,每 50ms 中断一次,中断 40 次为 2S。在子程序中 2S 到后电梯上升或下降 1 层,调显示子程序显示当前电梯值
40、。中断子程序片段如下:TOSEV1:MOV TL1,#00H MOV TH1,#4CH ;重装计数初值 DJNZ R2,LOOP MOV R2,#40 ;重置循环次数 MOV A,21H CJNE A,20H,JUDGE ;电梯是否到达所请求层数 LJMP LOOP JUDGE:JC JUDGE1 SETB FLAG ;FLAG=1 为上升 INC 20H ;2S 到电梯值加一 LCALL XIANSHI MOV 22H,#0C7H ;数码管 HL5 显示“U”LCALL DIS SJMP LOOP JUDGE1:CLR FLAG ;FLAG=0 为下降 DEC 20H ;2S 到电梯值减一
41、LCALL XIANSHI MOV 22H,#85H ;数码管 HL5 显示“d”LCALL DIS LOOP:RETI 附 4 交通灯控制设计(参考)一、实验目的 1了解模拟交通灯的控制方法 2熟悉并掌握顺序控制的设计方法 3掌握外部中断技术的使用方法 4掌握中断处理程序的编程方法 二、实验设备与器件 AEDK5196ET 实验系统 三、实验内容 1采用 74LS244 和开关等器件设计开关量输入接口电路 2采用 74LS273 和发光二极管及数码管等器件设计开关量输出接口电路 3插接开关量输入、输出接口电路 4编程实现交通灯的控制方法并运行程序测试接口电路 四、实验原理及要求 1交通灯的控
42、制规则:假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北黄灯闪烁几次,东西仍然红灯。最后循环至状态1。常态:假设某十字路口为东西南北走向,东西方向为主线,南北方向为支线。主线上绿灯的持续时间为 T1 秒,支线上绿灯的持续时间为 T4 秒,当主线或支线上的绿灯转换为红灯前,使用闪烁黄灯的方法过渡,且黄灯的闪烁方式为亮 T2 秒,灭 T3 秒,次数为 N 次。故可将交通灯的亮灯周期分成下述 4 个时段。详情见图 2.1。异常情况:如十字
43、路口有载有急救病人的救护车或去执行救火任务的消防车等专用车辆需要通过时,在主线和支线上亮红灯,持续时间为 T5 秒,暂时停止主线与支线两个方向的车辆运行;当专用车辆通过十字路口后,交通灯恢复上述常态运行规则。2双色发光二极管的使用方法:双色发光二极管是将一个红色 LED 管芯和一个绿色 LED 管芯封装在一起、公用负端的一个集成器件。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。实验中,采用 4 只双色发光二极管(DLED)分别模拟安装在东、西、南、北 4 个路口上的 4 只交通灯,每只双色发光二极管由 74LS240
44、反向驱动器驱动,74LS240 输入控制端为 DR 和 DG,分别控制 DLED 红灯和黄灯的工作。具体控制如下:表 2.1 双色发光二极管的控制 DR DG 显示颜色 0 0 红+绿=黄 0 1 红 1 0 绿 1 1 不发光 采用一个纽子开关中断请求信号,电平由高变低再回高,模拟“有专用车辆通过”的“请求信号”。3交通灯控制的软件实现方法 根据交通灯的控制规则,可采用顺序控制方式,即将整个控制过程划分成多个不同的时段,在每个时段中仅做 1 个特定的动作。如在第一时段,控制主线绿灯亮,支线红灯亮,且持续时间为 T1。为此,按照图 2.2 交通灯控制实验线路图,应向 74LS273 锁存器发送
45、的数据为 0A5H,且保持时间为T1 秒。时段 2、时段 3 和时段 4 需向 74LS273 锁存器发送的数据及交通灯工作状况如下表所示。表 2.2 交通灯工作参数 时段 数值 持续时间 交通灯工作状况 1 A5 T1 主线绿灯,支线红灯 2 05 T2 主线黄灯闪烁,支线红灯 N1(T2+T3)F5 T3 3 5A T4 主线红灯,支线绿灯 4 50 T2 支线黄灯闪烁,主线红灯 N2(T2+T3)5F T3 4定时时间的确定 采用软件延时的方法进行定时,从而维持交通灯某一时段的工作状态。执行如下为延时程序段。注释项“;”后面的数值表示执行该条指令所用的时间,以机器周期为单位。MOV Ra
46、,#V1 ;1 LOP:MOV Rb,#V2 ;1 DJNZ Rb,$;2 DJNZ Ra,LOP ;2 执行上述程序所需要的时间 T=(2V2+1+2)V1+1(1V1256,1V2256)。当 V1=V2=256时,最大延迟时间 Tmax=131841 个机器周期。实验装置使用的晶振频率为 11.0592MHz,将 Tmax折算成实际时间=13184112/11059200143ms;类似当 V1=V2=1 时,最小延迟时间 Tmin=6 个机器周期。故当需要延迟规定的时间(用符号 Tw 表示,TminTwTmax),可在先确定 V2 的前提下,用公式 V1=(Tw-1)/(2 V2+3)
47、(1)算出 V1 的数值,或在先确定 V1 的前提下,用公式 V2=(Tw-1)/V1-3)/2 (2)算出 V2 的数值,注意这里的 Tw 必须用机器周期作为单位。例如若需要 100ms 的延迟时间,先将100ms 折算成机器周期数并确定 V1=256,再利用公式(2),就可得出 V2=(100 1000 11.0592/12-1)/256-3)/2 179 五、实验步骤 1硬件连线(参见图 2.2)2.2 交通灯控制实验线路图 74LS273 设备选择端“273CS/”接编号为 8100H 的译码器输出端。74LS273 的PO2、PO0分别接74LS240 的输入端DG1 和DG4;74
48、LS273 的PO3、PO1分别接74LS240的输入端 DR1 和 DR4 控制端,控制南、北路口的 4#和 1#DLED。74LS273 的PO6、PO4分别接74LS240 的输入端DG2 和DG3;74LS273 的PO7、PO5分别接74LS240的输入端 DR2 和 DR3,控制东、西路口的 3#和 2#DLED。纽子开关 K1 的信号输出接主机的零号中断请求输入 P3.2 (INT0)端,并将其拨到“1”位置。2编程并运行程序测试接口电路。编程要求:按照表 2.2 控制规则,模拟交通灯常态和异常情况时的显示工作过程。执行程序要求:程序执行过程中,将 K1 开关拨一个来回,即先拨向
49、 L(低电平)端再拨回 H端,产生中断请求信号,模拟救护车或消防车等专用车辆通过十字路口时的“异常情况”。六、编程提示及参考程序 1程序框图:图 2.3(a)主程序框图 (b)中断服务程序框图 2参考程序:选定 T1=T4=T5=5S,T2=T3=0.5S,N1=N2=5,程序代码如下:ODAT EQU 81H ;定义输出设备地址的高 8 位 VR5 EQU 1DH ;定义点灯数据暂存单元 ORG 0000H LJMP START ;进入主程序 ORG 0003H LJMP INTOP ;进入 0#外部中断服务程序 ORG 30H START:CLR IT0 ;将 0#外部中断设置为低电平触发
50、方式 MOV IE,#81H ;开放 0#外部中断 MOV P2,#ODAT ;加载输出设备地址 ST0:MOV R5,#0 ;初始化数据指针 ST1:MOV DPTR,#DAT MOV A,R5 MOVC A,A+DPTR MOV VR5,A ;暂存 MOVX R0,A ;并传送 1 个点灯数据 MOV DPTR,#TIM ;获得 1 个延时数据 MOV A,R5 MOVC A,A+DPTR MOV R4,A ;延迟相应的时间 ST2:ACALL DELAY DJNZ R4,ST2 INC R5 ;增量数据指针 CJNE R5,#VMAX,ST1 ;判是否处理完了全部数据,若未完就再处理下一