微机原理与接口技术课程设计

更新时间:2024-05-25 08:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《接口技术》大型综合(课程设计)作业

【目的】

(1)掌握8086cpu微机接口电路的I/O系统的设计

(2)掌握8086cpu微机接口电路的初始化汇编编程和具体项目功能的软件汇编语言代码编写

(3)要求学生根据接口电路的硬件要求进行计算机的汇编语言程序设计,使学生的软件编程能力得到加强,对接口电路的综合应用能力有较大提高。

【要求】

(1) 每三个同学组成一个小组,选一位组长,负责与教师联系(2007年10月8日前选定题目及确定小组成员以电子版形式发至oucljp@yahoo.com.cn);每一组选择一个题目,完成系统的软硬件部分设计。

(2)自学、查找所选择I/O接口芯片和内存芯片的相关的资料。使用接口技术知识实现能完成相应功能的硬件系统。

(3)要求写出系统(包括各个子系统)的设计方案及论证,画出系统原理图(硬件连线图)以及系统工作流程。

(4)画出程序流程、编写系统初始化程序和功能程序清单。

【设计报告书内容要求】

1.每一小组要上交一份完整的设计方案(放假前以电子版形式发至邮箱oucljp@yahoo.com.cn

),内容包括:

(1)报告封面(设计题目、小组成员) (2)设计题目

(3)小组成员分工及成果 (4)设计方案以及论证

(5)硬件原理图(包括芯片的选型介绍)

(6) 程序流程图(包括各个子系统和子过程的程序流程) (7) 程序清单,要有适当的注释 (8) 程序运行结果分析与预测

(9) 系统改进(升级)建议或者方案等。

2.每一个同学需要上交一份设计报告,简单介绍在课程设计过程中所做的工作,碰到的问题以及解决方法,阐述综合作业的收获等等。

【设计成绩评定】

本次设计的成绩占《接口技术》课程期末总评成绩的15%,具体评定方法如下: (1)报告内容的完整性占20%的比例。 (2)硬件原理图占20%的比例。 (3)程序流程图占20%的比例。 (4)程序清单占10%的比例。

(5)程序运行结果分析与预测占20%的比例。 (6)系统改进(升级)建议或者方案占10%的比例。

【系统要求】 1. 交通灯控制 (1)要求: 十字路口

1) 正常情况下,两路口轮流放行,且以一位8段数码管显示剩余时间; 2) 夜间,两路口均为黄灯闪烁,均可放行。 (2)提示: 交通灯规律:

状态1:南北绿灯通车,东西红灯;

状态2:南北绿灯闪烁3次转黄灯亮,东西仍然红灯,延时3秒; 状态3:东西绿灯通车,南北红灯;

状态4:东西绿灯闪烁3次转黄灯亮,延时3秒南北仍然红灯。 以开关控制正常状态与夜间。

2. 时钟设计 (1) 要求:

设计一个时钟,可以用来显示时间,用六位数码管显示。 1) 显示格式为时时分分秒秒;

2) 每逢整点让LED第一个红灯闪烁一次。 3) 具有复位功能。

(2) 提示:用8253实现定时功能,以开关控制复位。

3. 电压报警 (1)要求:

设计一个电压报警器 1) 采集0~5V的电压;

2) 当输入电压在3V以内,用数码管显示电压值,如2.4,同时由D/A输出; 3) 当输入电压超过3V,数码管显示E.O,并将此电压限制到3V后输出。 (3) 提示:由A/D进行电压转换,注意小数转换为整数处理的方法。

4. 多通道温度采集与显示系统 (1)要求:

1) 4个温度通道;

2) 轮流显示各通道温度,同时表明通道号; 3) 可以用键盘选择需要观察的通道情况。 (2)提示:假定已经得到检测的温度数据。

5.计算机并口使用。 (1)要求:

1).控制8个LED发光管,循序点亮发光管,点亮时间可控。 2).用4位LED发光数码管,显示计算机的时间“分”“秒”。 3).用两个开关作输入,分别控制LED发光管的点亮时间。

4).用两个开关作输入,分别控制LED发光数码管的内容。 5).从并口采集数据,在显示屏上输出采集的内容。 6).实现两台计算机之间的串行通信。

6. 计算机串口使用。 (1)要求:

1)通过8251的控制口写入其工作方式或读入当前状态, 2)以查询方式从数据口发送或接收串行口数据, 3)并在LED上显示。

7. 直流电机调速控制器 (1)要求:

1)8253的定时器通道0,作为PWM脉冲的基本周期。

2)8255的B口作为数码管的笔划码驱动;C口的低4位作为段码控制,显示占空比的百分值,即转速高低,同时,也用于输出键盘的列扫描码 3)PWM脉冲宽度的产生控制电机转速。

8.里程计价器 (1)要求:

1)本设计是在直流电机控制器的基础上,增加了一个电机测速电路而构成的。 2)8255的B口作为数码管的笔划码驱动;C口的低4位作为段码控制,显示实际里程,同时,也用于输出键盘的列扫描码

3)电机的转数,通过霍尔元件变换为脉冲个数,送入8253的通道2,计数后,将转数转换为里程数,最小单位为0.01公里。

9.数字式电压表 (1)要求:

1)采用系统提供的8259A芯片的IR7作为AD转换完成后的中断申请输入端。 2)8255的A口作为数码管的笔划码驱动;C口的低4位作为段码控制,显示测量的电压值。

3)AD转换器使用ADC0809,使用通道0作为模拟电压输入端

10.电子显示屏 (1)要求:

1)由若干LED组合在一个模块上, 2)用语在公众场合发布信息。

11、竞赛抢答器 (1)要求:

1)同时供多名选手或代表队比赛,分别用相应按钮表示。 2)设置系统定时和由主持人控制的抢答控制开关。

3)抢答器具有优先锁存与编号显示功能,保持到系统清除为止。 4)另外设置抢答定时时间。

12、流水灯控制 (1)要求:

1)实现对装饰灯点亮和关断。 2)另外设置数码管显示效果编号,

3)功能键选择自动/手动转换、流水方向、选择效果和调节流水速度。

13、串行口通信 (1)要求:

1)利用RS232C方式(两台以上用RS485),用电缆将两台或两台以上的微机连接,

2)要求编写串行通信软件,从一台微机向另一台微机传送数据。

3)数据可以键盘输入、接口输入或是来自文件等,使用直接控制台方式或点对点文件方式,传送通信协议可以选择。

14.简易计算器系统设计

设计一个可以进行2位数四则运算的计算器,要求: 1,用按键输入数和运算符号;

2,用LED显示运算过程和结果(十进制数); 3,可以表示出当前的运算类型; 3,具有清零和复位功能; 4,具有连续运算功能。

15.压力测试系统设计:

利用压力传感器和ADC0809采用中断方式设计一个压力测试系统,

并将测试结果(十进制)在LED上显示出来,并定义一个测试最大值按键 ,当按下该键时,可进行最大值测量(按键不动作时为正常测量显示), 即:只有当当前测量值大于上次测量值时才刷新显示,显示格式为:P=XXX。 可以每隔0.3秒测量一次。

16.函数发生器1的设计:

利用D/A设计一个函数发生器,并利用按键选择输出波形,

能分别产生三角波、阶梯波(每阶梯1V)、正向锯齿波、负向锯齿波和方波。 并利用按键(自行定义)进行输出波形选择,同时将当前输出波形代号显示在LED上(左边位):0为方波、1为正向锯齿波、2为负向锯齿波 、3 为三角波 、4为阶梯波。

17.温度测控系统的设计:

利用ADC0809采用中断方式设计一个温度测控系统, 在LED数码显示器上显示温度值,并对温度进行测试和控制, 当检测温度到达温度上限60℃时开风扇(即开启电动机),

低于下限30℃时关闭风扇,LED上的显示内容为:XX ℃(采用十进制显示)。 注意:

每一个小组的成绩原则上基本一致,同时也会根据每个同学的个人报告拉开一定差距。

同学们可以参考一些相关资料,但报告必须有自己做的东西,不能全部拷贝,一旦发现作零分处理。

附件:

例: 交通灯控制(硬件,软件,流程)

1、 硬件连接图 XD0 PA0 D0 8个LED指示灯 ┇

PA7 ┇ ┇ PB0 D7 ┇ XD7 CPU 8255 ┇ ┇ PB7

PC0 ┅ ┇

PC3 INTR PC4

┇ PC7 INT K4 K1 ┅ 8259 IR0 8253 CLK0 1.19MHz

+5V OUT0 GATE0

硬件连接说明:

①8253和8259采用系统连接,8253的定时器通道0,输入频率为1.19MHz,输出产生0.05秒的定时信号,通过8259的IR0向CPU申请中断,即每产生一次中断,则说明定时0.05秒。

②8255的A口输出,控制8个发光二极管的亮灭,作为指示灯,实际只用二个绿灯和红灯。 ③8259的B口输出,作为4个数码管的笔划码,其显示码与显示数据的关系如下表;C口的PC0~PC3为字段码控制,控制哪一个数码管显示。 显示数值 0 1 2 3 4 显示码 Dp g f e d c b a 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 1 0 显示数值 5 6 7 8 9 显示码 Dp g f e d c b a 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1

④8259的C口输入,根据开关K1~K4的值,设置通行时间从00~90秒,间隔10秒。

2、 程序流程图

主程序流程如下: 中断处理程序如下:

3、 程序

;十字路口交通控制器 DATA SEGMENT SETTIME DB ? ;用户设置的通行时间 NOWTIME DB ? ;当前计时时间 TIME1 EQU 10 TIMEOT1 DB TIME1 ;0.5秒定时单元 TIME2 EQU 2 TIMEOT2 DB TIME2 ;1秒定时单元 FLAG DB 1 ;闪烁标志 ONOFF DB 1 ;亮灭标志 LEFT DB 1 ;南北向和东西向标志 TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0~9的显示码 DATA ENDS STACK SEGMENT STACK DW 64 DUP(?) ;定义堆栈段 STACK ENDS

CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA ;段指定

START: MOV AX,DATA MOV DS,AX PUSH DS ;当前用户DS段入栈保存 MOV AX,0000H MOV DS,AX ;修改DS=0000H,指向中断矢量表所在段 MOV AX,OFFSET IRQ0 ;取出中断处理子程序的入口偏移地址(以0为基准) ADD AX,2000H ;修正,实际地址=装入地址的偏移量+相对于0起始的偏移量 MOV SI,0020H ;IR0中断矢量号为08H,处于矢量表的20H~23H MOV [SI],AX ;将偏移地址装入矢量表 MOV AX,0000H MOV SI,0022H MOV [SI],AX ;将段地址(0000H)装入矢量表 POP DS ;恢复用户数据段DS MOV AL,0FCH ;D1,D0位复位为0 OUT 21H,AL ;写入OCW1(IMR);开放8259A的IR1和IR0中断 MOV AL,34H ;设定8253通道0的工作方式,00110100B OUT 43H,AL ;CH0采用先写低8位,后写高8位,方式2,二进制计数

MOV OUT MOV OUT STI MOV OUT 口低4位输出 IN AND MOV MOV

A1: MOV TEST JZ MOV TEST JNZ MOV OUT MOV OUT JMP A2: MOV AND MOV XLAT OUT MOV OUT CALL MOV MOV ROR AND MOV XLAT OUT MOV OUT CALL

AX,59500

;计数初值为59500,输出20HZ信号,定时0.05秒 40H,AL ;写入CH0

AL,AH 40H,AL ;开中断

AL,88H ;写入8255A的方式控制字,设定工作方式为10001000B 63H,AL

;即A口方式0输出,C口高4位输入,B口方式0输出,CAL,62H ;循环读出C口的四个开关状态(PC4~PC7) AL,0F0H ;高四位为00~90秒

SETTIME,AL ;读取用户设定的通行时间

NOWTIME,AL AL,FLAG AL,01H A2 ;不闪烁,则转显示

AL,ONOFF ;闪烁标志为1,闪烁,则测试是亮,还是灭 AL,01H A2 ;为1,说明亮,则转A2

AL,0FH 62H,AL AL,00H 61H,AL ;灭,则关闭显示 A3

AL,NOWTIME ;取出当前剩余时间的低位

AL,0FH

BX,OFFSET TAB ;查表转换为显示码

61H,AL AL,05H ;PC0~PC3为0101B,允许X2、X4数码管选通

62H,AL DALEY

AL,NOWTIME CL,4 AL,CL AL,0FH ;取出当前剩余时间的高位 BX,OFFSET TAB 61H,AL AL,0AH 62H,AL ;PC0~PC3为1010B,允许X1、X3数码管选通

DALEY

A3: MOV AL,LEFT TEST AL,01H JZ A5 ;测试是南北向通行,还是东西向通行 MOV AL,FLAG ;东西向通行 TEST AL,01H ;测试是否应让黄灯亮 JZ A4 ;不是东西向的黄灯亮,则转东西向绿灯亮(南北向红灯亮)

MOV AL,ONOFF ;东西向黄灯亮(南北向红灯亮) TEST AL,01H JNZ A4 ;测试亮灭 MOV AL,0FFH ;关指示灯 OUT 60H,AL JMP EXIT A4: MOV AL,77H ;东西向绿灯亮(南北向红灯亮) OUT 60H,AL JMP EXIT A5: MOV AL,FLAG ;南北向通行 TEST AL,01H ;测试是否应让黄灯亮 JZ A6 ;不是南北向的黄灯亮,则转南北向绿灯亮(东西向红灯亮) MOV AL,ONOFF ;南北向黄灯亮(东西向红灯亮) TEST AL,01H JNZ A6 ;测试亮灭 MOV AL,0FFH ;关指示灯

OUT 60H,AL JMP EXIT A6: MOV AL,0EEH ;南北向绿灯亮(东西向红灯亮) OUT 60H,AL EXIT: JMP A1

;8259A的IR0中断处理子程序(8253的CH0每来59500个脉冲后(定时0.05秒),则执行下面的中断处理程序一次) IRQ0: PUSH AX MOV AL,TIMEOT1 DEC AL JZ IRTIME1 MOV TIMEOT1,AL JMP IREXIT ;不到0.5秒,则退出

IRTIME1:MOV TIMEOT1,TIME1 ;0.5秒定时时间到,重装初值 MOV AL,ONOFF XOR AL,01H MOV ONOFF,AL ;取反亮灭标志 MOV AL,TIMEOT2 DEC AL ;1秒定时单元减1 JZ IRTIME2

MOV TIMEOT2,AL ;1秒不到,保存,退出 JMP IREXIT

IRTIME2:MOV TIMEOT2,TIME2 MOV AL,NOWTIME SUB AL,1 DAS CMP AL,0 JNZ IRTIME3 MOV AL,SETTIME MOV NOWTIME,AL MOV AL,LEFT XOR AL,01H MOV LEFT,AL MOV FLAG,00H JMP IREXIT

IRTIME3:MOV NOWTIME,AL CMP AL,04H JAE IRTIME4 MOV FLAG,01H JMP IREXIT

IRTIME4:MOV FLAG,00H

IREXIT: MOV AL,20H OUT 20H,AL POP AX IRET ;延时子程序

DALEY: PUSH CX MOV CX,0010H DALEY1:LOOP DALEY1 POP CX RET CODE ENDS END START

;重装通行时间 ;南北向与东西向通行转换 ;闪烁标志复位(不闪) ;剩余时间小于4秒,则闪烁 ;>3秒,则不闪烁 ;常规EOI中断结束指令 ;写入8259A的OCW2 ;中断返回 ;置内循环次数 ;共循环0010H次,以完成延时

本文来源:https://www.bwwdw.com/article/23b7.html

Top