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

2024-08-30 23:36

本文主要是介绍【单片机原理及应用】实验:数字秒表显示器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 熟悉中断和定时/计数器工作原理,掌握定时器的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;					//开中断T0ET0=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.chinasem.cn/article/1122255

相关文章

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法