微机课程设计(包括硬件电路设计部分).doc_第1页
微机课程设计(包括硬件电路设计部分).doc_第2页
微机课程设计(包括硬件电路设计部分).doc_第3页
微机课程设计(包括硬件电路设计部分).doc_第4页
微机课程设计(包括硬件电路设计部分).doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 课程名称 微机原理及应用 _ _题目名称_ 微机原理及应用课程设计 _学生学院_ 自 动 化 学 院_ 专业班级_ 08 电气(一)班 _学 号 3208010591 学生姓名_ _ _指导教师_ _2011 年 04 月 15 日目 录1设计目的22设计要求23方案选择24系统整体设计35硬件电路设计45.1cpu与时钟45.2电源与复位45.3存储器设计55.4接口设计65.5外设电路设计105.6系统抗干扰设计106程序框图设计126.1主程序设计136.2主程序功能146.3系统自检设计156.4led显示器156.5key键盘167硬件电路原理图177.1系统查询方式原理图187.2系统中断方式原理图188系统实现指标188.1功能指标198.2性能指标199课程设计体会(自行撰写)(*_*)1910附录(图纸&程序代码)2011参考文献301 设计目的深对微机原理这门课程的理解,理解cpu8088/8086最小系统的工作方式和基本功能,掌握常用芯片8255、8253、8259的功能和应用以及存储器的扩展方法。在课程设计中培养我们分析问题、解决问题的基本素质,进一步增强动手能力以及一定的微机系统的设计和调试能力。2 设计要求设计微机系统实现可编程作息时间控制器,利用微机系统时钟,用汇编语言编写作息时间控制程序。基本要求:1) 按照给定的时间模拟控制实现广播、上下课打铃、灯光控制(屏幕显示)。2) 具备日期和时钟的显示。3) 时间和日期显示用8个led.提高要求:1) 给定的时间可修改。2) 可模拟手动控制。3) 用扬声器模拟打铃。3 方案选择首先要构建一个微型计算机最小系统:由8088/8086+eprom+ram+8255+8253+8*led+16*key组成。微处理器、存储器和所有i/o设备之间的信息交换都通过总线进行。总线包括地址总线、数据总线和控制总线,它们始于cpu或终于cpu,现代微机大部分都是这种以总线位中心的结构。8088cpu的地址总线20条、数据总线ad7ad0和地址、状态总线a19/s6a10/s3复用的,必须通过地址锁存器把地址总线和数据总线分离。控制总线直接和8088cpu相连,这样,8088cpu就工作在最小工作方式。在最小系统的基础上,通过外部接口器件连接led和键盘,组成一个可编程作息时间控制系统。作息时间控制系统主要有四大子系统功能实现:1.时间运行系统 2.报时时间值设置及调时系统 3.时分显示系统 4.报时响应系统。时间运行系统让时间一直运行着;报时时间值设置及调时系统使得用户可以随时设置时间;时分显示系统让用户可以清楚知晓当前系统时间,报时响应系统完成当当前时间与报时时间值一致时进行响应(如led闪烁)。四大子系统的协调有序的运行,保证了作息时间控制系统具有报时,调时,显时功能,还达到了与用户可交互的目的.4 系统整体设计82558088reary ad0 . ad19 cpu wr rdintrm/io 锁存器 romram接口芯片键盘显示器译码器译码器828482538259译码器逻辑电路5 硬件电路设计5.1 cpu与时钟图中8284a为时钟发生器。它除了给cpu提供频率恒定的时钟信号clk外,还对外部来的准备好信号rdy及复位信号reset进行同步,因外部对这两个信号的发出是随机的,经8284内部逻辑电路在时钟脉冲下同步,被同步的准备好信号rdy和复位信号reset从8284输出,送至8088cpu。5.2 电源与复位220v的交流电通过稳压器之后变成了18v电压,而后再经过芯片7805和其他电路元件组成的电路最后成为了+5v的电压,电路图如下图所示。5.3 存储器设计按照设计的要求,采用全译码的方式,存储器地址从10000h开始,以上高位地址线的连接,输出信号的选通满足要求。5.3.1 rom设计(2764*2)采用全译码的方式,2片2764eprom地址范围为1000013fffh。,a19a16为0001,a16经过非门后变为高电平,选中74ls138。当a13a15连接的a,b,c端是000的y0=0相或后,2764(1)芯片的片选端低电平有效,2764(1)的地址是0001 0000 0000 0000 00000001 0001 1111 1111 1111 即1000011fffh,在y1=0时,2704(2)芯片的片选端低电平有效,此时地址空间为0001 0010 0000 0000 00000001 0011 1111 1111 1111 即12000h13fffh。5.3.2 ram设计(6264*2)采用全译码的方式,2片6264ram地址范围为1400017fffh。,a19a16为0001,a16经过非门后变为高电平,选中74ls138。当a13a15连接的a,b,c端是001的y2=0相或后,6264(1)芯片的片选端低电平有效,2764(1)的地址是0001 0100 0000 0000 00000001 0101 1111 1111 1111 即1400015fffh,在y3=0时,6264(2)芯片的片选端低电平有效,此时地址空间为0001 0110 0000 0000 00000001 0111 1111 1111 1111 即16000h17fffh。5.4 接口设计5.4.1 接口译码设计接口译码电路通过74ls138的片选来对8259进行选中,并对8259分配控制字地址。具体电路图详见附表。74ls138的a,b,c分别于地址线a4-a2相连,a7经过一个非门后与g1连接,m/io,a6分别于ga,gb连接,74ls138的片选y2与8259的片选信号ce连接,从而8259的c口控制字地址为10h,11h.接口译码电路通过74ls138的片选来对8253进行选中,并对8253分配控制字地址。具体电路图详见附表。74ls138的a,b,c分别于地址线a4-a2相连,a7经过一个非门后与g1连接,m/io,a6分别经过非门与ga,gb连接,74ls138的片选y4与8253的片选信号ce连接,从而8253的c口控制字地址为20h,21h,22h,23h.接口译码电路通过74ls138的片选来对8255进行选中,并对8255分配控制字地址。具体电路图详见附表。74ls138的a,b,c分别于地址线a4-a2相连,a7经过一个非门后与g1连接,m/io,a6分别经过非门与ga,gb连接,74ls138的片选y4与8253的片选信号ce连接,从而8255的c口控制字地址为60h,61h,62h,63h.5.4.2 8259设计8259中为片选端口,连接74ls138译码器的y0引脚,数据线与总线连接,其它控制线分别与8088的各控制线连接,把ir0作为中断信号输出端口。5.4.3 8255设计reset:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有i/o口均被置成输入方式。 cs:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与cpu0进行通讯。 rd:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向cpu发送数据或状态信息,即cpu从8255读取信息或数据。 wr:写入信号,当这个输入引脚为低电平时,允许cpu将数据或控制字写入8255。 d0d7:三态双向数据总线,8255与cpu数据传送的通道,当cpu 执行输入输出指令时,通过它实现位数据的读/写操作,控制字和状态信息也通过数据总线传送。 pa0pa7:端口a输入输出线,一个位的数据输出锁存器/缓冲器, 一个位的数据输入锁存器。 pb0pb7:端口b输入输出线,一个位的i/o锁存器, 一个位的输入输出缓冲器。 pc0pc7:端口c输入输出线,一个位的数据输出锁存器/缓冲器, 一个位的数据输入缓冲器。端口c可以通过工作方式设定而分成个位的端口, 每个位的端口包含一个位的锁存器,分别与端口a和端口b配合使用,可作为控制信号输出或状态信号输入端口。pa口输出八段数码管的段码到晶体管上,pb0-pb2接译码器选中晶体管,pc口接4*4键盘输入。5.4.4 8253设计8253选用计数器0和计数器1,两者都用作定时器,且都工作在方式2,计数器1的定时时间是计数器0的定时时间的两倍.因为时钟发生器原先的时钟频率是16mhz,而8253的计数频率最高为2.6mhz,所以要用进行分频,之后再将时钟信号送到8253。连接数据线,片选引脚与相连,地址线a1接a0和a2接a1联合起来可选择使用哪个计数器。像图中所示的为指定计数器0.5.5 外设电路设计5.5.1 8*led设计led管的a,b,c,d,e,f,g,d,p引脚分别与pa0-pa7相连,而下端的则分别与pb0-pb2通过接74ls138译码器后输出相连构成了片选,可以根据需要选择数码管的亮与灭。5.5.2 4*4key设计这是一个4*4键盘。4根行线与pc口的低地址相连,4根列线与pc口的高位地址相连。按键设置在行,列点出,行,列线分别连接到按键开关的两端。当列线通过上拉电阻接+5v时,就被抢住在高电平状态。键盘中有无键按下时有行线送入全扫描字,列线读入行线状态来判断的,这就是:给行线所有i/o线均置成低电平,然后读入列线电平状态。如果有键按下,总会有一根列线电平被拉至低电平,从而使列线输入不全为1。键盘中哪一个键按下时有行线逐行置低电平后,检查列线输入状态予以确定。其方法是:依次给行线送低电平,然后查所有列线状态,如果全为1,则所按下之键不在此行。如果不全为1,则所按下之键必在此行。而且是在于0电平行线相交的交点上的那个键。键盘的工作方式采用编程扫描工作方式,即通过调用键盘子程序来响应键输入的要求,在键盘扫描子程序中完成:(1)判断键盘上是否有键按下;(2)去除按键的机械抖动影响;(3)求按下键的键值和键号。5.6 系统抗干扰设计5.6.1 地线处理使用带有屏蔽层的线路,该接地线的设备要接地线抗干扰接地处理的主要内容:(1)避开地环电流的干扰;(2)降低公共地线阻抗的耦合干扰。“一点接地”有效地避开了地环电流;而在“一点接地”前提下,并联接地则是降低公共地线阻抗的耦合干扰的有效措施;它们是工业控制系统采用的最基本的接地方法。在本电路中高频地线和低频地线采用一点接地的方法,从而有效避开了地环电流,避免了导线接入地时产生的电流波动。在电路图中的模拟通道和数字通道采用并联接地。并联接地中各个电路的地电位只与其自身的地线阻抗和地电流有关,互相之间不会造成耦合干扰。因此,有效地克服了公共地线阻抗的耦合干扰问题,工业控制机应当尽量采用并联接地方式。值得注意的是,虽然采用了并联接地方式,但是地线仍然要粗一些,以使各个电路部件之间的地电位差尽量减小。这样,当各个部件之间有信号传送时,地线环流干扰将减小。5.6.2 芯片抗干扰处理对于存储器上的epron2764和ram6264应采用(1)数据线,地址线,控制线尽量缩短,以减少对地电容。尤其是地址线,各条线的长短,布线方式应尽量一致,以免造成各线的阻抗差异过大,使地址信号传输过程中到达终端时波形差异过大,形成控制信息的非同步干扰。(2)由于开关噪声严重,要在电源入口处,以及每片存储器芯片的vcc与gnd之间接入去耦电容。(3)由于负载电流大,电源线和地线要加粗,走线尽量短,印制板两面的三总线互相垂直,以防总线之间的电磁干扰。(4)总线的始端和终端要配置合适的上拉电阻,一提高高电平噪声容限,增加存储器端口在高阻状态下抗干扰能力和削弱反射波干扰。因此,可将配置上拉电阻视为一种常规做法。程序存储器数据存储器和i/o接口芯片的读/写时序过程:地址总线先出现地址数码,待地址稳定后,出现数据信息麻袋数据信息稳定后,在读/写控制信号作用下,完成读/写过程。这种译码选通和读/写分时作用的操作方式,有效地抑制地址/数据信息的过度干扰。时钟芯片的抗干扰主要措施有:(1)时钟脉冲电路配置是压迫注意靠近cpu,引线要短而粗。(2)外部时钟源用的芯片的vcc与gnd之间可接1uf作右的去耦电容。(3)在可能的情况下,用地线包围振荡电路,晶体外壳接地。(4)若时钟电路还在做其他芯片的脉冲源,要注意隔离和驱动措施。(5)晶振电路的电容器要性能稳定,容量值准确,且远离发热的元器件。(6)印刷版上的大电流信号线,电源变压器要远离晶振信号的连线。6 程序框图设计6.1 主程序设计6.2 主程序功能6.2.1 主程序框图(自行加入手动控制,模拟打铃)开始8255a,8259a初始化送1s时间常数有无中断?显示扫描是set键?时间输入是数字键?显示扫描放键?有超范围?nynnnyyyny清零 开中断6.3 系统自检设计6.3.1 系统自检功能基于自检的容错设计方法的实质就是对被检测微机系统故障的自检部件的冗余设计,在自检设计中,起关键作用的自检部件自身的故障可以通过冗余设计来屏蔽,从而克服了传统的没有冗余的自检部件自身故障造成的系统自检功能丧失的问题。自检部件是指存放自检程序的rom 区;在一般的自检设计中,都把自检程序作为子程序放在程序存储器的最后区域,并且自检的范围也不包括这个自检程序本身。这样的自检部件地址空间安排给该自检部件的冗余设计带来了困难,而且是以增加大量的外围冗余硬件电路为代价的。针对这一缺点,本文根据微机的存储体系结构的特点,提出了一种简单有效的容错设计方法。6.3.2 flash读写框图6.4 led显示器6.4.1 led查询方式6.4.2 led中断方式6.5 key键盘6.5.1 key查询方式key的查询方式采用行反转法:(1)先对8255进行初始化设置,将行线的a端口设置为输出方式,接列线的b端口设中断程序的结构框图如下图所示。流程图中判断是否为抖动就是去抖动。30h 单元中存放需显示的数据,主程序显示该单元的内容即可。由于30h 单元用于实现主程序和中断程序间的数据交换,因此就不能被保护。置为输入方式。(2)重新对8255进行初始化设置,将第一步传送的方向反过来,接行线的a端口设置为输入方式,接列线的b端口设置为输出方式。行反转法的流程图如下:6.5.2 key中断方式开始保护现场调用延时去抖动是否有按键按下进入按键中断服务程序恢复现场返回ny7 硬件电路原理图7.1 系统查询方式原理图7.2 系统中断方式原理图8 系统实现指标8.1 功能指标1.时间运行系统功能实现时间运行与调节利用可编程的计数器/定时器8255芯片的可编程使时钟频率经过在8253的处理而产生符合要求的脉冲送入8255,进而执行计时子程序使得改变时间参数而计时,进行时间计算,并用实时检测程序将时间参数用数码管显示电路显示出日期及时间。与此同时也进行与报时时间段程序的不断调用,使得在规定时刻进行报时。可选择5253通道0与通道1实现60秒定时,通道1输出out1接8255的输出端口,完成上述连接后,编程实现小时,分钟的变化的子程序,以及对8253,8255进行初始化编程,计时程序实现时间运行(每次执行中断服务程序时,使得minute参数+1,当到达59时,重新返回到零,并使得hour参数+1,)2.报时时间设置及调时功能实现 1)每次程序运行前,彻底清除以前的报时时间设置值,恢复系统默认报时时间值。 2)程序运行后,用户可一次性设定报时时间值(一旦有设定操作,则原有的默认报时时间值全部清零)。此为最新值,报时以新时间为准。报时时间设置结束以后要进行一次校时设置。 3) 设定完所有报时时间值后,可通过按“d”(display)显示已经设定好的完整的报时时间值,要求每间隔1小时依次显示报时时间值。用户可通过此键来查看所有的报时时间值,以避免有错误的报时时间值存在而产生错误的响应。3.时分显示系统时分显示系统只显示小时和分钟,每当将内存中的时分参数通过i/o端口传送给led显示电路,这样即可以实现(具体实现有待进一步完善)。数码管显示电路的显示具有存储功能,只要将其输入端口的数值改变就可以实现变化数字的显示了,这可以在计数器发出minute加1脉冲时在程序中实现。设定完所有报时时间值后,可通过按“d”(display)显示已经设定好的完整的报时时间值,要求每间隔5秒钟依次显示报时时间值。用户可通过此键来查看所有的报时时间值,以避免有错误的报时时间值存在而产生错误的响应。 多路转换led显示器驱动电路及数码管显示电路所示本系统采用七段led显示器显示时分参数。七段led显示器由七个发光段构成,每段均是一个led二极管,可显示16进制的09与abcde。此外数码管显示电路中还有一个小数点dp位段,用来分隔小时与分钟。8255的a口与c口都作为输出口,cpu输出的时间参数,经a口送到74ls240的8个输入端,且并行地接到4个led显示的各输入端(也称为段总线),同名端联在一起。每一位共阳极led的阳极电路中都串接一个晶体管q,晶体管起开关作用,并由8255a来控制其导通,是相应的led显示器的阳极与+5v电压接通,led显示器才有可能点亮;基极的高电平输入使晶体管截止,+5v断开,led显示器不能点亮。通过编程,可以使各个晶体管轮流导通,让7个led轮流点亮。但任何时候只让一个晶体管导通,即只有一个led点亮,这样可使功耗显著降低。8.2 性能指标1) 系统具有16kb的eprom和16kb的ram2) 8位七段数码管可以显示8位十进制数来表示日期与时间3) 系统配备一个4*4键盘9 课程设计体会(自行撰写)(*_*) 在一开始,对系统的概念还很模糊,不知道从何下手,从书本上也找不到相关的比较明确的解释,在网上和图书馆里查阅了相关的资料之后,有了相应的认识,但是在脑海中依旧没有多少头绪,不知道从何下手,后来在跟同学的交流,自己的理解下,逐步开始动手画图,虽然进展得很慢,但是当对各个芯片的接口,功能,地址有一定的认识后,连线上也就慢慢上手了,从ram,rom,到8285,8253,8259等的连接,74ls138的译码选通等,虽然还是不知道全部的功能要怎么样才能实现,但是至少对系统里面的各个组成部分都有了一定的认识,慢慢地,在请教同学后,基本的图形也就画出来了。10 附录(图纸&程序代码)程序代码:键盘的工作子程序:ir0中断服务程序: sti push axnext: in al,61h ;读b口的状态and al,0f0h cmp al,0f0hjnz keyabccall dispjmp sttkeyabc:call time ;调用延时,去抖动in al,61h;读b口的状态and al,0f0hcmp al,0f0hjnz key_0 ;转移到检测按下哪个数字键jmp stt ;返回检测键盘。sttk: call disp;放键测试子程序in al,41hand al,0f0hcmp al,0f0hjnz sttkjmp stt pop axiretled移位显示子程序:lp1: mov cx,0005h ;数据移位保存子程序(前进五位)mov si,offset var2 ;si指向显示代码缓冲区首址lp2: mov al,si+4;显示代码移位mov si+5,al ;显示数字移位dec siloop lp2ret;移位返回disp: lea si,var1 lea di,var2mov dl,di+5cmp dl,0fchjnz dir6mov dl,di+4cmp dl,0fchjnz dir5 mov dl,di+3 cmp dl,0fchjnz dir4 mov dl,di+2 cmp dl,0fchjnz dir3mov dl,di+1 cmp dl,0fchjnz dir2 jnz dir1dir6:mov cx,0006h jmp dirdir5:mov cx,0005h jmp dirdir4:mov cx,0004h jmp dirdir3:mov cx,0003h jmp dirdir2:mov cx,0002h jmp dir dir1:mov cx,0001h jmp dirdir: mov al,siout 60h,almov al,diout 42h,alcall timeinc siinc diloop dirret time: push ax ;延时子程序push cxmov cx,0040h time1: mov ax,0003htime2: dec axjnz time2loop time1pop cxpop axret定时控制部分l0: mov cx,1 ;上课铃声第一次打响,驱动扬声器 mov al,40h mov dx,200h not al out dx,al mov dx,210h mov al,0fh out dx,al call y dec cx jz l1l1:mov cx,5 ;定时5秒后实现下课铃声,再次驱动扬声器s0:mov al,00hmov dx,200hnot alout dx,al mov dx,210h mov al,2fh out dx,alcall ydec cx jnz s0 ;当cx不为0是跳转l2: mov cx,2 ;定时2秒后实现上课铃声s1: mov al,20h mov dx,200h not al out dx,al mov dx,210h mov al,1fh out dx,al call y dec cx jnz s1 jz l0 ;当cx为0是跳转到l0,及循环执行y proc ;延时子程序,延时1秒,8253实现 push ax mov dx,20bh mov al,35h ;方式2 out dx,al mov al,00h ;计数初值 mov dx,208h out dx,al mov al,50h out dx,al mov dx,20bh mov al,71h ;方式0 out dx,al mov dx,209h mov al,00h out dx,al mov al,04h out dx,alkk: ;不是高电平就继续检测 mov dx,202h in al,dx and al,02h jz kk pop ax rety endp计时器一些子程序块如下:a1: lea si,var ;si指向显示缓冲区首地址varmov cx,000ch ;设定时间常数约为1sa2: call stt ;键盘测试 cmp havekey,0ffh jnz a3 call kabc ;键盘扫描a3: call disp ;显示时间 cmp set,0ffh jz a2 loop a2mov al,second ;设定时间(1s)到,秒钟处理mov si,al add al,01h daa mov si+1,al cmp al,60h jnz no_hour mov second,00h;60秒进分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论