微机课程设计 带数码管显示的交通灯模拟控制系统设计_第1页
微机课程设计 带数码管显示的交通灯模拟控制系统设计_第2页
微机课程设计 带数码管显示的交通灯模拟控制系统设计_第3页
微机课程设计 带数码管显示的交通灯模拟控制系统设计_第4页
微机课程设计 带数码管显示的交通灯模拟控制系统设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、微机课程设计题 目 带数码管显示的交通灯模拟控制系统设计 课 程 名 称 微机原理及应用a 院 系 物理与电气工程学院 专 业 自动化班 级 08级(2)班 学 生 姓 名 学 号 指 导 教 师 课题名称 带数码管显示的交通灯模拟控制系统设计一、概述在star es598pci实验系统的基础上,应用可编程并行接口8255、定时/计数器8253、可编程中断控制器8259等i/o接口芯片,设计一个十字路口交通信号灯模拟控制系统。二、设计目的通过设计一个十字路口交通灯系统掌握8255、8253、8259等接口芯片的编程和应用方法,做到理论联系实际。三、设计要求要求绘制流程图、编写源程序,并在实验系

2、统上调试通过程序。四、设计内容1、十字路口交通信号灯设置某十字路口交通信号灯系统在4个路口均装设红、绿2个灯,并装设数码管显示倒计时。图1 交通信号灯设置实验时用led(发光二极管)代替十字路口的红绿灯。2、交通信号灯亮灭规律交通信号灯系统初始状态为所有红灯闪烁n1秒钟(不必在数码管显示);之后东西向车行道绿灯亮,车辆放行n秒钟,此时南北向车行道红灯亮,之后转为南北向车行道放行n秒钟,如此循环重复。要求数码管能够显示倒计时。参数选择:n=20s/25s85s/90s(每隔5s取一个秒数)n110s,闪烁次数为38次每组自行选择n、n1(及闪烁次数)。3、参考方案采用8255、8253、8259

3、组成系统,采用8253产生定时,运用8259采用中断法编写程序。如果加入紧急车辆通过功能或其他任何先进功能,可根据具体情况加创新分。五、设计报告要求要求在报告中详细叙述所选方案的原理、特点及评价,给出硬件原理图、程序流程、源程序、调试结果描述(需安排实验系统运行照片)。报告采用电力工程学院统一的标准格式书写。最终上交的报告内容包括:1、任务书、2设计内容(正文)、3、心得体会一、设计说明硬件方面:8253产生1hz的方波,脉冲到8259的ir1端,产生中断,调中断服务子程序。在加入紧急车道后,单脉冲()连到8259的iro端,产生一个高级的中断请求信号。软件方面:主程序先对各个硬件初始化,在开

4、cpu中断,然后空操作,等待中断。执行低级中断(ir1)时,8255的pa口负责选数码管,pb口负责显示数字,用查表法可查到09的数码管编码。采用循环扫描方法,人眼即可看到连续的二位数。当倒计时减到零时,对红绿灯取反。若手动上下拨动单脉冲()一次,则产生一个高级中断(ir0),程序转而执行此中断处理程序,处理完后返回继续执行低级中断(ir1)。1、 硬件设计 1.1、硬件接线图2. 源程序清单io8259_0 equ 0e000h ;8259地址偶地址端io8259_1 equ 0e001h ;8259地址奇地址端 k8255a equ 0f000h ;8255的a口、b口、c口地址k8255

5、b equ 0f001hk8255c equ 0f002hk8255k equ 0f003hadd8253_0 equ 0d000h ;8253计数通道1#、2#、3#和控制口地址add8253_1 equ 0d001hadd8253_2 equ 0d002hadd8253_c equ 0d003hcounter equ 60h ;倒计时数red_on equ 0cch ;红灯亮red_off equ 0ffh ;红灯灭e_w equ 0c3h ;东西方向通行data segmenttab db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhcount db ?

6、scan dw 485 ;扫描次数data endsstck segment stack dw 64 dup(?)stck endscode segmentassume cs:code , ds:data,ss:stckstart:mov ax,data mov ds,ax mov es,ax nop mov dx,k8255k ;写8255控制字,a,b,c均为输出,方式0 mov al,80h out dx,alstart1: mov dx,k8255c ;c口输出,控制灯 mov cx,4flash: mov al,red_on ;红灯亮 out dx,al call delay ;调延

7、时 mov al,red_off ;红灯灭 out dx,al call delay loop flash start2: mov dx,add8253_c ;写8253控制字 mov al,37h ;0#计数器,读写16位低高字节,方式三,bcd码 out dx,al mov ax,1000h ;写0#的计数初值1000h,根据输入设定2m=1000h*2000 mov dx,add8253_0 out dx,al mov al,ah out dx,al mov dx,add8253_c ;写8253控制字 mov al,77h ;1#计数器,读写16位低高字节,方式三,bcd码 out d

8、x,al mov ax,2000h ;写1#计数初值2000h,根据输入设定,方波频率1hz mov dx,add8253_1 out dx,al mov al,ah out dx,al mov count,counter ;写计数值(红绿灯变换的间隔时间) call init8259 ;调8259初始化子程序 call wriintver_8 ;调写中断向量表子程序 call wriintver_9 ;调写中断向量表子程序 mov cl,e_w mov al,cl mov dx,k8255c out dx,al sti nopstart3: jmp $ ;给出中断以外cpu的工作init82

9、59 proc near ;8259初始化子程序 mov dx,io8259_0 ;写icw1,边沿触发,单片,需写icw4 mov al,13h out dx,al mov dx,io8259_1 ;写icw2,确定中断类型号 mov al,08h out dx,al mov al,09h ;写icw4 out dx,al mov al,0fch ;写ocw1,除ir0、ir1全屏蔽 out dx,al retinit8259 endpwriintver_9 proc near ;写中断向量表子程序 push es mov ax,0 mov es,ax mov di,24h ;中断类型号9,

10、对应24h,25h,26h,27h四个单元 lea ax,int_9 ;取中断服务程序ip stosw mov ax,cs ;取中段服务程序cs stosw pop es retwriintver_9 endpwriintver_8 proc near ;写中断向量表子程序 push es mov ax,0 mov es,ax mov di,20h ;中断类型号8,对应20h,21h,22h,23h四个单元 lea ax,int_8 ;取中断服务程序ip stosw mov ax,cs ;取中段服务程序cs stosw pop es retwriintver_8 endpint_9:mov a

11、l,count sub al,01h das mov count,al ;中断服务程序 push ax push dx push bx push cx push scan ;保护循环值,否则取数码管显示会破坏loo: mov al,55h mov dx, k8255a out dx,al mov al,count ;选高位数码管 mov ah,al ;暂存ah mov cl,4 shr al,cl lea bx,tab xlat ;十进制转数码管编码 mov dx, k8255b out dx,al ;显数 call dl1ms ;调延时 mov al,0 out dx,al ;清除 mov

12、al,0aah mov dx, k8255a out dx,al ;选低位数码管 mov al,ah shl al,cl shr al,cl xlat ;十进制转数码管编码 mov dx, k8255b out dx,al ;显数 call dl1ms mov al,0 out dx,al ;清除 dec scan cmp scan,0 jnz loo ;循环扫描 pop scan pop cx cmp count,0 jnz stop ;计数到零则重新置数,并将灯取反,未到零则直接结束中断子程序 mov count,counter not cl mov al,cl mov dx,k8255c

13、 out dx,alstop: mov dx,io8259_0 ;结束中断服务,写ocw2,给8259送eoi命令,lsr1清零 mov al,20h out dx,al pop bx pop dx pop ax iretint_8:push dx push ax push cx mov dx,k8255c ;c口输出,控制灯 mov cx,4a: mov al,red_on ;红灯亮 out dx,al call delay ;调延时 mov al,red_off ;红灯灭 out dx,al call delay loop a mov dx,io8259_0 ;结束中断服务,写ocw2,给

14、8259送eoi命令,lsr1清零 mov al,20h out dx,al pop cx mov dx,k8255c mov al,cl out dx,al pop ax pop dx iretdelay proc;延时子程序 push bx push cx mov bx,04hdelay1:mov cx,0ffffh loop $ dec bx jnz delay1 pop cx pop bx ret delay endp dl1ms proc near push ax push cx mov ax,0100h mov cx,ax loop $ pop cx pop ax retdl1ms endpcode ends end start 三、调试现象1、程序截图2调试现象程序调试时,交通信号灯系统初始状态为所有红灯闪烁4次,数码管此时不显示;系统初始状态之后东西向车行道绿灯亮,南北向车道红灯亮,此时数码管从60秒倒计时;当数码管数字减为0时,东西向、南北向红绿灯交换亮,即南北向车行道绿灯亮,东西向车道红灯亮,此时数码管重新从60秒开始计数,数码管数字减为0秒后,红绿灯再次交换,如此循环重复。当道路发生紧急状况时,可拨单脉冲,使调试状态重新进入初始化,此时数码管停止计时(灭),初始化状态结束后,继续从刚刚

温馨提示

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

评论

0/150

提交评论