单片机实验proteus版(2015) - 图文 下载本文

1、 弄清中断的概念、基本原理,掌握中断技术的应用

2、 了解中断初始化的方法,中断向量安装和中断服务子程序的设计方法。 3、 了解定时/计数器的工作原理及MCS51单片机的定时器内部结构 4、 掌握时间常数计算方法

5、 掌握定时器初始化方法和定时中断程序设计方法 二、 实验要求

利用单片机中断系统设计一个四人抢答器。要求主持人按下启动键后,抢答指示灯亮,开始计时,10秒钟内,任何一个人第一时间抢答成功,相应指示灯点亮,其它人的抢答则被屏蔽,如果超过10秒没有人抢答,则此题作废,指示灯灭,准备进行下一题。 三、 实验原理

可使P2.0~P2.3脚分别接选手的按钮,并通过与门与外部中断0引脚(P3.2)相连, P3.3接扬声器,P1.0~P1.3接指示灯。当S1~S4中有一个按钮按下时,都能产生中断,而其它人按下属于同级中断,CPU不再响应。CPU响应中断时,点亮相应指示灯。

当CPU正在处理某件事情时,外部发生了另一件事情(如定时器/计数器溢出或产生其他中断请求),要求CPU处理,于是它暂时终止当前的工作,转去处理正发生的事件,处理完成后,再回到被中断的地方,继续做原来的工作,这一过程称为中断。 在中断系统中,引起中断的原因或产生中断申请的来源称为中断源;由中断源向CPU发出的请求中断信号称为中断请求信号;CPU接受中断源的中断请求,暂停当前程序的执行,转而处理请求事物的过程称为中断响应。 中断响应后所执行的处理程序称为中断服务子程序,原来正常执行的程序则称为主程序,主程序被断开的位置(或地址)称为“断点”。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序是事先安排好的,知道何时调用;而何时调用中断服务子程序却是事先无法确定的,因为中断的发生是由外部因素决定的,有时是突发的。程序中无法事先安排调用指令,因此,中断服务子程序的调用过程是由硬件自动完成的。MCS-51单片机有5个中断源,设置两个中断优先级。中断的控制与管理由4个特殊功能寄存器完成。 (1) TCON:定时器/计数器控制寄存器。某些位用于锁存中断源的中断标志。 (2) SCON:串行口控制寄存器。低两位锁存串行口中断标志。 (3) IE:中断允许寄存器。用于控制中断的禁止与允许。 (4) IP:中断优先级寄存器。设定中断源的中断优先级。

在MCS-51中断系统结构图中,设置5个中断源。 (1) 外部中断0(INT0)。

(2) 外部中断1(INT1):掉电故障、I/O中断请求信号等异常事件的中断请求信号都可作为外部中断连接到INT0或INT1上。 (3) 定时器T0中断:T0计满溢出后可向CPU申请中断。 (4) 定时器T1中断:T1计满溢出后可向CPU申请中断。

(5) 串行口中断:包括发送中断和接收中断。串行口完成一个字符的发送或接收后可向CPU发出中断申请。

外部中断是指从单片机外部引脚 INT0 、 INT1 输入中断请求信号的中断,即外部中断源有两个。外部中断请求有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。

51单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。8051定时器/计数

器由定时器T0、定时器T1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。TMOD、TCON与T0、T1间通过内部总线及逻辑电路连接,TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止。

预置定时器初值X,将初值写入TH1、TL1中。 初值X=最大计数值-计数次数

定时10秒钟可以使T0工作在方式1下,定时50ms并循环200次。在方式1中,定时器T1的最大计数值为65536,而定时50ms需要完成50000次计数。由此可计算出计数器的初始值。

初值X=65536-50000=15536D=3CB0H

∴在子程序DELAY中确定计数器初值的指令位: MOV TH1,#3CH MOV TL1,#0B0H 四、 实验电路

1. 新建设计文件、设置图纸尺寸、设置网格、保存设计文件。

2. 选取元器件。从Proteus元器件库中选取元器件:AT89C51(单片机)、Button(按键)、74LS04、74LS30、RES(电阻)、LED-RED(红色发光二极管)、LED-BLue(蓝色发光二极管)。 3. 放置元器件、编辑元器件、放置终端、连线。按图3-3所示放置元器件并连线。 4. 属性设置。编辑各元器件属性,填写相应的元件值。 5. 电气规则检测。单击“工具”→“电气规则检查”,弹出检查结果窗口,完成电气检测。若检测出错,根据提示修改电路图并保存,直至检测成功。电气规则检查窗口如图3-4所示。

五、实验程序:

ORG 0000H LJMP MAIN

ORG 0003H LJMP PINT0 ORG 000BH LJMP T0INT ORG 0040H

;INT0 入口地址

;T0 入口地址

COUNT EQU 30H MAIN:MOV SP,#40H SETB EA

SETB IT0

AGAIN: MOV P1,#0FFH CLR IE0

CLR P3.6 CLR F0

JB P3.0,$

SETB EX0 SETB P3.6 MOV COUNT,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SETB ET0

WAIT: JB F0,AGAIN MOV A,COUNT

CLR C SUBB A,#200 JC WAIT CLR TR0

; 定时器中断程序 T0INT: MOV TH0,#3CH

MOV TL0,#0B0H

INC COUNT RETI

;外部中断程序:有人抢答 PINT0: CLR EX0 CLR P3.6

SETB F0 MOV P1,P2

LCALL DELAY

RETI

DELAY: MOV R5,#20 D1: MOV R6,#200 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END

五、 实验内容:

1、 阅读程序,回答:为什么当一个人抢答成功后,其它人不能

再抢答?试结合中断控制说明原因。

2、 修改电路和程序,将四路抢答器扩展为8路抢答器。 3、 用(1)改变定时器初值(2)改变循环次数两种不同的方法

将抢答时间由原来的10s改为12s

实验4 数码管仿真实验

1. 实验内容

(1)完成数码管的静态显示,P2口连接共阴极数码管,P3口连接共阳极数码管,编程