资源描述
-微机原理与接口技术课程设计题目:霓虹灯闪烁控制系统学院:信息工程学院专业: 自动化班级:1301*:洒*:2021001575指导教师:贾敏智2016年 1 月16日目录目录 1第一章 绪论 .31.1 设计题目简介 .31.2 设计背景.31.3 设计功能.3第二章 硬件设计.42.1 实验装置简介.42.2 硬件电路设计.5 电路图.6 芯片介绍.7.2 与CPU的接口电路.7.3 引脚信号.8.4 8255A的工作方式及初始化编程9第三章 软件设计及程序分析103.1 程序清单.103.2 程序分析.10 主程序10.1 主程序功能.11.2 主程序分析.11 子程序133.2.2.1 STATE0 子程序.13.2 STATE1 子程序.14.3 STATE2 子程序.15.4 STATE3 子程序.16.5 延时子程序DELAY10.18.6 显示子程序DISP19第四章 实验总结.204.1 开关控制霓虹灯实验总结.204.2 实验心得.20参考文献.21附录.22摘要:霓虹灯是日常生活中最常见的灯饰,它装点了晚上,丰富了人们的生活。通过汇编语言,实现霓虹灯的显示与闪烁,可以很方便的到达想要的效果。本设计是利用微机原理中的汇编语言,并且以8255A芯片为核心来控制LED从而实现霓虹灯的不同变化,并从该课题设计中稳固我们所学的知识和锻炼我们的动手能力,为以后工作中动手,动脑奠定一定的根底Abstract: the neon lamp in daily life is the most mon lighting, decorate it in the evening, people live a rich life. Through the assembly language, to achieve the display of neon lights and flashing, can be very convenient to achieve the desired effect. This design is the use of Microputer Principle and assembly language, using 8255A chip as the core to control the LED so as to realize the neon lights of different changes, and from the project design to consolidate what we have learned and e*ercise our ability, for the future work to lay a solid foundation, brains.关键字:霓虹灯 程序 8255AKeywords: Neon lamp program 8255A第一章 绪论1.1 设计题目简介:设计霓虹灯闪烁控制系统,使外设的红、绿、黄3种颜色的发光二极管,在开关的控制或者在程序自动控制下,按照不同规律闪烁。要求:1要求发光二极管的亮、灭变化有一定的规律2发光二极管变化规律要有多种状态1.2设计背景“微机与接口技术是一门实践性和实用性都很强的课程,学习的目的在于应用。本课程设计是自动化专业学生的一次较全面的的设计训练,是配合“微机与接口技术课堂教学的最后一个重要的实践教学环节,它将起到稳固课堂和书本上所学的知识、加强综合能力、提高系统设计水平、启发创新思想的作用。其根本目的是: (1) 培养理论联系实际的正确设计思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。 (2) 帮助学生全面消化已学的相关课程容,深刻理解微机原理与接口技术课程的涵,从硬件的角度掌握微机的组成、接口部件的构造和彼此之间的联系,从软件的角度理解和应用微机系统的运行机制。 (3) 进展根本技能训练。例如编程、上机、调试硬件和软件系统。 课程设计的任务是使学生利用学校现有条件,自己动手设计完成一个典型的微机应用小系统。我们小组选定的课程设计题目是:霓虹灯 其设计目的主要为: (1) 进一步熟悉8255A并行接口的根本工作原理 (2) 运用CES-86通用微机实验装置,了解键盘的根本构造,学会编写程序. (3) 在熟悉了小键盘的根底上,加上LED发光二极管的使用设计出绚丽闪耀的霓虹灯.当然,虽然程序最后到达了预期控制要求,但是由于实际情况和理想情况存在差距,我知道还有很多地方有待改良,同时我还是个初学者,各方面肯定存在缺乏,如果教师发现了缺陷之处,请指出,我们一定会虚心承受。1.3设计功能外设的8个发光二极管在2个开关K1,K2的控制下按照不同的规律闪烁,同时在电脑屏幕上显示开关状态,二极管闪烁规律如下:1开关状态为K1关,K2关时,前四灯同时亮,熄灭后,接着后四个同时亮,并且在屏幕上显示“0 0 STATE ZERO。2开关状态为K1关,K2开时,8灯依次点亮,并且在屏幕上显示“0 1 STATE OME。3开关状态为K1开,K2关时,从两侧向依次同时点亮一个灯,并且在屏幕上显示“0 1 STATE TWO。4开关状态为K1开,K2开时,从中心向外依次同时点亮一灯,并且在屏幕上显示“0 1 STATE THYEE。第二章 硬件设计2. 1 实验装置简介 本次课程设计所使用的主要设备是CES-86型通用实验装置。CES-86型通用PC机实验装置的特点是“单板积木式电路。而且可以和任何一种PC机相连组成系统,相连后即可在此装置上进展硬件拼接,组成各种实验系统。 单积木式电路分为21块根本电路,标以A、B、C、R、S和两块辅助电路。 这21块积木的具体电路为:A:单脉冲发生器电路; B: 时钟脉冲发生器电路;C:数/模转换DAC0832电路; D: 可编程计数器/定时器8253电路;E:模/数转换ADC0809电路 ; F: 单板机I/O地址电路;G:逻辑电路芯片插座区; H:电平开关电路;I: 发光二极管LED显示电路; J:计数器分频电路;K:可编程并行通信接口8255A电路;L:可编程串行通信接口8251A电路M:十六进制键盘电路;N:七段数码显示电路;O:随机存储RAM6116电路;P:中继电路;Q:直流电源及控制电路;R:PC总线接口;S:与PC机连接的接口电路;S R OQCBAPDGNEMFL万 用 表KHJI“单板积木式示意图 本课程设计使用了F单板机IO地址电路,H电平开关电路, I发光二极管显示电路, K可编程并行通信接口即8255A电路。2.2 硬件电路设计 电路图设计电路图如以下列图所示,A口为输出,连接8个发光二极管,B口为输入,其中的PB0,PB1接开关K1,K2。开关的四个状态分别对应霓虹灯的四种变化状态,做试验时,通过控制开关的断开与闭合,可以观察到霓虹灯的闪烁。同时CPU通过 B端口将K1,K2的信息读入,然后转换成ASCII码 其中端口A的地址为318H;端口B的地址为319H;控制字的地址为31BH芯片介绍本次课程设计中所使用的芯片8255A如右图是Intel公司采用CHMOS工艺生产的一种高性能通用可编程输入/输出并行接口芯片,可以方便地应用在Intel系列微处理器系统中。下面对8255A芯片进展简单介绍:.1 8255A的内部构造 8255A是40引脚双列直插式芯片,片内有A,B,C三个8位I/O端口,可提供24条可编程的输入/输出端口线。它的内部构造由三局部电路组成:与CPU的接口电路、内部控制逻辑电路和与外设连接的输入/输出接口电路。.2与CPU的接口电路(1)与CPU的接口电路由数据总线缓冲器和读/写控制逻辑组成。数据总线缓冲器是一个三态、双向、8位存放器,8条数据线D7D0与系统数据总线连接,构成CPU与8255A之间信息传送的通道,CPU通过执行输出指令向8255A写入控制命令或往外设传送数据,通过执行输入指令读取外设输入的数据。读写控制逻辑电路用来接收CPU系统总线的读信号RD,写信号WR,片选择信号CS,端口选择信号A和复位信号RESET,用于控制8255A部存放器的读写操作和复位操作。2)部控制逻辑电路部控制逻辑包括A组控制与B组控制两局部。A组控制存放器用来控制A口PA7PA0和C口的高四位PC7PC4;B组控制存放器用来控制B口PB7PB0和低四位PC3PC0。它们接收CPU发送来的控制命令,对A,B,C3个端口的输入/输出方式进展控制。3输入输出接口电路8255A片有A,B,C3个8位并行端口,A口和B口分别有1个8位的数据输出锁存/缓冲器和1个8位数据输入锁存器,C口有一个8位数据输出锁存/缓冲器,用于存放CPU与外部设备交换的数据。 对于8255A的3个数据端口和1个控制端口,数据端口既可以写入数据也可以读出数据,控制端口只能写入命令而不能读出,读、写控制信号RD,WR和端口选择信号CS,A1,A0的状态组合可以实现A,B,C3个端口和控制端口的读写操作。8255A的端口分配及读写功能见下表:CS WR RDA1 A0功 能0 0 10 0数据写入A口0 0 10 1数据写入B口0 0 11 0 数据写入C口0 0 11 1命令写入控制存放器0 1 00 0读出A口数据0 1 00 1读出B口数据0 1 01 0读出C口数据0 1 01 1非法操作.3 引脚信号8255A的引脚如以下列图示,分为数据线、地址线、读写控制线、输入/输出端口线和电源线。 D7D0:三态、双向数据线,与数据总线连接,用来传送数据。 CS:片选信号线,低电平有效时,芯片被选中。 A1,A0:地址线,用来选择部端口。 RD:读出信号线,低电平有效时,允许数据读出。WR:写入信号线,低电平有效时,允许数据写入。RESET:复位信号线,高电平有效时,将所有部存放器包括控制存放器清0。PA7PA0:A口输入/输出信号线。PB7PB0:B口输入/输出信号线。PC7PC0:C口输入/输出信号线。VCC:+5V电源。GND:电源地线。2.2.2.4 8255A的工作方式及初始化编程8255A有三种工作方式:根本输入/输出方式,单向选通输入/输出方式和双向选通输入/输出方式。(1方式0:根本输入输出方式方式0是8255A的根本输入输出方式,其根本特点是与外部传送数据时,不需要设置专用的信号联络应答信号,可以无条件的直接进展I/O端口传送。A,B,C三个端口都可以工作在方式0。A口和B口工作在方式0时,只能设置以8位数据格式输入输出;C口工作在方式0时,可以将高4位和低4位分别设置为数据输入或数据输出方式。方式0常用于与外设无条件数据传送或查询方式数据传送。(2) 方式1:单项选通输入/输出方式方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:与外设传送数据时,需要联络信号进展协调,允许用查询或中断方式传送数据。由于C口的PC0,PC1和PC2定义为B口工作在方式1的联络信号线,PC3,PC4和PC5定义为A口工作方式1的联络信号线,因此只允许A口和B口工作在方式1。(3)方式2:双向选通输入/输出方式 方式2为双向选通输入输出方式,是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。由于C口的PC7PC3定义为A口工作在方式2时的联络信号线,因此只允许A口工作在方式2。8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。8255A由编程写入的控制字有两个:方式控制字和置位/复位控制字。方式控制字用于设置端口A,B,C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7PC0中*一条口线PCii=07的电平。两个控制字公用一个控制字公用一个端口地址,由控制字的最高位最为区分这两个控制字的标志位。8255A工作方式控制字的格式如以下列图:第三章 软件设计及程序分析3.1 程序清单:见附录3.2 程序分析3.2.1主程序3.2.1.1 主程序功能它所实现的功能是实现开关对发光二极管的亮灭状态控制,并将开关状态在屏幕上显示出来。在运行程序后按任意键发光二极管根据开关状态开场闪烁,同时在程序运行过程中按任意键可返回DOS。.2 主程序分析流程图如下:完毕初始化编程写入控制字开场读取开关状态在屏幕上显示开关状态开关状态显示提示信息开关状态装入ALAL=03HAL=01HAL=02HAL=00H返回DOS调用子程序DELAY0调用子程序DELAY1调用子程序DELAY2调用子程序DELAY3有键按下是是是是否否否否是主程序代码段START: MOV A*,DATA ;数据段装入初始地址 MOV DS,A* MOV ES,A* MOV AH,09H ;显示提示信息 MOV D*,OFFSET MESS INT 21H MOV D*,31BH ;控制字端口 MOV AL,10000010B ;控制字,B口输入A口输出 OUT D*,AL ;写入控制字 A: MOV D*,319H ;端口B IN AL,D* ;读开关状态 AND AL,03H ;保存B1,B0位,其他位置0 MOV *,AL ;将AL暂时装入* MOV C*,02H B: MOV DL,AL ;AL装入DL以备子程序使用 CALL DISP ;调用显示子程序,显示PB2的状态 SHL AL,1 LOOP B ;循环2次,显示2个开关状态 MOV AL,* ;开关状态装入AL CMP AL,00H ;比拟开关状态,00调用STATE0 JNZ M CALL STATE0 M: CMP AL,01H ;比拟开关状态,01调用STATE1 JNZ N CALL STATE1 N: CMP AL,02H ;比拟开关状态,10调用 STATE2 JNZ O CALL STATE2 O: CMP AL,03H ;比拟开关状态,11调用STATE3 JNZ M CALL STATE3子程序.1STATE0子程序: 前四灯同时亮,熄灭后,接着后四个同时亮流程图如下标号S子程序开场显示子程序信息在C*中置入循环次数为4次控制A口使前4个灯亮,后4个灯灭调用延时子程序控制A口使前4个灯灭,后4个灯亮C*=0是否调用延时子程序 STATE0 PROC NEAR MOV AH,09H MOV D*,OFFSET ZERO INT 21H MOV D*,318H MOV C*,04H ;端口A H: MOV AL,0FH OUT D*,AL CALL DELAY10 MOV AL,0F0H OUT D*,AL CALL DELAY10 LOOP H JMP S RETSTATE0 ENDP3.2.2.2 STATE1子程序: 8灯依次点亮流程图如下子程序开场显示子程序信息在C*中置入循环次数为8次输出状态写入AL调用延时子程序C*=0标号S是否AL逻辑右移一位灯显示输出状态STATE1 PROC NEAR MOV AH,09H MOV D*,OFFSET ONE INT 21H MOV D*,318H ;端口A MOV C*,08H D: MOV AL,80H NOT AL ROR AL,1 OUT D*,AL CALL DELAY10 LOOP D JMP S RETSTATE1 ENDP3.2.2.3 STATE2子程序:从两侧向依次同时点亮一个灯在C*中置入循环次数为4次B7,B0灯亮,其余灯灭调用延时子程序B6,B1灯亮,其余灯灭调用延时子程序B4,B3灯亮,其余灯灭调用延时子程序B5,B2灯亮,其余灯灭调用延时子程序子程序开场显示子程序信息C*=0是标号S否STATE2 PROC NEAR MOV AH,09H MOV D*,OFFSET TWO INT 21H MOV C*,04H MOV D*,318H ;端口A E: MOV AL,01111110B OUT D*,AL CALL DELAY10 MOV AL,1011101B OUT D*,AL CALL DELAY10 MOV AL,11011011B OUT D*,AL CALL DELAY10 MOV AL,11100111B OUT D*,AL CALL DELAY10 LOOP E JMP S RETSTATE2 ENDP.4 STATE3子程序: 从中心向外依次同时点亮一灯流程图如下在C*中置入循环次数为4次B7,B0灯亮,其余灯灭调用延时子程序B6,B1灯亮,其余灯灭调用延时子程序B4,B3灯亮,其余灯灭调用延时子程序B5,B2灯亮,其余灯灭调用延时子程序子程序开场显示子程序信息C*=0是标号S否STATE3 PROC NEAR MOV AH,09H MOV D*,OFFSET TWO INT 21H MOV C*,04H MOV D*,318H ;端口A F: MOV AL,11100111B OUT D*,AL CALL DELAY10 MOV AL,11011011B OUT D*,AL CALL DELAY10 MOV AL,10111101B OUT D*,AL CALL DELAY10 MOV AL,01111110B OUT D*,AL CALL DELAY10 LOOP F JMP S RETSTATE3 ENDP3.2.2.5 延时子程序DELAY10在C*中置入循环次数为0FH次子程序开场在AL中置入初始数0FFFFHAL AL-1AL=0C*=0是是否否子程序完毕开场DELAY10 PROC NEAR PUSH A* PUSH C* MOV C*,0F0H UUU: MOV A*,0FFFFH VVV: DEC A* JNZ VVV LOOP UUU POP C* POP A* RETDELAY10 ENDP.6 显示子程序DISP流程图如下在C*中置入循环次数为0FH次子程序开场在AL中置入初始数0FFFFHAL AL-1AL=0C*=0是是否否子程序完毕开场DISP PROC NEAR PUSH A* PUSH C* AND DL,02H ;保存B1位 SHR DL,1 ADD DL,30H ;将显示信息转换成ASCII码 MOV AH,02H INT 21H ;在屏幕上显示B1位 MOV DL,20H INT 21H ;显示空格 MOV DL,20H INT 21H POP C* POP A* RETDISP ENDP第四章 实验总结4.1开关控制霓虹灯实验总结1.在设置霓虹灯闪烁控制系统中,先确定设置霓虹灯的大致思路,有一个主程序,四个分别控制红灯、绿灯、黄灯闪烁规律的子程序,还有按键返回DOS子程序;2.通过设计霓虹灯闪烁规律控制系统深刻的理解了8255A的端口控制的方式以及输入输出状态。3.在做课程设计的过程中熟悉了汇编语言、各种跳转指令、子程序调用、循环指令以及返回DOS指令更全面的了解了微机原理与接口技术的容。4.2实验心得两周的课程设计完毕了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监视。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程千里之行始于足下,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进展课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的根底通过这次设计,本人在多方面都有所提高。通过这次模具设计,综合运用本专业所学课程的理论和生产实际知识进展一次冷冲压模具设计工作的实际训练从而培养和提高学生独立工作能力,稳固与扩大了冷冲压模具设计等课程所学的容,掌握冷冲压模具设计的方法和步骤,掌握冷冲压模具设计的根本的模具技能懂得了怎样分析零件的工艺性,怎样确定工艺方案,了解了模具的根本构造,提高了计算能力,绘图能力,熟悉了规和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。同时感对我帮助过的同学们,你们对我的帮助和支持,让我感受到同学的友谊。由于本人的设计能力有限,在设计过程中难免出现错误,恳请教师们多多指教,我十分乐意承受你们的批评与指正,本人将万分感。参考文献1. 马春燕,段承先.微机原理与接口技术.:电子工业,20072. 马春燕,段承先.微机原理与接口技术实验与学习指导.:电子工业,20073 .wfkj*y./jpkc/wjyl/附录DATASEGMENT ;定义数据段 * DB ? ZERO DB STATE ZERO,0DH,0AH,$ONE DB STATE ONE,0DH,0AH,$TWO DB STATE TWO,0DH,0AH,$THREE DB STATE THREE,0DH,0AH,$MESS DB ENTER ANY KEY CAN E*IT TO DOS!,0DH,0AH,$ DATA ENDS ;定义数据段完毕STACK SEGMENT STACK ;定义堆栈段STA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDS ;定义堆栈段完毕CODE SEGMENT ;定义代码段MAIN PROC FAR ;主程序ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV A*,DATA ;数据段装入初始地址 MOV DS,A* MOV ES,A* MOV AH,09H ;显示提示信息 MOV D*,OFFSET MESS INT 21H MOV D*,31BH ;控制字端口 MOV AL,10000010B ;控制字,B口输入A口输出 OUT D*,AL ;写入控制字 A: MOV D*,319H ;端口B IN AL,D* ;读开关状态 AND AL,03H ;保存B1,B0位,其他位置0 MOV *,AL ;将AL暂时装入* MOV C*,02H B: MOV DL,AL ;AL装入DL以备子程序使用 CALL DISP ;调用显示子程序,显示PB2的状态 SHL AL,1 LOOP B ;循环2次,显示2个开关状态 MOV AL,* ;开关状态装入AL CMP AL,00H ;比拟开关状态,00调用STATE0 JNZ M CALL STATE0 M: CMP AL,01H ;比拟开关状态,01调用STATE1 JNZ N CALL STATE1 N: CMP AL,02H ;比拟开关状态,10调用 STATE2 JNZ O CALL STATE2 O: CMP AL,03H ;比拟开关状态,11调用STATE3 JNZ M CALL STATE3STATE0 PROC NEAR ;前四灯同时亮,熄灭后,接着后四个同时亮 MOV AH,09H MOV D*,OFFSET ZERO INT 21H MOV D*,318H MOV C*,04H ;端口A H: MOV AL,0FH OUT D*,AL CALL DELAY10 MOV AL,0F0H OUT D*,AL CALL DELAY10 LOOP H JMP S RETSTATE0 ENDPSTATE1 PROC NEAR ;8灯依次点亮 MOV AH,09H MOV D*,OFFSET ONE INT 21H MOV D*,318H ;端口A MOV C*,08H D: MOV AL,80H NOT AL ROR AL,1 OUT D*,AL CALL DELAY10 LOOP D JMP S RETSTATE1 ENDP STATE2 PROC NEAR ;从两侧向依次同时点亮一个灯 MOV AH,09H MOV D*,OFFSET TWO INT 21H MOV C*,04H MOV D*,318H ;端口A E: MOV AL,01111110B OUT D*,AL CALL DELAY10 MOV AL,1011101B OUT D*,AL CALL DELAY10 MOV AL,11011011B OUT D*,AL CALL DELAY10 MOV AL,11100111B OUT D*,AL CALL DELAY10 LOOP E JMP S RETSTATE2 ENDPSTATE3 PROC NEAR ;从中心向外依次同时点亮一灯 MOV AH,09H MOV D*,OFFSET TWO INT 21H MOV C*,04H MOV D*,318H ;端口A F: MOV AL,11100111B OUT D*,AL CALL DELAY10 MOV AL,11011011B OUT D*,AL CALL DELAY10 MOV AL,10111101B OUT D*,AL CALL DELAY10 MOV AL,01111110B OUT D*,AL CALL DELAY10 LOOP F JMP S RETSTATE3 ENDP S: MOV AH,06H ;判断是否有键按下 MOV DL,0FFH INT 21H JNZ PP ;有键按下,转PP JMP A ;无键按下,转K,继续扫描 PP: MOV A*,4C00H ;跳出DOS INT 21HMAIN ENDPDELAY10 PROC NEAR ;延时子程序DELAY10 PUSH A* PUSH C* MOV C*,0F0H UUU: MOV A*,0FFFFH VVV: DEC A* JNZ VVV LOOP UUU POP C* POP A* RETDELAY10 ENDP DISP PROC NEAR ;显示子程序DISP PUSH A* PUSH C* AND DL,02H ;保存B1位 SHR DL,1 ADD DL,30H ;将显示信息转换成ASCII码 MOV AH,02H INT 21H ;在屏幕上显示B2位 MOV DL,20H INT 21H ;显示空格 MOV DL,20H INT 21H POP C* POP A* RETDISP ENDP CODE ENDS END START成绩评定表辩论成绩:占总成绩70%平时成绩:占总成绩30%. z.
展开阅读全文