微机原理课程设计报告书
课题名称 姓 名 学 号 院、系、部 专 业 指导教师
通信工程
声光报警器
一、设计目的
(1)进一步巩固和加深《微机原理与接口技术》这门课程中所学的理论知识。(2)学会查阅相关手册与资料,培养分析与解决问题能力。
(4)通过设计了解8255A芯片和8253芯片的内部结构,工作方式,引脚的功能以及I/O
口的使用。掌握8255A和8253的控制字的意义,功能和设置方法。 (5)学习并实践模拟声光报警器的实现方法。
二、设计内容与要求
具体要求:按动键盘某任一数字键使得内扬声器发出警报声,使得8个LED指示灯忽明忽暗显示出报警信息。
三、设计思路
根据设计任务和要求,在设计前必须对微机原理与接口技术中的8255和8253芯片熟悉了解和掌握。设计中主要要完成的是发声报警和发光报警这两个部分功能,故在程序设计中只要设计触动键盘重的数字键即8个LED不停光闪,同时内扬声器发出警报声。在设计发声报警时利用了8253可编程定时记数器,在设计发光报警时利用了8255芯片。
四、设计所用芯片及工作原理
报警器PC机的主机箱内装有一只小喇叭,它是由定时器8253/和并行芯片8255/8255A控制发声的,主板上由喇叭控制驱动电路,同时在ROM,BIOS中的BEEP子程序,它能根据BX中发出的计数值控制定时器8253/,从而产生频率为6HZ的声音。8253是可编程的内部定时器,它根据程序提供的计数值和工作模式产生各种形式和各种频率的计数/定时脉冲,提供给系统的各个部件使用。8253定时器内部有3个工作的计数器:COUNTER1,COUNTER2,COUNTER3,每一个计数器都分配有一个端口地址,分别为40H、41H、42H。内部的公用控制寄存器端口地址为43H。对8253编程时,首先设定控制字,以选择计数器、确定工作模式和计数的格式。在PC机中8253的3个时钟端口的输入频率都是1.19318MHZ。其中计数器2可以控制扬声器的发声。在BIOS中的BEEP子程序在模式3下能够产生频率为6HZ的声音,装入计数器的初始值是
533HZ(1.19318MHz/6HZ=1331=533H),这样得到的控制字为10110110B。
8255是可编程I/O口扩展芯片。对8255输入不同的指令可改变I/O口的工作方式。8255与微机实验箱连接方式简单,工作方式由程序设定,图2为8255的引脚图。
8255是一个具有3个8位的8位并行口,并且可编程为多种工作模式的接口芯片。由于每个端口上具有输入/输出的缓冲和锁存功能,因此可用于扩展I/O口,作为中间接口电路。 3.1引脚说明
8255共40个引脚,采用了双列直插的封装,主要引脚功能如下: D7—D0:三态双向数据线,与单片机数据总线连接; CS:片选信号,低电平有效; RD:读出信号线,低电平有效; WR:写入信号线,低电平有效; PA7—PA0:A口输入/输出线; PB7—PB0:B口输入/输出线; PC7—PC0:C口输入/输出线; RESET:芯片复位信号线;
A1—A0:地址线,用来指定8255内部端口。 3.2内部结构和工作方式 (1)端口A、B、C
端口A为8位数据传送,数据输入或输出时均受到锁存。
端口B为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。 端口C为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。 (2)8255接口工作状态选择表9-1
表9-1 8255接口工作状态
A1 A0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 RD WR CS 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 工作状态 A口数据→数据总线 B口数据→数据总线 C口数据→数据总线 数据总线→A口 数据总线→B口 数据总线→C口 数据总线→控制寄存器 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 数据总线→三态 非法状态 数据总线→三态 (3)8255的基本工作方式
8255可编程并行I/O扩展芯片是通过在控制端口中设置控制字来决定它的工作方式的。
8255有以下三种基本工作方式:
方式0——基本输入/输出方式。 方式1——选通输入/输出方式。 方式2——双向传送方式。
8255A的端口A可以工作在三种工作方式中的任何一种,端口B只能工作在方式0或方式1,端口C则常常配合端口A和端口B工作,为这两个端口的输入/输出传送提供控制信号和状态信号。 ①方式0
方式0是一种基本输入/输出方式。它是把PA0~PA7、PB0~PB7、PC0~PC3、PC4~PC7全部输入/输出线都用作传送数据,各端口是输入还是输出由方式控制字来设置。这种方式多用于同步传送和查询式传送。 8255的方式控制字如图9-1:
如图9-1 8255的方式控制字
②方式1
方式1是一种选通输入/输出方式。它把A口和B口用作数据传送,C口的部分引脚作为固定的专用应答信号,A口和B口可以通过方式控制字来设置方式1。这种方式多用于查询传送和中断传送。 ③方式2
方式2是一种双向选通输入/输出方式。它利用A口为双向输入/输出口,C口的PC3~PC7作为专用应答线。方式2只用于端口A,在方式2下,外设可以通过端口A的8位数据线,向CPU发送数据,也可以从CPU接收数据。
当8255接收到写入控制端口的控制字时,首先测试控制字的最高位,如为1,则是方式选择控制字;如为0,则不是方式选择控制字,而是对端口C置1/置0控制字,这是由于端口C的每一位可作为控制位来使用。端口C置1/置0控制字也是写到控制端口,而不是写到端口C。
8253具有3个的16位计数器,6种不同的工作方式。 1、方式0——计数到终点输出变为高电平
当将某计数器设置成方式0后,其输出OUT变低电平,装入初值后,仍保持低电平。门控为高电平开始计数。每来一个计数脉冲CLK,计数器的值减1,当计数到达终点即计数器的值变成0时,OUT变为高电平。在计数期间可用门控信号暂停计数(即门控为低电平时,计数暂停)。
2、方式1——可编程单稳
所谓单稳,是指这样的电路,它有两种状态,但只能稳定在一种状态。在一
定的外界作用下,它能从这一种状态进入到另一种状态,但经过一定时间后,又自动恢复到原来的状态。
这个时间参数一般是由外加电阻、电容的值决定的。8253的方式1就是模拟单稳电路,其处于非稳定状态的时间可通过程序进行设置。
3、方式2——分频脉冲发生器(分频器)
方式2用来对输入脉冲(即计数脉冲CLK)N分频(N为预置的初值),在输出信号周期中低电平的时间为一个CLK周期。
设置此方式后,OUT变高电平,装入初值后便自动开始计数,减到1时OUT变低电平。经过一个CLK周期,OUT恢复高电平,且计数器又自动装入初值,重新开始计数。如此循环下去。在上述过程中GATE应一直保持高电平。
若GATE变低电平将禁止计数,并使输出为高电平。在GATE再次变高电平时,计数器将重新装入预置的初值,并开始计数。
4、方式3——方波发生器
方式3类似于方式2,输出是周期性的。不同的是方式3输出方波。如果预置的初值N为偶数,则输出周期中高电平和低电平的宽度相等;如果N为奇数,则输出周期中高电平比低电平多一个CLK周期的时间,当N相当大时,也可认为是方波。当然,一般采用方式3时,置初值为偶数。
设置成方式3后,OUT变高电平,装入初值后便自动开始计数。如初值为偶数,每个CLK使计数器减2,计到终点改变电平。如初值为奇数,则输出为高电平时第一个CLK使计数器减1,随后每个CLK使计数器减2;输出为低电平时第一个CLK使计数器减3,随后每个CLK使计数器减2。每当计数到终点都会改变电平,初值又被重新装入,并开始计数。如此循环下去。
5、方式4——软件触发选通
设置成方式4后,OUT变高电平,写入计数值后自动开始计数(所以称之为软件触发),计数到终点输出一个CLK周期的低电平脉冲。GATE变低可暂停计数,用GATE的上升沿可重新赋初值,并开始计数。
6、方式5——硬件触发选通
设置成该方式后,OUT变高电平,写入计数值后需等待GATE上升沿的到来才开始计数(所以称之为硬件触发)。计数到终点也输出一个CLK周期的低电平脉冲。计数过程中不受GATE电平的影响。此后,用GATE的上升沿可重新赋初值,并开始计数。
五、电路及连线设计 系 GATE2 统+5v OPCLK 总 1.1625MHZ 线 GATE0 CLK0 8253 OUT0 SPK SPK UNIT 图1 8253 发声实验接线图 PB0 PB1 PB2 8255 PB3 PB4 PB5
PB6 PB7
图2 8255发光实验接线图
D0 D1 D2 D3 D4 D5 D6 D7 SW--LED UNIT 六、连线图说明
1、8253的CLK0端口接分频单元
2、8253的OUT0输出端口与内置扬声器SPK端口相连 3、8255的B端口的8个引脚与8个LED灯相连。
4、8255端口B工作在方式0并作为输出口, 端口B输出线接至一组发光极管上,端口A工作在方式0并作为输入端口,接一组开关信号。
七、程序流程图
图3 实验程序流程图
八、程序源代码
PORTA=0FF28H ; 8255的A、B、C及控制端口的地址分别为PORTA、PORTB、PORTC和PORTD PORTB=0FF29H PORTC=0FF2BH
PORTD=0FF2AH ; 向PORTD送数据,点亮LED CODE SEGMENT ASSUME CS:CODE
START: MOV BL,00 MOV AH,0FFH
MOV DX,0FF2AH
MOV AL,10000001B ;初始化8255,10000001B设置A、B端分别为方式0输出C端为方式0输入 OUT DX,AL LP: MOV DX,0FF2BH
IN AL,DX ;把DX中的内容读到AL
AND AL,0FH ;AL与00001111B相取出低字节
CMP AL,00H ; 从C端口即从键盘数字区接收到的数与0比大小
JE NEXT CMP AL,01H
JB LP ;不高于等于 CMP AL,08H JA LP
MOV AL,0B6H ;10110110B初始化8253 OUT 43H,AL
MOV AX,0000 ;写入计数初值
OUT 42H,AL ; 在计数器2中写入低字节计数初值 MOV AL,AH ;高字节已在AH中 即前面的0ffh OUT 42H,AL ;在计数器2中写入高字节计数初值 MOV AL,BL ;灯闪烁
NOT AL ;将al中的取反
OUT 0FF29H,AL ;将AL中的值送到PORTA即8255的A端口 CALL DELAY
SHL BL,1 ;逻辑左移指令SHL执行一次移位,相当于无符号数的乘2 TEST BL,AH JNZ LP
MOV BL, 01H JMP LP
BACK: RETF
NEXT: MOV AL,AH OUT 0FF29H,AL JMP LP
PUSH CX
MOV CX,0000 DELAY: PUSH CX PUSH CX POP CX POP CX POP CX RET CODE ENDS END START
九、调试结果
图4 程序运行后LED灯管闪烁
图5 程序运行完成一段时间后停止闪烁
十、设计过程中遇到的问题及解决方法
接近两周时间的课程设计我收获了很多。从开始知道有这样一个实践机会的新奇和兴奋,到设计过程中碰到困难时的挫败,再到最终完成设计的欣喜。这短短两周我经历了一次大考验,不仅仅是对所学知识的还有是对我各方面的综合素质的考验。这次课程设计的内容总体来说要求我们对《微机原理与接口技术》这门课程中8255,8253芯片的编程更好的理解了其内在的原理,另外他还要求学生有很强的动手操作能力和书写设计报告的能力。基于我对报警器原理的好奇,我选择了声光报警器设计,然而由于专业课程学得不够扎实,在这次课程设计过程中遇到了很多麻烦。开始在实验室验证的时候,发光二极管全部亮了,没有闪烁现象,通过分析程序才知道原来只是让8255芯片实现了二极管的亮,没有用程序去控制各个二极管延时闪亮的问题。后来加入了新的内容便和设计一样了。
这次的课程设计是对微机原理课程学习的一个提高,关于报警器的原理有了整体的认识之后才去上机试验。起初因为程序的一些错误,只实现了相关的一小部分内容,通过一步一步的检查程序修改终于实现了设计的目的。
十一、参考文献:
[1] 楼顺天,周佳社·微机原理与接口技术[M] ·北京:科学出版社,2006:267-312. [2] 张雪兰,谭毓安·汇编语言程序设计[M]·北京:清华大学出版社,2006:125-147. [3] 刘红玲,邵晓根·微机原理与接口技术[M]·北京:中国电力出版社,2007:304-326. [4] 吕淑萍,微型计算机原理及应用[M]·哈尔滨:哈尔滨工业大学出版社,2004:236-257. [5] 陆红伟,微机原理实验与课程设计指导书[M]·北京:中国电力出版社,2006:143-149.
(注:素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注!)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo8.com 版权所有 湘ICP备2023022238号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务