




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机实验及课程设计课程设计报告姓 名: 学 号: 专 业: 自动化学院 实 验 室: 计算机硬件实验室 组 别: 无 同组人员: 无 设计时间: 2013 年 5 月 17 日 2013 年 6 月 8日评定成绩: 审阅教师: 目 录一 课程设计目的与要求3二 方案论证于原理设计3三 原理阐述及设计4四 发难实现与测试6五 分析与总结7六 附录.8一. 课程设计目的与要求设计目的:微机课程综合设计用于检验和提高学生在原理与接口综合应用方面分析问题与解决问题的能力,同时也给学生提供更多、更好的训练机会,课程给出了10 道微机硬件应用综合测试题。为完成每道测试题,至少需要选用TPC 微机实验装置中三部分以上的硬件电路(还需将它们有机组合起来)并编制相应的应用。通过试验还能够让学生更好的了解所学知识在实际控制中的运用,增加对本专业的认识和学习兴趣。设计要求:1)基本要求 (难度系数1.0)L7、L6、L5 作为南北路口的交通灯,L2、L1、L0 作为东西路口的交通灯。编程使六个灯按交通灯变化规律亮灭。要求进行周期性重复控制:(1) 南北路口的绿灯、东西路口的红灯同时亮20 秒;(2) 南北路口的黄灯闪烁3 秒,同时东西路口的红灯闪3 秒;微机实验及课程设计教程 (3) 南北路口的红灯、东西路口的绿灯同时亮90 秒;(4) 南北路口的红灯、同时东西路口的黄灯亮闪烁3 秒;(5) 在8 段LED 上同步显示倒计时。2)设计提示(1) 要求精确计时,采用实验系统8253 定时器中断或主机8253 定时器;(2) 利用软件定时器。3)进一步设计要求(1) 88 点阵显示当前车流运行方向, 上下对应南北,左右对应东西。绿色箭头对应,红色箭头对应黄灯状态;(2) 允许南北向路口设置人工按钮, 请求行人提前过街, 如东西绿灯已亮40 秒则按钮后10 秒南北绿灯亮,否则按钮后40 秒南北绿灯亮;(3) 考虑其他复杂情况。二.方案论证与原理设计1)在考虑程序的整体要求和框架后,决定把程序总共分为四个模块,分别为交通灯显示模块,数码管显示的模块,中断程序模块,中断初始化模块。交通灯显示模块是整个程序的主模块,其主要功能就是判断交通状态的运行方向和显示模式,还有显示的时间长短,并且还有人工紧急按钮的功能。显示模块则由交通灯状态来判断并在数码管上显示倒计时。中断则主要用作计时。中断初始化程序用来初始化9054和一些基本的置取中断向量的功能。2)各模块的实现交通灯模块通过一个全局变量irq_times来计时,通过中断服务子程序来改变它,在该模块中通过判断该变量的值去选择程序流程,并结合开关量来判断人工按钮有无按下。并在不同 流程去显示交通灯和流向问题。并且调用数码管显示程序。 数码管显示模块,通过irq_times来判断并显示。中断服务模块每调用一次说明已经过去一秒钟,则irq_times变化一次1可编程定时/计数器8253定时/计数器8253主要是用于定时1s,触发中断把全局变量减一。电路连线是CLOCK0接1MHZ,分频后频率为1KHz,OUT0接中断CLKCK1,分频后为1HZ,OUT1接IRQ,每一秒触发一次中断,GATE0,GATE1接5v。计数器的初值应都是1000;28255并行接口单元8255主要是用于数码管和发光二极管的数据输出。所以用8255A口高三位和低三位接6个发光二极管,B口接数码管的数据端,C口低两位接数码管位控制,最高位接开关K13.点阵使用由于提高要求需要显示上下箭头,所以使用8*8点阵显示箭头。由地址译码电路的地址控制点阵。4 微机控制器程序在纯Dos下运行三.详细(机理)设计1) 软件流程图(总流程图)本设计的软件设计的思路:通过软件编程使8253输出定时信号申请中断,在中断服务程序中改变全局计数变量。在主程序体中通过判断全局变量的值来控制程序流向。中断初始化8255,8253初始化Irq_times赋值36Irq_times26?Irq_times23 状态1Irq_times3状态2PC7=1?Irq_times13?Irq_times=3Irq_times=8Irq_times3Irq_times0状态4状态3有无按键退出图表 1交通灯系统总流程图2) 中断模块进入中断后,关闭中断,然后压栈,显示提示信息,最后处理数据算法实现:利用irq_times全局变量减一来实现倒计时。3) LED显示程序:本设计只用到了2个LED,只要将时间转换为相应的段码。先输出位码,再输出段码,循环输出就可以动态显示。将LED作偏移码,利用XLAT,很简单就可以实现译码。 VCC4) 硬件连接图 IRQ/CS CLK0 GATE0 OUT0 CLK1 GATE1 OUT18253/CS PA0-7 PB0-7 PC7 PC0-182551MHz288H280HLED灯 数码管数码管位选四. 方案实现与测试(或调试)首先根据设计思路,选择采用8253和8255芯片,使用较为复杂的中断。然后调试硬件,确定位选、芯片等工作正常。这可以通过手动输入控制字,进行简单输入输出实现。然后确定8253、8255芯片的地址,开始软件编程。软件编程首先完成整体的逻辑框架,然后具体编写子程序。刚开始时采用软件延时,优先调试8255。采用8255的A、B口的0方式,A、B口的变化将反映在八段码和LED灯上。子程序的编写即将设计好的算法转换为程序流,用程序流的方向实现选择,用调用子程序实现具体操作。 然后加入8253的硬件中断加以调整全局计数,将OUT1连至IRQ,通过查询PC7口的状态进行判断人工按钮有无按下。由于前面8255已经调好,所以8253的调试比较顺利。 最终将全部硬件连线接好,进行整机联调。当中发现许多问题,有编译问题,但在调整后都编译通过了,对软件进行单步,这时由于有现象,进行软件调试的时候也更有针对性。通过设置断点,逐步跟踪寄存器值,调试时发现在中断程序返回时始终是不对的,这导致一运行程序就会跑飞。无论如何都排查不了这个问题,一般这种问题都是由于堆栈不平衡引起的,但检查程序并未发现有堆栈错误。最终在一个偶然的瞬间我把主程序中的几句用来显示提示信息的语句删除后发现程序这次可以正确运行了,最后发现在中断外面运用INT21功能号为9的中断显示字符串会导致中断返回不了的问题。在最后调好这问题后运行程序达到了理想的目的与与要求,实现的拓展功能。 实物连接图:五分析与总结1)题目要求要用到8255经确定时,所以考虑到用中断来实现这个功能要求。3)由于想到各种显示输出需要很多锁存,而8255却可以很好地解决这个问题,于是就用8255实现,而且8255C口的高四位与低四位输入输出不一样,这位人工按钮提供方便。2) 编程中遇到的很多是逻辑问题.另一个遇到的问题就是跳转语句超出范围的错误,这个错误的解决是通利用两个跳转实现(一个条件一个无条件)。3) 我的主程序是用来控制程序流向的,但其实也包括了程序显示的一部分任务,其中不同的流向中就用不同的显示方案,这样也简化了显示子程序的任务。使得程序编写比较方便和控制。4) 对终端的初始化是主要参考实验书上的中断试验程序。5)中断调试时由于要进入纯DOS所以比较麻烦,所以调试也比较耗时间,最主要的问题是该种中断问题很少遇到,要不是最后自己出于简化程序来找错误的思想,可能就根本发现不了在中断的外边用显示功能回事中断的返回出问题,导致程序跑飞掉。6)交通灯的这个题目状态还好不多,但由于中断的引入使得程序变得复杂,但其实也就是初始化和退出程序比较复杂,而对于主程序来说没有多大影响,还有就是对调试用较高的要求。这个题目做下来还是有不少收获的,至少经验上要多了一些。参考书目:1 杨素行等,微型计算机系统原理及应用,北京,清华大学出版社,2009年2 东南大学微机系统与接口课程组,微机实验及课程设计教程试用版3.0,南京,东南大学出版社,2010年附录代码程序ioport equ 0ec00h-0280hioport_82530 equ ioport+0280h ;8253io地址ioport_82531 equ ioport+0281hioport_82533 equ ioport+0283hio82550 equ ioport+0290hio82551 equ ioport+0291h;8255io地址io82552 equ ioport+0292hio82553 equ ioport+0293hioportCequ ioport+0298hioportRrequ ioport+02a0h;点阵控制地址ioportRy equ ioport+02a8hint_vect EQU 72H ;中断0-7 的向量为:08h-0fh,中断8-15 的向量为:70h-77hirq_mask_2_7 equ 11111011b ;中断掩码,中断0-7 时从低至高相应位为零,中断8-15 时第2 位为零irq_mask_9_15 equ 11111011b;中断0-7 时全一,中断8-15 时从低至高相应位零ioport_cent equ 0e800h ;tpc 卡中9054 芯片的io 地址data segmentcsreg dw ?ipreg dw ? ;旧中断向量保存空间irq_times dw ? ;中断计数buffer0 db 00h,01h,02h,03h,04h,05h,06h,07hbuffer1 db 10h,38h,10h,10h,10h,20h,7eh,20hgewei dw 0shiwei dw 0Led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;码msg1 db 0dh,0ah,display,0dh,0ah,$msg3 db 0dh,0ah,interrupt ! ,0dh,0ah,$data endsstacks segment stackdb 256 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacks,es:datamain proc far ;Enable Local Interrupt Inputstart:climov ax,datamov ds,axmov es,axmov ax,stacksmov ss,axmov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,使能中断in ax,dxor ax,0900hout dx,axmov al,int_vect ;保存原中断向量mov ah,35hint 21hmov ax,esmov csreg,axmov ipreg,bxmov ax,cs ;设置新中断向量mov ds,axmov dx,offset int_procmov al,int_vectmov ah,25hint 21hin al, 21h ;设置中断掩码and al, irq_mask_2_7out 21h, alin al, 0a1hand al, irq_mask_9_15out 0a1h, almov ax,datamov ds,ax;以上为中断初始化部分;8253初始化部分mov dx,ioport_82533mov al,36hout dx,almov dx,ioport_82530mov ax,1000out dx,almov al,ahout dx,almov dx,ioport_82533mov al,76hout dx,almov dx,ioport_82531mov ax,1000out dx,almov al,ahout dx,al;8255初始化mov dx,io82553mov al,88hout dx,alsti;开中断beg: mov irq_times,36go1:cmp irq_times,26 jl go2mov ax,irq_timessub ax,26 call dispmov al,24h;南北绿灯和东西红灯亮10秒mov dx,io82550out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d1:mov al,simov bx,offset buffer1;箭头显示横向红,列项绿xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRyout dx,alnext1:mov dx,ioportRrshl,ahinc sipush cxmov cx,0fffhloop1:loop 1oop1pop cxloop d1jmp lllgo2:cmp irq_times,23 jl go3mov ax,irq_timessub ax,23 call leddispmov al,0mov dx,io82550 out dx,almov dx,ioportCout dx,al cmp irq_times,24 je turn jmp go2turn: mov al,44h;南北黄灯和东西红灯闪3秒mov dx,io82550out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d2:mov al,simov bx,offset buffer1;箭头闪烁显示横向红,列项绿xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRyout dx,alnext2:mov dx,ioportRrshl,ahinc sipush cxmov cx,0fffhloop2:loop 1oop2pop cxloop d2 jmp lllbeg_mid:jmp beggo3:cmp irq_times,3 jl go4mov ax,irq_times sub ax,3 call leddisp ;南北红灯东西绿灯亮20秒 mov al,81h mov dx,io82550 out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d3:mov al,simov bx,offset buffer1;箭头显示横向绿,列项红xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRrout dx,alnext3:mov dx,ioportRyshl,ahinc sipush cxmov cx,0fffhloop3:loop 1oop3pop cxloop d3 mov dx,io82553;中间人工按键时可以调整 in al,dx and al,80h cmp al,80h je qq ;按下时跳到qq jmp lllqq: cmp irq_times,13 jl qq1 mov irq_times,8 ;根据题目要求东西已亮十秒则三秒后南北绿亮;则8秒后亮 jmp goonqq1: mov irq_times,3 jmp goongoon: cmp irq_times,3 jl go4 mov ax,irq_times sub ax,3 call leddisp mov al,81h mov dx,io82550 out dx,almov cx,0008hmov ah,01hmov si,offset buffer0dgoon:mov al,simov bx,offset buffer1;箭头显示横向绿,列项红xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRrout dx,alnextgoon:mov dx,ioportRyshl,ahinc sipush cxmov cx,0fffhloopgoon:loop 1oopgonpop cxloop dgoon mov ah,1 int 16h jnz exit ;南北红灯和东西绿灯亮20 jmp goongo4:cmp irq_times,0 jl beg_midmov ax,irq_times call leddispmov al,0mov dx,io82550 ;南北红灯和东西黄灯闪3out dx,almov dx,ioportCout dx,al cmp irq_times,1 je turn1 jmp go4turn1: mov al,82hmov dx,io82550out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d4:mov al,simov bx,offset buffer1;箭头显示横向绿,列项红xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRrout dx,alnext4:mov dx,ioportRyshl,ahinc sipush cxmov cx,0fffhloop4:loop 1oop4pop cxloop d4 jmp llllll: mov ah,1 int 16h jnz exit ;按任意键退出 jmp go1exit: climov bl, irq_mask_2_7 ;恢复中断掩码not blin al, 21hor al, blout 21h, almov bl, irq_mask_9_15not blin al, 0a1hor al, blout 0a1h, almov dx,ipreg ;恢复原中断向量mov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68h ;设置 tpc 卡中9054 芯片io 口,关闭中断in ax,dxand ax,0f7ffhout dx,axmov ax,4c00hint 21hmain endpint_proc proc far ;中断处理程序clipush dspush axpush dxmov ax,datamov ds,axmov dx,offset msg2mov ah,09hint 21hdec irq_t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酶标仪使用方法
- 幼儿园班主任发言稿模版
- 新质生产力讲座大学
- 局限性胸膜间皮瘤的临床护理
- 江西省九江市九江有色金属冶炼厂职工子弟学校2025届七年级数学第二学期期末复习检测试题含解析
- 先天性马蹄内翻足健康宣讲课件
- 手部先天性畸形的临床护理
- 山东省平原县2025届数学七下期末复习检测模拟试题含解析
- 溃疡基因转录分析
- 开展2023愚人节创意活动方案大全
- 2024年江苏省苏州市高新区中考二模物理试题
- 中考物理压强与浮力压轴题20道(解析版)
- 穿脱隔离衣的流程及注意事项
- (新版)高级经济师《高级经济实务》(工商管理)考试题库(含答案)
- 八年级历史下册期末测试题及答案
- 企业反舞弊知识讲座
- 中国新闻传播史课件
- 闽教版2023版3-6年级全8册英语单词表
- 全国各省(直辖市、自治区)市(自治州、地区)县(县级市)区名称一览表
- 种子销售合同书模板
- 骨化三醇口服溶液-药品临床应用解读
评论
0/150
提交评论