单片机课程设计-单一外中断的应用

本文详细介绍了基于51单片机的单一外中断应用,涉及中断原理、系统设计、硬件连接、软件编程和仿真测试,展示了如何通过外部中断控制LED灯的交替闪烁,强调了中断在嵌入式系统中的重要性及其在培养实践能力和理论理解方面的价值。
摘要由CSDN通过智能技术生成

需要的友友们自取哦!点个小心心再走吧

基于51单片机的单一外中断的应用

1绪论

随着现代电子技术的飞速发展,中断系统在各个领域得到了广泛应用。而外中断作为一种常见的硬件中断方式,广泛用于在单片机中实现对外部事件的响应。

1.1研究现状

随着计算机科学和技术的不断发展,计算机课程设计在高等教育中扮演着重要角色。其中,涉及到中断的应用课程设计是培养学生对计算机系统原理、操作系统和嵌入式系统等方面的综合能力的重要环节。

单一外中断是指来自外部设备的中断信号,它可以触发处理器暂停当前正在执行的任务,并转而执行与中断相关的代码。单一外中断的应用广泛存在于实际的计算机系统中,例如设备驱动程序、实时控制系统、嵌入式系统等。因此,针对单一外中断的应用课程设计具有一定的研究价值和实践意义。

1.2研究目的和意义

(1)掌握中断原理的应用

中断是计算机处理器中的重要概念,它是一种异步事件,可以打断正在执行的程序,使处理器转而执行其他代码。具有以下功能:

编写高效的设备驱动程序:设备驱动程序通常需要与硬件进行交互,而硬件通常是通过中断方式来通知操作系统和应用程序的。因此,了解中断原理可以帮助我们编写高效的设备驱动程序,提高系统的响应速度和稳定性。

实现多任务系统:中断可以使处理器在执行一个任务时暂停并转而执行另一个任务,从而实现多任务系统。通过合理地利用中断,我们可以实现任务间的切换、共享资源的管理等功能,提高系统的效率和可靠性。

处理异常情况:在程序运行过程中,可能会出现各种异常情况,例如除零、内存访问错误等。这些异常情况可以通过中断来处理,使程序能够及时地捕获和处理异常,从而避免系统崩溃或数据丢失等问题。

(2)熟悉proteus仿真软件的使用方法

安装和启动、创建工程、添加电路元件、连接元件、设置元件参数、设置信号源、设置仿真器、运行仿真、查看仿真结果、优化和调试、PCB布局。

(3)熟悉keil4软件的使用方法

安装和启动、创建工程、添加源文件、配置目标设备、编写代码、编译代码、调试程序、仿真和模拟、下载程序、优化和调试。

(4)意义

通过对单一外中断的应用课程设计的研究,可以培养学生的系统设计能力、编程能力和解决问题的能力。同时,也有助于学生深入理解计算机系统原理和操作系统的相关知识,并为他们未来从事相关领域的工作打下坚实的基础。此外,还可以促进教学方法的创新和教学资源的开发,提升计算机课程设计的教学质量和效果。

2系统整体设计

按一次按钮开关K1,引脚接地,产生一个外部中断0的中断请求,在中断服务程序中,让P1口低4位的LED和高4位的LED交替闪烁1次。

单片机的中断是由单片机片内的中断系统来实现的。当中断请求源(简称中断源)发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断服务程序处理中断服务请求,处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。

2.1中断系统的原理

(1)中断请求的触发

在单一外中断的应用中,中断请求是由外部设备触发的。当外部设备需要向CPU发送一个中断请求时,会通过中断信号传递给CPU。

(2)中断向量

CPU在收到中断信号后,会将中断信号映射为一个中断向量。中断向量是一个对应于中断类型的唯一标识符,用于指示处理该中断请求的中断处理程序的入口地址。

(3)中断处理程序

CPU根据中断向量找打对应的中断处理程序的入口地址,并跳转到该地址执行中断处理程序。中断处理程序是一段特定的代码,负责处理特定类型的中断请求。

(4)中断处理过程

中断处理程序执行时,会根据中断的类型进行相应的处理操作。这些操作可能包括保存CPU的状态,执行特定的操作,处理外部设备的数据,恢复CPU的状态等。

(5)中断处理结束

当中断处理程序执行完毕后,CPU会返回到被中断的程序继续执行。这个时候,CPU的状态会恢复到中断前的状态。

单一外中断是一种有效的处理外部设备中断的方法。其应用原理包括中断请求触发、中断向量映射、中断处理程序执行和中断处理结束。通过合理地利用单一外中断,在计算机系统中能够实现外部设备的及时响应和处理,提高系统的处理效率。

2.2功能框图

图2-1 系统组成结构图

在单一外中断应用的控制系统中,通过控制开关K1的状态,改变LED灯的状态,通过AT89C51单片机实现LED灯亮暗和闪烁的变化效果。

3系统硬件设计

选用AT89C51芯片为主控芯片与外围电路构成单片机最小系统。外部触发源:需要确定其外部触发源,此系统硬件的外部触发源是K1,通过对K1的按下与否,控制其是否产生中断,然后将是否中断显示于LED的亮暗或者交替闪烁。根据其K1发出的命令,执行LED灯的闪烁亮暗结果。

3.1单片机最小系统

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CM0S8位微处理器。AT89C51单片机共有40个引脚,每个引脚都有特定的功能和用途。这些引脚可以分为四个主要的功能类别:供电和地线引脚、I/O引脚、定时器/计数器引脚和特殊功能引脚。

供电和地线引脚:其中,引脚40(VCC)和引脚20(GND)分别用于单片机的供电和接地。正确连接电源和地线是使用AT89C51的前提条件。

I/O引脚:AT89C51具有32个I/O引脚,用于与外部设备进行数据交互。这些引脚可以配置为输入或输出,根据具体应用的需要进行设置。

定时器/计数器引脚:AT89C51内置了两个定时器/计数器,分别为T0和T1.这些引脚用于测量时间间隔、计数脉冲等应用。

特殊功能引脚:AT89C51还具有一些特殊功能引脚,如复位引脚(RST)、中断引脚(INT0和INT1)和串行通信引脚(RXD和TXD)等。

图3-1 单片机最小系统电路图

利用AT89C51型号的单片机以及八个LED灯,可以选择相同颜色或者不同颜色的LED灯,九个电阻以及一个开关K1实现整个电路图的连接。连接完成在将keil文件编译后生成的.hex文件插入到单片机的芯片上,运行电路图,观察LED灯的显示方式是否符合题目的要求。

3.2中断模块

图3-2 中断控制模块电路图

K1为整个中断系统的控制按钮,起初K1处于不中断的状态,LED灯保持全亮,随后,点击K1,中断程序启动,LED灯显示中断系统的效果。

3.3显示模块

图3-3 中断显示模块电路图

程序启动运行时,控制P1口上的8只LED灯全亮,按下开关K1,低4位(黄灯)与高4位(绿灯)交替闪烁1次,然后P1口上的8只LED再次全亮。

4系统软件设计

系统采用AT89C51单片机,用C语言来实现程序的编写。采用了模块化结构的设计方法,通过主程序即可运行。

4.1软件设计流程图

图4-1 中断系统的软件设计流程图

在仿真图中,我们要初始化P1为输出,用于控制LED,初始化P3.2引脚为输入,用于接收开关K1的状态(将P1口设置为全亮状态)。

判断开关K1的状态,当按下开关时,将P1口的低4位设置为高电平,高4位设置为低电平,实现交替闪烁,延时一段时间,控制闪烁速率,将P1口的低4位设置为低电平,实现交替闪烁,延时一段时间,控制闪烁的速率,将P1设置为全亮状态;

4.2开发环境

KeiluVision5是一个集成开发环境,用于对嵌入式系统中的微控制器进行编程。它是一个软件套件,它包括源代码编辑器、项目经理、调试器以及微控制器的开发、调试和编程所需要的其他工具。KeiluVision5IDE主要用于对基于ARM架构的微控制器进行编程。

5系统仿真实现

系统的仿真测试可以验证验证系统的设计是否符合预期的功能和性能要求。通过在仿真环境中模拟系统的运行情况,可以评估系统的各项指标,如响应时间和可靠性灯,从而确认系统设计的合理性。发现和解决潜在的问题,从而降低开发成本和风险。通过再仿真环境中模拟各种场景和情况,可以提前发现系统的弱点和不足之处,并采取相应的改进措施,避免在实际部署中出现问题。

图5-1 原始电路仿真图

使用AT89C51单片机型号,初始化P1口为输出,用于控制LED,初始化P3.2引脚为输入,用于接收开关K1的状态(将P1口设置为全亮状态)。

图5-2 运行时的状态

点击运行开关,我们会发现8个LED灯全部被点亮,在设置电阻时一定要注意电阻不能设置的过大。

图5-3 按下K1时第一次改变结果

图5-4 按下K1时第二次改变的结果

图5-5 进入第二次循环

当按下K1开关时,第一次改变发生,LED灯D1、D2、D3、D4保持点亮状态,D5、D6、D7、D8保持熄灭状态,也就是触发了中断,随后第二次改变发生,LED灯D1、D2、D3、D4保持熄灭,D5、D6、D7、D8保持点亮状态,也就是中断再次发生,随后再次进入第二次循环,LED灯再次全部亮起。

6结果分析和体会

6.1结果分析

按下K1时中断成功实现,高4位第4位灯交替闪烁1次,随后LED灯再次全亮,进入第二次循环。

经过实验测试,外部中断功能正常,可以正确地响应外部事件。在设置外部中断触发的条件时,需要根据具体的引用场景进行调整,比如在本题目中要求只循环一次,以确保中断的触发条件准确可靠。同时,中断服务程序的编写也需要注意效率和稳定性,以提高系统的性能和可靠性。

6.2体会

通过本次实验,我对单一外中断系统的应用有了更深入的了解。中断系统是单片机开发时一种常用的功能,可以实现对外部事件的实时响应,提高系统的交互性和可靠性。在本次课程设计报告中,我学会了如何初始化外部中断模块,设置中断的触发条件,并编写了中断的服务程序。在实际应用中,需要根据具体的需求和硬件环境,灵活的使用外部中断的功能,以满足系统的要求。

将理论知识转化为实践,提高自己的实践操作能力,提升自己解决问题的能力,要制定自己的自我管理和实践规划。

附录

#include <reg51.h>

sbit k1=P3^2;//定义k1引脚,连接按键

void delay(unsigned int a)

{

while(a--);//空延时函数

}

void main()

{

EA=1;//允许中断

EX0=1;//外部中断0使能

IT0=0;//设置外部中断0为低电平触发

P1=0x00;//初始化P1口输出为低电平

}

void ex_interrupt() interrupt 0 //外部中断0的中断处理函数

{     

delay(10);//延时一段时间以消除抖动

if(k1==0)//检测按下K1键

   {

    while(1)

{                                     

P1=0x0f;//设置P1口的高4位为低电平,低4位为高电平

delay(30000);//延时一段时间

P1=0xf0;//设置P1口的高4位为高电平,低4位为低电平

delay(30000);//延时一段时间

P1=0x00;设置P1口输出全低电平

delay(30000);//延时一段时间

}

}

}

  • 44
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值