您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 交通灯设计-8255-8254(附连线图和源代码)
西安郵電學院硬件课程设计报告题目:微机原理与接口课程设计院系名称:计算机学院专业名称:软件工程班级:软件0802学生姓名:王晶晶学号(8位):04085047指导教师:刘军设计起止时间:2011年05月23日~2011年05月27日一、设计目的通过可编程并行接口芯片8255A和可编程定时器/计数器芯片8253/8254以及中断控制器8259实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器/计数器及数码管控制的实际应用。二、设计内容1.用试验台提供的发光二极管(红绿黄各两支,共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。2.用可编程并行接口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。3.用可编程定时器/计数器芯片8253实现模拟交通灯亮与灭的时间延迟控制。4.用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。5.用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。交通灯变化规律要求:①南北路口的绿灯,东西路口的红灯同时亮30秒,且数码管30秒倒计时显示。②南北路口的黄灯闪烁3秒(三亮三灭),同时东西路口的红灯继续亮,且数码管3秒倒计时显示。③南北路口的红灯,东西路口的绿灯同时亮20秒,且数码管20秒倒计时显示。④南北路口的红灯继续亮,同时东西路口的黄灯闪烁3秒(三亮三灭),且数码管3秒倒计时显示。⑤转①重复⑥按压“东西紧急键”,则东西方向绿灯,南北方向红灯;再次按压“东西紧急键”,解除东西紧急通行状态。(“东西紧急键”可是键盘键,亦可是逻辑开关键)⑦按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再次按压“南北紧急键”,解除南北紧急通行状态。(“南北紧急键”可是键盘键,亦可是逻辑开关键)⑧按ESC键退出程序。备注:1、按键用8255A芯片的PC口实现或用键盘模拟实现。2、8253定时到可以通过8259,用中断的方式实现定时器。3、也可以用软件监测8253计数状态实现定时。4、也可以用纯软件延时方式实现本题目。三、概要设计由于本设计要使用到8254和8255。因此对其分块实现。1.流水灯设计:做该设计是为了熟悉编程环境,并借此熟悉8255的基本工作原理。功能模块图:图3-1流水灯功能模块功能描述:使SW-LEDUNIT的D0-D7循环被点亮。2.用8255与LEDKEYBOARDUNIT相连实现八段数码管的静态显示。功能模块图图3-2LED静态显示功能描述:在程序中给定一位数值,将其显示在LED数码管上。3.用8255与LEDKEYBOARDUNIT相连实现八段数码管的动态显示功能模块图:流水灯LED灯循环点亮八段数码管静态显示数码管上显示在程序中给定的数值图3-3LED动态显示功能描述:给定一个数值,使其在LED灯上显示,并且是显示两位(视觉效果),然后将该数减一显示,直到减为0。4.交通灯控制(软延时)功能模块图:图3-4交通灯控制功能描述:模拟交通灯的实现,是SW-LED上的灯模拟红绿灯,数码管模拟倒计时显示器,先是南北路口绿灯亮,东西路口红灯亮,倒计时30秒,南北路口黄灯亮,东西路口红灯亮,倒计时5秒,南北路口红灯亮,东西路口绿灯亮,倒计时30秒,南北路口红灯亮,东西路口黄灯亮,倒计时5秒,然后不停的循环这四种状态。可按任意键退出该程序,K0键为东西紧急键,K1为南北紧急键。按动K0(K0=1)后东西方向一直为绿灯,南北方向一直为红灯,直到再次搬动K0使K0=0时,南北绿灯,东西红灯,恢复上述四种状态的循环。按动K1使K1=1时,南北一直绿灯,八段数码管动态显示程序给定初值NUM在LED上显示NUMNUM-1结束NUM=0NUM!=0交通灯控制LED灯东西,南北方向红、黄、绿灯按一定规则交替显示先LED灯显示的同时,数码管显示对应的倒计时东西,南北紧急键东西一直红灯,知道再次按动K1,使K1=0,使南北红灯,东西绿灯,恢复上述四种状态的循环。在SW-LEDUNIT中D7、D5、D3分别表示东西方向的红、绿、黄灯,D6、D4、D3分别表示南北方向的红、绿、黄灯。5.交通灯控制(8254)这部分的功能模块图与功能描述与上述交通灯控制(软延时)相同,只是实现方式有所不同。四、详细设计1、用8255实现流水灯,熟悉8255的使用和工作原理。在该试验中使8255的A口、B口、C口均工作在输出状态下,让B口与SW-LEDUNIT的D0---D7相连,给B口得初值为FE并输出在LED灯上显示,然后让该值循环右移并显示,在每次输出时,使用软件延时,使灯的每次变换间隔大约为1秒数据流程图为:图4-1流水灯数据流程图2、用8255与LEDKEYBOARDUNIT相连实现八段数码管的静态显示。实验线路图如下图4-2所示:开始初始化8255给B口送初值FE。使D0亮B口的值循环右移,使灯循环点亮图4-2静态显示实验的连线图共阴极LED数码管字形代码如下表4-2所示:表4-3共阴极LED数码管字形显示字形共阴极字形代码字形共阴极字形代码字形共阴极字形代码03FH67DHC39H106H707Hd5EH25BH87FHE79H34FH96FHF71H466HA77H灭00H56DHb7CH实验步骤:设计实验线路图如上图4-2所示,完成连接。编写程序实现将给定数值用LED的前两位显示出来:8255初始化:MOVDX,1463HMOVAL,10000001B;初始化A,B,C口都工作在方式0,都为输出口OUTDX,ALLED显示数NUM:MOVBX,OFFSETTABLE1;取八段数码管表的首地址D7PB0D6PB1D5PB2D4PB3D3PB4D2PB5D1PB6D0PB78255UNITA1A0WRRDCSLEDKEYBOARDUNITABCDEFGDPX1X2X3X4XD7XD6XD5XD4XD3XD2XD1XD0XA1XA0XIOWXIORIOY3低电平MOVAL,NUMXLAT;查表,找出NUM对应的共阴极字形代码MOVDX,1461HOUTDX,AL;将该代码送到B口打开试验箱电源,进入纯DOS环境运行程序,观察LED数码管显示情况。实验流程图如下图4-4所示图4-4静态显示程序数据流程图3.用8255与LEDKEYBOARDUNIT相连实现八段数码管的动态显示实验连线图如下图4-5所示:开始将8255的B口设为输出口,A,C口任意给出一个要显示的数值查表求出对应的段码将段码经8255的B口输出结束图4-5动态显示实验的连线图实验步骤:设计实验连线图如上图4-5所示,完成连线。编写程序实现用LED数码管动态显示30—00,先使用软件延时,使其实现30秒得倒计时。8255初始化:MOVDX,1463HMOVAL,10000001B;初始化A,B,C口都工作在方式0,都为输出口OUTDX,ALLED动态显示30秒得倒计时:DISPLYPROCMOVNUM,25;使十位数与个位数循环交替显示25次MOVBX,OFFSETTABLE1SHOW:MOVAL,NUM1;显示十位数XLAT;查表MOVDX,1461HOUTDX,AL;将该数的LED数码管字形代码送到B口MOVDX,1460H;接通8段代码管的第一位,在LED上显示十位数MOVAL,0FEHOUTDX,ALCALLDELAYD7PB0D6PB1D5PB2D4PB3D3PB4D2PB5D1PB6D0PB78255UNITA1A0WRPA0RDPA1CSLEDKEYBOARDUNITABCDEFGDPX1X2XD7XD6XD5XD4XD3XD2XD1XD0XA1XA0XIOWXIORIOY3MOVAL,0FFHOUTDX,ALMOVAL,NUM2;显示个位数XLATMOVDX,1461HOUTDX,ALMOVDX,1460H;接通8段数码管的第二位MOVAL,0FDHOUTDX,ALDECNUMJNZSHOWJMPGWSUB;该数字显示完,对其减一软延时函数为:DELAYPROCNEAR;该函数延时次数为500*65535,使用双层循环MOVCX,500DELAY0:MOVNUM3,65535DELAY1:DECNUM3JNZDELAY1LOOPDELAY0RETDELAYENDP数值减一操作的代码段为:GWSUB:;倒计时时各位的递减CMPNUM2,0JESWSUB;如果各位减为0,则减十位,再使个位为9DECNUM2JMPDISPLY;显示该数SWSUB:;倒计时时十位的递减DECNUM1CMPNUM1,-1JELEDCHANGEMOVNUM2,09HJMPDISPLY;显示该数软延时解释:因为LED灯同一时刻只有一个LED灯可显示,而且显示时间很短以至于用人眼无法察觉其变化,因此显示完十位数和个位数之后延时,同一个数个位十位循环交替显示25次,产生视觉停留效果,使人看起来十位和个位同时显示。动态显示程序流程图如下图4-6所示:图4-6动态显示程序流程图4.交通灯控制(软延时)实验连线图如下图4-7所示:开始将8255设为A、B口输出送位码0FEH到A口个位数的段码至B口十位数的段码至B口送位码0FDH到A口延时延时,NUM减一显示数值减一NUM=25NUM=0NUM=1图4-7交通灯控制(软延时)连线图实验步骤:设计实验连线图如上图4-7所示,完成连线。编写程序实现交通灯控制,具体实现的功能。交通灯的四种状态的循环显示:LEDCHANGE:;红,绿,黄灯交替显示DECCONTROL;CONTROL=04H,用来控制灯得状态CMPCONTROL,03HJELEDYR;南北黄,东西红CMPCONTROL,02HD7PB0D6PB1D5PB2D4PB3D3PB4D2PB5D1PB6D0PB7PA0A1PA1A08255UNITPC7WRPC6RDPC5CSPC4PA7PA6PA5PA4PA3PA2PC3PC2PC1PC0LEDKEYBOARDUNITSW-LEDUNITABCDEFGDPX1X2D7D6D5D4D3D2D1D0XD7XD6XD5XD4XD3XD2XD1XD0XA1XA0XIOWXIORIOY3JELEDRG;南北红,东西绿CMPCONTROL,01HJELEDRY;南北红,东西黄CMPCONTROL,00HJELEDGR;南北绿,东西红LEDGR:;初始状态,南北绿,东西红MOVLEDNUMC,63HMOVLEDNUMA,0FFHMOVNUM1,03HMOVNUM2,00HMOVCONTROL,04HJMPLEDLEDYR:MOVLEDNUMC,73HMOVLEDNUMA,0BFHMOVNUM1,00HMOVNUM2,05HJMPLEDLEDRG:MOVLEDNUMC,93HMOVLEDNUMA,0FFHMOVNUM1,03HMOVNUM2,00HJMPLEDLEDRY:MOVLEDNUMC,0B3HMOVLEDNUMA,7FHMOVNUM1,00HMOVNUM2,05HJMPLED紧急键的控制:L1:JMPLEDGRL2:JMPLEDRGEWGPROCNEAR;东西紧急键按下MOVDX,1462HMOVLEDNUMC,9FHMOVAL,LEDNUMCOUTDX,ALMOVDX,1460HMOVLEDNUMA,0FFHMOVAL,LEDNUMAOUTDX,ALMOVDX,1462H;判断东西紧急键是否已结束INAL,DXTESTAL,08HJZL1JNZEWGRETEWGENDPSNGPROCNEAR;南北紧急键按下MOVDX,1462HMOVLEDNUMC,6FHMOVAL,LEDNUMCOUTDX,ALMOVDX,1460HMOVLEDNUMA,0FFHMOVAL,LEDNUMAOUTDX,ALMOVDX,1462H;判断南北紧急键是否已结束INAL,DXTESTAL,04HJZL2JNZSNGRETSNGENDPEWG1:CALLEWGSNG1:CALLSNGEWSNPROC;紧急键的总控函数MOVDX,1462HINAL,DXTESTAL,08HJNZEWG1TESTAL,04HJNZSNG1
本文标题:交通灯设计-8255-8254(附连线图和源代码)
链接地址:https://www.777doc.com/doc-5469994 .html