基于8086的信号灯的设计与实现_第1页
基于8086的信号灯的设计与实现_第2页
基于8086的信号灯的设计与实现_第3页
基于8086的信号灯的设计与实现_第4页
基于8086的信号灯的设计与实现_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、l 1. 设计题目应用软件定时方式控制信号灯的设计与实现l 2. 设计目的巩固“微机原理”课程学过的知识,加强理论与实践的联系。通过本课程设 计,使学生初步了解微机系统的硬件设备,学会 8086 系列编程指令的基本功能。l 3. 设计思路3.1 硬件接口器件的选择以 8086 作为 cpu,且工作在最小组态下, 74hc373 用于锁存 8086 的地址而 将其地址送出,74hc138 进行端口地址的译码,8255 做输入定时时间的开关和显 示倒计时时间的输入输出接口芯片, 8253 作为 1 秒钟的定时器, 8259 用作中断 控制器。3.2定时的启动由 8255 的 pa 端口通过逻辑开关

2、输入定时时间,pb 口和 pc 的一些普通端口 作为倒计时的输出显示。定时的启动可有由一个开关以中断的方式进行启动,即 位中断 1,开关闭合的同时,产生一中断由 8259 送至 cpu,执行中断程序,同时 8253 重新开始计数,触发 24v 的信号开关闭合将电压加在继电器上,使继电器 的常开接点闭合从而信号灯亮。3.3倒计时的显示显示可以在 8 只发光二极管(bcd 码)上显示,但不是很直观,在这里采 用 2 个数码管更直观地显示时间,首先将其显示的初值定为 60 秒,定时启动后, 对于 8253 定时计数器,1 秒钟定时时间到即产生中断 2,发送中断类型码到 8086 中,8086 根据中

3、断类型码从存储器中找到中断向量,读取中断向量程序,判断 数码显示管中的数值是否为 0,若为 0,数码显示管置初值,且信号灯灭,继电 器接点打开;否则,数码显示管当前值减一,信号灯状态不变。,如此反复,实 现了设计要求。3.4 继电器的选择与电气隔离的实现继电器就是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起 着自动调节、安全保护、转换电路等作用,这里用一个开关接点的即可。对于电磁继电器,只要在线圈两端加上一定的电压,线圈中就会流过一定的 电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力 吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电

4、磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点 与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导 通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线 圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称 为“常闭触点”。图 1 继电器电气隔离可以用电磁隔离和光耦合隔离,由于继电器的电压不高,这里采用 光耦合隔离即可。所谓光耦隔离就是采用光耦合器进行隔离,光耦合器的结构相 当于把发光二极管和光敏三极管封装在一起。发光二极管把输入的电信号转换为 光信号传给光敏管转换为电信号输出,由于没有直接的电气连接,这样既耦合

5、传 输了信号,又有隔离作用。4. 系统部分主要硬件设计及原理4.1 各芯片间的关系及原理定时输入单元8086 8255a 8253倒计时显示单元q074hc373q1灯y074hc138y2定时启动和8259 控制定时中74hc373y6光耦合隔离开始的中断断和定时开 始中断图 2整体框图8255,8253 和 8259 的数据端口及读写信号都要和总线相连,8255 和 8253 的1a0,a1 两个端口可以接在 ad0,ad1 经过地址锁存器出来的 q0,q1 两个端口上 面, 8259 的 a0 也可以和 138 译码器出来的信号相与再接到片选信号上. 地址通 过 138 译码器进行译码。

6、译码器有 3 个控制端,分别为 g(高电平有效),g2 a(低 电平有效),g 2b (低电平有效),当 g=1,ga 和 gb 全为 0 时,译码器处于工作 状态。a15 接在 g 上,a12-a14 分别接到 a,b,c 三个端口中,y6 与 8259 的 cs(低 电平有效)相连,y2 与 8253 的 cs (低电平有效)相连,y0 与 8255 的 cs 相连。所以可以得出根据 8255 的端口号:8000h,8001h,8002h,8003h.8259 的端口 地址:e000h,e001h。8253 的端口号:a000h,a001h,a002h,a003h。8255 并行通信接口的

7、 3 种工作方式:工作方式 0 :这是 8255a 中各端口的基本输入输出方式。它只完成简单的并 行输入输出操作, cpu 可从指定端口输入信息,也可向指定端口输出信息,如 果三个端口均处于工作方式 0 ,则可由工作方式控制字定义 16 种工作方式的 组合。工作方式 1 :被称作选通输入 / 输出方式。在这种工作方式下,数据输入 / 输出操作要在选通信号控制下完成。 如果 pa,pb 一个工作在方式 1,一个工作 在方式 0,则 c 端口只有 5 个端口可以作为普通的输入输出端口工作方式 2 :被称作带选通的双向传送方式。 8255a 中只允许端口 a 处于 工作方式 2 ,可用来在两台处理机

8、之间实现双向并行通信。其有关的控制信号 由端口 c 提供,并可向 cpu 发出中断请求信号。8253 的工作原理:8253 是可编程的计数器/定时器,其内部有三个独立的 16 位计数器/定时器通道,每个计数器通道均可按 6 种不同的方式工作, 8254 有六 种工作方式:方式 0:计数结束中断,方式 1:可编程频率发生器,方式 2:频 率发生器,方式 3:方波频率发生器,方式 4:软件触发的选通信号,方式 5: 硬件触发的选通信号。并且都可以按二进制或十进制计数。其 clk0clk2 是计 数器 02 的时钟脉冲输入端, 计数器对该引脚输入的脉冲进行计数。它的输入 脉冲可以是任何脉冲提供的。g

9、ate0gate2 是门控脉冲输入端, out0out2 是 输出端,当计数到 0 时,该引脚输出低电平。在不同的工作方式下,输出不同形 式的信号。8259 的工作原理,中断请求寄存器 irr:8 位,用以分别保存 8 个中断请求 信号,在此采用电平触发中断。当响应的中断请求输入脚有中断请求时,该寄存2器的相应位置 1,此时 8259 的 int 发出中断请求信号到 8086 的 intr,8086 的inta(低电平有效)发出中断响应信号给 8259 的 inta ,8253 的 1s 定时器的out1 通过一个非门后接在 8259 的 ir7 上作为中断 2,定时开始的信号接在 ir4 上

10、作为中断 1,显然中断 1 的优先级高于中断 2 的优先级。4.2 倒计时单元的显示在此可以让 pa 口用 1 方式输入,通过逻辑开关输入定时时间,pb 口用作 0 方式输出,pb 可用作显示倒计时的数码管的段选端口,pc 口的 pc4 作为单脉冲 的输出端,可以用来控制信号灯定时时刻的开始,当 pc4 端口一来脉冲,pc0, pc1 作为数码管的位选端口,pc2 作为普通端口与信号灯相连。4.3 1s 定时的实现对于 8253 而言,由于外部可以提供 1mhz 的时钟脉冲,则每计数一次的时间 为 1us,最大能计数 63535 次,即 63.35ms,为了能利用 8253 实现 1s 的定时

11、,可 以采用将计数器 0 和计数器 1 级联按 5000200 方式分频,将计数器 0 的 out0 端口接在计数器 1 的 clk1 上作为它的计数脉冲。即计数器 0 写入 5000 时,在 计数器 1 clk1 中会有 200hz 脉冲。对于 1s ,需对计数器 1 初始化写入时间参 数 time1=200。且两个定时通道都选用 2 方式。4.4 电气隔离的实现通过光进行开关作用 , 光电耦合器就是将发光二极管和光电三极管密封 在一块 ,发光二极管通电点亮以后 ,照到光电三极管的基极上 , 基极收到信号就导 致集电极到发射极之间形成通路 ,发光二极管熄灭后,光电三极管上集电极到发射 极的通

12、路阻断了, 二极管到三极管之间没有电器连接,所以很安全。图 3,电气隔离模块的原理图定时的启动可以通过一开关,触发 24v 的开关电源,使之闭合从而使继电器两3端获得 24v 的电压,继而使其吸合,信号灯两端有电流流过,从而亮。开关闭 合的同时 8253 的 gate 端在下降沿时刻开始计时重装初值,而且 8259 产生中断。 倒计时为 0 的时候由软件方式让灯熄灭,继电器的结合开关断开。5.系统软件部分设计5.1系统的程序流程图开始关中断, 写中断向量表8255a和 8253 的初始化8259a的初始化倒计时单元显示初值开中断等待中断定时开始?ny执行中断 1 程序 , 并返回n1s 定时到

13、?y执行中断 2 程序, 并返回结束图 4,系统总程序4中断 1 处理程序读取 pa 端口的数据 转换成十进制并送至倒计时单元执行中断 2 处理程序倒计时的时间为0 ?nny个位为 0 ?y中断返回个位数值减 1十位减 1 ,个位变为 9中断返回图 5,两个中断服务程序5.2各子模块的实现5.2.1 关中断,写中断向量 , 把中断服务程序的入口地址写入中断向量表中,使 用的中断类型号为 0ch,0fhcli ;关中断push dsxor ax,axmov ds,axmov si,24h ;找到该中断类型号在中断向量表中的首地址mov ax,offset irq4add ax,2000hmov

14、word ptr si,ax ;把中断服务程序的偏移地址放入低字中 mov ax,0mov word ptr si+2,ax ;把中断服务程序的段地址放入高字中 mov si,3ch ;找到该中断类型号在中断向量表中的首地址mov ax,offset irq7add ax,2000hmov word ptr si,ax ;把中断服务程序的偏移地址放入低字中 mov ax,0mov word ptr si+2,ax ;把中断服务程序的段地址放入高字中 pop ds5.2.2 8255,8253 和 8259 的初始化init :;8259a 初始化,其中地址为 0e000h 和 0e001hmo

15、v al,13h ;设置 icw1,单片,上升沿触发,需要设置 icw4 mov dx,0e000h5out dx,al ;icw1 写入 8259a 的偶地址中mov al,08h ;设置 icw2,中断类型号的基值mov dx,0e001hout dx,al ;icw2 写入 8259a 的奇地址中;由于是单片 8259,所以不需要设置 icw3mov al,09h ;设置 icw4,非自动结束,缓冲方式,完全嵌套 mov dx,0e001hout dx,al ;icw4 写入 8259a 的奇地址中mov al,6fh ;设置 ocw1,开放 4 和 7 的中断请求口mov dx,0e0

16、01hout dx,al ;ocw1 写入 8259a 的奇地址中;8255a 初始化,其中地址 a 口:8000h,b 口:8001h,c 口:8002h, 控制口:8003hmov dx,8003hmov al,0b0h ;设置 8255a 工作方式控制字,a 口为方式 1 输入、b 口 为方式 0 输出out dx,almov dx,8000h;in al,dxmov time,al;time 用来存储倒计时剩下的时间;8253 初始化,其中地址为通道 0:0a000h,通道 1:0a001h,通道 2: 0a002h,控制寄存器:0a003hmov al,35h ;设置 8253 控制

17、字,通道 0 为工作方式 2,bcd 计数,先读写 低字节,后读写高字节mov dx,0a003hout dx,almov al,00 ; 设置计数通道 0 的计数初值 5000,先送低字节mov dx,0a000hout dx,almov al,50 ; 计数通道 0 的计数初值高字节out dx,almov al,75h;设置 8253 控制字,通道 1 为工作方式 2,bcd 计数,先读 写低字节,后读写高字节mov dx,0a003hout dx,almov al,00 ; 把计数初值写入通道 2,先送低字节mov dx,0a002hout dx,almov al,02h ;计数通道

18、1 的计数初值高字节out dx,alsti ;初始化完毕,开中断5.2.3 倒计时显示单元的实现,每次 1s 的中断来了,显示的值发生变化,将段 码送至 pb 口,位码送至 pc0 和 pc16data segmenttable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;数字 09 的 7 段显示码number dw 2 dup (0) ;开辟了 2 个字空间,用来存放倒计时要显示的数字 time db 03ch ; 存储定时时间,初值 60sdata endsdisp:again:xor bx,bx ;将 bx 清零mov cx,o2hmov

19、ah,0fehmov si,offset table ;用 si 来存放段码add si,number +bxmov al,byte ptrsi ;把段码送 b 口l1: mov dx,8002hout dx,almov al,1 ;把位码送 pc0 口call delay ;延时 2msmov al,0ffh ;关闭显示管add al,3;获得下一个位码 pc1 口add bx,2 ;指向下一个要显示的段码mov si,number+bxmov al,byte ptrsiloop nextjmp again5.2.4 两个中断服务程序 irq4 和 irq7irq4:out dx,almov

20、 dx,8000h;in al,dxmov time,al;重置定时时间irq7:push ax ;保护现场push cxmov al,00 ; 设置计数通道 0 的计数初值 5000,先送低字节mov dx,0a000hout dx,almov al,50 ; 计数通道 0 的计数初值高字节out dx,almov al,00 ; 把计数初值写入通道 1,初值为 200,先送低字节mov dx,0a001h7out dx,almov al,02 ; 计数通道 1 的计数初值高字节out dx,alxor di dimov cx,2mov di,offset numberl2: cmp wor

21、d ptrdi,0 ;先比较个位,再比较十位jz l3dec word ptrdijmp exitl3: add di,2cmp word ptrdi,0jne l3mov si,offset timemov al,byte ptrsimov dx,8002hout dx,alnot almov byte ptrsi,al ;重新对 al 赋值mov word ptrdi,6jmp exitl4: sub di,2mov word ptrdi,9add di,2cmp word ptrdi,0jz l5dec word ptrdijmp exitl5: mov word ptrdi,5add

22、di,2loop l2exit:pop cx;恢复现场pop axmov al,20hout 20h,al ;发中断结束命令sti ; 开中断 ,因为系统在响应中断时 ,除了保护断点外 ,还自动关闭了中断 允许位iret ;中断返回delay: push cx; 2ms 延时子程序mov cl,0fhl2: mov ch,0fhl1: dec chjnz l18dec cljnz l2pop cxretl6.实验小结通过此次课程设计对微机的接口电路的设计有了更加深刻的认识,以前用 单片机进行定时和中断,但和微机还是有很大的不同,有一点遗憾的是时间有限, 没能在 proteus 将该工程仿真出来

23、。但收获还是蛮大的!l7参考文献1 戴梅萼.微型计算机技术及应用m.清华大学出版社,20052周明德.微型计算机系统原理及应用m.北京:清华大学出版社,2007.1附件:总体电路图东、西两个相对路口红灯亮 12s,南、北两个路口绿灯亮 6s,后转为黄灯亮 6s; 南、北两个相对路口红灯亮 12s,东、西两个路口绿灯亮 6s,后转为黄灯亮 6s;(10 分)3. 每个路口设一个紧急按键,可以中断当前的交通灯状态,使当前路口为绿灯,经 12s 后 恢复原来的工作状态;(20 分)4. 使用 8253 提供时间定时,每 6s 读入 1 次温、湿度;(20 分)925 5.daad0ad1p1114d

24、3r41210r610k.d18rp1respack-81 2 3 4 5 6 7 8 9u6dsw11mhz(a)vcc2122int24inta18313023173319u1ad0.15reset ad0.15ready a16.19inta/qs1intr ale/qs0 134 .hold/gt1 bhe 027 hlda/gt0 t/r/s126test den/s232nmi rd29mn/mx wr/lock28clk m/io/s08086program=e:masm615led.exead2ad3ad4ad5ad6ad7ad8ad9ad10ad11ad12ad13ad14ad15ad0.15u53d0 q04d1 q17d2 q28d3 q313d4 q414d5 q517d6 q618d7 q71oe11le74hc373u23d0 q04d1 q17d2 q28

温馨提示

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

评论

0/150

提交评论