欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    微原课设报告 .docx

    • 资源ID:3513624       资源大小:44.06KB        全文页数:21页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微原课设报告 .docx

    微原课设报告 微机原理及接口技术课程设计报告 设计题目:开关控制霓虹灯状态 姓名: 班级: 学号: 同组人: 时间: 内容摘要: 课程设计内容为开关控制霓虹灯的状态显示,主要包括8255及8254芯片的使用,源程序代码的编辑以及硬件连接图的绘制和硬件实验箱的演示。 目录 1:设计任务及要求 2:小组成员及分工 3:硬件电路设计 4:软件编程 5:程序运行结果 6:设计过程出现的问题及解决方法 7:设计总结 8:程序清单 9:参考文献 一:设计任务及要求 设计霓虹灯闪烁控制系统,使外设的红、黄、绿三种颜色的发光二极管,在开关的控制下,按照不同规律闪烁。 要求发光二极管的亮、灭变化有一定的规律; 发光二极管变化规律要有多种状态。 二:小组成员及分工 1:小组成员: 2:成员分工 软件部分 硬件部分 三:硬件电路设计 8255芯片介绍 8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。 8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部 分、控制部分。 1)与CPU连接部分 根据定义,8255能并行传送8位数据,所以其数据线为8根D0D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下: 数据总线DB:编号为D0D7,用于8255与CPU传送8位数据。 地址总线AB:编号为A0A1,用于选择A、B、C口与控制寄存器。 控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。 2)与外设接口部分 根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。各通道的引脚编号如下: A口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。 B口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。 C口:编号为PC0PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。 3)控制器 8255将3个通道分为两组,即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组。如图7.5所示,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下: A组控制器:控制A口与上C口的输入与输出。 B组控制器:控制B口与下C口的输入与输出。 8254芯片介绍 8254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。我们的微机内的动态存储器刷新电路,系统日时钟的技术以及发声系统的声源都是由8254芯片来完成的。 8254的内部结构 8254芯片主要由四部分组成: 1 数据总线缓冲器 数据总线缓冲器是一个三态、双向8位寄存器主要作用是与cpu进行数据交换,8位数据线D7D0与CPU的系统数据总线连接,构成CPU和8254之间信息传送的通道,CPU通过数据总线缓冲器向8254写入控制命令、计数初始值或读取计数值。 2 读写逻辑 读写逻辑是芯片的控制部分,编程人员通过控制信号的选择来选择芯片的工作方式。读/写控制逻辑用来接收CPU系统总线的读、写控制信号和端口选择信号,用于控制8254内部寄存器的读/写操作。 3 控制字寄存器 控制寄存器是一个只能写不能读的8位寄存器,系统通过指令将控制字写入控制寄存器,设定8254的不同工作方式。 4 计数器 8254内部有三个结构完全相同而又相互独立的16位减“1”计数器,每个计数器有六种工作方式,各自可按照编程设定的方式工作。 8254芯片的工作方式: 8254芯片共有六种工作方式,分别对应与六种不同的用途。 方式0:计数到0结束输出正跃变信号方式。 方式1:硬件可重触发单稳方式。 方式2:频率发生器方式。 方式3:方波发生器。 方式4:软件触发选通方式。 方式5:硬件触发选通方式。 硬件连接图: 四:软件编程 1:软件流程图 开始 显示提示信息 设置8254控制字 设置8255控制字设置为90H Y 有键按下? 当开关拨到0,状态延时四次停止 N K7拨到1 工作方式1:从左到右同色亮0.25秒, K6拨到1 工作方式2:从右向左依次亮0.25:秒, K5拨到1 工作方式3:从中间依次向两边亮0.25秒 K4拨到1 工作方式4:左边三个一起亮0.25秒,然后右边三个一起亮0.25秒, K3拨到1 工作方式5:六个LED一起亮0.25秒,然后熄灭0.25秒, 结束 2:软件源程序: 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端口地址 IO8254K 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 ;堆栈段结束 CODE 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 DX, AL ;8254输出50ms的方波信号 NOP ;空操作 NOP ;空操作 MOV AL, AH ;将AX寄存器的AH高8位给AL低八位 OUT DX, AL ;输出高8位信息 MOV DX, IO8255K ;设置8255控制字 MOV AL, 90H ;控制字为10010000定义ABC端口,A口工作方式0输入,B口方式0输出C口输出,B口控制数码管C口控制灯 OUT DX, AL ;输出控制字10010000 LLL: MOV AH, 01H ;有键按下则退出 INT 16H ;显示提示信息 JNZ QUIT ;结果为0跳到QUIT程序 KAIGUAN: MOV DX,IO8255A ;开关控制 IN AL,DX JIANCE: TEST AL,80H ;检测是否T1状态 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 OUT DX, AL MOV DX, IO8255C MOV AL, 24H OUT DX, AL CALL DELAY MOV AL, 12H OUT DX, AL CALL DELAY MOV AL, 09H OUT DX, AL CALL DELAY LOOP T11 MOV DX, IO8255B MOV AL, 00H OUT DX, AL MOV DX, IO8255C MOV AL, 00H OUT DX, AL JMP KAIGUAN T2: MOV CX, 0004H T22: MOV DX, IO8255B MOV AL, 5BH OUT DX, AL MOV DX, IO8255C PUSH CX MOV CX, 0006H MOV AL, 01H T: OUT DX, AL PUSH AX CALL DELAY POP AX SHL AL,1 ;将00000110付给AL ;输出00000110,高电平点亮灯 ;8255C口地址给DX寄存器 ;将00100100付给AL, ;输出001000100 ;调用延时程序,相邻灯闪所需要的时间0.25秒 ;将00010010付给AL, 相同颜色的灯一次点亮 ;输出00010010 ;调用延时程序,相邻灯闪所需要的时间0.25秒 ;将00001001付给AL ;输出00001001 ;调用延时程序 ;循环T11状态, ;8255B口地址给DX寄存器 ;所有灯灭 ;输出01011011,显示1 ;8255C口地址给DX寄存器 ;所有灯灭 ;转到检测状态 ;将4付给CX寄存器,每种工作方式循环4次 ;8255B口地址给DX寄存器 ;将01011011付给AL, ;输出01011011,显示1 ;8255C口地址给DX寄存器 ;压入CX寄存器 ;依次点亮六个灯 ;将00000001付给AL, ;输出00000001 ;把AX中的内容压入堆栈 ;调用延时程序 ;弹出AX寄存器 ;将AL中信息左移位,第二次00000010,一次左移 LOOP T ;AL中的信息不为0就继续循环T POP CX ;弹出CX寄存器 LOOP T22 ;循环T22状态, MOV DX, IO8255B ;8255B口地址给DX寄存器 MOV AL, 00H OUT DX, AL ;所有灯灭 MOV DX, IO8255C ;8255C口地址给DX寄存器 MOV AL, 00H OUT DX, AL JMP KAIGUAN T3: MOV CX, 0004H T33: MOV DX, IO8255B MOV AL, 4FH OUT DX, AL MOV DX, IO8255C MOV AL, 21H OUT DX, AL CALL DELAY MOV AL,12H OUT DX,AL CALL DELAY MOV AL, 0CH OUT DX, AL CALL DELAY MOV AL, 00H OUT DX, AL CALL DELAY MOV AL, 0CH OUT DX, AL CALL DELAY MOV AL, 21H OUT DX, AL CALL DELAY LOOP T33 MOV DX, IO8255B MOV AL, 00H OUT DX, AL MOV DX, IO8255C MOV AL, 00H OUT DX, AL JMP KAIGUAN T4: MOV CX, 0004H ;所有灯灭 ;转到检测状态 ;将4付给CX寄存器,循环4次 ;8255B口地址给DX寄存器 ;将01001111付给AL ;输出01001111 ;8255C口地址给DX寄存器 ;将00100001付给AL 由中间向两边 ;输出00100001 ;调用延时程序 ;将00010010付给AL ;输出00010010 ;调用延时程序 ;将00001100付给AL ;输出00001100 ;调用延时程序 ;将00000000付给AL ;输出00000000 ;调用延时程序 ;将00001100付给A ;输出00001100 ;调用延时程序 ;将00100001付给AL ;输出00100001 ;调用延时程序 ;循环T33状态, ;8255B口地址给DX寄存器 ;所有灯灭 ;8255C口地址给DX寄存器 ;所有灯灭 ;转到检测状态 ;循环T4状态,直到CX为0即循环4次 T44: MOV DX, IO8255B ;8255B口地址给DX寄存器 MOV AL, 66H ;将01100110付给AL OUT DX, AL ;输出01100110 MOV DX, IO8255C ;8255C口地址给DX寄存器, 三个三个亮 MOV AL, 07H ;将00000111付给AL OUT DX, AL ;输出00000111 CALL DELAY ;调用延时程序 MOV AL, 38H ;将00111000付给AL OUT DX, AL ;输出00111000 T5: T55: QUIT: DELAY CALL DELAY LOOP T44 MOV DX, IO8255B MOV AL, 00H OUT DX, AL MOV DX, IO8255C MOV AL, 00H OUT DX, AL JMP KAIGUAN MOV CX, 0004H MOV DX, IO8255B MOV AL, 6DH OUT DX, AL MOV DX, IO8255C MOV AL, 3FH OUT DX, AL CALL DELAY MOV AL, 00H OUT DX, AL CALL DELAY LOOP T55 MOV DX, IO8255B MOV AL, 00H OUT DX, AL MOV DX, IO8255C MOV AL, 00H OUT DX, AL JMP KAIGUAN MOV AH, 4CH INT 21H PROC NEAR PUSH DX MOV DX, IO8254K ;调用延时程序 ;循环T44状态 ;8255B口地址给DX寄存器 ;所有灯灭 ;8255C口地址给DX寄存器 ;所有灯灭 ;转到检测状态 ;循环T5状态,直到CX为0即循环4次 ;8255B口地址给DX寄存器 ;将01101011付给AL ;输出01101011 ;8255C口地址给DX寄存器,六个灯同时闪烁 ;将00111111付给AL ;输出00111111 ;调用延时程序 ;所有灯灭 ;调用延时程序 ;循环T55状态 ;8255B口地址给DX寄存器 ;所有灯灭 ;8255C口地址给DX寄存器 ;所有灯灭 ;转到检测状态 ;返回DOS ;延时 ;将DX中的内容压入堆栈 ;8254设置控制字 MOV AL, 90H ;将10010000付给AL,计数器2只读写低字节工作在方式2,采用二进制计数 OUT DX, AL ;输出10010000 MOV DX, IO82542 ;8254计数器2地址给DX寄存器 MOV AL, 5 ;将5付给AL, 5个50ms的方波信号即闪烁间隔0.25秒 OUT DX, AL ;每五个周期记一次即输出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 ;数据段结束 END START ;整个程序结束 五:程序运行结果 六:设计过程出现的问题及解决方法 在课程设计过程中,开始编辑程序代码时,由于分块实现功能。所有组合时出现了衔接的问题,由于软件与硬件的衔接,开始时霓虹灯的闪烁状态并不符合一定的规律,甚至出现了杂乱现象,通过检验代码和检查硬件演示实验箱,检查接线的顺序解决了灯的闪烁规律,由于用开关控制霓虹灯的闪烁状态,演示时,开关拨动一下,能够显示状态并且能够按照设定的规律闪烁,但是当开关关闭后,灯还是不停地闪烁,并且拨动其他开关时,状态也不会发生变化,数码管显示的状态次数也不变,通过检查发现代码段出现了问题,缺少了控制代码。由于我们开始用的延时程序是软件延时,没有用8254,后来,我们选择用8254芯片进行延时,上机调试时,遇到了一个问题,就是第二种LED闪烁状态显示不对,且数码管有个状态显示不对,经过检查,发现数码管显示问题是因为那个数字段代码写错了,但是第二个状态的LED闪烁规律还有问题,经过仔细检查发现是因为我们在利用那个左移循环时,然后调用子程序,其中对AX没有保护,导致结果不对,然后加了一对PUSH和POP入栈保护和出栈保护。由于霓虹灯的闪烁延时开始较长,每个状态在开关拨到0状态时很长时间才停止,开始以为程序有问题,状态不能停止,后来发现是延时太长,缩短了延时周期后,闪烁延迟周期及开关关闭后停止的时间变短,每个状态变得更加明显。 七:设计总结 这次课程设计过程中有不少挑战,对于对理论知识尚不能充分领会的,开始实际地运用知识来完成任务,对于只会走马看花的读程序的,要实际的编辑一段程序代码,并且要实现一些功能,但是,正是这样一次机会才能使我们认识我们认识到我们所学的知识的用处,认识的脚踏实地的重要,我们可以进一步加强对所学芯片的认识和运用。本次课题中用到了8255.、8254、数码管、LED灯等,初步熟练地掌握了通过汇编语言来使用这些硬件获得特定的功能,熟悉了微机系统的硬件开发工具的使用方法 ,微机系统硬件设计的方法、原理、设计步骤,事实求是和严肃认真的工作态度, 实际动手能力, 培养了在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。经过这次课设,我们更加深刻的理解了出栈和入栈保护,最重要的是,通过课设,使我们意识到对于程序,原本看起来容易的事情但是真正到了让自己独立写程序时是困难多多的,作为一个学生不能眼高手低,应该扎扎实实的从基础做起,认真学习基础知识,打好基础,多学多练,日积月累,多写程序,编程能力才能有所提高,课设是对学习的知识加以实际应用的很好机会,是所学知识的综合应用,是对所学知识运用能力的一次实际考验,当自己的付出收获成功的时候会很欣慰,希望能有更多的机会来锻炼自己,只有历经过才能知道过程之艰难,成功之不易。脚踏实地的学习,认认真真的学习,只有以坚毅不拔的精神学习知识,努力克服过程中的重重地困难,结果并不是最重要的,过程

    注意事项

    本文(微原课设报告 .docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开