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

51单片机实验课二

实验任务一:

用C语言设计实现8个led灯左右移动显示效果。具体要求如下:

左移时,8个灯中的奇数位灯依次点亮;

右移时,8个灯中的偶数灯依次点亮;

如此循环往

#include <REGX52.H>
void Delay(unsigned int xms)		//可自定义延时时间段的延时函数
{unsigned char i, j;while(xms){xms--;i = 12;j = 169;do{while (--j);} while (--i);}
}
void main()
{unsigned char i,j;while (1)         //主循环{//LED灯为低电平点亮P2=0xFD;//1111 1101(灯7亮)for(i=0;i<4;i++)   //加入 for循环,表明for循环大括号中的程序循环执行4次{Delay(100);				P2<<=2;//1111 0100  //1101 1100  //0111 1100   P2=P2|0x03;//0000 0011//1111 0111(灯5亮)  //1101 1111(灯3亮)  //0111 1111(灯1亮)} P2=0xBF;//1011 1111(灯2亮)for(i=0;i<4;i++){Delay(100);				P2=P2>>2;//0010 1111  //0011 1011//0011 1110P2=P2|0xC0;//1110 1111(灯4亮)//1111 1011(灯6亮)//1111 1110(灯8亮)}P2=0xFE;           //重新赋初始值}
}

实验任务二:

动态扫描显示---Digital-tube-stable-display

用8个数码管从左到右稳定显示自己的学号的后8位

#include <REGX52.H>//数码管段选表
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}//数码管显示子函数
void Nixie(unsigned char Location,Number)
{switch(Location)		//位码输出{case 1:P2_4=1;P2_3=1;P2_2=1;break;case 2:P2_4=1;P2_3=1;P2_2=0;break;case 3:P2_4=1;P2_3=0;P2_2=1;break;case 4:P2_4=1;P2_3=0;P2_2=0;break;case 5:P2_4=0;P2_3=1;P2_2=1;break;case 6:P2_4=0;P2_3=1;P2_2=0;break;case 7:P2_4=0;P2_3=0;P2_2=1;break;case 8:P2_4=0;P2_3=0;P2_2=0;break;}P0=NixieTable[Number];	//段码输出Delay(1);				//显示一段时间P0=0x00;				//段码清零,消影
}void main()
{while(1){Nixie(1,2);		//在数码管的第1位显示2Nixie(2,2);		//在数码管的第2位显示2Nixie(3,2);		//在数码管的第3位显示2Nixie(4,1);   //在数码管的第4位显示1Nixie(5,0);		//在数码管的第5位显示0Nixie(6,2);		//在数码管的第6位显示2Nixie(7,1);		//在数码管的第7位显示1Nixie(8,4);		//在数码管的第8位显示4}
}

实验任务三:

Digital-tube-scrolling-display

将自己的学号每隔一定时间向右或向左滚动循环显示出来

#include <REGX52.H>
sbit LED0=P2^4;
sbit LED1=P2^3;
sbit LED2=P2^2;
#define tube P0
#define N 500
unsigned char code zima[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//存储数码管段选码
unsigned char number[10]={2,0,2,2,2,1,0,2,1,4};//存储学号信息
void delay(int i)		//延时函数
{while(i--);
}void main()
{unsigned int i,j,k,m,n,time;		//定义变量while(1){for(m=0;m<17;m++)			//滚动显示过程等效为17位{time=100;						while(time--){n=7;for(i=0;i<2;i++)			{LED0=i;					//控制位选for(j=0;j<2;j++)			{LED1=j;					//控制位选for(k=0;k<2;k++)			{LED2=k;					//控制位选if((n+m-7>9)||(n+m-7<0))			//控制段选tube=0x00;elsetube=zima[number[n+m-7]];n--;delay(100);		//延时tube=0x00;	//消隐}}}}}}
}

main 函数中使用了嵌套的循环来完成滚动显示学号的功能。

  • 外层循环 m 从 0 循环到 16,表示滚动显示的过程等效于 17 位。

  • 内层循环 time 从 100 循环减至 0,用于控制延时。

  • 在内层循环中,使用 n 来记录当前的位数,并在每次循环中减 1,用于控制位选。因为涉及到3个位选,所以有 2 * 2 * 2 = 8 种组合,所以需要三个嵌套循环。

  • 在每次位选循环中,判断 n+m-7 是否大于 9 或小于 0,如果是,则设置段选为 0x00,否则设置 tube 为对应的学号段选码。

  • 每次段选完之后,使用 delay 函数进行延时并清空 tube

相关文章:

51单片机实验课二

实验任务一&#xff1a; 用C语言设计实现8个led灯左右移动显示效果。具体要求如下&#xff1a; 左移时&#xff0c;8个灯中的奇数位灯依次点亮&#xff1b; 右移时&#xff0c;8个灯中的偶数灯依次点亮&#xff1b; 如此循环往 #include <REGX52.H> void Delay(unsi…...

1-4 动手学深度学习v2-线性回归的简洁实现-笔记

通过使用深度学习框架来简洁地实现 线性回归模型 生成数据集 import numpy as np import torch from torch.utils import data # 从torch.utils中引入一些处理数据的模块 from d2l import torch as d2ltrue_w torch.tensor([2,-3.4]) true_b 4.2 features, labels d2l.syn…...

SQL如何实现数据表行转列、列转行?

SQL行转列、列转行可以帮助我们更方便地处理数据&#xff0c;生成需要的报表和结果集。本文将介绍在SQL中如何实现数据表地行转列、列转行操作&#xff0c;以及实际应用示例。 这里通过表下面三张表进行举例 SQL创建数据库和数据表 数据表示例数据分别如下&#xff1a; data_…...

【React】redux状态管理、react-redux状态管理高级封装模块化

【React】react组件传参、redux状态管理 一、redux全局状态管理1、redux概述2、redux的组成1.1 State-状态1.2 Action-事件1.3 Reducer1.4 Store 3、redux入门案例1.1 前期准备1.2 构建store1.2.1 在src下新建store文件夹1.2.2 在store文件夹下新建index.ts文件1.2.3 在index.t…...

HAProxy 和负载均衡概念简介

简介 HAProxy&#xff0c;全称高可用代理&#xff0c;是一款流行的开源软件 TCP/HTTP 负载均衡器和代理解决方案&#xff0c;可在 Linux、macOS 和 FreeBSD 上运行。它最常见的用途是通过将工作负载分布到多台服务器&#xff08;例如 Web、应用程序、数据库&#xff09;上来提…...

【go】ent操作之CRUD与联表查询

文章目录 1 CRUD1.1 创建1.1.1 单条创建1.1.2 批量创建 1.2 查找1.2.1 查询单条 / 条件准确查询1.2.2 查询单条 / 条件模糊查询1.2.3 查询单条 / In1.2.4 查询全部 1.3 更新1.4 删除 2 联表查询2.1 O2M&#xff08;一对多查询&#xff09;2.1.1 增加Edge2.1.2 查询方法2.1.2.1 …...

服务器性能监控管理方法及工具

服务器是组织数据中心的主干&#xff0c;无论是优化的用户体验&#xff0c;还是管理良好的资源&#xff0c;服务器都能为您完成所有工作&#xff0c;保持服务器随时可用和可访问对于面向业务的应用程序和服务以最佳水平运行至关重要。 理想的服务器性能需要主动监控物理和虚拟…...

AUTOSAR汽车电子嵌入式编程精讲300篇-基于FPGA和CAN协议2.0B的总线控制器研究与设计

目录 前言 研究现状分析 2 CAN总线协议 2.1 CAN总线基本概念 2.2 物理层...

14.1 Ajax与JSON应用(❤❤)

14.1 Ajax与JSON应用 1. Ajax1.1 简介1.2 Ajax使用流程1. 前端创建XMLHttpRequest对象2. 发送Ajax请求3. 处理服务器响应4. 代码2. JSON2.1 简介2.2 JS解析JSON3. Ajax与JSON开发3.1 后端:用Jackson实现JSON序列化输出3.2 前端Ajax处理JSON3.3 Ajax工具...

ffmpeg命令生成器

FFmpeg 快速入门&#xff1a;命令行详解、工具、教程、电子书 – 码中人的博客FFmpeg 是一个强大的命令行工具&#xff0c;可以用来处理音频、视频、字幕等多媒体文件。本文介绍了 FFmpeg 的基本用法、一些常用的命令行参数&#xff0c;以及常用的可视化工具。https://blog.mzh…...

JavaScript基础速成

由于学web时只学了后端&#xff0c;现在到了前后端联调的场景发现看不懂前端代码&#xff0c;于是开始恶补 看了下基础内容发现html和css比较好看懂&#xff0c;但JavaScript比较迷&#xff0c;大概知道组件id绑定事件 下面选取看菜鸟教程补充的JS知识 JS的作用 JS是在html…...

openGauss学习笔记-215 openGauss性能调优-确定性能调优范围-性能日志

文章目录 openGauss学习笔记-215 openGauss性能调优-确定性能调优范围-性能日志215.1 性能日志概述215.2 性能日志收集的配置参数 openGauss学习笔记-215 openGauss性能调优-确定性能调优范围-性能日志 215.1 性能日志概述 性能日志主要关注外部资源的访问性能问题。 性能日…...

在vs code的terminal,debug执行python main.py --train True

GPT4告诉我&#xff1a; 在VS Code中以debug状态执行带有参数&#xff08;如--train&#xff09;的main.py文件&#xff0c;你需要在launch.json配置文件中正确设置参数。以下是详细步骤&#xff1a; 打开你的main.py文件&#xff1a;确保你的main.py文件已经在VS Code中打开…...

docker 简单项目

要将服务器端口映射到容器端口&#xff0c;你可以使用 Docker 命令的 -p 选项。以下是基本的步骤&#xff1a; 1. **拉取镜像&#xff1a;** 在服务器上运行以下命令拉取你想要的 Docker 镜像&#xff0c;例如 Nginx&#xff1a; bash docker pull nginx 2. **运行容器…...

计算机毕业设计 基于SpringBoot的线上教育培训办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

四、机器学习基础概念介绍

四、机器学习基础概念介绍 1_机器学习基础概念机器学习分类1.1 有监督学习1.2 无监督学习 2_有监督机器学习—常见评估方法数据集的划分2.1 留出法2.2 校验验证法&#xff08;重点方法&#xff09;简单交叉验证K折交叉验证&#xff08;单独流出测试集&#xff09;&#xff08;常…...

Excel设置单元格下拉框(poi)

前言 年关在即&#xff0c;还在最后的迭代处理&#xff0c;还分了个其他同事的单&#xff0c;说是导出的Excel模版的2列要修改为下拉选项&#xff0c;过程很曲折&#xff0c;不说&#xff0c;以下其实就是一个笔记而已&#xff01; 其实之前分享过阿里的EasyExcel设置单…...

api接口是什么意思,api接口该如何防护呢?

API接口&#xff1a;应用程序与服务之间的接口 什么是API接口 API是应用程序接口的缩写&#xff0c;指的是能够让不同的应用程序之间交换数据的一种方式。一个API接口就是应用程序与服务之间的接口&#xff0c;它定义了服务提供的功能和数据&#xff0c;以及应用程序如何访问这…...

PMP资料怎么学?PMP备考经验分享

PMP考试前大家大多都是提前备考个一两个月&#xff0c;但是有些朋友喜欢“不走寻常路”&#xff0c;并不打算去考PMP认证&#xff0c;想要单纯了解PMP&#xff0c;不管要不要考证&#xff0c;即使是仅仅学习了解一下我个人都非常支持&#xff0c;因为专业的基础的确能提高工作效…...

partition by list(msn_id)子句的含义

在数据库查询中&#xff0c;特别是在使用SQL语言时&#xff0c;"PARTITION BY" 子句用于对结果集进行分区&#xff0c;以便可以对每个分区进行单独的聚合操作。这是在执行窗口函数&#xff08;如 ROW_NUMBER(), RANK(), SUM(), AVG() 等&#xff09;时特别有用的。 …...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...