单片机 P1口及外部中断 硬件实验报告
- 格式:doc
- 大小:943.50 KB
- 文档页数:8
单片机原理实验报告实验题目外部中断实验一、实验目的1.掌握用外部中断方式实现控制的方法。
2.掌握中断优先级的使用方法。
3. 掌握用Proteus实现单片机系统仿真的方法。
二、实验预备知识外部中断信号由P3.2(P3.3)管脚输入,当中断触发方式控制位ITO(IT1)为1时,CPU 在每个机器周期的S5P2采样P3.2(P3.3)管脚,如果连续两次采样,前一次采样为高电平,后一次采样为低电平,则认为有中断申请,随即使中断标志位IE0(IE1)置1,向CPU申请中断,直到该中断被CPU响应。
当定时器以计数方式工作,计数初值为满量程,在计数输入端T0(T1)输入负跳变信号时,计数器将加1并产生溢出,随即使溢出标志位TF0(TF1)置1,向CPU申请中断,直到该中断被CPU响应。
三、实验内容P1口做输出口,接八只发光二极管,利用手控单脉冲信号作为外部中断信号,编写控制程序,使八只发光二极管按一定的规律循环点亮。
1.程序1: 从外部中断0请求输入端(P3.2)输入脉冲信号2.程序2: 从定时器0的外部输入端(P3.4)输入脉冲信号四、实验参考电路P1口接发光二极管的阴极,P1口的管脚输出低电平时对应的发光二极管点亮,实验电路图如图4-1所示。
图4-1 外部中断实验电路五、实验参考程序ORG 0003HAJMP INT00 ORG 0013H AJMP INT11 ORG 0050H MAIN:SETB EASETB EX0SETB EX1SETB PX1SETB IT0SETB IT1MOV A,#0FEH LP1:MOV P1,ALCALL DELAY RL ASJMP LP1ORG 0100H INT00:PUSH ACCMOV A,#0FCH MOV R1,#7 LP2:MOV P1,A LCALL DELAY RL ADJNZ R1,LP2 POP ACCRETIORG 0150H INT11:PUSH ACCMOV A,#3FH MOV R2,#7 LP3:MOV P1,ALCALL DELAY RR ADJNZ R2,LP3 POP ACCRETIORG 0200H DELAY:MOV R3,#20 L1:MOV R7,#200 L2:MOV R6,#123 NOPL3:DJNZ R6,L3 DJNZ R7,L2 DJNZ R3,L1 RETEND六、实验分析与总结。
1)用单次脉冲申请中断INT0,在中断处理程序中对输出信号进行反转。
ORG 0000HLJMP STARTORG 0003HLJMP INT0START:CLR P1.0MOV TCON, #01HMOV IE, #81HLJMP $INT0:PUSH PSWCPL P1.0POP PSWRETIEND结果:按一下单脉冲小灯亮,再按一下,小灯灭接线:INT0接单脉冲P1.0接个小灯2)用单次脉冲申请中断INT1,在中断处理程序中实现8个小灯左移点亮1次。
ORG 0000HLJMP STARTORG 0013HLJMP INT1START:MOV TCON,#04HMOV IE,#84HCLR PX1MOV A,#01HSJMP $INT1:MOV R1,#8LOOP:MOV P1,ALCALL DELAYRL ADJNZ R1,LOOPRETIDELAY:MOV R6,#200DELAY1:MOV R7,#125DELAY2:DJNZ R7,DELAY2DJNZ R6,DELAY1RETEND结果:按一下单脉冲,8个小灯左移点亮一次接线:INT1接单脉冲P1口接8个小灯3)将8051计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行单脉冲计数,并将其数值按二进制在P1口驱动LED灯上显示出来。
ORG 0000HSTART:MOV TMOD,#05HMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND结果:P1口与四个小灯相连,按单脉冲的次数在四个小灯上显示接线:(P3.4)T0接单脉冲P1.0到P1.4接4个小灯4)用CPU内部定时器T0中断方式计时,实现每1秒钟输出状态发生一次反转。
ORG 0000HLJMP STARTORG 000BHLJMP INTSTART: MOV TMOD,#01HMOV B,#0AH;即10,设循环次数10次。
一、实验背景与目的随着科技的不断发展,单片机作为一种微小的计算机系统,在工业控制、智能家居、汽车电子等领域得到了广泛的应用。
为了提高学生的实践能力和创新意识,本实训课程旨在通过实际操作,让学生掌握单片机的原理、编程和调试方法,培养学生的动手能力和团队协作精神。
本次实训以51单片机为核心,结合数码管、LED灯、按键等外围电路,设计了多个实验项目,包括LED流水灯、交通灯控制系统、简易计算器、温湿度监控系统等。
通过这些实验,使学生深入了解单片机的硬件结构和软件编程,提高学生的实际操作能力和问题解决能力。
二、实验内容与过程1. 实验一:LED流水灯(1)实验目的:掌握51单片机的I/O口编程,实现LED灯的流水效果。
(2)实验步骤:① 硬件连接:将LED灯连接到P1口;② 编写程序:使用循环语句和延时函数控制LED灯的流水效果;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的流水效果。
2. 实验二:交通灯控制系统(1)实验目的:学习单片机在交通灯控制系统中的应用,实现红黄绿灯的变换及倒计时功能。
(2)实验步骤:① 硬件连接:将LED灯连接到P1口,按键连接到外部中断INT0;② 编写程序:设置定时器中断,实现倒计时功能;编写外部中断程序,实现红黄绿灯的变换;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察交通灯的工作状态和倒计时效果。
3. 实验三:简易计算器(1)实验目的:掌握矩阵键盘扫描原理、LCD1602显示屏控制,实现基本的四则运算。
(2)实验步骤:① 硬件连接:将矩阵键盘和LCD1602显示屏连接到单片机;② 编写程序:实现矩阵键盘扫描、LCD1602显示控制和运算逻辑处理;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察计算器的工作状态和运算结果。
4. 实验四:温湿度监控系统(1)实验目的:学习单片机在温湿度监控系统中的应用,实现温度和湿度的实时显示。
(2)实验步骤:① 硬件连接:将温度传感器和湿度传感器连接到单片机,将LED灯连接到P1口;② 编写程序:实现温度和湿度的实时采集,并根据采集到的数据控制LED灯的亮灭;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的亮灭状态和数码管上的温度、湿度值。
单片机外部中断实验报告实验三外部中断实验报告班级:学号:姓名:教师:一、实验LI的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管DPD8O每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3 口是8位准双向口,具有双重功能:第一功能和P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3. 0RXD串行输入口P3. 1TXD串行输出口P3. 2INTO外部中断0请求输入线P3. 3INT1外部中断1请求输入线P3.4TO定时器/计数器TO外部计数器脉冲输入线P3. 5T1定时器/计数器T1外部计数器脉冲输入线P3. 6WR外部数据存贮器写脉冲输出线P3. 7RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断003H定时器/计数器T1溢出中断OBH外部中断113H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EAESET1EX1ET0EX0(1)外部中断源允许中断(中断0: EX0=l;中断1: EXl=l)o(2)CPU 开中断(EA二1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCOX:TF1TR1TF0TR0IE1IT1IE0IT0IT0是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。
前一方式IT0二1,后一方式IT0二0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式ITl=0o当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
实验三外中断优先级实验一、实验目的:1.理解单片机中断优先级和优先权。
2.用PROTEUS 设计, 仿真基于AT89C51单片机的中断优先级实验。
3.掌握中断编程方法。
单片机主程序控制P0口数码管循环显示0~8;外中断0、外中断1发生时分别在P2口、P1口依次显示0~8。
通过实验可演示高优先级可中断低优先级, 但低优先级的中断请求不能中断高优先级。
二、PROTEUS电路设计:三、实验仪器和设备PC机、PROTEUS软件或W-A-51综合开发学习板四、源程序设计:1.程序ORG 0000HAJMP MAINORG 0003HAJMP ZD0ORG 0013HAJMP ZD1ORG 0030HMAIN:SETB IT0 ;设置边沿触发方式SETB IT1SETB EX0 ;中断0和中断1中断允许SETB EX1SETB PX1 ;设置优先级, 中断1为高优先级CLR PX0SETB EA ;开中断MOV DPTR,#BIAO ;指针指向表的首地址LOOP: ;主程序P0输出, 在LED上循环显示0-8MOV A,#09LOOP1:JZ LOOPDEC APUSH ACCMOVC A,@A+DPTRMOV P0,ALCALL DISPOP ACCLJMP LOOP1ZD0: ;外部中断0, P1输出, 在LED上循环显示0-8 MOV A,#09LOOP2:DEC APUSH ACCMOVC A,@A+DPTRMOV P1,ALCALL DIS0POP ACCJNZ LOOP2RETIZD1: ;外部中断1, P2输出, 在LED上循环显示0-8 MOV A,#09LOOP3:DEC APUSH ACCMOVC A,@A+DPTRMOV P2,ALCALL DIS1POP ACCJNZ LOOP3RETIDIS: ;延时1SMOV R3,#10DEL3:MOV R2,#200DEL2:MOV R1,#125DEL1:NOPNOPDJNZ R1,DEL1DJNZ R2,DEL2DJNZ R3,DEL3RETBIAO: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H ;7段数码管0-8的显示代码END。
硬件电路参考如下:程序参考如下:#pragma sfr#pragma interrupt INTP0 LED_INTP0 /* 定义使用INTP0中断,中断函数名LED_INTP0*/ #pragma di /*禁止使用中断功能声明*/#pragma ei /*允许使用中断功能声明*//*数码管编码数组*/unsigned char LED_light[10]={0x30,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x3F}; unsigned char j=0; /*按键次数变量*/void hdinit() /*硬件初始化*/{PM1=0; /*P1口输出数码管字型码,所以设置为输出*/PU1=0XFF; /*由于P1口直接驱动数码管显示,为增大驱动,设置为内部上拉*/PM12.0=0; /*P12.0口线要作为中断多功能,设置为输出和内部上拉 */PU12.0=1;PIF0=0; /*中断请求标志,没有中断请求*/PMK0=0; /*中断屏蔽标志,允许中断*/PPR0=1; /*中断优先级,低优先级*/EGP.0=1; /*与EGN组合,上升沿有效*/EGN.0=0;}void main (void){DI(); /*首先做准备,禁止中断*/IMS=0XCC;IXS=0X00;hdinit();EI(); /*准备完成,允许中断*/while(1){ /*啥也不干,就等待中断,仅是在这个实验中使用中断,实际不是这样/*}}__interrupt void LED_INTP0() /*中断函数*/{ P1= LED_light[j]; /*P1赋值,数码管显示相应数值*/j++; /*按键次数加一*/if(j==10) /*如果按键次数达到十次,按键计数归0*/{j=0;} }思考: 如果用两位数码管,从0—99循环计数又该怎样设计硬件和软件呢?。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019. 4.30 实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。
图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。
中断优先级寄存器IP、IP2管理中断优先级。
同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2)外部中断1(INT1):中断信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。
位选:公共端com,控制数码管是否显示。
3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O 端口控制。
单片机外部中断实验报告实验目的:1、理解单片机外部中断的原理和用途;2、掌握单片机外部中断的配置和使用方法。
实验器材:1、STC15W408AS单片机开发板;2、简单的电路连接器;3、按钮开关。
实验原理:单片机外部中断是通过外部硬件信号触发单片机的中断请求,在单片机运行过程中,当外部信号满足特定条件时,会触发中断,并暂停当前的运行程序,转而执行中断服务程序。
通过外部中断,可以实现对外部事件的实时处理。
实验步骤:1、将按钮开关与单片机开发板连接,将按钮开关的一端与单片机的INT0引脚连接,另一端与GND连接。
2、在开发板上连接好电源并供电。
3、打开Keil软件,新建一个工程,并选择合适的单片机型号。
4、配置单片机的外部中断功能,设置INT0引脚为中断输入。
5、编写中断服务程序,当INT0引脚检测到边沿信号时,执行中断服务程序,并在其中加入相应的处理代码。
6、编写主程序,配置相关的引脚和寄存器,使单片机进入中断模式,接受外部中断信号,并执行中断服务程序。
7、下载程序到单片机开发板上,运行程序。
8、按下按钮开关,触发外部中断,并查看实验结果。
实验结果:当按下按钮开关时,实时触发外部中断,单片机停止当前程序的运行,进入中断模式,并执行中断服务程序中的相应代码。
实验总结:通过这次实验,我对单片机的外部中断有了更深入的理解,并学会了如何使用外部中断实现对外部事件的及时处理。
外部中断广泛应用于各种实时系统和设备中,具有很大的实用价值。
在以后的学习和实践中,我会进一步掌握和应用单片机的外部中断功能。
MCS-51单片机实验报告实验一P1口实验一、实验目的(1)学习P1口的使用方法;(2)学习掩饰子程序的编写和使用。
二、实验元件A T89C51、LED-YELLOW、SW-SPDT、CAP、CAP-ELEC、CRYSTAL、RES三、实验内容(1)P1口做输出口,接八只发光二极管,编程使发光管循环点亮;①硬件连接图由于受软件限制,无法通过调节晶振的频率来控制单片机的始终频率,只能通过调节单片机自身属性中的时钟频率来达到调节单片机时钟频率的目的,单片机默认的始终频率为12MHZ,将单片机的外部连接完成后,单击电气报告,经软件检查硬件连接无误之后即可开始编程。
②程序编写ORG 0SJMP STARORG 0030HSTAR: MOV P1,#1 ;点亮二极管D1LCALL DELAY ;调用延时子程序MOV P1,#2 ;点亮二极管D2LCALL DELAY ;调用延时子程序MOV P1,#4 ;点亮二极管D2LCALL DELAY ;调用延时子程序MOV P1,#8 ;点亮二极管D2LCALL DELAY ;调用延时子程序MOV P1,#10H ;点亮二极管D2LCALL DELAY ;调用延时子程序MOV P1,#20H ;点亮二极管D2LCALL DELAY ;调用延时子程序MOV P1,#40H ;点亮二极管D2LCALL DELAY ;调用延时子程序MOV P1,#80H ;点亮二极管D2LCALL DELAY ;调用延时子程序SJMP STAR ;循环DELAY: MOV R0,#5 ;延时子程序NEXT1: MOV R1,#200 ;延时时间约为0.2sNEXT2: MOV R2,#200NEXT3: NOPNOPNOPDJNZ R2,NEXT3DJNZ R1,NEXT2DJNZ R0,NEXT1RET ;返回主程序END创建新的源文件后,将程序输入源文件中,保存后选择全部编译,经软件检查程序无语法错误后即可单机运行按钮开始运行程序。
实验十一P1口及外部中断
一、实验目的
1.掌握利用MCS-51单片机P1口实现I/O的三种传送方式。
2.掌握MCS-51单片机外部中断源的原理和编程方法。
3.了解MCS-51单片机处理外部中断的全过程。
4.弄懂外部中断触发方式的选择。
二、实验要求
熟练掌握结合DP-51PROC单片机综合仿真实验仪和Kiel C51 集成开发环境进行仿真调试。
三、实验内容及实验电路
1、P1口无条件输出实验,电路图图3-1所示。
图3-1 P1口无条件输出
实验参考程序1:8个LED 灯同时闪亮。
ORG 8000H
LJMP Main
ORG 80F0H
Main:
MOV R7, #0
Loop:
MOV R6, #0
DJNZ R6, $
DJNZ R6, $
DJNZ R6, $
DJNZ R6, $
DJNZ R7, Loop
CPL P1.0 ; P 1 .0 取反
CPL P1.1 ; P 1 .1 取反
CPL P1.2 ; P 1 .2 取反
CPL P1.3 ; P 1 .3 取反
CPL P1.4 ; P 1 .4 取反
CPL P1.5 ; P 1 .5 取反
CPL P1.6 ; P 1 .6 取反
CPL P1.7 ; P 1 .7 取反
SJMP Main
END
2、P1口条件输出实验,电路如图3-2所示。
图3-2 P1口条件输出
实验参考程序2:
ORG 8000H
LJMP Main
ORG 8100H
Main:
JB P1.7,SETLED
CLRLED:
CLR P1.0
CLR P1.1
CLR P1.2
CLR P1.3
CLR P1.4
CLR P1.5
CLR P1.6
SJMP Main
SETLED:
SETB P1.0
SETB P1.1
SETB P1.2
SETB P1.3
SETB P1.4
SETB P1.5
SETB P1.6
SJMP Main
END
3、P1口中断输入/输出实验,电路如图3-3所示。
图3-2 P1口中断输入/输出
实验参考程序3:
ORG 8000H
LJMP Main
ORG 8003H
LJMP INT0SV
Main:
MOV SP, #5FH
SETB EA
SETB IT0
SETB EX0
SJMP $
INT0SV:
MOV P1,#0FFH
MOV A,P1
SWAP A
MOV P1,A
RETI
END
四、实验步骤
实验内容1:P1口无条件输出实验
1.断开DP-51PROC实验仪的电源,按图3-1接线,使用排线将A2区的J61接口与
D1区的J52接口相连。
2.接通DP-51PROC实验仪的电源,将TKSMonitor51 仿真器上的工作模式选择开关
拨到RUN处。
3.建立名为P1_wtjio工程,按实验参考程序1编辑新文件,文件名为:p1_wtj.asm。
然后编译,无误转换为调试方式,运行程序,观察并记录运行结果。
同时闪亮
实验内容2:P1口条件输出实验
1、断开DP-51PROC实验仪的电源,按图3-2接线,使用排线将A2区的J61接口与
D1区的J52接口相连,使用导线把A2区的P1.7与D1区J54的SW1相连。
2、接通DP-51PROC实验仪的电源,将TKSMonitor51 仿真器上的工作模式选择开关
拨到RUN处。
3、建立名为P1_tjio工程,按实验参考程序2编辑新文件,文件名为:p1_tj.asm。
然
后编译,无误转换为调试方式,预先将SW1置1或置0,运行程序,观察并记录
运行结果。
底色
实验内容3:P1口中断方式输入/输出实验
1、断开DP-51PROC实验仪的电源,按图3-3接线,使用导线将A2区的P10、P11、
P12分别与D1区的SW1、SW2 、SW3相连,使用导线把A2区INT0与D1区
J53的KEY1(图3-3中的K1即为D1区的K1)相连。
2、接通DP-51PROC实验仪的电源,将TKSMonitor51 仿真器上的工作模式选择开关
拨到RUN处。
3、建立名为P1_zdio工程,按实验参考程序3编辑新文件,文件名为:p1_zd.asm。
然后编译,无误转换为调试方式,预先置好开关的状态,运行程序,观察中断的执行过程,并记录运行结果。
五、思考题
1如何将P1口无条件输出的实验,修改为将8个L ED发光二极管向左或向右循环点亮?
ORG 0000H
LJMP MAIN
ORG 000BH
MAIN:CLR P0.0
ACALL DEL
SETB P0.0
CLR P0.1
ACALL DEL
SETB P0.1
CLR P0.2
ACALL DEL
SETB P0.2
CLR P0.3
ACALL DEL
SETB P0.3
CLR P0.4
ACALL DEL
SETB P0.4
CLR P0.5
ACALL DEL
SETB P0.5
CLR P0.6
ACALL DEL
SETB P0.6
CLR P0.7
ACALL DEL
SETB P0.7
SJMP MAIN
DEL: MOV R7,#0FFH
DEL1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R7,DEL1
RET
END
2如何利用I N T0中断使P1口控制8个L E D发光二极管向左或向右循环点亮?电路如何修改?程序如何修改?
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0SV
MAIN: MOV SP,#5FH
SETB EA
SETB IT0
SETB EX0
SJMP $
INT0SV: MOV SP,#5FH
CLR EA
PUSH ACC
PUSH 01H
SETB EA
MOV P1,#0FFH MOV R1,#0AH LN: CLR P0.0
ACALL DEL
SETB P0.0
CLR P0.1
ACALL DEL
SETB P0.1
CLR P0.2
ACALL DEL
SETB P0.2
CLR P0.3
ACALL DEL
SETB P0.3
CLR P0.4
ACALL DEL
SETB P0.4
CLR P0.5
ACALL DEL
SETB P0.5
CLR P0.6
ACALL DEL
SETB P0.6
CLR P0.7
ACALL DEL
SETB P0.7
DJNZ R1,LN
CLR EA
POP 01H
POP ACC
SETB EA
RETI
DEL: MOV R7,#0FFH DEL1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$
DJNZ R6,$ DJNZ R7,DEL1 RET
END。