《声光报警器.doc》由会员分享,可在线阅读,更多相关《声光报警器.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流声光报警器.精品文档.微机原理课程设计报告书课题名称姓 名学 号院、系、部专 业通信工程指导教师声光报警器一、设计目的(1)进一步巩固和加深微机原理与接口技术这门课程中所学的理论知识。(2)学会查阅相关手册与资料,培养独立分析与解决问题能力。(4)通过设计了解8255A芯片和8253芯片的内部结构,工作方式,引脚的功能以及I/O口的使用。掌握8255A和8253的控制字的意义,功能和设置方法。 (5)学习并实践模拟声光报警器的实现方法。二、设计内容与要求具体要求:按动键盘某任一数字键使得内扬声器发出警报声,使得8个LED指示灯忽明忽暗显示出报
2、警信息。三、设计思路根据设计任务和要求,在设计前必须对微机原理与接口技术中的8255和8253芯片熟悉了解和掌握。设计中主要要完成的是发声报警和发光报警这两个部分功能,故在程序设计中只要设计触动键盘重的数字键即8个LED不停光闪,同时内扬声器发出警报声。在设计发声报警时利用了8253可编程定时记数器,在设计发光报警时利用了8255芯片。四、设计所用芯片及工作原理报警器PC机的主机箱内装有一只小喇叭,它是由定时器8253/54和并行芯片8255/8255A控制发声的,主板上由喇叭控制驱动电路,同时在ROM,BIOS中的BEEP子程序,它能根据BX中发出的计数值控制定时器8253/54,从而产生频
3、率为896HZ的声音。8253是可编程的内部定时器,它根据程序提供的计数值和工作模式产生各种形式和各种频率的计数/定时脉冲,提供给系统的各个部件使用。8253定时器内部有3个独立工作的计数器:COUNTER1,COUNTER2,COUNTER3,每一个计数器都分配有一个端口地址,分别为40H、41H、42H。内部的公用控制寄存器端口地址为43H。对8253编程时,首先设定控制字,以选择计数器、确定工作模式和计数的格式。在PC机中8253的3个时钟端口的输入频率都是1.19318MHZ。其中计数器2可以控制扬声器的发声。在BIOS中的BEEP子程序在模式3下能够产生频率为896HZ的声音,装入计
4、数器的初始值是533HZ(1.19318MHz/896HZ=1331=533H),这样得到的控制字为10110110B。8255是可编程IO口扩展芯片。对8255输入不同的指令可改变IO口的工作方式。8255与微机实验箱连接方式简单,工作方式由程序设定,图2为8255的引脚图。 8255是一个具有3个8位的8位并行口,并且可编程为多种工作模式的接口芯片。由于每个端口上具有输入/输出的缓冲和锁存功能,因此可用于扩展I/O口,作为中间接口电路。31引脚说明 8255共40个引脚,采用了双列直插的封装,主要引脚功能如下:u D7D0:三态双向数据线,与单片机数据总线连接;u CS:片选信号,低电平有
5、效;u RD:读出信号线,低电平有效;u WR:写入信号线,低电平有效;u PA7PA0:A口输入/输出线;u PB7PB0:B口输入/输出线;u PC7PC0:C口输入/输出线;u RESET:芯片复位信号线;u A1A0:地址线,用来指定8255内部端口。32内部结构和工作方式(1)端口A、B、C端口A为8位数据传送,数据输入或输出时均受到锁存。端口B为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。端口C为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。(2)8255接口工作状态选择表9-1表9-1 8255接口工作状态A1 A0RD WR CS工作状态 0 0 0 1
6、1 00 1 00 1 00 1 0A口数据数据总线B口数据数据总线C口数据数据总线 0 01 0 0数据总线A口 0 11 0 0数据总线B口 1 01 0 0数据总线C口 1 11 0 0数据总线控制寄存器 0 10 1 0数据总线三态 0 10 1 0非法状态 0 10 1 0数据总线三态(3)8255的基本工作方式 8255可编程并行I/O扩展芯片是通过在控制端口中设置控制字来决定它的工作方式的。 8255有以下三种基本工作方式:n 方式0基本输入输出方式。n 方式1选通输入输出方式。n 方式2双向传送方式。 8255A的端口A可以工作在三种工作方式中的任何一种,端口B只能工作在方式0
7、或方式1,端口C则常常配合端口A和端口B工作,为这两个端口的输入输出传送提供控制信号和状态信号。方式0方式0是一种基本输入输出方式。它是把PA0PA7、PB0PB7、PC0PC3、PC4PC7全部输入输出线都用作传送数据,各端口是输入还是输出由方式控制字来设置。这种方式多用于同步传送和查询式传送。8255的方式控制字如图9-1:如图9-1 8255的方式控制字方式1 方式1是一种选通输入输出方式。它把A口和B口用作数据传送,C口的部分引脚作为固定的专用应答信号,A口和B口可以通过方式控制字来设置方式1。这种方式多用于查询传送和中断传送。方式2 方式2是一种双向选通输入输出方式。它利用A口为双向
8、输入输出口,C口的PC3PC7作为专用应答线。方式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变低电平,装入初值后,仍保持低电平。门控为高电平开始计数。每来一个计
9、数脉冲CLK,计数器的值减1,当计数到达终点即计数器的值变成0时,OUT变为高电平。在计数期间可用门控信号暂停计数(即门控为低电平时,计数暂停)。 2、方式1可编程单稳 所谓单稳,是指这样的电路,它有两种状态,但只能稳定在一种状态。在一定的外界作用下,它能从这一种状态进入到另一种状态,但经过一定时间后,又自动恢复到原来的状态。这个时间参数一般是由外加电阻、电容的值决定的。8253的方式1就是模拟单稳电路,其处于非稳定状态的时间可通过程序进行设置。3、方式2分频脉冲发生器(分频器)方式2用来对输入脉冲(即计数脉冲CLK)N分频(N为预置的初值),在输出信号周期中低电平的时间为一个CLK周期。设置
10、此方式后,OUT变高电平,装入初值后便自动开始计数,减到1时OUT变低电平。经过一个CLK周期,OUT恢复高电平,且计数器又自动装入初值,重新开始计数。如此循环下去。在上述过程中GATE应一直保持高电平。若GATE变低电平将禁止计数,并使输出为高电平。在GATE再次变高电平时,计数器将重新装入预置的初值,并开始计数。4、方式3方波发生器方式3类似于方式2,输出是周期性的。不同的是方式3输出方波。如果预置的初值N为偶数,则输出周期中高电平和低电平的宽度相等;如果N为奇数,则输出周期中高电平比低电平多一个CLK周期的时间,当N相当大时,也可认为是方波。当然,一般采用方式3时,置初值为偶数。 设置成
11、方式3后,OUT变高电平,装入初值后便自动开始计数。如初值为偶数,每个CLK使计数器减2,计到终点改变电平。如初值为奇数,则输出为高电平时第一个CLK使计数器减1,随后每个CLK使计数器减2;输出为低电平时第一个CLK使计数器减3,随后每个CLK使计数器减2。每当计数到终点都会改变电平,初值又被重新装入,并开始计数。如此循环下去。5、方式4软件触发选通 设置成方式4后,OUT变高电平,写入计数值后自动开始计数(所以称之为软件触发),计数到终点输出一个CLK周期的低电平脉冲。GATE变低可暂停计数,用GATE的上升沿可重新赋初值,并开始计数。 6、方式5硬件触发选通 设置成该方式后,OUT变高电
12、平,写入计数值后需等待GATE上升沿的到来才开始计数(所以称之为硬件触发)。计数到终点也输出一个CLK周期的低电平脉冲。计数过程中不受GATE电平的影响。此后,用GATE的上升沿可重新赋初值,并开始计数。 五、电路及连线设计 GATE0CLK0 8253 OUT0 系 GATE2 统5v OPCLKSPK SPK UNIT总 1.1625MHZ线图1 8253 发声实验接线图D0D1D2D3D4D5D6D7SW-LED UNIT PB0PB1 PB28255 PB3 PB4 PB5PB6 PB7 PB7 8255 PB7 图2 8255发光实验接线图六、连线图说明1、8253的CLK0端口接分
13、频单元 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=0FF29HPORTC=0FF2BH PORTD=0FF2AH ; 向PORTD送数据,点亮LED CODE SEGMENTASSUME CS:CODE START: MOV
14、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 LPMOV AL,0B6H ;10110110B初始化8253OUT 43H,ALMOV AX,
15、0000 ;写入计数初值 OUT 42H,AL ; 在计数器2中写入低字节计数初值 MOV AL,AH ;高字节已在AH中 即前面的0ffhOUT 42H,AL ;在计数器2中写入高字节计数初值 MOV AL,BL ;灯闪烁NOT AL ;将al中的取反OUT 0FF29H,AL ;将AL中的值送到PORTA即8255的A端口CALL DELAYSHL BL,1 ;逻辑左移指令SHL执行一次移位,相当于无符号数的乘2TEST BL,AHJNZ LPMOV BL, 01HJMP LPBACK: RETFNEXT: MOV AL,AHOUT 0FF29H,ALJMP LP PUSH CX MOV
16、CX,0000DELAY: PUSH CX PUSH CX POP CX POP CX POP CX RETCODE ENDSEND START九、调试结果图4 程序运行后LED灯管闪烁图5 程序运行完成一段时间后停止闪烁十、设计过程中遇到的问题及解决方法接近两周时间的课程设计我收获了很多。从开始知道有这样一个实践机会的新奇和兴奋,到设计过程中碰到困难时的挫败,再到最终完成设计的欣喜。这短短两周我经历了一次大考验,不仅仅是对所学知识的还有是对我各方面的综合素质的考验。这次课程设计的内容总体来说要求我们对微机原理与接口技术这门课程中8255,8253芯片的编程更好的理解了其内在的原理,另外他还要
17、求学生有很强的动手操作能力和书写设计报告的能力。基于我对报警器原理的好奇,我选择了声光报警器设计,然而由于专业课程学得不够扎实,在这次课程设计过程中遇到了很多麻烦。开始在实验室验证的时候,发光二极管全部亮了,没有闪烁现象,通过分析程序才知道原来只是让8255芯片实现了二极管的亮,没有用程序去控制各个二极管延时闪亮的问题。后来加入了新的内容便和设计一样了。这次的课程设计是对微机原理课程学习的一个提高,关于报警器的原理有了整体的认识之后才去上机试验。起初因为程序的一些错误,只实现了相关的一小部分内容,通过一步一步的检查程序修改终于实现了设计的目的。十一、参考文献:1 楼顺天,周佳社微机原理与接口技术M 北京:科学出版社,2006:267-3122 张雪兰,谭毓安汇编语言程序设计M北京:清华大学出版社,2006:125-1473 刘红玲,邵晓根微机原理与接口技术M北京:中国电力出版社,2007:304-3264 吕淑萍,微型计算机原理及应用M哈尔滨:哈尔滨工业大学出版社,2004:236-2575 陆红伟,微机原理实验与课程设计指导书M北京:中国电力出版社,2006:143-149
限制150内