版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录摘要第1章 设计任务描述11.1 设计题目11.2 设计内容11.2.1 设计目的 11.2.2 设计要求 11.3 设备器材11.4 任务分析1第2章 主要元器件32.1 8255并口芯片32.2 8254定时器计数器的功能介绍 42.2.1 8254的引脚图 42.2.2 8254的控制字寄存器的格式及初始化编程 6第3章 程序分步说明7第4章 设计原理流程图 11第5章 实际硬件接线图 12第6章 源代码 13总结17致谢 18参 考 文 献 19摘 要当代计算机是微电子学与计算数学相结合的产物。微电子学的基本元件及其集成电路构成了它的硬件基础;计算数学的方法与数据结构则构成了计算机
2、的软件基础。 世界上第一台计算机于1946年在美国宾夕法尼亚大学诞生,自1981年ibm公司推出ibmpc后,计算机的发展进入了微机时代。微型计算机的迅速普及,使得计算机广泛运用于工业、农业、科学技术和社会生活的各个领域,极大的改变了生产和生活的方式,并成为推动社会发展的巨大生产力。 报警系统逐渐成为我们日常生活中重要的一部分,对于各种突发状况,报警器可以起到一个将危险控制到萌芽的状态,对其进行及时有效的处理。应用cpu对8255、8254、8259进行控制,该系统可以实现按动开关报警器报警,led闪动,数码管显示房间号,最后可用8259进行清零。关键词 8255芯片,8254芯片,8259
3、中断沈阳工程学院微机原理及应用课程设计第1章 设计任务描述1.1 设计题目模拟医院报警系统设计1.2 设计内容1.2.1 设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。1.2.2 设计要求内容:利用微机原理实验箱,采用一组发光二极管来模拟报警灯。要求:1.采用8个开关为8个病房的开关,当有人按下时立即在8个发光二级管上显示出来,并且该位置闪动,同时发出警报,并通过一个数码管显示出来。2.警报
4、有8254控制一个扬声器发出。3.设置一个警报清除按键,通过8259中断进入,清除所有报警情况。1.3 设备器材(1)pc微机一台 用于对程序的编译测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。(2)微机原理实验箱一台 此设备必须有8254芯片、8255芯片、8259芯片,且能通过接受pc机传来的信息,显示出相应的功能。(3)导线若干条 用于电路和芯片之间的连接。1.4 任务分析查阅定时器计数器8254、8255、8259、数码管、led、开关控制等其他相关资料。用简单的输入输出端口等硬件,结合完善医院的报警器设计。内容:利用微机原理实验系
5、统的发声单元及扬声器、数码显示单元等来实现报警器的功能。要求: 1.采用8个开关为8个病房的开关,当有人按下时立即在8个发光二级管上显示出来,并且该位置闪动,同时发出警报,并通过一个数码管显示出来。 2.警报有8254控制一个扬声器发出。 3.设置一个警报清除按键,通过8259中断进入,清除所有报警情况。实现:应用定时器计数器8254、8255、8259、开关、led等模块实现医院报警器的报警系统。第2章 主要元器件介绍2.1 8255并口芯片8255可编程外围接口芯片是intel公司生产的通用并行i/o接口芯片,它具有a,b,c三个并行接口,用+5v单电源供电,能在以下三种方式下工作:方式0
6、,方式1,方式2。方式0是基本输入输出方式,方式1是选通输入输出方式,方式2是双向选通工作方式。其工作方式控制字如图2-1。在医院报警系统中,8255起到是一个桥梁作用,在本系统中,8255采用方式0基本输入输出方式,a口,b口,c口均为输出。8255的d0-d7连接系统总线的xd0-xd7,rd,wd,cs分别连接系统总线的xior,xiow,ioy0。8255的a口低两位pa0,pa1控制8254可编程定时/计数器芯片。8255的b口的pb0-pb7和c口的低四位pc0-pc3来控制数码的显示。图2.1 8255的控制字图图2.2 内部结构及引脚如图2.2所示,d0d7为双向数据信号线,用
7、来传送数据和控制字。为读信号线,与其他信号线一起实现对8255接口的读操作。通常接系统总线的信号。 为写信号线,与其他信号一起实现对8255的写操作,通常接系统总线的。 为片选信号线,当它为低电平时,才能选中该8255芯片,也才能对8255进行操作。a0、a1为口地址选择信号线。本次设计使其分别与系统总线的xa1、xa2相连,它们的不同编码可分别寻址3个口和一个控制寄存器,具体规定如下:表2.1 a0、a1 说明a1a0选择00a口01b口10c口11控制寄存器 reset为复位输入信号。此端上的高电平可使8255复位。复位后,8255的a口、b口和c口均被定义为输入状态。pa0pa7为a口的
8、8条输入输出信号线,该口的这8条线是工作于输入、输出还是双向(输入、输出)方式,可由软件编程来决定。pb0pb7为b口的8条输入输出信号线,利用软件编程可指定这8条线是输入还是输出。这里的8255接口所占地址范围为0640h0646h。当对8255接口进行写操作时,各信号线的状态如表所示:表2.2信号线的状态说明csa1a0ioriow操作00010写a口00110写b口01010写控制寄存器01110写c口2.2 8254定时器计数器的功能介绍 2.2.1 8254的引脚图图2.3 8254的引脚图上图是8254 的引脚图。8254的引脚可分为两部分。一部分使用于微机系统接口的信号线,包括数
9、据线d7至d0,读写和片选信号线,端口选择信号线,这些信号线组合起来控制8254的控制字寄存器 计数器0 计数器1 计数器2的读或写。为读信号线,与其他信号线一起实现对8254接口的读操作。通常接系统总线的信号。为写信号线,与其他信号一起实现对8254的写操作,通常接系统总线的。为片选信号线,当它为低电平时,才能选中该8254芯片,也才能对8255进行操作。a0、a1为口地址选择信号线。本次设计使其分别与系统总线的xa1、xa2相连,它们的不同编码可分别寻址3个口和一个控制寄存器,具体规定如下:表2.3 a0、a1的的读写操作a1a0读操作(rd)写操作(wr)00读计数器0写计数器001读计
10、数器1写计数器110读计数器2写计数器211无操作写方式控制字 另一部分是8254与外设接口的信号线,。每个通道有三条:(1)clk:计数器时钟输入。在计数过程中,此引脚上每输入一个时钟脉冲信号(下降沿),计数器的计数值减1。所以计数通道是记录脉冲个数的计数器。若clk连接到频率精确的时钟脉冲信号,则计数通道可作为定时器。在计数过程中,计数通道受到门控制信号gate的控制。(2)gate:门控制输入。这是控制计数器工作的一个外部输入信号。不同工作方式下,其作用不同。(3)out: 计数器输出。当计数值域为0时,在out引脚上产生一个输出信号,它的波形取决于工作方式。2.2.2 8254的控制字
11、寄存器的格式及初始化编程8254 的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设 置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。当读回控制字的d4 位为0 时,由该读回控制字d1d2 位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。(1) 8254的控制字寄存器的格式,如图2.4所示。图2.4 8254的控制字格式 1:d0用来设置计数值格式。1表示设置计数值为bcd码格式;0表示设置计数值为二进制数格式。 2:d3 d2 d1:工作方式选择。(1) 方式0 :计数到0 结束输出正跃变信号方式。 (2) 方式1:硬件可重触发单稳方式。
12、(3) 方式2 :频率发生器方式。 (4) 方式3 :方波发生器。 (5) 方式4 :软件触发选通方式。 (6) 方式5 :硬件触发选通方式。3:d4 d5:读写操作方式4: d7 d6:选择计数器位。第3章 程序分步说明3.1 概述本系统设计的医院报警器以8086微处理器作为cpu,用8254做方波发生器发声,8255做可编程并行接口显示房间号和led灯,8259做中断控制器清零。在此系统中,8254的发出方波,接入8254的clk信号为周期性时钟信号。8254采用计数器0,工作于方式3,使8254的out0端输出周期性的负脉冲信号,此信号接8259的mir7,使led灯灭,数码管置零。程序
13、由以下模块组成:主控模块,发声模块,清零模块,显示模块。3.2 具体模块设计1. 主程序模块 主控模块是系的核心模块,对8254、8255、8259进行初始化,设置8255、8254的工作方式,设置中断向量。调用中断子程序和显示子程序由软件实现。2. 发声模块 设置8254的工作方式为方波发生器,输入一个频率,使蜂鸣器在加入信号的情况下发出警报的声音,要控制好输入的频率使人耳能够听到。3. 显示模块显示模块是将显示缓冲区的数值送到数码管显示的功能模块,它是将8255a口的输入状态输入到8255的c口,使数码管显示出8255的输入房间号。硬件上由一个数码管构成,软件上由扫描显示的方法实现。由以下
14、程序完成显示功能。data segmenttab2 db 06h,5bh,4fh,66h,6dh,7dh,07h,7fhbuf db 100 dup(?)time dd 100000a8255 equ 0640hb8255 equ 0642hcon8255 equ 0646hleds equ b8255data endscode segment assume cs:code,ds:datastart: mov ax,data mov bl,00h mov ds,ax xie: mov dx, my8255_count0 in al, dx mov dx, my8255_count1 out d
15、x, al call dally mov dx,my8255_count2 out dx,al mov di,offset tab2 mov cx,8 cmp al,01h je ok1 cmp al,02h je ok2 cmp al,04h je ok3 cmp al,08h je ok4 cmp al,10h je ok5 cmp al,20h je ok6 cmp al,40h je ok7 cmp al,80h je ok8 jmp xie ok1: mov al,di mov dx,leds out dx,al jmp begin ok2: mov al,di+1 mov dx,l
16、eds out dx,al jmp begin ok3: mov al,di+2 mov dx,leds out dx,al jmp begin ok4: mov al,di+3 mov dx,leds out dx,al jmp begin ok5: mov al,di+4 mov dx,leds out dx,al jmp begin ok6: mov al,di+5 mov dx,leds out dx,al jmp begin ok7: mov al,di+6 mov dx,leds out dx,al jmp begin ok8: mov al,di+7 mov dx,leds ou
17、t dx,al jmp begin dally: push cx mov cx,0f00h aa2: push ax pop ax loop aa2 pop cx ret code ends end start4. 清零模块 用8259中断程序给led灯和数码管清零,原理是当发生中断时,先给led一个灭灯信号,使灯灭,给数码管一个零的数码字符,数码管显示零。bb1:push ds mov ax, 0000hmov ds, axmov ax, offset mir7;取中断入口地址mov si, 003ch;中断矢量地址mov si, ax;填irq7的偏移矢量mov ax, cs;段地址mov
18、 si, 003ehmov si, ax;填irq7的段地址矢量clipop ds;初始化主片8259mov al, 11hout 20h, al;icw1mov al, 08hout 21h, al;icw2mov al, 04hout 21h, al;icw3mov al, 01hout 21h, al;icw4mov al, 6fh;ocw1out 21h, alstiaa1:nopjmp aa1mir7:sticall dallymov ax, 00hmov dx,0642hout dx,axmov dx,0644hmov ax,di+8out dx,axiret第4章 设计原理流程图
19、否是否是开 始定义数据段初始化8255按动开关 数据传送显示房间号报警是否有键按下不显示也不报警是否有中断传送过来结 束 第5章 实际硬件接线图d0 pa0d1 |d2 pa7 d3 8 d4 2 d5 5 d6 5 d7 芯 wr 片 rd cs pb0a0 |a1 pb7 pc0 | pc7 八个开关xd0xd1xd2 系xd3 统xd4 总xd5 线xd6xd7iow#ior#ioy3 ioy1xa1xa2clk+5v d0d1d2 8d3 2d4 5d5 4d6 芯d7 片wrrdcsa0a1clk0out0gate0 八个led扬声器a|dp 图5.1 程序接线图第6章 源代码ioy
20、3 equ 06c0hioy1equ 0640hmy8254_count0equ ioy3+00h ;8254计数器0端口地址my8254_count1equ ioy3+02h ;8254计数器1端口地址my8254_count2equ ioy3+04h ;8254计数器2端口地址my8254_mode equ ioy3+06h ;8254控制寄存器端口地址my8255_count0equ ioy1+00h ;8255计数器0端口地址my8255_count1equ ioy1+02h ;8255计数器1端口地址my8255_count2equ ioy1+04h ;8255计数器2端口地址my8
21、255_mode equ ioy1+06h ;8255控制寄存器端口地址 stack1segment stackbuf db 256 dup(?)stack1endsdatasegment tab2 db 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,3fh;键值表,08对应的7段数码管的段位值,不带小数点time dd 100000leds equ my8255_count2 ;数码管电路段选位地址freq_list dw 371,495,495,495,624,556,495,556,624 dw 495,495,624,742,833,833,833,742,624da
22、taends;建立数据段codesegmentassume cs:code,ds:datastart:mov ax,data mov bl,00hmov ds,ax;实现段寄存器ds的初始化mov dx,my8254_mode;8254初始化mov al,36h使8254工作在方式3,a 口输入,运用计数器0,二进制方式 out dx,almov dx, my8255_mode;8255初始化mov al, 90h;8255芯片的控制字,工作方式为0,a口输入,b口c口都为输出out dx, alxie: mov dx, my8255_count0;将8255的a口地址赋给dxin al, d
23、x;将a口的值送到al中 mov dx, my8255_count1; 将8255的b口地址赋给dxout dx, al;将cpu中的al值送到8255 的b口中call dally;调用延时程序mov dx,my8255_count2; 将8255的c口地址赋给dx out dx,al;将cpu中的al值送到8255 的c口中 mov di,offset tab2;取tab2偏移地址 mov cx,8;计数8次cmp al,01h ;al的值与01h比较je ok1 ;如若相等,则跳转到ok1cmp al,02hje ok2cmp al,04hje ok3cmp al,08hje ok4cm
24、p al,10hje ok5cmp al,20hje ok6cmp al,40hje ok7cmp al,80hje ok8 jmp xie;强制跳转到xie ok1: mov al,di;将指针中的值送给al mov dx,leds;将leds中的值给dx out dx,al;将al写入dx jmp begin,强制跳转到beginok2: mov al,di+1 mov dx,leds out dx,al jmp beginok3: mov al,di+2 mov dx,leds out dx,al jmp beginok4: mov al,di+3 mov dx,leds out dx,
25、al jmp beginok5: mov al,di+4 mov dx,leds out dx,al jmp beginok6: mov al,di+5 mov dx,leds out dx,al jmp beginok7: mov al,di+6 mov dx,leds out dx,al jmp beginok8: mov al,di+7 mov dx,leds out dx,al jmp begin begin: mov si,offset freq_list ;取freq的偏移地址 mov dx,0fh ;输入时钟为1mhz,1m = 0f4240h mov ax,4240h div
26、word ptr si ;取出频率值计算计数初值,0f4240h / 输出频率 mov dx,my8254_count0;将8254的a口地址赋给dx out dx,al ;输出商的低4位 mov al,ah out dx,al ;输出商的高4位 call dallybb1: push ds;将ds压入栈 mov ax, 0000h mov ds, ax mov ax, offset mir7;取中断入口地址 mov si, 003ch;中断矢量地址 mov si, ax;填irq7的偏移矢量 mov ax, cs;段地址 mov si, 003eh mov si, ax;填irq7的段地址矢
27、量 cli;关中断 pop ds;ds出栈 初始化主片8259 mov al, 11h out 20h, al;icw1 mov al, 08h out 21h, al;icw2 mov al, 04h out 21h, al;icw3 mov al, 01h out 21h, al;icw4 mov al, 6fh;ocw1 out 21h, al sti;开中断aa1: nop jmp aa1mir7: sti call dally mov ax, 00h;将00h放入ax mov dx,0642h;将8255的b口地址赋给dx out dx,ax;将00h写入8255的b口 mov dx
28、,0644h;将8255的c口地址赋给dx mov ax,di+8;将0的数码管代码放入ax out dx,ax;将00h写入8255的c口 iret;恢复dally: push cx;将cx压栈 mov cx,0f00haa2: push ax pop ax loop aa2;cx不为0重复aa2 pop cx;将cx出栈 ret;返回codeends;代码段定义结束end start;程序结束 总结一周的微机原理课程设计很快结束了,这次课设给了我许多经验和教训,了解到了汇编语言的程序设计并不是那样简单的,它要有足够的知识积累和编程的经验,并且编写完的程序要在不断的摸索和研究中得到提高以最简
29、练的程序实现其功能。本次课设知识上的收获很重要,让我又一次体会到理论与实践的差距,只有理论与实践的完美结合才能奏出最美的乐章,缺少某一个都是不可以的。刚开始的时候我们对这次课设的内容不是很理解,不知道应该先从何入手,在老师的指导下我们从微机中调出了先从一个一个子程序开始做起,做好子程序再进行组合,慢慢的我们找到了头绪,一些汇编语言我们还不是很懂,于是我们就查阅一些相关的资料,最后把程序编写出来。知识上的收获虽然重要但我觉得精神上的收获更重要,这次课设我们是以小组为单位的,我们组是2个人,每个人都很努力,而且还互相帮助。团结协作是我们完成任务的一项非常重要的保证,这次课设也锻炼了我们这一点,这是非常宝贵的,在课设的过程中我们因为知识积累的缺少而失落过,也曾为了最后的成功而热情高涨过。生活就是这样,汗水预示着结果也见证着收获。理论与实践相结合是人类劳动生活永恒
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中药材质量控制与管理汇报
- 班级劳动合同范例
- 餐厅修建施工合同范例
- 长期劳动合同范例
- 预租合同和正式合同范例
- 香港公司 佣金合同范例
- 三年级上数学教学设计-总复习-北师大版
- 五年级上册数学教案-数学好玩 点阵中的规律|北师大版
- 发布招聘信息服务合同范例
- 造船分包合同范例
- 学前教育就业指导
- 2024电化学储能考试题库含答案
- 教师教学创新团队工作总结
- 铸牢中华民族共同体意识-考试复习题库(含答案)
- 2024年6月广东省高中学业水平考试物理试卷(附答案)
- 债务规划债务管理方案
- 掀起冬季学习高潮课件
- 人教版九年级英语上册阅读理解10篇(含答案)
- 麻醉科技术操作规范2020版
- 外研版七年级上册英语作文范文
- 《电工新技术介绍》课件
评论
0/150
提交评论