【单片机原理及应用】实验:LED循环控制

news2024/11/15 8:38:35

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 熟悉Proteus x8原理图与C51程序的联合仿真调试方法,掌握C51延时函数和循环控制的方法


二、实验内容

【参照图表】

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

(2)仿照图A.4和表A.3绘制电路原理图(片选电路忽略);

(3)编写C51源程序,要求实现如下功能:8只发光二极管做循环点亮控制,且亮灯顺序为D1→D2→D3→…→D8→D7→…→D1,无限循环,两次亮灯的时间间隔约为0.5s。

(4)绘制程序流程图;

(5)进行源程序的编译和动态调试,实现LED灯循环控制功能;

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


三、实验步骤

1.先按照实验要求创建一个包含80C51固件,采用Keil for 8051编译器的新项目,创建的项目如下图所示。

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

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

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

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

3.编写C51源程序,要求实现如下功能:8只发光二极管做循环点亮控制,且亮灯顺序为D1→D2→D3→…→D8→D7→…→D1,无限循环,两次亮灯的时间间隔约为0.5s,此处采用数组的方式实现功能。

   根据其原理,可以设计出如下代码:

void main(){ 			 			
	unsigned char j;           			//定义LED数组
	unsigned char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
	while(1){ 						
	     for(j=0;j<=7;j++){     			//由上向下循环控制
			P0=led[j];
			delay(50);			//延时50ms
	     }
		 for(j=6;j>0;j--){   			//由下向上循环控制
			P0=led[j];
			delay(50);			//延时50ms
	    }
	}
}

4.根据其运行过程进行绘制程序流程图;

   实验电路图中的8只LED灯并接于P0口,且接有上拉电阻。时钟和复位电路与实验1相同。

软件编程原理为:首先使P0.0←1,其余端口←0,这样可使D1灯亮,其余灯灭;软件延时0.5s后,使P0值整体左移1位,得到P0.1←1,其余端口←0,这样可使D2灯亮其余灯灭;照此思路P0整体左移7次,再右移7次,如此无限往复即可实现上述功能。

为了产生软件延时0.5秒的效果,可用实参50调用有参延时函数(内循环1000步)的办法近似实现,即总延时循环为50000步。

5.进行源程序的编译和动态调试,实现LED灯循环控制功能;

程序编译完毕之后, 8只发光二极管做循环点亮控制,亮灯顺序为D1→D2→D3→…→D8→D7→…→D1,无限循环,两次亮灯的时间间隔约为0.5s,实现了源程序的预期结果。如图所示。


四、记录与处理

进行源程序的编译和动态调试,实现LED灯循环控制功能;

程序编译完毕之后, 8只发光二极管做循环点亮控制,亮灯顺序为D1→D2→D3→…→D8→D7→…→D1,无限循环,两次亮灯的时间间隔约为0.5s,实现了源程序的预期结果。如图所示。


五、思考

1.在实验过程中,我首先根据实验要求,在Proteus x8中创建了包含80C51固件的新项目,绘制了实验所需的电路原理图,然后我根据实验要求,编写了C51源程序,实现了LED灯的循环点亮功能。程序中,我通过控制P0口各个引脚的电平状态,使得LED灯能够按照预定的顺序循环点亮。

2.同时,我使用了延时函数来控制两次亮灯之间的时间间隔,使其达到约0.5秒的效果,实现对LED灯的循环点亮控制,在此过程中,我熟悉和掌握相关的延时函数与循环控制方法。

3.此次实验让我加深了对C51编程和Proteus x8软件的理解,理解了控制LED灯循环编程里面的延时函数delay()的应用,同时还使用了数组来进行LED循环控制,让我进一步提高了自己的编程能力。

4. 通过这次LED循环控制实验,我深刻体会到了理论知识与实践操作相结合的重要性。在实验中,我不仅加深了对C51编程和Proteus x8软件的理解,还学会了如何运用理论知识解决实际问题,通过反复调试和网上查阅相关资料,最终解决了问题,实现了目标。


六、成果文件提取链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

晚宴扫码查询桌号

在现代社交活动中&#xff0c;晚宴的组织和管理越来越依赖于技术手段。为了提高晚宴的效率和参与者的体验&#xff0c;我们可以通过一个简单的扫码查询系统来实现快速查找桌号和座位号。以下是详细步骤&#xff1a; 1. 电脑端上传查询信息 访问云分组官网。 使用微信扫码登录…

AcrelEMS3.0企业微电网智慧能源平台的设计与应用-安科瑞 蒋静

1系统概述 1.1 概述 2020年9月&#xff0c;我国明确提出2030年“碳达峰”与2060年“碳中和”目标。2022年6月&#xff0c;科技部、国家发展改革委、工业和信息化部、生态环境部、住房城乡建设部、交通运输部、中科院、工程院、国家能源局共同研究制定了《科技支撑碳达峰碳中和…

netty编程之实现断点续传(分片发送)功能

写在前面 在我们使用各种网盘的时候&#xff0c;可以随时的暂停上传&#xff0c;然后继续上传&#xff0c;这其实就是断点续传的功能&#xff0c;本文就看下在netty中如何实现断点续传的功能。 1&#xff1a;核心点介绍 1.1&#xff1a;RandomAccessFile RandomAccessFile类…

汽车信息安全--MCU Flash读保护真的没有后门吗?

目录 1.修bug修出的灵感 2.串行编程接口协议 3.毛刺攻击 4.RH850 串行编程模式 5.小结 1.修bug修出的灵感 ECU量产后通过密码控制来防止通过Debug口读取Flash的程序和数据。 这是应该是共识了&#xff0c;但是这样做真的就万无一失了吗&#xff1f; 最近解决了个问题&…

Linux操作系统在虚拟机VM上的安装【CentOS版本】

目录 准备工作 "CPU虚拟化"的方法 VMware的安装 Linux镜像文件的下载 开始安装 声明 新建虚拟机 安装CentOS7.6 配置Linux(CentOS7.6)操作系统 配置分区【学习者可以直接点击自动配置分区&#xff0c;不过还是建议学习一下手动分区】 分区原则 添加分区 …

适配制造业的设备管理系统有哪些?本文给你答案!

本文将带大家盘点10款设备管理系统&#xff0c;供企业选型参考。 外包单位数量众多&#xff0c;但难以对他们进行统一协同管理&#xff1f;危险作业的作业申请、作业审批使用线下纸质版&#xff0c;不仅效率低还管控力不足&#xff1f;相关部门想监测、管理设备安全风险&#x…

AcWing898. 数字三角形

线性DP 董晓老师的讲解是从下标0开始算的&#xff0c;其实我们从1开始也可以&#xff0c;我感觉这里从1开始更好理解。是从下往上计算的。j负责列的计算&#xff0c;往上计算时逐步收窄横向的范围&#xff0c;i是纵向的从下往上算&#xff0c; 下面是内存布局 下面是逻辑上的…

【网络安全】打开这份“开学礼” 谨防骗子“冲业绩”

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s…

今年读过最绝的一本书!《自然语言处理原理、方法与应用》,几乎把自然语言处理讲透了【附PDF】

书籍内容介绍&#xff1a; 本书系统阐述自然语言处理基础知识&#xff0c;以及自然语言处理高级模型应用等高级知识。 全书共11章&#xff1a;第1&#xff5e;5章为自然语言处理的基础知识&#xff0c;第6&#xff5e;11章将自然语言处理知识应用于实战。书中主要内容包括预训…

99% 的人都不知道,哪种 Python 循环最快?

大家好&#xff0c;在Python编程中&#xff0c;循环是我们经常使用的工具&#xff0c;用来重复执行一些代码块。我们通常会在 for 循环、while 循环和列表推导式中选择一种来解决问题。但你是否曾想过&#xff1a;哪种循环效率最高&#xff1f; 今天&#xff0c;我们就来一次轻…

Vue -- 总结 02

Vue脚手架 安装Vue脚手架&#xff1a; 在cmd中安装(输入):npm install -g vue/cli 如果下载慢或下载不了&#xff0c;可以安装(cmd输入)淘宝镜像:npm config set registry https://registry.npmmirror.com 用命令创建Vue项目 在要创建的vue项目的文件夹里输入 cmd 回车 创…

CSS 2D3D转换与动画

CSS 2D&3D转换与动画 字体图标 字体图标展示的是图标&#xff0c;本质是字体 处理简单的&#xff0c;颜色单一的图片&#xff0c;使用字体图标 使用&#xff1a; 下载&#xff1a;https://www.iconfont.cn/ 引入字体图标样式表 对应标签上classz增加对应的类名&…

使用pytest的 reporting特性来生成报告

特性 1.HTML 报告&#xff1a;使用 pytest-html 插件&#xff0c;你可以生成 HTML 格式的测试报告。只需在项目的 pytest.ini 文件中添加以下内容&#xff1a; [pytest] addopts --htmlreport.html然后&#xff0c;在运行 pytest 时&#xff0c;将会生成一个名为 report.htm…

Serilog文档翻译系列(二) - 设置AspNetCore应用程序

Serilog 日志记录适用于 ASP.NET Core。此包将 ASP.NET Core 的日志消息通过 Serilog 进行路由&#xff0c;使你可以将有关 ASP.NET 内部操作的信息写入与应用程序事件相同的 Serilog 接收器中。 安装并配置了 Serilog.AspNetCore 后&#xff0c;你可以直接通过 Serilog 或ASP…

CDS Association

CDS view Association 引入的缘由 CDS 视图不会被业务用户直接访问&#xff0c;而是会被 ABAP 程序、Fiori 应用程序或 BI 前端工具使用。假设在 5 个不同的表上使用 JOINS 创建了 CDS 视图&#xff0c;则每次触发此 CDS 视图时都会执行此 JOIN 条件。即使业务用户只查看 2 个…

十分钟弄懂最快的APP自动化工具uiautomator2

相信很多使用appium做过APP自动化的人都深有感触&#xff1a; appium运行慢、时间长uiautomatorviewer定位元素时得关掉appium server在低版本的appium上获取toast需要切换automationName 现在有一款自动化测试工具uiautomator2&#xff0c;它几乎完美的避免了以上的问题。简…

数据结构---循环队列---树的基本概念

目录 一、队列 1.1.队列 1.创建循环队列&#xff08;顺序结构&#xff09; 2.判断队满 3.判断队空 4.进队 5.出队 6.销毁 二、树 2.1.树的特点 2.2.基本概念 1.根节点 2.分支节点 3.叶节点 4.层 5.深度 6.高度 7.度 2.3.二叉树 1.特点 2.遍历方式 2.4.满二…

编程要由“手动挡”变“自动挡”了?Cursor+Claude-3.5-Sonnet,Karpathy大神点赞的AI代码神器!如何使用详细教程

Cursor情况简介 AI大神Andrej Karpathy都被震惊了&#xff01;他最近在试用 VS Code Cursor Claude Sonnet 3.5&#xff0c;结果发现这玩意儿比GitHub Copilot还好用&#xff01; Cursor在短短时间内迅速成为程序员群体的顶流神器&#xff0c;其背后的原因在于其默认使用Open…

在postman中使用javascript脚本生成sign签名

大多数线上api接口服务都需要提供签名才可以正常访问。虽然带来了安全&#xff0c;单有时为了快速验证接口的某个功能&#xff0c;就不得不编写代码&#xff0c;计算签名然后再请求。那么&#xff0c;使用postman提供的script功能&#xff0c;是否能实现签名计算功能吗&#xf…

HarmonyOS开发实战( Beta5版)滑动白块问题解决最佳实践

当应用程序需要使用列表显示内容时&#xff0c;通常会使用ListLazyForEach组件来实现。但是列表中需要显示耗时加载的内容时&#xff0c;仅依靠ListLazyForEach不足以获得最优的用户体验。例如显示在线网络图片&#xff0c;在弱网以及快速滑动浏览的场景下&#xff0c;由于来不…