当前位置: 首页 > article >正文

【单片机原理及应用】实验:数码管的中断控制

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

 六、成果文件提取链接


一、实验目的

 掌握外部中断的工作原理,学习中断编程与程序调试方法。


二、实验内容

【参照图表】

(1)创建一个包含80C51固件,采用Keil for 8051编译器的新项目;

(2)仿照图A.5和表A.4绘制电路原理图;

(3)编写C51源程序,要求采用中断方法实现如下功能:程序启动后,D1处于熄灯、LED1处于黑屏状态;单击K1,可使D1亮灯状态反转一次;单击K2,可使LED1显示值加1,并按十六进制数显示,达到F后重新从1开始。

(4)完成源程序编译和动态调试,实现实验4的控制功能要求;

(6)完成实验4报告的撰写。


三、实验步骤

(1)创建一个包含80C51固件,采用Keil for 8051编译器的新项目,创建的项目如下图所示;

(2)仿照图A.5和表A.4绘制电路原理图;

单击“新建工程”选项,在“名称”文本框内输入新建项目的名称,然后在“路径”文本框内输入新项目的文件保存路径,成功新建了一个不含单片机固件和PCB布板的新项目,根据图示中所给出的元件进行选择,输入元件名称,对照元件样式进行选择,添加至画布中,将其全部放置在图纸上。如图所示。

然后按照实验要求的图表进行连线可以得到下图所示的界面。关于总线的连接方法:鼠标左键单击即可,在图中需要的位置,鼠标左键单击一下。如需停止,鼠标左键双击,鼠标左键单击设置断点。

绘制完毕的线路图如下所示:

(3)编写C51源程序,要求采用中断方法实现如下功能:程序启动后,D1处于熄灯、LED1处于黑屏状态;单击K1,可使D1亮灯状态反转一次;单击K2,可使LED1显示值加1,并按十六进制数显示,达到F后重新从1开始。

void main(){ 
	IT0=IT1=EX0=EX1=EA=1;
      // 设置中断相关控制位:  
      // IT0: 外部中断0的触发方式(1表示下降沿触发)  
      // IT1: 外部中断1的触发方式(1表示下降沿触发)  
      // EX0: 允许外部中断0  
      // EX1: 允许外部中断1  
      // EA: 全局中断允许  
	P2 = 0;
	while(1);  // 无限循环,让程序一直运行 
}

(4)完成源程序编译和动态调试,实现实验4的控制功能要求;

程序启动后,D1处于熄灯、LED1处于黑屏状态,如下图所示

单击K1,可使D1亮灯状态反转一次,如下图所示

单击K2,可使LED1显示值加1,并按十六进制数显示,如下图所示,从1开始。

不断点击K2,LED值可以不断加一,下图为b

达到F后重新从1开始。以下为f,继续按下K2后

达到F后重新从1开始,如下图所示,LED上面的值显示为1


四、记录与处理

程序启动后,D1处于熄灯、LED1处于黑屏状态,如下图所示

单击K1,可使D1亮灯状态反转一次,如下图所示

单击K2,可使LED1显示值加1,并按十六进制数显示,如下图所示,从1开始。

不断点击K2,LED值可以不断加一,下图为b

达到F后重新从1开始。以下为f,继续按下K2后

达到F后重新从1开始,如下图所示,LED上面的值显示为1


五、思考

1.本实验让我更深一步理解了中断的概念:中断使得单片机具有对外部或内部随机发生的时间实时处理的能力,是单片机最重要的功能之一。51单片机内部有一共5个中断源。4种中断控制:中断触发方式;中断允许控制;中断请求标志;中断优先级控制;

2.通过本次实验,我还成功掌握了外部中断的工作原理和中断编程方法。我不仅在理论上对中断有了更深入的了解,还在实际操作中学会了如何运用中断来实现特定的功能。IT0: 外部中断0的触发方式(1表示下降沿触发),IT1: 外部中断1的触发方式(1表示下降沿触发),EX0: 允许外部中断0,EX1: 允许外部中断1,EA: 全局中断允许。

3.同时我也认识到了实验在学习过程中的重要性。通过实验,我可以将理论知识与实际操作相结合,更好地理解和掌握知识,实验还培养了我的动手能力、思考能力和解决问题的能力,加深了对C51编程和Proteus x8软件的理解,还学会了如何运用理论知识解决实际问题,通过反复调试和网上查阅相关资料,最终解决了问题,实现了目标。

 
六、成果文件提取链接

链接:https://pan.baidu.com/s/1vih-osSS5LE-I0vk-Imugg?pwd=ugmx 
提取码:ugmx  


http://www.kler.cn/a/284346.html

相关文章:

  • ES6字符串的新增方法
  • 卷积、频域乘积和矩阵向量乘积三种形式之间的等价关系与转换
  • catchadmin-webman 宝塔 部署
  • 深入探索离散 Hopfield 神经网络
  • 基于OpenCV的自制Python访客识别程序
  • 封装一个省市区的筛选组件
  • customRef 与 ref
  • docker仓库的工作原理
  • Apache CloudStack Official Document 翻译节选(十)
  • 零基础转行学网络安全怎么样?
  • sheng的学习笔记-AI-基于分歧的方法
  • 高性价比百元学生党蓝牙耳机怎么选?2024四款年度耳机推荐揭秘!
  • redis作为缓存,mysql的数据如何与redis同步
  • 力扣52-最大子序和(java详细题解)
  • AI产品经理系列:如何应对AI时代?
  • 设置 Nginx、MySQL 日志轮询
  • Java-树形图工具类TreeUtil
  • 网通产品硬件设计工程师:百兆超薄网络隔离变压器您知道的有多少呢?
  • 【PyCharm激活码】2024年最新pycharm专业版激活码+安装教程!
  • 【Android】使用 ADB 查看 Android 设备的 CPU 使用率
  • 项目技巧二
  • R语言股价跳跃点识别:隐马尔可夫hmm和 GARCH-Jump对sp500金融时间序列分析
  • “添加”业务功能开发
  • Qt 杨帆起航
  • 【分布式定时任务】XXL-JOB_2.4.1部署与实战
  • 解决Element-ui中Table表格里的show-overflow-tooltip不兼容safari浏览器问题