华南理工大学微机原理课程设计
微机原理步进电机课程设计
微机原理步进电机课程设计一、课程目标知识目标:1. 让学生掌握微机原理在步进电机控制中的应用,理解步进电机的结构、原理及其特点。
2. 使学生了解步进电机与微控制器之间的接口技术,掌握步进电机的驱动程序编写方法。
3. 让学生掌握步进电机速度和位置控制的基本算法,并运用到实际项目中。
技能目标:1. 培养学生运用微机原理解决实际问题的能力,学会编写和调试步进电机控制程序。
2. 培养学生的动手实践能力,能独立完成步进电机的组装、调试和故障排查。
3. 培养学生团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 激发学生对微机原理和步进电机控制技术的兴趣,培养其探索精神和创新意识。
2. 培养学生严谨、认真的学习态度,养成良好的实验操作习惯。
3. 增强学生的环保意识,关注步进电机在节能环保领域的应用。
本课程针对高年级学生,课程性质为理论与实践相结合。
在分析课程性质、学生特点和教学要求的基础上,将课程目标分解为具体的学习成果。
教学过程中,注重培养学生的实际操作能力和团队协作精神,使学生在完成课程设计任务的过程中,达到知识、技能和情感态度价值观的全面提升。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 微机原理基础:回顾微控制器的基本原理,重点讲解微控制器与步进电机的接口技术,涉及课本第3章相关内容。
2. 步进电机原理与结构:介绍步进电机的种类、结构、原理及特点,对应课本第5章内容。
3. 步进电机驱动技术:讲解步进电机的驱动电路设计,包括驱动芯片的选型、接口电路设计等,参考课本第6章相关内容。
4. 步进电机控制算法:学习步进电机的速度和位置控制算法,如PID控制、闭环控制等,结合课本第7章内容。
5. 实践操作:分组进行步进电机的组装、调试及控制程序编写,巩固理论知识,培养实际操作能力。
教学大纲安排如下:第1周:微机原理基础回顾,了解步进电机接口技术;第2周:学习步进电机原理与结构,选型及参数了解;第3周:步进电机驱动技术学习,驱动电路设计;第4周:步进电机控制算法学习,编写控制程序;第5周:实践操作,步进电机组装、调试及故障排查;第6周:课程设计总结,成果展示及评价。
华南理工大学微机原理与应用课程设计教学大纲
课程名称:微机原理与应用课程设计
英文名称:Principles and Applications of Microcomputer
总学时:80 学分:5实验学时:一周
课程类别:学科基础课课程性质:综合实践
适用专业:信息工程,电子与信息工程,物理电子工程
授课实验室:微机实验室
课程设计部分
一、实验(上机)教学目的与基本要求
通过课程设计,使学生进一步巩固所学的知识,并将所学的内容加以综合运用。
将学生所学的理论与实际问题或应用相结合,进一步培养学生自主学习的能力,综合运用知识的能力,以及创新实践的能力。
二、实验(上机)教学方式与考核方式
教学方式:集中讲解与单独辅导相结合
考核方式:实验效果成绩(80%)与设计报告成绩(20%)进行综合评定
三、实验(上机)指导书和参考书
1.微型计算机原理与应用实验指导书机习题集。
华南理工大学电子与通信工程系陈忠强欧阳小容华南理工大学教材供应中心2002.1
2.TPC-2003A通用32位微机接口实验系统,学生用书,清华大学计算机系清华大学科教仪器厂2005年9月。
3.80X86/Pentium 微型计算机原理及应用吴宁主编,电子工业出版社,2003
四、主要仪器设备
1.PC机
2.TPC-2003A 通用32位微机接口实验系统(2005年-今),TDS-MD微机(2004年及以前)。
五、实验(上机)项目与内容提要
自行设计择课程设计的题目。
制订(修订):梁亚玲审核:曾衍辉。
华南理工大学微机原理课程设计
一.设计目的····················································(3) 二.实验器件····················································(3) 三.设计内容····················································(3) 四.设计原理····················································(3)
- 10 -
微机原理课程设计
nop mov al,00h out dx,al mov dx,304H query: in al,dx test al,10h jz query mov dx,300H in al,dx inc dx out dx,al 注意在每次转换完后都必须将 C 端口置位: mov dx,306H;将 C 口复位,以保证下次能正确转换数据 mov al,90h out dx,al mov dx,304H mov al,0ffh out dx,al 在中断服务子程序结束之前,必须发中断结束命令: mov al,20h ;结束中断 out 20h,al out 0a0h,al 在进入 A/D 转换之前,必须开发 72H 号中断: in al,0a1h;设置中断屏蔽寄存器,系统开放 72 号中断 and al,0fbh
(5)译码电路由 74LS138 提供,其输出信号用来控制当前工作在模拟量采集还是 数模转换的工作状态以确保电路正常工作。在总线和其它接口芯片之间还必须加入 74LS245,起到隔离作用。2、AFra bibliotekC0809 简介
(1)ADC0809 功能及引脚 提供一个 8 通道的多路开关和寻址逻辑 IN0~IN7:8 个模拟电压输入端 ADDA、ADDB、ADDC:3 个地址输入线 ALE:地址锁存允许信号 ADC0809 的数字输出 ADC0809 内部锁存转换后的数字量
微机原理课程设计
1计算机的发展在20世纪的最后20年中,计算机被成功的应用于工程设计和制造业中,它成倍的提高了劳动生产率,创造了空前巨大的物质文明,它把任何创新的思想转化为市场商品的时间缩短到惊人的程度计算机技术的发展日新月异,在未来的几年中,各种计算机相关技术都会得到飞速发展和应用,使计算机变得更加人性化,智能化。
而多媒体技术与网络技术的迅猛势头人类所使用的计算工具是随着生产的发展和社会的进步,从简单到复杂、从低级到高级的发展过程,计算工具相继出现了如算盘、计算尺、手摇机械计算机、电动机械计算机等。
1946年,世界上第一台电子数字计算机(ENIAC)在美国诞生。
这台计算机共用了18000多个电于管组成,占地170m2,总重量为30t,耗电140kw,运算速度达到每秒能进行5000次加法、300次乘法。
电子计算机在短短的50多年里经过了电子管、晶体管、集成电路(IC)和超大规模集成电路(VLSI)四个阶段的发展,使计算机的体积越来越小,功能越来越强,价格越来越低,应用越来越广泛,目前正朝智能化(第五代)计算机方向发展。
微机原理与接口技术的进步将更好更快的推动计算机技术的发展。
在未来的社会中将其这越来越重要的作用。
2设计思路及流程图接到这个题目时,我首先考虑到大小写之间的转换是关键,可能要用到子程序,循环程序和中断程序以及一些比较和跳转指令等。
在经过反复思考和设计后我得到了以下的设计思路:首先程序应该输出提示信息,以用来为下面的程序选择做准备(是选择大写转小写程序还是选择小写转大写程序),如“0”和“1”.“0”用来执行大写转小写程序,“1”用来执行小写转大写程序。
当我们按提示输入信息若是“0”程序应该输出提示输入大写字母信息,若是“1”程序应该输出提示输入小写字母信息并且存入寄存器单元,如AL,否则程序显示错误信息并返回重新输入。
在输入大写或小写字母后回车程序立即判断所输入的信息是否符合要求,若是则程序根据AL中数据分别调用小写转大写程序或大写转小写程序(大小写字母间相差20H)并输出结果,程序结束;若输入的信息不符合要求程序接下来要完成三个任务:报警,显示错误信息,跳转回到“显示输入提示信息”程序段处重新输入信息。
华南理工大学微机实验三
微机原理实验报告实验三班级:2012级信息工程(7)班姓名:学号:序号:评阅分数:一、实验目的1、自学TPC-ZK通用32位微机接口实验系统的组成。
2、掌握实验系统中接口地址译码电路的工作原理及计算方法。
3、掌握简单I/O端口的读写操作。
4、掌握8255的工作原理及编程方法。
二、实验题目通过并行接口8255实现十字路口交通灯的模拟控制,如图29,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮一定时间。
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮一定时间。
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
(5)转(1)重复。
附加功能:1)PC3键作为右侧那组信号等的优先控制信号,如果PC3键为高,右侧信号灯立即转换成绿灯亮(PC0=1),左侧信号灯红灯亮(PC7=1),其它信号灯为0 2)PC4键作为左侧那组信号等的优先控制信号,如果PC4键为高,左侧信号灯立即转换成绿灯亮(PC5=1),右侧信号灯红灯亮(PC2=1),其它信号灯为0 3)PC3=0,PC4=0,依照正常信号灯控制方式。
三、程序流程图四、源程序清单DA TAS SEGMENTio8255a equ 288hio8255b equ 289hio8255c equ 28ahio8255d equ 28bhportcl db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能db 81h,82h,80h,82h,80h,82h,80h ;的状态数据db 0ffh;结束标志DA TAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TASSTART:MOV AX,DATASMOV DS,AXre_on:mov bx,0on1: mov dx,io8255d ;检查是否关闭紧急开关mov al,89h ;设c口为输入out dx,almov dx,io8255cin al,dxtest al,10h ;检测Pc4=1?jnz green_left ;亮左边灯test al,8h ;检测pc3=1?jnz green_right ;亮右边灯mov dx,io8255dmov al,90hout dx,al ;设置8255为C口输出mov dx,io8255con:mov al,portcl[bx]cmp al,0ffhjz re_onout dx,al ;点亮相应的灯inc bxmov cx,200 ;参数赋初值test al,21h ;是否有绿灯亮jz de1 ;没有,短延时mov cx,2000 ;有,长延时de1:mov di,9000 ;di赋初值9000de0:dec dijnz de0 ;di不为零loop de1push dxmov dl,0ffh ;检测是否有键盘输入?mov ah,06hint 21hpop dx ;弹出dx值jz on1 ;无按键,跳回on1 exit: MOV AH,4CH ;结束INT 21Hgreen_left: ;左边开关闭合程序mov dx,io8255dmov al,90h ;设为c口输出out dx,almov dx,io8255cmov al,24h ;左边绿灯右边红灯out dx,aljmp on1green_right: ;右边开关闭合程序mov dx,io8255dmov al,90h ;设为c口输出out dx,almov dx,io8255cmov al,81h ;左边红灯右边绿灯out dx,aljmp on1CODES ENDSEND START。
微机原理课程设计—交通灯控制
交通信号灯的控制一、设计目的巩固“微机原理”课程学过的知识,加强理论与实践的联系。
通过本课程设计,使学生初步了解微机系统的硬件设备,学会 8086 系列编程指令的基本功能。
二、设计要求1、通过 8255A 并口来控制 LED 发光二极管的亮灭。
2、A 口控制红灯,B 口控制黄灯,C 口控制绿灯。
3、输出为 0 则亮,输出为 1 则灭。
4、用8253 定时来控制变换时间。
要求:设有一个十字路口,1、3 为南,北方向,2、4 为东西方向,初始态为 4 个路口的红灯全亮。
之后,1、3 路口的绿灯亮,2、4 路口的红灯亮,1、3 路口方向通车。
延迟 30 秒后,1、3 路口的绿灯熄灭,而 1,3 路口的黄灯开始闪烁(1HZ)。
闪烁 5 次后,1、3 路口的红灯亮,同时 2、4 路口的绿灯亮,2、4 路口方向开始通车。
延迟 30 秒时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁。
闪烁 5 次后,再切换到 1、3 路口方向。
之后,重复上述过程。
三、流程图:四、真值表:五、电路图:电路图中地址线连接在 A2,A3 上,用 74HC139 译码,故地址范围为00H~03H,04H~07H,08H~0BH,每个芯片的 A0、A1 均与8086 的A0、A1 相连,RD、WR 与8086 的RD、WR 相连,以控制芯片的读写。
8253 使用定时器 0,输出接 8259 的IR0,故中断向量为08H。
13 方向的绿灯同 PC0 相连,24 方向的绿灯同 PC1 相连,红灯、黄灯接 PA、PB,方式同上。
六、源程序:;-------------------------------------------------------------;模块作用:交通灯控制;编程语言:汇编;编程:孙逸痕,本程序无版权,欢迎使用;日期:2011-12-11;-------------------------------------------------------------;---------STACK------------------------------------------STACK SEGMENT STACK 'STACK'DW 32 DUP(0)STACK ENDS;---------DATA--------------------------------------------DATA SEGMENTCOUNT_L EQU 0H ;计数器初值COUNT_H EQU 0HADD_8253_T0 EQU 00H ;芯片地址ADD_8255 EQU 04HADD_8259 EQU 08HRED_ADD EQU ADD_8255 ;PAYELLOW_ADD EQU ADD_8255+1 ;PBGREEN_ADD EQU ADD_8255+2 ;PCLIGHT_ON EQU 01H ;Pi1/Pi0=01 (i=A,B)LIGHT_OFF EQU 03H ;Pi1/Pi0=11SYS_COUNTER DB 18 ;系统频率GREEN_COUNTER DB 30 ;绿灯30 秒计数YELLOW_COUNTER DB 5 ;黄灯5 秒计数DATA ENDS;----------CODE------------------------------------------CODE SEGMENTMAIN PROC FARASSUME SS:STACK,CS:CODE,DS:DATA;----系统初始化--------PUSH DSMOV AX,0PUSH AXMOV ES,AXMOV AX,DATAMOV DS,AX;----中断向量----------MOV AX,OFFSET TIMER ;装入中断向量表MOV ES:20H,AXMOV AX,SEG TIMERMOV ES:22H,AX;----8253 定时器 0 初始化---MOV AL,36HOUT ADD_8253_T0,AL ;16 位,方式 3MOV AL,COUNT_L ;装入初值OUT MOV OUT ADD_8253_T0,AL AL,COUNT_H ADD_8253_T0,AL;----8255 初始化--------MOV AL,80H ;方式0OUT ADD_8255+3,AL;----8259 初始化--------MOV AL,13H ;单片,边沿触发OUT ADD_8259,ALMOV AL,8H ;中断类型码为 08H~0FHOUT ADD_8259+1,ALMOV AL,0DHOUT ADD_8259+1,AL;-----系统运行---------SYS_ON:IN AL,ADD_8259+1 ;开中断IRQ0AND AL,0FEHOUT ADD_8259+1,ALMOV AL,LIGHT_ON ;开13 方向绿灯,24 方向红灯,关黄灯OUT GREEN_ADD,ALNEG ALOUT RED_ADD,ALMOV AL,LIGHT_OFFOUT YELLOW_ADD,ALGRE_30:JMP $ ;等待计时中断DEC GREEN_COUNTER ;等待绿灯亮30 秒JNZ GRE_30MOV BX,OFFSET GREEN_COUNTER ;复位计数器MOV [BX],30MOV AL,LIGHT_OFF ;关绿灯,开黄灯OUT GREEN_ADD,ALMOV AL,LIGHT_ONOUT YELLOW_ADD,ALYEL_5: JMP $ ;等待计时中断MOV AL,LIGHT_ONMOV AH,03H ;取辅助值(用于黄灯状态取反)放在AH 中SUB AH,ALXOR AL,AH ;黄灯状态取反OUT YELLOW_ADD,ALDEC YELLOW_COUNTER ;计时值,每一秒改变一次状态,共5 秒JNZ YEL_5MOV BX,OFFSET YELLOW_COUNTER ;复位计数器MOV [BX],5MOV AL,LIGHT_ON ;点亮红灯OUT RED_ADD ,ALMOV BX,OFFSET LIGHT_ON ;将13 边换位 24 边MOV [BX],AHMOV AL,LIGHT_OFF ;熄灭黄灯OUT YELLOW_ADD,ALMOV AL,LIGHT_ON ;24 边绿灯亮UT GREEN_ADD,ALJMP SYS_ON ;循环RET;----中断函数------------TIMER: DEC SYS_COUNTER ; 是否计数18 次JNZ OVERMOV BX,OFFSET SYS_COUNTER ;复位计数器MOV [BX],18POP AXINC AXINC AXPUSH AXOVER: IRETMAIN ENDPCODE ENDSEND MAIN。
微机原理课程设计_路灯控制设计(完整版)
1 设计任务描述1.1设计题目路灯控制设计1.2设计内容1)天黑时路灯电亮,天亮时路灯关闭。
2)用中断模拟天黑。
1.2.1 设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础1.2.2 设计要求1)通过K O—K7和K++来输入。
2)用LED指示灯显示结果。
3)输出为1灯亮,输入为0灯灭。
2设计思路本次微机原理课程设计我设计的是路灯控制器。
通过中断信号来使路灯点亮,再经延时程序来使灯自动熄灭。
然后重新回到初始状态。
我们用到的芯片是中断控制器8259和可编程并行接口8255这两种芯片再外加一个LED 显示单元及开关单元。
用中断控制器8259的控制字来设置单片、边沿触发、非缓冲、非自动,用ICW4来设置IR7非屏蔽。
设置中断控制器8255的控制字,让它A口输出来显示灯亮,。
由于我们没用到B口和C口,所以让B口输入C口高低四位均输出。
设置完控制字后,再使A口输出全为0(这时路灯初始状态为灭),接着让程序循环进入空操作。
当天黑需要路灯亮时,按下中断(代表天黑),程序从循环执行空操作中中断出来,使A口输出从全为0变成全为1(这时路灯全亮),程序后面连接一个延迟子程序,来控制灯亮的时间。
最后到了程序该结束的时候了,A口输出从全1再次变为全0(这时路灯全灭,代表夜晚已过,天亮了)。
这时程序本该结束了,程序结束后,又返回到中断控制器8259这部分,这样程序又可以通过按中断来控制灯亮,这样就简单又实用。
大体上程序主要分四大部分:输入部分,中断部分,延迟部分和输出部分。
结合所学的知识外加查找相关资料,把这几大部分合理的连接起来,从而实现一个完整、功能强大的程序。
3 主要元器件介绍13.1 所用芯片8255简介: 3.1.1 外部引线D0~D7为双向数据信号线,用来传送数据和控制字。
微机原理课程设计报告---红绿灯
一、设计要求(1)南北路口的绿灯、东西路口的红灯同时亮5秒。
(2)南北路口的黄灯闪烁若干次,维持3秒,同时东西路口的红灯。
(3)南北路口的红灯、东西路口的绿灯同时亮5秒。
(4)南北路口的红灯、同时东西路口的黄灯亮烁若干次,维持3秒。
(5)转(1)重复。
(6)紧急情况可以手动控制红绿灯的变换。
一个开关控制南北绿,东西红,另一个按钮南北红,东西绿。
(7)黄灯闪烁时扬声器发声,提醒。
二、设计目的(1)了解红绿灯电路的基本工作原理;(2)了解8086微型计算机的工作过程;(3)学习8086CPU与外围设备的接口技术。
(4)运用微机原理与接口技术、数字电路、汇编语言程序设计等课程学到的知识,掌握微型计算机接口的方法和原理,具备一定的微机应用开发的实践能力,加深对理论课程的理解。
三、设计的具体实现原理框图3.1系统概述本次设计是模拟交通灯实时控制系统,以8086CPU为核心加以并行接口芯片8255、可编程计数器/定时器8253、LED灯、开关等组成的系统。
以LED灯模拟十字路口的红绿灯。
对交通灯控制的实现主要是通过编写汇编语言程序对8255的I/O及8253进行控制,从而实现对灯的亮与灭进行控制。
PC口做输入,读取定时,及应急开关状态。
用8253对扬声器的发声进行控制,利用软件编程给定8253芯片某一频率的方波信号,并且设定8255芯片的门控信号PB0 =1,则可控制扬声器发声。
利用8253的计数器1方式3、计数器0方式0实现对扬声器的控制,以及对于交通灯亮灭时间的精确延时。
3.2 8086CPU介绍8086由执行部件和总线接口部件组成(内部结构图如下图)外部设备8086内部结构图1. 执行部件EU由算术逻辑单元(ALU)、标志寄存器、通用寄存器组和EU控制器等部件组成。
主要功能是执行指令:一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。
需要访问存储器取操作数时,EU将访问地址送给BIU后,将要等待操作数到来后才能继续操作;遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。
微机原理课程设计-8255控制交通灯
微机原理课程设计:8255模拟交通灯1、目的:学习8255使用方法,学习模拟交通灯控制的方法,学习双色灯的使用。
2、要求:控制4个双色LED灯(可发红,绿,黄光),模拟十字路口交通灯管理。
3、电路及连线PC0-PC3连DG1-DG4,PC4-PC7连DR1-DR4。
8255片选CS8255连138译码处210H。
4、说明(1)因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
(2)双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
(3)74LS240为8输入输出的反向驱动器。
5、完成的任务(1)利用计算机和微机原理试验箱,将实验6的程序Tlamp_88.asm在试验箱运行和调试。
全速运行,观察整体效果。
单步运行,观察程序每条语句额执行效果,理解语句含义。
(2)修改实验连线为,PC7-PC4连DG1-DG4,PC3-PC0连DR1-DR4。
8255片选CS8255连138译码处210H孔。
将Tlamp_88.asm另存为jiaotong.asm。
修改jiaotong.asm,实现交通灯原有功能。
(3)修改实验连线为,PB7-PB4连DG1-DG4,PB3-PB0连DR1-DR4。
8255片选CS8255连138译码处210H孔。
将jiaotong.asm另存为jiaotong2.asm。
修改jiaotong2.asm,实现交通灯原有功能。
(4)将jiaotong2.asm另存为jiaotong3.asm。
微机原理课程设计---步进电机设计
目录摘要 (1)Abstract (2)1 课程设计任务及要求 (3)1.1 设计任务 (3)1.2 设计要求 (3)2 方案设计 (3)2.1 方案一 (3)2.2 方案二 (6)2.3 方案比较 (12)3 硬件分析 (13)3.1 电路设计图 (13)3.2 各部件分析 (14)4 软件分析 (21)5调试运行 (22)5.1 方案一程序调试运行及仿真 (22)5.2方案二调试运行及仿真 (23)6心得体会 (25)参考文献 (26)附录一方案一源程序 (27)附录二方案二源程序 (30)课程设计任务书学生姓名:专业班级:自动化0902指导教师:徐小强工作单位:自动化题目:步进电机设计初始条件:用汇编语言设计一个步进电机的控制,在Proteus仿真环境下完成,功能上实现步进电机的基本功能。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1. 通过键盘控制步进电机的启动和停止,正转和反转;2. 编制完整的程序并调试;3.撰写符合学校要求的课程设计说明书,内容包括:摘要、目录、正文、参考文献、附录(程序清单)。
正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。
时间安排:1. 1月4日----1月5日查阅资料及方案设计2.1月6日----1月8日编程3.1月9日----1月10日调试程序4.1月11日 ----1月12日撰写课程设计报告5.1月13日上午准备答辩,下午正式答辩指导教师签名:年月日系主任(或责任教师)签名:年月日摘要步进电机是工业生产过程控制及仪表中的主要控制元件之一。
例如,在机械结构中,可以用丝杠把角度变成直线位移,也可以用它带动螺旋电位器,调节电压和电流,从而实现对执行机构的控制。
在数字控制系统中,由于它可以直接接受计算机输出的数字信号,而不需要进行数/模/转换,可以用起来非常方便。
微型计算机原理及应用课程设计--多功能密码锁
目录一.课设目的 (1)二.课设内容三.问题分析、设计思路及原因 (1)四.电路设计及功能说明,硬件原理图 (2)五.软件部分的程序流程图,算法和使用的编程技巧 (10)六.汇编源程序清单 (11)七.课设结果分析 (20)八.收获、体会和建议 (20)九.参考文献 (21)一.课设目的1.掌握8086,8255等芯片的工作原理和使用方法,了解各引脚的功能。
2.掌握各芯片之间的连接方法,设计多功能密码锁电路。
3.运用《微机原理及应用》中学习到的知识,编写汇编语言程序,通过对芯片的控制实现多功能密码锁的各种功能。
4.巩固本学期学习到的微机原理的相关知识,通过实践加强对知识的理解,同时提高自身思考问题的能力,培养对本课程的兴趣,提高动身能力。
二.课设内容课程设计题目选取多功能密码锁,实现的功能为:1.判断输入的密码是否正确2.修改密码3.密码输入错误时发错警告声音4.当密码输入错误四次时发出警报三.问题分析、设计思路及原因1.问题分析考虑到实现以上功能需要使用数码管、开锁电平、报警电平、蜂鸣器等输出,因此使用微机实验中用过的芯片8255A作为接口芯片,该芯片能比较好地满足这次课程设计的功能要求。
而CPU则选择我们熟悉的8086。
2.设计思路及原因密码的输入主要通过系统功能调用语句“MOV AH,1; INT 21H”(即带显示的单字符键盘输入功能)和循环语句实现,而密码输入是否正确则通过串比较指令来实现。
程序中的提示语句可以使用系统功能调用语句“MOV AH,9; INT 21H”(即字符串输出)功能来实现。
对接口芯片,首先要完成芯片的初始化,使8255A芯片的A,B口作为输出端口,A口用于控制数码管在密码输入正确或错误的情况下的显示“00”或“FF”,B口用于控制提示音和相应的发光二极管。
当输入错误时,B口输出03H(即00000011B),使对应的蜂鸣器发声,相应的发光二极管发光。
而当四次输入密码错误时,B口输出0CH(即00001100B),使对应蜂鸣器发声,对应二极管发光。
华南理工大学微机实验三
微机原理实验报告实验三班级:2012级信息工程(7)班姓名:学号:序号:评阅分数:一、实验目的1、自学TPC-ZK通用32位微机接口实验系统的组成。
2、掌握实验系统中接口地址译码电路的工作原理及计算方法。
3、掌握简单I/O端口的读写操作。
4、掌握8255的工作原理及编程方法。
二、实验题目通过并行接口8255实现十字路口交通灯的模拟控制,如图29,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮一定时间。
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮一定时间。
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
(5)转(1)重复。
附加功能:1)PC3键作为右侧那组信号等的优先控制信号,如果PC3键为高,右侧信号灯立即转换成绿灯亮(PC0=1),左侧信号灯红灯亮(PC7=1),其它信号灯为0 2)PC4键作为左侧那组信号等的优先控制信号,如果PC4键为高,左侧信号灯立即转换成绿灯亮(PC5=1),右侧信号灯红灯亮(PC2=1),其它信号灯为0 3)PC3=0,PC4=0,依照正常信号灯控制方式。
三、程序流程图四、源程序清单DA TAS SEGMENTio8255a equ 288hio8255b equ 289hio8255c equ 28ahio8255d equ 28bhportcl db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能db 81h,82h,80h,82h,80h,82h,80h ;的状态数据db 0ffh;结束标志DA TAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TASSTART:MOV AX,DATASMOV DS,AXre_on:mov bx,0on1: mov dx,io8255d ;检查是否关闭紧急开关mov al,89h ;设c口为输入out dx,almov dx,io8255cin al,dxtest al,10h ;检测Pc4=1?jnz green_left ;亮左边灯test al,8h ;检测pc3=1?jnz green_right ;亮右边灯mov dx,io8255dmov al,90hout dx,al ;设置8255为C口输出mov dx,io8255con:mov al,portcl[bx]cmp al,0ffhjz re_onout dx,al ;点亮相应的灯inc bxmov cx,200 ;参数赋初值test al,21h ;是否有绿灯亮jz de1 ;没有,短延时mov cx,2000 ;有,长延时de1:mov di,9000 ;di赋初值9000de0:dec dijnz de0 ;di不为零loop de1push dxmov dl,0ffh ;检测是否有键盘输入?mov ah,06hint 21hpop dx ;弹出dx值jz on1 ;无按键,跳回on1 exit: MOV AH,4CH ;结束INT 21Hgreen_left: ;左边开关闭合程序mov dx,io8255dmov al,90h ;设为c口输出out dx,almov dx,io8255cmov al,24h ;左边绿灯右边红灯out dx,aljmp on1green_right: ;右边开关闭合程序mov dx,io8255dmov al,90h ;设为c口输出out dx,almov dx,io8255cmov al,81h ;左边红灯右边绿灯out dx,aljmp on1CODES ENDSEND START。
微机原理课程设计
课程设计任务书学生姓名:黎健专业班级:电气0804 指导教师:张锐工作单位:自动化学院题目: 计算机时钟模拟显示软件设计初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3.EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟,要求至少有一种动态时钟显示效果如七段码管形状显示或旋转指针式指示效果等。
可以附加显示花边背景和日期信息。
2.说明书撰写格式应符合《课程设计说明书统一书写格式》。
时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名:年月日系主任(或责任教师)签名:年月日摘要汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
于是汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。
高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。
在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。
现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。
汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
华工微机原理实验四子程序设计实验报告
华南理工大学微机原实验四:子程序设计一.实验目的1、学习子程序的定义和调用方法。
2、掌握子程序、子程序嵌套的结构。
3、掌握子程序的程序设计、编制及调试方法。
二.实验内容程序采用菜单式选择,可接收用户输入的命令(1~5),各命令如下:按1键完成字符串小写字母变大写字母用户输入一由英文大小写字母或数字0~9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。
用户按任一键,重做,按ESC键,返回主菜单。
按2键完成找最大值(二选一)1、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。
2、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。
用户按任一键,重做,按ESC键,返回主菜单。
按3键完成排序(二选一)1、接收用户输入的可显示字符串,以回车结束。
程序按ASCII码值大小由大到小排序并输出显示。
2、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。
程序将其中最大的数显示出来。
用户按任一键,重做,按ESC键,返回主菜单。
按4键显示时间首先提示用户对时,即用户输入时,分,秒(以空格或冒号分隔,以回车结束),然后,在屏幕上不断显示时间,格式为:××(时):××(分):××(秒),最好定点显示。
用户按任一键,重新对时,按ESC键,返回主菜单。
按5键,结束程序运行,返回系统提示符。
三.程序与流程图主程序的简略流程子程序一的简略流程图子程序二的简略流程图子程序三的简略流程图子程序4,显示时间流程图四、源程序代码DATA SEGMENTORG9999HMENU DB0DH,0AH,'Programed by Deng Tengfei Class Electronic Material Grade 09',0DH,0AH,;菜单DB'Please input1~5to choose service',0DH,0AH,DB'1:Convert a small letter to a big letter',0DH,0AH,DB'2:Seek the bigest number',0DH,0AH,DB'3:Put the character string in order',0DH,0AH,DB'4:Set time and check time',0DH,0AH,DB'5:End the program$'MEG0DB'Please choose function$';提示信息MEG0~MEG8MEG1DB'You have choose the function1.',0DH,0AH,'Please input the character string you want to convert:$'MEG2DB'You have choose the function2.',0DH,0AH,'Please input the character string:$'MEG3DB'You have choose the function3.',0DH,0AH,'Please input the character string you want to sort$'MEG4DB'You have choose the function4.',0DH,0AH,'Please input the time you want to set in format like:xx:xx:xx$'MEG5DB'The program is end$'MEG6DB'Sorry.you have chosen a undefined function.Please input a correct function number$' MEG7DB'Fail to set time$'MEG8DB'Press any key to do again or press the ESC key to return to the main menu$'FLAG DB-1;冒泡排序中使用的标志DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC NEAR;主程序MOV AX,DATAMOV DS,AXCIN:LEA DX,MENU;输出提示信息MOV AH,09HINT21HCALL ENT;输出回车换行LEA DX,MEG0MOV AH,09HINT21HCALL ENTMOV AH,01HINT21HCMP AL,30H;判断功能号JLE EORCMP AL,31HJE F1CMP AL,32HJE F2CMP AL,33HJE F3CMP AL,34HJE F4CMP AL,35HJE F5EOR:CALL ENTLEA DX,MEG6;输出出错信息MOV AH,09HINT21HJMP CINF1:CALL ENT;功能1LEA DX,MEG1MOV AH,09HINT21HCALL ENTCALL FUN1;调用子程序1MOV AH,01HINT21HCMP AL,1BHJNE F1JMP CINF2:CALL ENT;功能2LEA DX,MEG2MOV AH,09HINT21HCALL ENTCALL FUN2;调用子程序2MOV AH,01HINT21HCMP AL,1BHJNE F2JMP CINF3:CALL ENT;功能3LEA DX,MEG3MOV AH,09HINT21HCALL ENTCALL FUN3;调用子程序3MOV AH,01HINT21HCMP AL,1BHJNE F3JMP CINF4:CALL ENT;功能4LEA DX,MEG4MOV AH,09HINT21HCALL ENTCALL FUN4;调用子程序4MOV AH,01HINT21HCMP AL,1BHJNE F4JMP CINF5:MOV AH,4CH;功能5,终止程序INT21HFUN1PROC NEAR;子程序1PUSH AXPUSH CXPUSH DXPUSH SIMOV AH,0AH;字符串输入INT21HCALL ENTMOV SI,DXINC SIMOV CL,[SI];设定循环次数MOV CH,0JIK:INC SIMOV AL,[SI]CMP AL,0DH;判断字符ASCII码JE KLCMP AL,61HJB JKCMP AL,7AHJA JKSUB AL,20H;小写转大写JK:MOV DL,AL;输出字符MOV AH,02HINT21HLOOP JIKCALL ENTLEA DX,MEG8MOV AH,09HINT21HKL:POP SIPOP DXPOP CXPOP AXRETFUN1ENDPFUN2PROC NEAR;子程序2PUSH AXPUSH CXPUSH DXPUSH SIMOV AH,0AHINT21HCALL ENTMOV SI,DXINC SIMOV CL,[SI]MOV CH,0INC SIMOV AL,[SI]FH:INC SI;循环比较CMP AL,[SI]JA FGMOV AL,[SI]FG:LOOP FHMOV DL,ALMOV AH,02HINT21HCALL ENTLEA DX,MEG8MOV AH,09HINT21HPOP SIPOP DXPOP CXPOP AXRETFUN2ENDPFUN3PROC NEAR;子程序3PUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV AH,0AHINT21HCALL ENTMOV SI,DXINC SIMOV BL,[SI]MOV BH,0INC SIMOV DI,SILP1:CMP FLAG,0;根据标志判断JE LP3DEC BX;检查循环次数CMP BX,0JE LP3MOV CX,BXMOV SI,DIMOV FLAG,0LP2:MOV AL,[SI];前后比较CMP AL,[SI+1]JLE NEXTXCHG AL,[SI+1]MOV[SI],ALMOV FLAG,0FFHNEXT:INC SILOOP LP2;内循环继续JMP LP1;退出内循环LP3:DEC DI;重新设定循环次数MOV CL,[DI]MOV CH,0LP4:INC DI;循环输出字符MOV DL,[DI]MOV AH,02HINT21HLOOP LP4CALL ENTLEA DX,MEG8MOV AH,09HINT21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETFUN3ENDPFUN4PROC NEAR;子程序4PUSH AXPUSH BXPUSH CXPUSH DXCALL CROT;调用子程序CROTMOV CH,AL;装入入口参数MOV AH,01HINT21HCALL CROTMOV CL,ALMOV AH,01HINT21HCALL CROTMOV DH,ALMOV DL,0CALL ENTMOV AH,2DH;调DOS中断置时间INT21HCMP AL,0FFHJE FALPRT:PUSH DX;输出时间MOV AL,CHMOV AH,0MOV BL,0AHDIV BLADD AL,30HADD AH,30HMOV DL,ALMOV DH,AHMOV AH,02HINT21HMOV DL,DHINT21HMOV DL,3AHINT21HMOV AL,CLMOV AH,0DIV BLADD AL,30HADD AH,30HMOV DL,ALMOV DH,AHMOV AH,02HINT21HMOV DL,DHINT21HMOV DL,3AHINT21HPOP DXMOV AL,DHMOV AH,0DIV BLADD AL,30HADD AH,30HMOV DL,ALMOV DH,AHMOV AH,02HINT21HMOV DL,DHINT21HMOV AH,2CH;调DOS中断取时间INT21HMOV AL,0AH;写入OCW3OUT20H,ALNOP;延时NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPIN AL,20H;读取IRRAND AL,02HJNE MKCALL COV;调子程序COVJMP PRTFAL:LEA DX,MEG7MOV AH,09HINT21HMK:CALL ENTMOV AH,01HINT21HLEA DX,MEG8MOV AH,09HINT21HPOP DXPOP CXPOP BXPOP AXRETFUN4ENDPCROT PROC NEAR;子程序CROT,完成ASCII码转换成两位十进制数PUSH BXPUSH CXPUSH DXMOV BL,0;初始化BL和BHMOV BH,0AHMOV DX,02H;设循环次数GET:MOV AH,01HINT21HSUB AL,30HCMP AL,0JB FALCMP AL,09HJA FALXCHG AL,BLMUL BHADD AL,BLXCHG AL,BLDEC DXCMP DX,0JNE GETMOV AL,BLPOP DXPOP CXPOP BXRET CROT ENDPCOV PROC;格式控制,使光标回到上个制表位PUSH AXPUSH CXPUSH DXMOV CX,08HMOV AH,02HMOV DL,08HREC:INT21HLOOP RECPOP DXPOP CXPOP AXRETCOV ENDPENT PROC;格式控制,输出回车换行MOV DL,0DHMOV AH,02HINT21HMOV DL,0AHMOV AH,02HINT21HRETENT ENDPMAIN ENDPCODE ENDSEND MAI五、程序调试及运行结果:主菜单1、功能一(小写字母转大写字母):2、功能二(找出ASCII码最大的字符):3、功能三(按ASCII码把字符从大到小排列):4、功能四(显示跳动的时间):5、功能五(退出程序):如果是错误的输入,提示如下:六、实验心得通过这个实验,基本掌握了子程序的调用方法,子程序可以单独设计,主程序做好了,可以嵌套具体功能的子程序实现需求,这个实验子程序可以分开调试,子程序决定具体功能,主程序是一个框架,这点有种化大为小的思想,告诉我们一个复杂功能的程序,可以分模块,按功能,一部分一部分地实现,最后嵌套,进行最后调试。
微机原理课程设计交通信号灯.
交通信号灯的控制课程设计报告书姓名:学号:班级:课程名称:微机原理与应用课程设计指导教师:一.设计题目:交通信号灯的控制二.课程设计目的:综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。
三.设计要求:1.通过8255A并口来控制LED发光二极管的亮灭。
2.A口控制红灯,B口控制黄灯,C口控制绿灯。
3.输出为0则亮,输出为1则灭。
4.用8253定时来控制变换时间。
要求:设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。
之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。
闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。
延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。
闪烁5次后,再切换到1、3路口方向。
之后,重复上述过程。
四.主要设计思路及工作原理:1.设计思路流程图:开始程序初使化调用显示主程序东西绿灯亮,南北红灯亮,进入倒计时,打开数码管显示东西和南北黄灯亮,进入倒计时,打开数码管显示东西红灯亮,南北绿灯亮,进入倒计时,打开数码管显示结束2.工作原理说明:此方案是通过并行接口芯片8255A和8088计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
硬件连接参考方案:红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。
8088工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,A8~A15通过地址锁存器,接到3—8译码器,译码后分别连到8255和8253的CS片选端。
微机原理课程设计
音乐演奏程序设计1设计任务使用汇编语言设计一个在计算机上运行的音乐演奏程序,屏幕显示钢琴图像,按“A”键唱乐曲,按“X”鍵退出。
2任务扩展实现以下附加功能之一:(1)按“B”键,播放暂停;(2)按“C”键,实现重复播放;(3)按“D”键,加快播放速度;(4)按“E”键,降低播放速度;(5)按“F”键,直接跳转到下首歌。
我选择的附加功能是按“F”键,直接跳转到下一首歌。
3程序设计3.1程序设计思路画钢琴界面时,先画出一个钢琴键,然后再用循环画出其余的钢琴键。
画单个钢琴键时,先画出下面的长方形,然后画出上面的平行四边形,然后画出右边的短横线,短横线也是用循环的方法画出那么多来的。
画完所有的钢琴键后,再单独画出最后一个键右边的平行四边形阴影。
实现下一首功能是通过改变FLAG的值,让FLAG自动加一,然后比较FLAG 里面的值,按顺序跳到相应的地址,播放相应的音乐。
当FLAG的值为3后,自动将FLAG值改为零,此时再按下“F”,FLAG的值就会加一,变为“1”,然后又开始播放第一首歌。
任何时刻按下“X”,就会退出程序。
3.2程序流程图单个钢琴键的绘制程序的流程图如下:图 3.1:单键绘制流程图整个钢琴键盘绘制程序的流程图如下:图3-2:钢琴键盘绘制流程图音乐播放程序的流程图如下:图3-3:音乐播放程序的流程图3.3程序清单汇编程序的所有源代码如下:;画横线DRAW_LINEX MACRO START_X,START_Y,END_X,COLOR LOCAL PAINTPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,START_XMOV DX,START_Y ;设置起始坐标MOV AH,0CH ;写像素MOV AL,COLOR ;颜色设置MOV BX,0 ;在当前页操作PAINT:INT 10H ;调用中断进行画一个像素点INC CX ;每画一个像素点,横坐标加一CMP CX,END_X ;判断是否画完JNZ PAINT ;未画完,就继续画下一个像素POP DXPOP CXPOP BXPOP AXENDM; 画竖线DRAW_LINEY MACRO START_X,START_Y,END_Y,COLORLOCAL PAINT1PUSH AXPUSH BXPUSH CXPUSH DXMOV CX,START_XMOV DX,START_YMOV AH,0CHMOV AL,COLORMOV BX,0PAINT1:INT 10HDEC DX ;没画完一个像素点,纵坐标减一CMP DX,END_Y ;判断是否画完JNE PAINT1 ;未画完,继续画下一个像素点POP DXPOP CXPOP BXPOP AXENDM;画矩形DRAW_REGTANGLE MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAW_NEXTPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0CHMOV AL,COLORMOV BH,0MOV CX,START_XMOV DX,START_YDRAW_NEXT:INT 10HINC CXCMP CX,END_X ;判断一行是否画完JNE DRAW_NEXT ;未画完继续MOV CX,START_X ;回到起始横坐标DEC DX ;每画完一行,列坐标减一CMP DX,END_Y ;判断矩形是否画完JNE DRAW_NEXT ;未完继续画下一行POP DXPOP CXPOP BXPOP AXENDM;画右斜平行四边形DRAW_PARALLELOGRAMX MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAWPXPUSH DSPUSH SSMOV SI,START_XMOV DI,START_Y ;设置起始坐标MOV BP,END_XDRAWPX:DRAW_LINEX SI,DI,BP,COLOR ;调用画横线宏INC SI ;每画完一行,横坐标起始点加一INC BP ;横坐标终点加一DEC DI ;纵坐标起始点减一CMP DI,END_Y ;判断是否画完JNE DRAWPX ;未画完,继续画下一行POP DSPOP SSENDM; 画阴影四边形DRAW_PARALLELOGRAMY MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAWPYPUSH DSPUSH SSMOV SI,START_XMOV DI,START_YMOV BP,END_YDRAWPY:DRAW_LINEY SI,DI,BP,COLOR ;调用画竖线宏INC SI ;每画完一列,横坐标起始点加一 DEC BP ;纵坐标终点减一DEC DI ;纵坐标起始点减一CMP SI,END_X ;判断是否画完JNE DRAWPY ;未画完,继续画下一列POP SSPOP DSENDM;画间隙中的横线(侧边部分)DRAW_PARALINE1 MACRO START_X,START_Y,END_Y1,COLOR LOCAL NEXT_LINE1PUSH AXPUSH BXPUSH CXPUSH DXPUSHFPUSH DSMOV CX,START_XMOV DX,START_YMOV SI,START_XADD SI,2 ;横线长度为2MOV AH,0CHMOV AL,COLORMOV BX,0NEXT_LINE1:INT 10HINC CXCMP CX,SIJNE NEXT_LINE1MOV CX,START_XSUB DX,2 ;横线间间隙为2CMP DX,END_Y1JAE NEXT_LINE1POP DSPOPFPOP DXPOP CXPOP BXPOP AXENDM;画间键身间隙间的横线(键体部分)DRAW_PARALINE2 MACRO START_X,START_Y,END_Y2,COLOR LOCAL NEXT_LINE2,GO_ONPUSH AXPUSH BXPUSH CXPUSH DXPUSHFPUSH DSPUSH SSMOV SI,START_XMOV DI,START_YMOV BP,START_XADD BP,2 ;横线长度为2MOV AH,0CHMOV AL,COLORMOV BX,0GO_ON:ADD SI,2 ;每画完一条,起始横坐标加2 SUB DI,2 ;纵坐标减2ADD BP,2 ;终点横坐标加2MOV CX,SIMOV DX,DI ;重新设置起始点坐标NEXT_LINE2:INT 10HINC CX ;画完一个像素点,横坐标加一CMP CX,BP ;判断一条横线是否画完JNE NEXT_LINE2 ;未画完,继续画CMP DX,END_Y2 ;判断是否全部画完JA GO_ON ;未完,继续POP DSPOP SSPOPFPOP DXPOP CXPOP BXPOP AXENDMDATA SEGMENTWHITE DB 0FFHBLACK DB 0YELLOW DB 88HGRAY DB 8 ;键盘颜色定义STARTX DW 100 ;起始横坐标STARTY DW 300 ;起始纵坐标ENDX DW 130ENDY DW 280LASTX DW ?LASTY DW 200FLAG DB 1RATE DW ? ;播放速度变量INFO1 DB 0DH,0AH,'Welcome to this interface!$' INFO2 DB 0DH,0AH,'Please enter A to start!$'INFO3 DB 0DH,0AH,'OPTIONS:$'INFO4 DB 0DH,0AH,'WRONG ORDER!$'INFO5 DB 0DH,0AH,'INPUT AGAIN!$'INFO6 DB 0DH,0AH,'GO TO NEXT MUSIC!$'MUSLIST DB 0DH,0AH,'A: START'DB 0DH,0AH,'F: NEXT MUSIC'DB 0DH,0AH,'X: ESC'DB 0DH,0AH,'$' ;提示语;音乐一------------------------------------------------------------ MUS_FREG1 DW 330,294,262,294,3 DUP (330)DW 3 DUP (294),330,392,392DW 330,294,262,294,4 DUP (330)DW 294,294,330,294,262,-1MUS_TIME1 DW 6 DUP (25),50DW 2 DUP (25,25,50)DW 12 DUP (25),100;音乐二----------------------------------------------------------- MUS_FREG2 DW 330,392,330,294,330,392,330,294,330DW 330,392,330,294,262,294,330,392,294DW 262,262,220,196,196,220,262,294,332,262,-1MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100DW 2 DUP(50,50,25,25),100DW 3 DUP(50,25,25),100;音乐三----------------------------------------------------------- MUS_FREG3 DW 262,262,294,262,349DW 330,262,262,294,262DW 392,349,262,262,523DW 440,349,262,262,466DW 466,440,262,392,349,-1MUS_TIME3 DW 50,50,100,100,100DW 100,100,50,50,100,100DW 100,100,100,50,50,100DW 100,100,100,100,100,50DW 50,100,100,100,100,100 ;音乐段DATA ENDSSTACK SEGMENTDB 400 DUP ('STACK')STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: ;主程序MOV AX,DATAMOV DS,AXCALL PIANOCALL MUSIC_PLAY; 音乐播放子程序MUSIC_PLAY PROCSHOW MACRO b ;定义一个宏显示字符串LEA DX,bMOV AH,9INT 21HENDMADDRESS MACRO A,B ;音乐地址宏LEA SI,ALEA BP,DS:BENDMSHOW INFO1SHOW INFO2SHOW INFO3SHOW MUSLIST ;提示语INPUT:MOV AH,01HINT 21HCMP AL,'X'JZ RETU ;按下为‘X’则退出dosCMP AL,'A' ;按下为‘A’则播放音乐JZ A0 ;是则跳到A0SHOW INFO4SHOW INFO5JMP INPUT ;否则提示输入错误,重新开始A0:ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,7500 ;设置正常播放速度CALL MUSICJMP AGAINF0:CMP AL,'F'JNZ EXITNEXT:SHOW INFO6ADD FLAG,1NUM1:CMP FLAG,1JNZ NUM2ADDRESS MUS_FREG1,MUS_TIME1CALL MUSICJMP AGAINNUM2:CMP FLAG,2JNZ NUM3ADDRESS MUS_FREG2,MUS_TIME2CALL MUSICJMP AGAINNUM3:MOV FLAG,0ADDRESS MUS_FREG3,MUS_TIME3CALL MUSICJMP AGAINRETU:MOV AH,4CHINT 21HAGAIN:SHOW INFO5JMP INPUTEXIT:SHOW INFO4 ;按键错误,重新选择 SHOW INFO5JMP INPUTRETMUSIC_PLAY ENDP;发声GENSOUND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AL,0B6H ;开扬声器OUT 43H,ALMOV DX,12HMOV AX,348CHDIV DIOUT 42H,ALMOV AL,AHOUT 42H,ALIN AL,61HMOV AH,ALOR AL,3OUT 61H,ALWAIT1:MOV CX,RATE ;设置播放速度 CALL WAITFDELAY1:DEC BXJNZ WAIT1MOV AL,AHOUT 61H,ALPOP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDPWAITF PROC NEARPUSH AXWAITF1:IN AL,61HAND AL,10HCMP AL,AHJE WAITF1MOV AH,ALLOOP WAITF1POP AXRETWAITF ENDPMUSIC PROC NEARPUSH DSSUB AX,AXPUSH AXFREG:MOV DI,[SI] ;获取频率值CMP DI,-1 ;音乐播放结束判断JE END_MUSMOV BX,DS:[BP]CALL GENSOUND ;播放一个频率ADD SI,2ADD BP,2 ;获取下一频率值,及其播放时间MOV AH,0BH ;判断键盘是否有键按下INT 21HCMP AL,0FFHJE INT9 ;有键按下则转去执行该指令JMP FREG ;无键按下则继续读取下一个频率值END_MUS:RETINT9:PUSHFPUSH AXPUSH DSPUSH ESPUSH CSPOP DSPUSH CSPOP ESIN AL,60H ;从键盘获取该键值ASCII码MOV AH,0INT 16H ;读取并保存到AL中CMP AL,'X' ;若为‘X’则退出dos操作界面JZ X0CMP AL,'F' ;若为‘F'则跳到下一首JZ NEXT1INT9_QUIT:POP ESPOP DSPOP AXPOPFJMP FREGX0:POP ESPOP DSPOP AXPOPFJMP RETUNEXT1:POP ESPOP DSPOP AXPOPFJMP NEXTMUSIC ENDP; 键盘绘图PIANO PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0 ; 设置屏幕显示图形方式:每屏幕字符数80×25, 16色MOV AL,12HINT 10H ; 调用10H的0号功能中断; 键盘绘制主程序MOV CX,12DRAWING:CALL PIANO_DRAWCALL LINE_DRAWLOOP DRAWINGCALL PIANO_DRAWADD STARTX,30PUSH DXMOV DX,STARTXMOV LASTX,DXADD LASTX,80POP DXADD ENDX,30DRAW_PARALLELOGRAMY STARTX,STARTY,LASTX,ENDY,GRAY DRAW_LINEX 100,300,STARTX,GRAYPOP DXPOP CXPOP BXPOP AXRETPIANO ENDPPIANO_DRAW PROCDRAW_REGTANGLE STARTX,STARTY,ENDX,ENDY,WHITEDRAW_LINEX STARTX,ENDY,ENDX,GRAYDRAW_PARALLELOGRAMX STARTX,ENDY,ENDX,LASTY,WHITE RETPIANO_DRAW ENDPLINE_DRAW PROCDRAW_PARALINE1 ENDX,STARTY,ENDY,YELLOWDRAW_PARALINE2 ENDX,ENDY,LASTY,YELLOWADD STARTX,32ADD ENDX,32RETLINE_DRAW ENDPCODE ENDSEND START4程序运行与调试4.1运行程序把编好的源程序命名保存为YINYUE.asm,在MF2KP集成环境中进行调试,首先点运行选项中的调试,如果编译成功,就选择运行选项中的生成exe文件,这样就产生了一个可运行程序,然后点击运行,就会看到与题目要求相符的界面.程序运行截图:开始界面:图4-1:开始界面运行开始后显示钢琴界面,并显示提示语言。
微机原理课程设计交通灯
一、课程设计题目交通灯控制二、课程设计目的●综合运用《微机原理与应用》课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计能力与实现系统、绘制系统电路图的能力,为实际应用奠定一定的根底。
●掌握8255A方式0的使用与编程方法●PC机与配套的接口电路实验装置●IC芯片:8255A应用和8253三、课程设计内容●采用8255A设计交通灯控制的接口方案●采用8253设计延时电路●插接电路●编写控制程序四、课程设计过程1、设计原理●82558255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片〔40引脚〕。
其内部与引脚图如下图:8255有三个端口A、B、C端口,3种不同的工作方式,在其控制字的作用下使某一个端口工作于某一种工作状态下。
8253intel8253是NMOS工艺制成的可编程计数器/定时器,其内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全一样,如下图:每个计数器的输入和输出都决定于设置在控制存放器中的控制字,互相之间工作完全独立,采用减1计数方式。
控制字如下图:在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是周期的时钟信号时,计数就成为定时。
各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
在这里我们主要采用方式0:计数完毕产生中断(由低电平变为高电平)。
其波形图如下图:a. 写CW后:OUT=0,直到计数到0b. 写N后:下1个CLK脉冲下降沿开始计数c. 计数过程中,可重写N,重写N后,同b.d. GATE的作用:GATE=1计数、=0暂停计数e. 计数到0:OUT=1,直到再写CW或N2、方案设计考虑普通十字路口,交通灯的控制可分东西向和南北向两组,每组可用红、黄、绿三个灯进展交通管理,所以本方案要点是至少对六个交通灯进展控制。
文档:微机原理课设报告(徐荣华)
微机原理课程设计报告微机原理课程设计要求一、设计微机最小系统(必做)a)包括CPU,RAM,8255b)RAM的起始物理地址是0D8000Hc)编程实现往RAM依次填入0-255,共256个数据,编程求和存入接下来的一个字中。
二、设计8255并行输入输出系统(必做)a)8255 A口接3个按钮,B口接8个LEDb)编程实现按钮按下,对应指示灯点亮以表示按钮三位编码对应数值.两实验电路图画在一起,如下:总览图:该电路主要有三个核心部分:CPU,RAM,8255A,加以地址锁存器、数据缓冲器、译码器以及若干逻辑门电路等组成。
局部放大图如下:CPU部分:其中U8为8086 CPU,为整个系统的大脑,负责处理各种指令,控制系统的运行。
U9,U10,U11为地址锁存器,与分时复用地址/数据总线连接,当分时复用地址/数据总线当作地址线来用时,用以锁存地址信息和BHE信号。
U5,U6为数据缓冲器,与分时复用地址/数据总线的低16位相连,当分时复用地址/数据总线当作数据线用时,对数据信号有缓冲作用,对数据总线有功率放大作用。
主要部分为两片6264存储器,用来存储信息。
由于8086CPU有16条数据总线,两片存储器被分为奇地址存储器和偶地址存储器,共同组成一个完整的存储部件。
其中U4为74LS138译码器。
存储器采用地址全译码,需要CPU的20条地址总线一起参与寻址,但6264存储器只有13个地址引脚,其余7条地址总线需要通过译码器译码,再通过U2,U3两个逻辑门电路与M/IO信号一起参与片选,使得存储器的起始地址为题目要求的D8000H。
其中U1为8255A芯片。
D0~D7接CPU数据总线的低8位,A端口作为输入端,接收来自开关的信号,B端口作为输出端,输出低电平时对应的LED灯亮,输出的信号直接驱动LED灯。
U7为74LS138译码器。
CPU的地址总线低八位参与8255A的寻址,其中CPU 的A1、A2分别于8255A的A0、A1相连,使得8255A的端口地址为4个连续的偶地址,通过译码器定义了8255A的端口地址为80H~86H。
华南理工大学微机与接口实验报告(四实验,题目原理流程图代码截图完整版)
3)输入-U,可看到11行指令源自再用U命令可看到余下的各指令。4)输入运行命令-G=00 28 可见程序执行到 INT 21H 句便停下来,屏幕展示此刻各寄存器的内容如下:
AX=4C00 BX=0007 CX=0001 DX=0000 SP=0028 BP=0000 SI=0000 DI=0000 DS=1122 ES=1112 SS=1126 CS=1129 IP=0028 NV UP DI PL ZR AC PE CY
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV BX,-1
MOV CX,0
MOV CL,COUNT
NOZERO: INC BX
MOV AL,ARRAY1[BX]
201E INT 3
运行结果截图:
二.将十进制数的ASCII码转换为BCD码
1.程序流程
将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。把它转换成BCD码后,再按位分别存入350A起始的内存单元内。若输入的不是十进制的ASCII码,则显示FF.
2.实验步骤
(1)输入程序并检查无误。
ADD AL, ARRAY2[BX]
MOV SUM [BX],AL
LOOPNE NOZERO
JE ENDO
INC BL
ENDO: MOV LEN,BL
MOV AH,4CH
INT 21H
CODE ENDS
END START
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理课程设计
具有三态数字量输出端 D0~D7 配合输出允许信号 OE
(2)ADC 地址译码与通道选择
(3)ADC0809 工作时序图:
-4-
微机原理课程设计
(4)ADC0809 与系统总线的连接 (5)ADC0809 编程:
-5-
微机原理课程设计
(6)8255 与 ADC0809 的连接示意图:
六.硬件接线图················································(12) 七.实验源程序················································(13) 八.调试分析···················································(16) 九.设计总结···················································(16)
五.程序流程图················································(11)
1、主程序流程图············································(11) 2、中断子程序流程图······································(12)
二、实验器件
8086、74LS138、74LS373、74LS245、8253、8255、ADC0809、7 段数码管、5KΩ 电位器、+5v 电源等
三、设计内容
利用《微型计算机原理》课程中所学的主要可编程接口芯片 74LS138、8253、8255A、 ADC0809 和中断控制器 8259 设计一个模拟电压采集电路。采用 ADC0809 设计一个单通 道模拟电压采集电路,要求对所接通道变化的模拟电压值进行采集,采集来的数字量送 至数码管 LED 指示,采集完 100 个数据后停止采集过程。
1、设计思想··················································(3) 2、ADC0809 简介·············································(3) (1)ADC0809 功能及引脚········································(3) (2)ADC 地址译码与通道选择····································(4) (3)ADC0809 工作时序图········································(4) (4)ADC0809 与系统总线的连接·································(5) (5)ADC0809 编程···············································(5) (6)8255 与 ADC0809 的连接示意图······························(6) 3、8253 简介·················································(6) (1)8253 内部结构···············································(· 6) (2)A0,A1 功能说明···········································(6) (3)8253 读写操作·············································(7) (4)8253 控制字···············································(7) (5)8253 初始化编程···········································(7) 4、8255 简介·················································(8)
(5)译码电路由 74LS138 提供,其输出信号用来控制当前工作在模拟量采集还是 数模转换的工作状态以确保电路正常工作。在总线和其它接口芯片之间还必须加入 74LS245,起到隔离作用。
2、ADC0809 简介
(1)ADC0809 功能及引脚 提供一个 8 通道的多路开关和寻址逻辑 IN0~IN7:8 个模拟电压输入端 ADDA、ADDB、ADDC:3 个地址输入线 ALE:地址锁存允许信号 ADC0809 的数字输出 ADC0809 内部锁存转换后的数字量
4、8255 简介:
(1)8255 内部结构
(2)8255 寻址
-8-
微机原理课程设计
(3)8255 工作方式控制字
(4)8255 端口 C 置位/复位控制字 (5)8255 与 cpu 的连接
-9-
微机原理课程设计
(6)8255 初始化编程: 8255 使用 A 口输入,B 口输出,A、B、C 及控制字端口分别为 300H、302H、304H、
(3)编程启动 ADC0809 转换(ADC0809 完成一次转换的时间大约为 120μs),在 中断服务程序中读入模数转换,其结果送入 7 段数码管进行显示
(4)8255 用做 CPU 和 ADC0809 间的接口芯片,用作读写数据通道,ADC0809 的 控制信号(如 OE、ALE、START 等)可由 8255 提供,模数转换后的数字量经 8255 的 A 口 读入,由 B 口输出,PC 口控制。8255 的端口地址:300H~306H
目录
一.设计目的····················································(3) 二.实验器件····················································(3) 三.设计内容····················································(3) 四.设计原理····················································(3)
3、8253 简介
(1)8253 内部结构
拥有 3 个独立的 16 位计数器通道 每个计数器有 6 种工作方式 按二进制或十进制(BCD 码)计数 (2)A0,A1 功能说明
-6-
(3)8253 读写操作
微机原理课程设计
(4)8253 控制字:
(5)8253 初始化编程 输入时钟信号位 1MHz,由计数器 0 分频得到 500KHz 供 ADC0809 的时钟使用,然后 使用计数器 1,将 500KHz 接入计数器 1 时钟,由于 100 次数据采集需要时间位 100ms, 故设定计数初值为 50000,8253 的计数器 0、计数器 1、计数器 2、方式控制字的端口 地址分别为 000H、002H、004H、006H,工作方式 3,故初始化编程如下: start:
cli;获取原中断向量里的内容并保存 mov ax,3572h int 21h mov intoff,bx mov intseg,es push ds mov dx,offset convert;设置新的中断向量 mov ax,seg convert mov ds,ax mov ax,2572h int 21h pop ds sti cli ;恢复 72 号中断向量 mov dx,intoff mov ax,intseg mov ds,ax mov ax,2572h int 21h sti 中断服务子程序: 要想启动 0809 进行转换,首先必须有一个 start 信号,该信号为: 在转换的时候通过 EOC 信号来判断转换是否结束,当 EOC 信号由 0 变为 1 时就代 表转换结束,此时让 OE 引脚为 1,这时转换出来的数据就输出了,部分代码如下: mov dx,306H mov al,99H out dx,al mov dx,306H;送启动信号 mov al,00h out dx,al nop mov al,01h out dx,al
(1)8255 内部结构···············································(· 8) (2)8255 寻址··················································(8) (3)8255 工作方式控制字·······································(9) (4)8255 端口 C 置位/复位控制字·································(· 9) (5)8255 与 cpu 的连接···········································(· 9) (6)8255 初始化编程············································(10) 5、编写中断程序···········································(10)
mov dx, 006h mov al,36h out dx,al mov dx,000h mov al,2 out dx,al mov al,0 out dx,al;初始化计数器 0 进行 2 分频
mov dx, 006h mov al,76h
-7-
微机原理课程设计
out dx,al mov dx,002h mov al,50h out dx,al mov al,0c3h out dx,a;初始化计数器 1 进行 50000 分频
四、设计原理
1、设计思想
(1)利用 8086 和 74LS373 的连接进行地址的锁存,输出用作控制信号 A0-A4,其 中 A0,A1 接至 8253 及 8255 的 A0,A1 端,A2,A3,A4 用作 74LS138 译码器的输入