微机原理与接口技术课程设计-基于PC机与8255的交通灯电路系统设计.doc_第1页
微机原理与接口技术课程设计-基于PC机与8255的交通灯电路系统设计.doc_第2页
微机原理与接口技术课程设计-基于PC机与8255的交通灯电路系统设计.doc_第3页
微机原理与接口技术课程设计-基于PC机与8255的交通灯电路系统设计.doc_第4页
微机原理与接口技术课程设计-基于PC机与8255的交通灯电路系统设计.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

微机原理课程设计湖南科技大学微机原理与接口技术课程设计 基于pc机与8255的交通灯电路系统设计学院 潇湘学院专业通信工程 班级 姓名 辅导老师 交 通 灯1题义分析及解决方案1.1题义需求分析:本程序设计需应用软件控制并运行接口电路,使连接在该接口上的红、绿、黄发光二极管按十字路口交通红、绿、黄灯形式闪烁,并显示绿灯的倒计时时间。交通灯变化规律根据实地查看和查看资料以及询问他人:交通灯在每天的变化规律并不相同,此课程设为了简化,只考虑了交通灯正常时的变化规律,即有如下规律变化:程序一开始,四个方向的灯全为红灯,接着变为黄灯闪烁,然后东西方向为红灯,南北方向为绿灯并显示倒计时时间,倒计时间结束后,交通灯变成黄灯,闪烁几次后,东西方向变成绿灯,南北变成红灯,再变成黄灯,如此按交通灯的变化规则交替变化,在对绿灯采取倒计时时,采用的是为各个灯设置固定的亮持续时间。对此设计模拟交通灯变化规律,需要解决如下问题:(1)绿灯的倒计时时间如何显示,倒计时间用什么来控制(2)交通灯用什么器材来模拟显示(3)如何设计pc机与实验模拟芯片接口通信(4)交通灯运行状态怎么实现,交通灯状态的切换问题怎么解决(5)如何实现交通灯的闪烁,并且控制闪烁时间,(6)如何对所选芯片进行编程控制(7)如何获取开关上用户设置的初值信息,并且把初值信息如何存储。2解决问题方法及思路:2.1硬件部分2.1.1、8255设计说明:用8255a可编程并行接口芯片的a、b、c三口作为红、绿、黄交通灯的控制输入口。8255有三个并行输入输出口,可以方便的对三种颜色的交通灯进行很好的控制。解决方案是:pb0pb7接模拟灯二极管,pa0pa7接7段二极管,然后利用8255a芯片与微处理器芯片集成芯片卡pci卡连接,用于完成硬件方面的实验正常通信。其芯片比较说明:如表2-12.1.2、led设计说明:用led作为倒计时时间的显示器, led在亮度、功耗、可视角度和刷新速率等方面,都更具优势。led与lcd的功耗比大约为10:1,利用led技术,可以制造出比lcd更薄、更亮、更清晰的显示器,led是发光二极管属于二极管的一种,lcd是液晶显示器,两者相差太多.但是用led的点阵也能组成显示器,适用于户外大屏幕显示,分辨率较低,led与lcd具体比较如表2-2表2-1:8255a与8251芯片的比较比较内容8255a芯片8251a芯片通信方式并行串行数据传送方式数据的各位同时传送,数据一位一位地顺序传送,内部组成8155内有256字节ram和一个定时计数器。8255没有特点通信线路较8251复杂通信线路简单,利用电话或电报线路就可实现通信输入/输出编程较为灵活编程较8255不够灵活应用范围使用十分方便,传输距离近,成本较高传输距离远,使用不方便,但传输速度慢,降低成本 ,初始化特点8255a直接位清0/置1功能简化了接口控制8251在初始化时,必须重新设置模式寄存器的格式.表2-2:lcd与led的比较lcd液晶显示器,通过液晶和彩色过滤器过滤光源,在平面面板上产生图象,具有零辐射,低耗能,散热小,纤薄轻巧,精确还原图象,显示字符锐利,屏幕调节方便,可视角度小,响应时间过慢,亮度可对比度低等特点led发光二极管,是由发光二极管排列组成的显示器件,它采用低电压扫描技术,具有耗电少,使用寿命长,成本低,亮度高,故障少,视角大,视角大,可视距离远的特点通过分析和对比,led显示器要较优于lcd显示器,因此本实验选择led2.2、软件部分根据硬件需求采用8255a芯片,为实现对通信的控制,采用汇编语言,分别编程控制8255的工作方式,在编程时应考虑到状态的转换采用查询方式控制,根据需求分析可采用8255的方式0下工作具体如下设置:硬件连接说明:8255a芯片的pa、pb、pc三口的工作方式为方式0,将8255的pb0pb7接红绿灯用以模拟交通灯的变化,pa0pa7接7段led灯的段选码,完成led显示器的段选,pc0pc3接led显示器的位选码用以完成位选,pc4-pc7接开关,以完成初值接收。初始化8255后。利用汇编语言编写访问控制程序,控制绿灯的显示倒记时间,它与红灯的显示时间是相同的,编写控制程序控制黄灯的闪烁时间,当绿灯的显示时间结束后切换到黄灯,再切换到红灯,如此循环下去。 3硬件设计3.1选择芯片8255a3.1.1、8255a在本实验中的作用:通过8255a的三个i/o端口a口、b口、c口与红、绿、黄二极管连接起来控制交通灯的规律性变化。3.1.2、8255的功能分析:pa、pb、pc三口均工作在方式状态。:pb2pb3接黄灯,pb4pb5接红灯;pb0pb1接绿灯,pa0pa7作为段选码;pc0pc1作为位选码。我们采用的是将pc口分成两部分使用,pc0-pc3作为位选码,pc4-pc7作为输入口,接收开关输入的初值信息。将在用8255前首先要对它进行初始化,设置它的方式选择控制字。3.1.3、8255工作方式说明:方式0的工作特点:这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。其功能为:(1)两个8位通道:通道a、b。两个四位通道:通道c高4位和低四位;(2)任何一个通道可以作输入/输出;(3)输出是锁存的;(4)输入是不锁存的;(5)在方式0时各个通道的输入/输出可有16种不同的组合。方式0的使用场合:同步传送是在外设控制过程的各种动作时间为固定,且已知的条件下使用的。因此,传送中不要应答信号。输入时,执行程序只要给出in指令;而输出时,也只给出out指令,就能实现数据的输入或输出。优点是程序简单,接口的硬件开销小。查询式传输时,要先查询一个外设的状态,当该状态表示外设已准备好时,方能开始查询传输,否则cpu将继续查询。但在方式0,没有规定固定的应答信号,所以,这时将通道a、b作为数据通道,把通道c的4个位(高4位或低4位)规定为输出口,用来输出一些控制信号,而把通道c的另外4个位规定为输入口,用来输入外设的状态。这样利用通道c来配合通道a和b的输入/输出操作。 3.1.4、8255方式选择控制字说明:控制字格式如图3-1:图3-1:8255a芯片的控制字格式参数说明:7工作方式控制标志。65组合设定口工作方式:方式、方式、方式。4设定口的输入输出,4输入4输出。3口高位输入输出选择,3输入3输出。2口工作方式选择,2方式;2方式。1口输入输出选择1输入1输出。0设定口低位输入输出0输入0输出。3.1.5、8255技术参数:主要参数说明:8255a工作最大电流为120ma,vcc=-5v+5v,i(dar)工作电流最大为4ma。8255的输出电压不高,连接到led时,最好加入一个驱动器起到电流放大的作用,其具体参数值说明如表3-1。表3-1:8255a技术参数说明8255a技术参数测试条件规范值单位大小输入低电平电压il.输入高电平电压ihcc.输出低电平电压ol(数据端口)ol.输出低电平电压ol(外围端口)ol.输出高电平电压oh(数据端口)or.输出高电平电压oh(外围端口)oh.达林顿驱动电流oar.ma电源电流ccma输入负载电流ilinma输出浮动电流ofor.vma3.1.6、8255a的逻辑图图3-2 8255a内部逻辑图3.2、选择芯片七段led显示器3.2.1、led显示器在本设计中的作用:接收由8255a芯片送来的字型码显示编码结果其中led技术参数如表3-2:表3-2 led技术参数说明pcwlfvririfp对应变量散射颜色bt235702551.52.5200sel-10红bt1441004050.52.5565绿bt1341004050.52.5585蓝3.2.2、七段led显示器led显示器的功能分析:led显示器有共阳极和共阴极两类。其原理图(图3-3):图是一个6位led动态显示电路,段驱动器输出led字符7段代码信息,位驱动器输出6个led的位选信号,即分时使q0 q5轮流有效,使得led0led5轮流显示。图3-3:七段led显示器笔画型led显示器是由8个二极管电路adp按字型8的方式排列,当不同的二极管被选通后根据发光效果会显示不同的自型。本设计中采用共阴极连接方式,adp分别与74ls273的1q8q相连,接收段选码信号(高电平);4位led显示器的4根共阴极引线与8255a的pc0pc3相连,接收位选码信号(低电平)。段选码和位选码共同作用以显示不同的字型。led字型显示原理:表3-3:led字型显示组合dpgfedcba显示数码散射颜色0011111103fh000001101o6h0101101125bh0100111134fh01100110466h0110110156dh0111110167dh00000111707h0111111187fh0110111196fh4硬件总逻辑图及其说明4.1、硬件原理说明:本设计以star es598pci实验仪提供的最实用、新颖的接口实验,提供的汇编控制程序设计控制硬件运行为依据设计的;在课程设计中主要利用了star es598pci实验提供的8255a芯片,7段led显示器,以及红绿灯led显示二极管,其中完成pc机与实验箱之间的通信用到了最主要的集成卡pci卡。课程设计时完成编程调试的只要开发工具为星研集成开发环境。4.2、硬件连接说明:8255a芯片的pa、pb、pc三口的工作方式为方式0,将8255的pb0pb7接红绿灯用以模拟交通灯的变化,pa0pa7接7段led灯的段选码完成led显示器的段选,pc0pc3接led显示器的位选码用以完成位选,pc机通过数据总线经过集成电路卡pci卡与8255a芯片相连接。其连接方式为:pci卡的地址总线a1a0接到8255a芯片的a1a0来实现端口选择。将8255a芯片的片选信号cs与pci卡的cs1相连接来决定各端口的初始地址。8255a芯片的pb口中pb0pb7经过排线与实验箱的红绿灯电路板的插槽相连接,用来实现控制交通灯的变化规律;8255a的pc口中的pc0pc3经过排线与实验箱上的7段led灯的位选码插槽相连接,用来实现选择绿灯倒计时时的7段led灯的位置选择,8255a芯片的pa口中的pa0pa7经过排线与实验箱上的7段led灯的段选码插槽相连接,用来实现7段led灯的段选码选择。led灯管的a、b、c、d、e、f、g、dp做为段选来显示倒计时数据。图4-1:硬件总连接图5控制程序设计5.1、控制程序设计思路说明:首先,明确交通灯的变化规律,假设在一个十字路口,其中东西方向,南北方向,工作方式如下:将红黄绿灯按照红灯停,绿等行,黄灯闪烁为缓冲时间的原则进行通车。倒计时将可以由用户自由设定,用8255的pb,pc口来连接红黄绿灯电路板,而pa口连接led显示管来计数倒计时。开始时初始化东西南北方向全为红灯,然后东西方向绿灯亮,进入倒计时默认值10秒,结束后东西方向绿灯闪烁三次,变黄灯亮倒计时3秒,然后红灯亮;南北方向绿灯亮,此时南北方向进入倒计时,倒计时时间可以在开关口提前设定本次倒计时时间。结束后绿灯闪烁三秒后,变黄灯亮三秒,然后红灯亮,东西方向绿灯亮,如此循环下去。其次,主程序的设计思路:首先初始化8255a的芯片的控制字格式和状态字格式,其次设置交通灯开始运行的初始状态并做相应的延时便于观察,再次调用子程序对东西绿灯的倒计时时间,调用子程序显示绿灯的倒计时,后进行查表选择相应的led灯的段选码,使相应的灯亮,显示东西绿灯交通灯变化,然后设置绿灯的闪烁,以及黄灯的亮持续,再次就是查表设置转换成南北绿灯的亮,同时调用子程序设置南北绿灯的倒计时时间,后进行查表选择相应的led灯的段选码,使相应的灯亮,显示南北绿灯交通灯变化,然后做南北绿灯的闪烁,和黄灯的亮持续,最后做主程序的循环,利用无条件跳转指令。其控制流程如(流程图:5-1)图5-1:主控制程序再次,也设计了一个到计时显示子程序,用来显示绿灯的到计时时间,设计思路:首先要保存进入到计时子程序时的断点保存,以保证能够子程序结束能够正常返回主程序,其次设置led灯的秒数跳的快慢,使其运行结果便于观察,再次设置程序分别显示到计时led灯的秒数的个位与十位,在显示秒数的个位与十位时要做秒数的个位与十位计数是否到零的判断,与此同时也要做秒数的个位与十位的断选码指示器的移动,最后做恢复断点和子程序的返回。其控制流程如(流程图:5图5-2:倒计时显示程序 最后,还设计了两个延时程序,一个是绿灯闪烁3次时间的延时dl500子程序,一个是延时黄灯亮的时间delay子程序;dl500子程序的设计思路利用了设备提供的软中断实现的延时,其控制流程如(流程图:5-3);delay子程序的设计利用的是多次循环空操作实现,思路首先保存断点设置空操作的次数,做判断循环是否该结束,然后恢复断点,返回主程序,其控制流程如(流程图:5-4图5-3:delay延时程序 图5-4:500ms延时程5.4、功能实现程序说明:;片选cs1偏移地址范围 0f0h0ffh.modeltinypcibar3equ1ch;8位i/o空间基地址(它就是实验仪的基地址, 也为dma & 32 bit ram板卡上的8237提供基地址) vendor_idequ 10ebh;厂商id号device_idequ8376;设备id号.stack100.dataio_bit8_baseaddressdw?msg0dbbios不支持访问pci $msg1db找不到star pci9052板卡 $msg2db读8位i/o空间基地址时出错$ggg dw ?hhh dw ?www dw ?xxx dw ?com_adddw00f3h;控制口偏移量pa_adddw00f0h;pa口偏移量pb_adddw00f1h;pb口偏移量pc_adddw00f2h;pc口偏移量led_datadb 10111110b ;东西绿灯,南北红灯 db10111111b;东西绿灯灭,南北红灯db 10111101b;东西黄灯亮,南北红灯db11101011b;东西红灯,南北绿灯 db11111011b;东西红灯,南北绿灯灭 db11011011b ;东西红灯,南北黄灯亮sg db 6fh,7fh,07h,7dh,6dh,66h,4fh,5bh,06h,3fh ;9-0 .code start:mov ax,datamov ds,axnopcall initpcicall modifyaddress;根据pci提供的基地址,将偏移地址转化为实地址;程序开始 mov dx,com_add ;初始化8255控制口,将地址设置成com_add mov al,88h ;方式0下,pa,pb为输出口 pc为输入口 out dx,al lea di,sg+7 mov ggg,di mov www,di lea si,sg+9 mov hhh,si mov xxx,si call dl500ms start1:call test1 leabx,led_data ;将控制信息表的首地址给b movdx,pb_addmoval,0;al为0表示查表中第一个字节的内容xlat;查表,将表中第一个字节的内容放入al中outdx,al;东西绿灯,南北红灯 mov si,hhhmov di,gggcalldjs movcx,3start2:moval,1 xlat outdx,al;东西绿灯灭,南北红灯 calldl500msmoval,0xlatoutdx,al;东西绿灯亮,南北红灯 calldl500ms loopstart2moval,2;东西黄灯亮,南北红灯xlatoutdx,alcalldl2s moval,3;东西红灯,南北绿灯xlatout dx,alcall test1 mov si,xxxmov di,wwwcalldjs movcx,3start3:moval,4;东西红灯,南北绿灯灭xlatoutdx,al calldl500msmoval,3;东西红灯,南北绿灯亮xlatoutdx,al calldl500msloopstart3moval,5;东西红灯,南北黄灯亮xlatoutdx,al calldl2sjmpstart1;延时500msdl500msprocnearpushaxpushdxmovdx,500movah,0ffhint21hpopdxpopaxretdl500msendp;延时2秒dl2sprocnearpushcxmovcx,4 dl2s1:calldl500msloopdl2s1popcxretdl2sendptest1 proc near push ax push bx push cx push dx mov dx,pc_add in al,dx test al,80h jnz ooo mov dx,pc_add in al,dx and al,7fh shr al,4 mov bl,9 sub bl,al mov bh,0 mov si,bx lea di,sg+si mov ggg,di ooo: mov dx,pc_add in al,dx and al,7fh shr al,4 mov bl,9 sub bl,al mov bh,0 mov si,bx lea di,sg+si mov www,di pop dx pop cx pop bx pop ax ret test1 endp;倒计时显示程序 djs proc near push dx push cx push bx push axprt: mov cx,02fh ;设置循环秒数跳的快慢(led);循环计数初值cx-30num: mov al,si ;设置段选码,将si中的内容送入pa口 mov dx,pa_add out dx,al mov al, 0feh ;设置位选码,pc0口置0高四位为0 mov dx,pc_add ; 其他口为1来选中led1,显示个位 out dx,al call delay mov al,di ;设置段选码,将di中的内容送入pa口 mov dx,pa_add out dx,al mov al,0fdh ;设置位选码,pc1口置0高四位为0 mov dx,pc_add ; 其他口为1来选中led2,显示十位 out dx,al call delay loop num ;循环到num inc si ;个位si自增1 cmp si,offset sg+10 ;与表外的第一个偏移地址相比较,如果不 jnz prt ;等则显示数据且si+1,如果相等顺序执 inc di ;十位di自增1 mov si,offset sg ;将sg即9的偏移地址送给si cmp di,offset sg+10 ;与表外的第一个偏移地址相比较,如果不 jnz prt ; 等则显示数据且di+1,如果相等顺序执行pop ax ; 结束子程序pop bxpop cxpop dxretdjs endp ;延时子程序delay proc push cx mov cx,0ffffh loop5:nop loop loop5 pop cx mov al, 0ffh ; mov dx,pc_add out dx,al;显示器清0 retdelay endp k20 proc near ;把20的字型码偏移地址送到寄存器mov si,offset sg+9mov di,offset sg+9-1retk20 endpk40 proc near ;把40的字型码偏移地址送到寄存器mov si,offset sg+9mov di,offset sg+9-1retk40 endp;程序结束 initpciprocnearmovah,00hmoval,03hint10h;清屏movah,0b1hmoval,01hint1ahcmpah,0jzinitpci2leadx,msg0initpci1:movah,09hint21hjmpexitinitpci2:movah,0b1hmoval,02hmovcx,device_idmovdx,vendor_idmovsi,0int1ahjncinitpci3;是否存在star pci9052板卡leadx,msg1jmpinitpci1initpci3:movdi,pcibar3movah,0b1hmoval,09hint1ah;读取该卡pci9052基地址jncinitpci4leadx,msg2jmpinitpci1initpci4:andcx,0fffchmovio_bit8_baseaddress,cxretinitpciendpmodifyaddressprocnearaddcom_add,cxaddpa_add,cxaddpb_add,cxaddpc_add,cxretmodifyaddressendpexit:movah,4chint21hendstart图4-1:硬件总连接图6上机调试过程6.1、硬件连接首先连接硬件部件,根据实验硬件原理图和硬件连接说明,进行连线,结合实验时的实验箱的实际环境连接好上述部件后给实验箱通电。在实验硬件连接时曾出现,led灯全部都不亮,后来经过几遍检查,才找出原因,把pa口当成pc口接线路,错误的原因是实验时不细心和实验态度不认真,经过此次经历,明白实验要比理论更仔细,任何一个小错误都可能是造成实验失败的原因。6.2、软件调试我们做交通灯的同学在一起讨论,参阅了上届同学的程序设计思想,分别增加了相应的子程序用来实现相应的功能,但在程序的调试过程中却出现了各种错误现象,在单步调试过程下不断改正错误,重新调试,直到调试通过。但是功能还是不理想。后来经过参考其他班同学的程序设计,分别对各个程序代码进行了修改,后经过老师指导在老师的指导下,调试通过,功能基本实现。对倒计时时间的正确显示和功能实现,单步调试中倒计时实现后,红绿灯的变化却又不能出现正常的结果,在变化中出现多个灯同时亮和

温馨提示

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

评论

0/150

提交评论