ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:234.27KB ,
资源ID:20432545      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20432545.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微原课设报告 开关控制霓虹灯状态Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微原课设报告 开关控制霓虹灯状态Word文档下载推荐.docx

1、8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部 分、控制部分。 1)与CPU连接部分 根据定义,8255能并行传送8位数据,所以其数据线为8根D0D7。由于8

2、255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下: (1)数据总线DB:编号为D0D7,用于8255与CPU传送8位数据。(2)地址总线AB:编号为A0A1,用于选择A、B、C口与控制寄存器。(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。2)与外设接口部分 根据定义,8255有3个通道A、B

3、、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。各通道的引脚编号如下:(1)A口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。(2)B口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。(3)C口:编号为PC0PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。3)控制器 8255将3个通道分为两组,即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组。如图7.5所示,相应的控制器也分为A组控制器与B组控制器

4、,各组控制器的作用如下:(1)A组控制器:控制A口与上C口的输入与输出。(2)B组控制器:控制B口与下C口的输入与输出。8254芯片介绍 8254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。我们的微机内的动态存储器刷新电路,系统日时钟的技术以及发声系统的声源都是由8254芯片来完成的。8254的内部结构 8254芯片主要由四部分组成:1 数据总线缓冲器 数据总线缓冲器是一个三态、双向8位寄存器主要作用是与cpu进行数据交换,8位数据线D7D0与CPU的系统数据总线连接,构成CPU和8254之间信息传送的通道,CPU通过数据总线缓冲器向8254写入控制命令、计数

5、初始值或读取计数值。2 读写逻辑 读写逻辑是芯片的控制部分,编程人员通过控制信号的选择来选择芯片的工作方式。读/写控制逻辑用来接收CPU系统总线的读、写控制信号和端口选择信号,用于控制8254内部寄存器的读/写操作。3 控制字寄存器 控制寄存器是一个只能写不能读的8位寄存器,系统通过指令将控制字写入控制寄存器,设定8254的不同工作方式。4 计数器 8254内部有三个结构完全相同而又相互独立的16位减“1”计数器,每个计数器有六种工作方式,各自可按照编程设定的方式工作。8254芯片的工作方式:8254芯片共有六种工作方式,分别对应与六种不同的用途。(1)方式0:计数到0结束输出正跃变信号方式。

6、(2)方式1:硬件可重触发单稳方式。(3)方式2:频率发生器方式。(4)方式3:方波发生器。(5)方式4:软件触发选通方式。(6)方式5:硬件触发选通方式。硬件连接图:四:软件流程图软件源程序:DATA SEGMENT ;数据段IOPORT EQU 0D880H-280H ;PCI外设I/O基地址IO8255K EQU IOPORT+283H ;定义8255控制端口的地址IO8255A EQU IOPORT+280H ;定义8255A端口地址IO8255B EQU IOPORT+281H ;定义8255B端口地址IO8255C EQU IOPORT+282H ;定义8255C端口地址IO825

7、4K EQU IOPORT+28BH ;定义8254控制端口地址IO82542 EQU IOPORT+28AH ;定义8254A计数器2端口地址IO82540 EQU IOPORT+288H ;定义8254A计数器0端口地址MESS DB ENTER ANY KEY CAN EXIT TO DOS!,0DH,0AH,$ ;定义提示信息DATA ENDS ;数据段结束STACK SEGMENT STACK ;堆栈段STA DW 1000 DUP(?) ;预留1000字节的存储空间TOP EQU LENGTH STA ;将堆栈STA的长度付给TOP作为栈顶地址STACK ENDS ;堆栈段结束CO

8、DE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK ;段分配START: MOV AX,DATA ;初始化 MOV DS,AX ;将寄存器AX中的地址给DS作为段基地 MOV AH,09H ;9号功能调用 MOV DX,OFFSET MESS ;显示提示信息 INT 21H MOV DX ,IO8254K ;设置8254控制字,计数器0,方式3 MOV AL,36H OUT DX,AL ;输出AL中的信息00110110 MOV DX, IO82540 ;设置闪烁频率 MOV AX, 50000 ;设定初始值50000,输出时钟周期50ms OUT

9、DX, AL ;8254输出50ms的方波信号 NOP ;空操作 MOV AL, AH ;将AX寄存器的AH高8位给AL低八位输出高8位信息 MOV DX, IO8255K ;设置8255控制字 MOV AL, 90H ;控制字为10010000定义ABC端口,A口工作方式0输入,B口方式0输出C口输出,B口控制数码管C口控制灯输出控制字10010000LLL: MOV AH, 01H ;有键按下则退出 INT 16H ; JNZ QUIT ;结果为0跳到QUIT程序KAIGUAN: MOV DX,IO8255A ;开关控制 IN AL,DXJIANCE: TEST AL,80H ;检测是否T

10、1状态 JNZ T1 TEST AL,40H ;检测是否T2状态 JNZ T2 TEST AL,20H ;检测是否T3状态 JNZ T3 TEST AL,10H ;检测是否T4状态 JNZ T4 TEST AL,08H ;检测是否T5状态 JNZ T5 JMP KAIGUAN ;转到开关检测状态T1: MOV CX, 0004H ;将4付给CX寄存器,每种工作方式循环4次T11: MOV DX, IO8255B ;8255B口地址给DX寄存器 MOV AL, 06H ;将00000110付给AL 输出00000110,高电平点亮灯 MOV DX, IO8255C ;8255C口地址给DX寄存器

11、 MOV AL, 24H ;将00100100付给AL,输出001000100 CALL DELAY ;调用延时程序,相邻灯闪所需要的时间0.25秒 MOV AL, 12H ;将00010010付给AL, 相同颜色的灯一次点亮输出00010010 MOV AL, 09H ;将00001001付给AL输出00001001调用延时程序 LOOP T11 ;循环T11状态, MOV AL, 00H ;所有灯灭输出01011011,显示1 OUT DX, AL转到检测状态T2:T22: MOV AL, 5BH ;将01011011付给AL, PUSH CX ;压入CX寄存器 MOV CX, 0006H

12、 ;依次点亮六个灯 MOV AL, 01H ;将00000001付给AL,T:输出00000001 PUSH AX ;把AX中的内容压入堆栈 POP AX ;弹出AX寄存器 SHL AL,1 ;将AL中信息左移位,第二次00000010,一次左移 LOOP T ;AL中的信息不为0就继续循环T POP CX ;弹出CX寄存器 LOOP T22 ;循环T22状态, MOV AL, 00H 8255C口地址给DX寄存器 MOV AL, 00HT3:将4付给CX寄存器,循环4次T33: MOV AL, 4FH ;将01001111付给AL输出01001111 MOV AL, 21H ;将001000

13、01付给AL 由中间向两边输出00100001 MOV AL,12H ;将00010010付给AL MOV AL, 0CH ;将00001100付给AL输出00001100将00000000付给AL输出00000000将00001100付给A 将00100001付给AL LOOP T33 ;循环T33状态,T4:循环T4状态,直到CX为0即循环4次T44: MOV AL, 66H ;将01100110付给AL输出011001108255C口地址给DX寄存器, 三个三个亮 MOV AL, 07H ;将00000111付给AL输出00000111调用延时程序 MOV AL, 38H ;将00111

14、000付给AL输出00111000 LOOP T44 ;循环T44状态T5:循环T5状态,直到CX为0即循环4次T55: MOV AL, 6DH ;将01101011付给AL输出011010118255C口地址给DX寄存器,六个灯同时闪烁 MOV AL, 3FH ;将00111111付给AL输出00111111 LOOP T55 ;循环T55状态QUIT: MOV AH, 4CH ;返回DOSDELAY PROC NEAR ;延时 PUSH DX ;将DX中的内容压入堆栈 MOV DX, IO8254K ;8254设置控制字将10010000付给AL,计数器2只读写低字节工作在方式2,采用二进

15、制计数输出10010000 MOV DX, IO82542 ;8254计数器2地址给DX寄存器 MOV AL, 5 ;将5付给AL, 5个50ms的方波信号即闪烁间隔0.25秒每五个周期记一次即输出0.25秒周期的方波信号 MOV DX, IO8255A ;8255A口地址给DX寄存器A1: IN AL, DX ;将8254中的信号送到8255的A端口 AND AL, 01H ;将AL中的信息与1想与, JZ A1 ;结果为0跳到A1继续读入A口输入信号,不为0则继续延时 POP DX ;弹出DX寄存器 RET ;段内子程序返回DELAY ENDP ;延时程序结束 CODE ENDS ; EN

16、D START ;整个程序结束五:六:在课程设计过程中,开始编辑程序代码时,由于分块实现功能。所有组合时出现了衔接的问题,由于软件与硬件的衔接,开始时霓虹灯的闪烁状态并不符合一定的规律,甚至出现了杂乱现象,通过检验代码和检查硬件演示实验箱,检查接线的顺序解决了灯的闪烁规律,由于用开关控制霓虹灯的闪烁状态,演示时,开关拨动一下,能够显示状态并且能够按照设定的规律闪烁,但是当开关关闭后,灯还是不停地闪烁,并且拨动其他开关时,状态也不会发生变化,数码管显示的状态次数也不变,通过检查发现代码段出现了问题,缺少了控制代码。由于我们开始用的延时程序是软件延时,没有用8254,后来,我们选择用8254芯片进

17、行延时,上机调试时,遇到了一个问题,就是第二种LED闪烁状态显示不对,且数码管有个状态显示不对,经过检查,发现数码管显示问题是因为那个数字段代码写错了,但是第二个状态的LED闪烁规律还有问题,经过仔细检查发现是因为我们在利用那个左移循环时,然后调用子程序,其中对AX没有保护,导致结果不对,然后加了一对PUSH和POP入栈保护和出栈保护。由于霓虹灯的闪烁延时开始较长,每个状态在开关拨到0状态时很长时间才停止,开始以为程序有问题,状态不能停止,后来发现是延时太长,缩短了延时周期后,闪烁延迟周期及开关关闭后停止的时间变短,每个状态变得更加明显。七:这次课程设计过程中有不少挑战,对于对理论知识尚不能充

18、分领会的,开始实际地运用知识来完成任务,对于只会走马看花的读程序的,要实际的编辑一段程序代码,并且要实现一些功能,但是,正是这样一次机会才能使我们认识我们认识到我们所学的知识的用处,认识的脚踏实地的重要,我们可以进一步加强对所学芯片的认识和运用。本次课题中用到了8255.、8254、数码管、LED灯等,初步熟练地掌握了通过汇编语言来使用这些硬件获得特定的功能,熟悉了微机系统的硬件开发工具的使用方法 ,微机系统硬件设计的方法、原理、设计步骤,事实求是和严肃认真的工作态度, 实际动手能力, 培养了在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。经过这次课设,我们更加深刻的理解了出

19、栈和入栈保护,最重要的是,通过课设,使我们意识到对于程序,原本看起来容易的事情但是真正到了让自己独立写程序时是困难多多的,作为一个学生不能眼高手低,应该扎扎实实的从基础做起,认真学习基础知识,打好基础,多学多练,日积月累,多写程序,编程能力才能有所提高,课设是对学习的知识加以实际应用的很好机会,是所学知识的综合应用,是对所学知识运用能力的一次实际考验,当自己的付出收获成功的时候会很欣慰,希望能有更多的机会来锻炼自己,只有历经过才能知道过程之艰难,成功之不易。脚踏实地的学习,认认真真的学习,只有以坚毅不拔的精神学习知识,努力克服过程中的重重地困难,结果并不是最重要的,过程才是值得留恋的,值得珍惜

20、和回味的。八:DATA SEGMENT IOPORT EQU 0D880H-280HIO8255K EQU IOPORT+283HIO8255A EQU IOPORT+280HIO8255B EQU IOPORT+281HIO8255C EQU IOPORT+282HIO8254K EQU IOPORT+28BHIO82542 EQU IOPORT+28AHIO82540 EQU IOPORT+288HDATA ENDS STACK SEGMENT STACK )TOP EQU LENGTH STASTACK ENDS CODE SEGMENT STACK MOV AX,DATA MOV DS

21、,AX MOV AH,09H MOV DX,OFFSET MESS MOV DX ,IO8254K MOV AL,36H OUT DX,AL MOV DX, IO82540 MOV AX, 50000 NOP MOV AL, AH MOV DX, IO8255K MOV AL, 90H MOV AH, 01H INT 16H JNZ QUIT MOV DX,IO8255A TEST AL,80H TEST AL,40H TEST AL,20H TEST AL,10H TEST AL,08H JMP KAIGUAN MOV CX, 0004H MOV DX, IO8255B MOV AL, 06H MOV DX, IO8255C MOV AL, 24H CALL DELAY MOV AL, 12H MOV AL, 09H LOOP T11 JMP KAIGUAN MOV AL, 5BH PUSH CX MOV CX, 0006H MOV AL, 01H PUSH AX POP AX SHL AL,1 LOOP T POP CX LOOP T22 MOV AL, 4FH MOV AL, 21

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1