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

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

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 熟悉中断和定时/计数器工作原理,掌握定时器的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  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 24年7月-8月工作笔记整理(前端)
  • 惠中科技光伏清洗剂:科技创新引领绿色清洁新风尚
  • <数据集>车辆识别数据集<目标检测>
  • 详细阐述Android开发中常见的报错类型
  • .NetCore发布到IIS
  • MySQL高可用性实践指南
  • Efficient LoFTR论文阅读(特征匹配)
  • RabbitMQ练习(Routing)
  • graphviz安装仍报错 | 路径问题 | 已解决
  • 前端项目运行汇总
  • mysql优化升级
  • C++学习/复习补充记录 --- 图论(深搜,广搜)
  • uniapp使用tki-qrcode插件生成二维码,并且可以分享给微信好友
  • 千云物流 -低代码平台MySQL在linux安装
  • 深入理解计算机系统阅读笔记-第三章
  • Google 是如何开发 Web 框架的
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • __proto__ 和 prototype的关系
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • CSS实用技巧干货
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • iOS 颜色设置看我就够了
  • JavaScript对象详解
  • js 实现textarea输入字数提示
  • JS题目及答案整理
  • quasar-framework cnodejs社区
  • Redis字符串类型内部编码剖析
  • vue 配置sass、scss全局变量
  • 聚簇索引和非聚簇索引
  • 少走弯路,给Java 1~5 年程序员的建议
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • scrapy中间件源码分析及常用中间件大全
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #QT(TCP网络编程-服务端)
  • #vue3 实现前端下载excel文件模板功能
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (solr系列:一)使用tomcat部署solr服务
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (每日一问)基础知识:堆与栈的区别
  • (十六)Flask之蓝图
  • (算法)区间调度问题
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载