51单片机点灯实验(含程序+仿真+硬件实验)

2023-11-09

一、实验原理

LED发光二极管核心为PN结,单向导电,有阴极和阳极,两极均可以控制,需要亮起来,电流不能过大和过小,过大,烧坏二极管,过小,电光效应弱,发光不明显,引入“限流电路”。为减少I/O引脚的消耗,一般控制一极,有阳极控制法和阴极控制法。阳极控制法:阴极接地(GND),阳极I/O口高电平亮,阳极低电平不亮;阴极控制法:阳极接高电平(+5V),阴极I/O口低电平亮,高电平不亮。8个同样LED灯阳极接一起,连接+5V,就是共阳极接法。8个同样LED灯阴极接一起,连接GND,就是共阴极接法。

 思考:亮灭怎么样,眼睛能分辨出来?

编程实现方案:端口电平维持想要的时间,通过延时,CPU空操作耗时来实现等。

如何依次亮灭:从左到右,8个LED灯亮,8种状态,如何实现,数组形式?移位形式?

参考共阳极接法:

Char s[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

共阴极为对共阳极取反。

认识51单片机最小系统组成:51单片机、手动按键复位电路、外接晶体振荡器电路、电源和地。使用片内程序存储器,EA接高电平。

二、实验内容及步骤

(一)实验内容

1.8个LED灯接在P2端口的8个引脚上,编程实现8个LED从左到右依次不断亮灭一个灯,循环运行,实现流水灯状态,亮灭要求眼睛能分辨得出来。

2.8个LED灯接在P2端口的8个引脚上,编程实现8个LED从左到右顺序每次亮灭两个灯。如最开始D1和D2亮;接着D2和D3亮,D1灭;然后D3和D4亮,D2灭;………;D7和D8亮,D6灭;再回到D1和D2亮,按这个状态循环,亮灭要求眼睛能分辨得出来。

(二)实验步骤

软件仿真:

(1)基于Proteus软件绘制电路原理图。

(2)基于Keil软件编程

思路:数组形式,表示8个亮状态,8个元素。状态保持采用时间延迟函数,延时函数具体可以通过调试来确定参数值。开始全部不亮,采用死循环不断循环,while或没有限制条件的for语句。利用宏定义、sbit定义等方式,使程序方便维护,养成良好的编程习惯。

  (3)利用Keil软件,将编译好的hex文件下载到Proteus软件的虚拟单片机中以便整体虚拟仿真,默认单片机晶体振荡器12M,观察实验现象

(4)调试观察,注意不同时延时, LED的闪烁情况,若程序设计有逻辑错误,实验调试分析。

硬件实验:

(1)认识开发板,了解实验上的资源及作用,见图。

 

(2)流水灯实验

开发板上使用的51单片机型号是 STC89C516RD+,此芯片共有40引脚,采用双列直插式封装。

开发板上的D1-D8(LED) 已经连接到单片机的 P20-P27 口。图3中 LED 采用共阳接法,即所有LED 阳极管脚接电源 VCC,阴极管脚通过一个 470 欧的限流电阻接到 P2 口上。要让LED发光即对应的阴极管脚应该为低电平,若为高电平则熄灭。

 

(3)利用Keil软件,将编译好的hex文件下载到51单片机里,观察实验现象

六、实验结果  

1.实验一:Proteus绘制的电路原理图和Keil软件编写的C程序截图。

程序:

仿真电路:

 2.实验二:Proteus绘制的电路原理图和Keil软件编写的C程序截图。

程序:

 仿真电路:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机点灯实验(含程序+仿真+硬件实验) 的相关文章

  • 高斯混合模型(GMM)和EM算法详解

    小白一枚 接触到GMM和EM 现将学习到的整理出来 如有错误 欢迎指正 文中涉及到公式的推导比较繁琐 故先在纸上推导出来再拍照发出来 希望大家多多交流 共同进步 接下来将按照思路一步一步进行介绍 1 单高斯模型GSM 一维 单高斯模型很简单
  • 车联网环境下自动驾驶的协同感知技术综述

    论文标题 Cooperative Perception Technology of Autonomous Driving in the Internet of Vehicles Environment A Review 发表期刊 会议 Se
  • SQLServer的基本语句(增,删,改)_02

    SQLserver语句不区分大小写 1 创建数据库 create database hhh hhh为数据库名称 创建一个名为hhh的数据库 2 删除数据库 drop database hhh 删除名为hhh的数据库 两者一般写为 if ex
  • 5、Nginx 配置实例-负载均衡

    文章目录 5 Nginx 配置实例 负载均衡 5 1 实现效果 5 2 准备工作 5 3 实验代码 5 3 1 轮询 默认 5 3 2 weight 5 3 3 ip hash 5 3 4 fair 第三方 尚硅谷 尚硅谷Nginx教程由浅
  • mesh和wifi中继的区别_科普:路由器的无线中继和Mesh的区别是什么?

    大户型和越层户型等改善型性房型越来越普及了 但是这些用户却也面临WiFi网络越来越差的窘境 如何改善WiFi网络就成为了迫在眉睫需要解决的问题 在无线路由的早期 不少人都习惯于使用无线中继的方式来解决这个问题 无线中继组网就是利用AP的无线

随机推荐

  • Web之html、css

    目录 前言 一 HTML 1 定义 2 标签 基本标签 表格标签 表单标签 其他标签及符号 3 属性 二 CSS 1 定义 2 标签选择器 3 基本样式设置 总结 前言 本文主要讲述后端开发者需要的基本web知识点 讲述了html css的
  • element ul中el-calendar日历组件自定义快捷选择年月

    需求 以日历形式展现当前页面 其中 年月可进行下拉选择 默认选中任意月份 用户可以自由点选日期 实现效果 时间筛选
  • linux 指令 间隔,Linux基础命令(五)

    Linux信息显示和搜索文件命令 1 uname 显示系统信息 参数 a显示所有信息 v显示内核版本 n显示主机名称 p显示处理器类型 r显示内核发行版本号 i显示硬件平台 m显示计算机硬件架构 root localhost dir una
  • Camera sensor 基本原理

    1 Camera 工作原理介绍 1 1 结构 一般来说 camera 主要是由 lens 和 sensor IC 两部分组成 其中有的 sensor IC 集成 了 DSP 有的没有集成 但也需要外部 DSP 处理 细分的来讲 camera
  • web基础(二)---------列表、表格、表单

    目录 一 前言 二 正文 1 列表 1 无序列表 2 有序列表 3 自定义标签 2 表格 3 表单 1 input 根据type属性不同 展示不同效果 2 input 占位符 提示信息 3 表单域 划分提交 重置的作用域 form 4 普通
  • Java类加载顺序大乱斗

    代码 加载涉及到静态与初始化 遵循以下规则 类加载从上往下执行 依次执行静态的初始化语句和初始化块 而且类加载优先于对象创建 静态初始化语句和初始化块只加载一次 创建本类的对象时 从上往下执行一次非静态的初始化语向和初始化块 最后执行构造函
  • Spring Boot+Mybatis实现增删改查接口开发+测试(超详细建议收藏)

    前言 Java也是测试必知必会的内容 特别是现在类似spring boot 等Java框架更是成为主流 之前实现的图书增删改查是用Python实现的 没看过的请移步 Flask mysql 实现增删改查接口开发 测试 图文教程附源码 本次给
  • Linux操作系统下取得UUID的方法

    Linux操作系统下取得UUID的方法 2008 12 2 13 40 查看数 1162 Linux下面 有专门生成UUID的命令 uuidgen r t 即可以生成一个32位的字符串 这个是在命令行得到 在 usr include lib
  • 软件工程复习笔记 第七章 --测试

    第七章 测试 前言 测试概述 测试定义 测试本质 软件测试要素 测试技术 测试类型 级别 测试管理 测试方法 静态测试 分析 走查 WalkThrough 审查 Inspection 评审 Review 同行 对等 评审 Peer Revi
  • 操作系统-线程

    说明 文中内容大部分都是大部分都是 操作系统 精髓与设计原理 第八版 的原文 自己做了一些删改 使其更易于理解 本章讲述一些与进程管理相关的高级概念 这些概念在很多现代操作系统中都可以找到 实际上 它包含了两个独立的概念 一个与资源所有权有
  • pytorch中的Linear Layer(线性层)

    LINEAR LAYERS Linear Examples gt gt gt m nn Linear 20 30 gt gt gt input torch randn 128 20 gt gt gt output m input gt gt
  • 实训笔记

    2018 12 17 上午 大数据概述 前置要求 java SE的基本变成 了解LINUX常用基本命令 使用工具 linux版本 CentOS 6 4 Hadoop CDH 5 7 TB PB EB 大数据在技术架构上带来的挑战 对现有数据
  • ML算法——Support Vector Machine随笔【机器学习】

    文章目录 4 Support Vector Machine SVM 4 1 理论部分 4 1 1 更优的决策边界 4 1 2 解决低维不可分问题 4 2 sklearn 实现 4 2 1 SVM 分类 SVC 4 2 2 SVM回归 SVR
  • c++与java的枚举

    Java枚举和C 枚举的主要区别为两点 一是C 中的枚举中只能定义常量 主要用于switch子句 二是C 中的枚举常量可以直接和数值型变量进行各种数学运算 java的枚举 枚举的是在Java 1 5SE 中开始支持的 以下为Java枚举的基
  • SpringBoot 提示:java.lang.IllegalStateException: No primary or default constructor found for interface

    SpringBoot集成MyBatis Plus 实现HTPP POST提交实体对象提示如下错误片段 c c c c a BaseControllerExceptionHandler 运行时异常 java lang IllegalState
  • spring cloud 常用的核心组件以及作用

    1 spring cloud 常用的核心组件 服务注册与发现 Netflix Eureka 客户端负载均衡 Netflix Ribbon 服务熔断器 Netflix Hystrix 服务网关 Netflix Zuul 服务接口调用 Netf
  • glUniform详解

    glUniform详解 glUniform API官方文档解释 Name glUniform Specify the value of a uniform variable for the current program object C
  • uniapp 引入 Vant 从零开始

    第一步 1 这里创建uniapp的项目 本人选择的是Vue2的 第二步 打开 Vant 官网 这里是使用Vant2的 切记别选择Vant3 不知道的可以点击 这里进入 Vant官网 点击上面的 微信小程序版本 进入这个界面后 点击 快速上手
  • LeetCode-重建二叉树

    先利用前序遍历找根节点 前序遍历的第一个数 就是根节点的值 在中序遍历中找到根节点的位置 k 则 k 左边是左子树的中序遍历 右边是右子树的中序遍历 假设左子树的中序遍历的长度是 l 则在前序遍历中 根节点后面的 l 个数 是左子树的前序遍
  • 51单片机点灯实验(含程序+仿真+硬件实验)

    一 实验原理 LED发光二极管核心为PN结 单向导电 有阴极和阳极 两极均可以控制 需要亮起来 电流不能过大和过小 过大 烧坏二极管 过小 电光效应弱 发光不明显 引入 限流电路 为减少I O引脚的消耗 一般控制一极 有阳极控制法和阴极控制