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

【单片机原理及应用】实验:数字秒表显示器

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 熟悉中断和定时/计数器工作原理,掌握定时器的C51编程与调试方法。


二、实验内容

参照图表

图A.6

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

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

(3)编写C51源程序,要求实现如下功能:数码管的初始显示值为“00”;当1s产生时,秒计数器加1;秒计数到50+*(*为学号最后1位)时清0,并从“00”重新开始,如此周而复始进行。

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

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


三、实验步骤

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

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

图A.6

根据图示中所给出的元件进行选择,输入元件名称,对照元件样式进行选择,添加至画布中,将其全部放置在图纸上。如图所示。

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

在string中填写net=P0.#(#表示从0开始,每点击以下自动加一),进行自动赋值。

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

(3)编写C51源程序,数码管的初始显示值为“00”;当1s产生时,秒计数器加1;秒计数到50+*(*为学号最后1位)时清0,并从“00”重新开始,如此周而复始进行。我的学号最后一位为4,所以到54清零。

void time0() interrupt 1			//使用T0中断
{ 
	TR0=0;	      				 //关闭中断
	TH0=0x3c;
	TL0=0xb0;				//初值重载
	t++;
	if(t==20)					//若中断20次,相当于1秒
	{
		t=0;
		second++;	
	}
	if(second==54) 			//秒计数器清零
	{
		second=0;
	}
	P0=table[second/10];		//刷新输出
	P2=table[second%10];
	TR0=1;					//开中断
}

void main()					//主函数
{
	P0=table[second/10];		//输出显示字模
	P2=table[second%10];
	TMOD=0x01;				 //定义中断模式
	TH0=0x3c;
	TL0=0xb0;				 //加载溢出初值
	EA=1;					//开中断T0
	ET0=1;
	TR0=1;
	while(1);					//是循环,等待中断
}

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

秒计数到54时清0,并从“00”重新开始,如此周而复始进行


四、记录与处理

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

秒计数到54时清0,并从“00”重新开始,如此周而复始进行


五、思考

1. 中断是CPU对系统发生的某个事件作出的一种反应。这个引起中断的事件被称为中断源。当中断源向CPU提出处理请求时,这个请求就被称为中断请求。当CPU响应这个中断请求时,它会暂停当前正在执行的程序(这个暂停点被称为断点),转而处理中断源所指定的任务。这个过程称为中断响应。

2.定时/计数器是一种用来计量时间间隔的设备,其工作原理主要是通过内部的振荡器或外部的时钟源来提供时间基准。在每个时间单位(如毫秒、微秒等)经过时,计数器会自动加1。

定时/计数器通常包含一个或多个寄存器,其中一个寄存器用于存储当前的计数值,而其他寄存器则用于存储控制信息,如计数模式、计数方向、计数起始值等。当计数器的值达到设定的阈值时,它会触发一个中断信号或产生一个输出信号,用于控制其他设备或执行特定的操作。

3.通过本次实验,我深刻理解了中断和定时/计数器在嵌入式系统中的应用。在编写和调试C51源程序的过程中,我不仅掌握了定时器中断的使用方法和数码管的驱动方式,还提高了自己的编程能力和解决问题的能力。在未来的学习和工作中,我将继续努力提高自己的技能水平和实践能力。


六、成果文件提取链接

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


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

相关文章:

  • 机器学习基础02_特征工程
  • Java 堆内存管理详解:`-Xms` 和 `-Xmx` 参数的使用与默认内存设置
  • 彻底理解ARXML中的PDU
  • 第二节 OSI-物理层
  • RAFT: Recurrent All-Pairs Field Transforms for Optical Flow用于光流估计的循环全对场变换
  • NVIDIA NIM 简介
  • ubuntu录屏解决ubuntu下无法播放MP4格式文件的方法
  • 【栈】| 力扣高频题: 基本计算器二
  • 忘掉 Siri 吧:苹果可能会推出拥有自己AI“个性”的机器人设备|TodayAI
  • linux信号处理机制基础(下)
  • 【 WPF 中常用的 `Effect` 类的介绍、使用示例和适用场景】
  • Qt Creator 配置pcl1.14.1
  • 物理机安装Centos后无法连接网络(网线网络)怎么办?-呕心沥血总结版-超简单
  • CSRF漏洞的预防
  • CMake基本语法大全
  • 2024.08.30
  • JVM面试(一)什么是虚拟机?什么是class文件?
  • ASP.NET Core6.0-wwwroot文件夹无法访问解决方法
  • docker基本使用及常见问题
  • github怎么删除项目
  • 使用dom4j.jar包读取xml内的标签等信息
  • 高级java每日一道面试题-2024年8月30日-基础篇-你对泛型了解多少?
  • 私人诊所|基于SprinBoot+vue的私人诊所管理系统(源码+数据库+文档)
  • STM32——看门狗(独立/窗口)
  • python删除一个函数 ast
  • 如何将FMEA整合到组织的质量管理体系中?