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

C51相关实验

C51相关实验

LED

//功能:1.让开发板的LED全亮,2,点亮某一个LED,3.让LED3以5Hz的频率闪动#include "reg52.h"#define LED		P2
sbit led1 = LED^1;void main(void)
{LED = 0xff;//LED全灭led1 = 0;while(1)//保持应用程序不退出{}
}

LED 输出端是高电平 所以要让LED点亮只需要让MCU输出低电平即可,内置引脚是P2,所以要让哪个亮只需要让哪个引脚为0 例子:LED^3=0;让第三个LED亮起
在这里插入图片描述

蜂鸣器 (P2^5)

对于无源蜂鸣器,通过改变脉冲频率就可以调节蜂鸣器的音调,产生各种不同的音色,音调的声音。
对于无源蜂鸣器,通过改变脉冲占空比(高电平占用脉冲周期的百分比)就可以改变蜂鸣器声音的大小。

在这里插入图片描述

//功能:让蜂鸣器以100HZ频率,50%音量,响10s
#include "reg52.h"typedef unsigned int 	u16;
typedef unsigned char 	u8;//定义BEEP的控制引脚
sbit BEEP	=	P2^5;//申明蜂鸣器的控制引脚//以秒为单位的延时器
void delay_ms(unsigned int ms){unsigned int i,j;for(i=ms;i>0;i--)for(j=123;j>0;j--);
}						//u8frequency:蜂鸣器的工作频率,范围2Hz-1KHz
//u8duty:蜂鸣器脉冲占空比,范围0-100;
//times:以秒为单位的时间,范围大于0
void Beep(u8 u8frequency,u8 u8duty,u8 times)
{u16 i;u16 period ,on_time ,off_time;//参数校验 防止越界if(u8frequency>1000) u8frequency = 1000;if(u8frequency==0) u8frequency = 10;if(u8duty>100)u8duty = 100;if(u8duty == 0)u8duty = 1;if(times == 0)times = 1;period =  1000/u8frequency;//以毫秒为单位的周期on_time = period/100*u8duty;	//计算高电平的时间,以毫秒为单位 1周期内高电平off_time = period - on_time;for(i=0;i<u8frequency*times;i++)//遍历10s内所有的脉冲{BEEP = 1;delay_ms(on_time);BEEP = 0;delay_ms(off_time);	}
}void main()
{Beep(100,50,10);while(1)	//保持应用程序不退出{  }
}

多频率

//功能:/*	  多频率声音输出:
//需求:蜂鸣器应能够输出不同频率的声音。
//实现:定义一个频率数组u16 frequencies[] = {1000, 1500, 2000, 2500}包含若干个频率值。程序会循环遍历这些频率,产生相应的声音。
#include "reg52.h"typedef unsigned int 	u16;
typedef unsigned char 	u8;
typedef unsigned long 	u32;//定义BEEP的控制引脚
sbit BEEP	=	P2^5;//申明蜂鸣器的控制引脚//u16Frequency:蜂鸣器的工作频率,范围2Hz-5KHz
//u8duty:蜂鸣器脉冲占空比,范围0-100;
//u16durations:以秒为单位的时间,范围大于0
void Beep(u16 u16Frequency,u8 u8duty,u16 u16durations);//以毫秒为单位的延时
void delay_ms(unsigned int ms){unsigned int i,j;for(i=ms;i>0;i--)for(j=123;j>0;j--);
}						//以10微秒为单位的延时
void delay_10us(u16 ten_us)
{while(ten_us--);
}void main()
{u16	u16Freqs[] = {1000,1500,2000,3000};//定义一个频率数组u8	u8duty = 50;u8 i;u8 num = sizeof(u16Freqs)/sizeof(u16Freqs[0]);for(i=0;i<num;i++){Beep(u16Freqs[i],u8duty,2);	delay_ms(1000);//每次蜂鸣器在切换频率之间,停1s}while(1)	//保持应用程序不退出{  }
}void Beep(u16 u16Frequency,u8 u8duty,u16 u16durations)
{u16 i;u32 period ,on_time ,off_time;//参数校验if(u16Frequency>5000) u16Frequency = 5000;if(u16Frequency==0) u16Frequency = 1000;if(u8duty>100)u8duty = 100;if(u8duty == 0)u8duty = 1;if(u16durations == 0)u16durations = 1;period =  1000000/u16Frequency;//以微秒为单位的脉冲周期on_time = period/100*u8duty;	//计算高电平的时间,以微秒为单位off_time = period - on_time;for(i=0;i<u16Frequency*u16durations;i++)//遍历所有的脉冲{BEEP = 0;delay_10us(on_time/10);//延时是以10us为单位的延时,这里需要除10BEEP = 1;delay_10us(off_time/10);	}
}

数码管

数码管是一种半导体发光器件,其基本单元是发光二极管。
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数 码管。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数 码管。

在这里插入图片描述

共阴或者共阳,a-g+小数点总共8段对应8个引脚,下面是对应显示,a-g从低到高
在这里插入图片描述

LED数码管显示器工作方式有两种:静态显示方式和动态显示方式。
静态显示的特点:每个数码管的段选必须接一个8位数据线来保持显示的字形码。
静态显示:也就是不需要刷新显示写在while外面,反之写在里面

在这里插入图片描述

1.定义数码管的端口的IO。#define SMG_1 P0
2.定义数码管编码数据 u8 smg_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//数码管显示
#include "reg52.h"// 数码管控制引脚别名
#define SMG P0// 毫秒延时函数
void delay_ms(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++) {for (j = 0; j < 123; j++); // 123 是一个经验值,根据实际情况调整}
}typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;// 0-F 共阴八段数码管编码
u8 smg_code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};// 数码管位选引脚
sbit SMG_22 = P2^2; // 第一个数码管控制位
sbit SMG_23 = P2^3; // 第二个数码管控制位
sbit SMG_24 = P2^4; // 第三个数码管控制位void SMG_display(void)
{u8 i;for(i=0;i<8;i++){//从高到低//SMG_22=i%2;//SMG_23=(i/2)%2;//SMG_24=i/4;//从低到高SMG_22=!(i%2);SMG_23=!((i/2)%2);SMG_24=!(i/4);SMG=smg_code[i];delay_ms(1);SMG = 0;//消影}
}
void main(void) {u16 i;while(1) {SMG_display();}
}

在这里插入图片描述

独立按键

在这里插入图片描述

从上图中可以看出,4个独立按键的控制管脚连接到51单片机的P3.0-P3.3 脚上。其中K1连接在P3.1上,K2连接在P3.0上,K3连接在P3.2上,K4连接 在P3.3上。4个按键另一端全部连接在GND,当按键按下后,对应IO口即为低 电平。
在这里插入图片描述
由于机械按键大概有10ms 的误差

按键控制LED灯亮


//独立按键 按键1LED1亮
#include "reg52.h"//毫秒延时函数
void delay_ms(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++) {for (j = 0; j < 123; j++); // 123 是一个经验值,可以根据实际情况调整}
}
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
//定义独立按键引脚
sbit KEY1=P3^1;
sbit KEY2=P3^0;
sbit KEY3=P3^2;
sbit KEY4=P3^3;
//定义LED灯引脚
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
//独立按键控制led灯
void key_contralled()
{if(KEY1==0){  	delay_ms(10);//消抖if(KEY1==0)	 LED1=!LED1;delay_ms(200);}if(KEY2==0){delay_ms(10);//消抖if(KEY2==0)	LED2=!LED2;delay_ms(200);}if(KEY3==0){delay_ms(10);//消抖if(KEY3==0)	LED3=!LED3;delay_ms(200);}if(KEY4==0){delay_ms(10);//消抖if(KEY4	==0)	LED4=!LED4;delay_ms(200);}
}
void main(void)
{while(1)//保持程序不退出{key_contralled();	}
}

相关文章:

C51相关实验

C51相关实验 LED //功能&#xff1a;1.让开发板的LED全亮&#xff0c;2,点亮某一个LED,3.让LED3以5Hz的频率闪动#include "reg52.h"#define LED P2 sbit led1 LED^1;void main(void) {LED 0xff;//LED全灭led1 0;while(1)//保持应用程序不退出{} }LED 输出端是高…...

docker离线安装linux部分问题整理

0:离线安装docker过程命令 echo $PATH tar -zxvf docker-26.1.4.tgz chmod 755 -R docker cp docker/* /usr/bin/ root 权限 vim /etc/systemd/system/docker.service --------- [Unit] DescriptionDocker Application Container Engine Documentationhttps://docs.do…...

ISUP协议视频平台EasyCVR萤石设备视频接入平台银行营业网点安全防范系统解决方案

在金融行业&#xff0c;银行营业厅的安全保卫工作至关重要&#xff0c;它不仅关系到客户资金的安全&#xff0c;也关系到整个银行的信誉和运营效率。随着科技的发展&#xff0c;传统的安全防护措施已经无法满足现代银行对于高效、智能化安全管理的需求。 EasyCVR视频汇聚平台以…...

递推概念和例题

一、什么是递推 递推算法以初始值为基础&#xff0c;用相同的运算规律&#xff0c;逐次重复运算&#xff0c;直至求出问题的解&#xff0c;它的本质是按照固定的规律逐步推出&#xff08;计算出&#xff09;下一步的结果 这种从“起点”重复相同的的方法直至到达问题的解&…...

开发工具 - VSCode 快捷键

以下是一些常用的 VS Code 快捷键&#xff08;Windows、macOS 和 Linux 均适用&#xff0c;略有不同&#xff09;&#xff1a; 常用快捷键 功能Windows/LinuxmacOS打开命令面板Ctrl Shift P 或 F1Cmd Shift P打开文件Ctrl OCmd O保存文件Ctrl SCmd S全部保存Ctrl K,…...

数据库的联合查询

数据库的联合查询 简介为什么要使⽤联合查询多表联合查询时MYSQL内部是如何进⾏计算的构造练习案例数据案例&#xff1a;⼀个完整的联合查询的过程 内连接语法⽰例 外连接语法 ⽰例⾃连接应⽤场景示例表连接练习 ⼦查询语法单⾏⼦查询多⾏⼦查询多列⼦查询在from⼦句中使⽤⼦查…...

【人工智能】基于PyTorch的深度强化学习入门:从DQN到PPO的实现与解析

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 深度强化学习(Deep Reinforcement Learning)是一种结合深度学习和强化学习的技术,适用于解决复杂的决策问题。深度Q网络(DQN)和近端策略优化(PPO)是其中两种经典的算法,被广泛应用于游戏、机器人控…...

【深度学习】【RKNN】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【RKNN】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【RKNN】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转rknnpytorch转onnxonnx转rkn…...

CentOS环境上离线安装python3及相关包

0. 准备操作系统及安装包 准备操作系统环境&#xff1a; 首先安装依赖包&#xff0c;安装相应的编译工具 [rootbigdatahost bin]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-d…...

学习threejs,使用设置bumpMap凹凸贴图创建褶皱,实现贴图厚度效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshPhongMaterial高…...

React表单联动

Ant Design 1、dependencies Form.Item 可以通过 dependencies 属性&#xff0c;设置关联字段。当关联字段的值发生变化时&#xff0c;会触发校验与更新。 一种常见的场景&#xff1a;注册用户表单的“密码”与“确认密码”字段。“确认密码”校验依赖于“密码”字段&#x…...

408数据结构:栈、队列和数组选择题做题笔记

408数据结构 第一章 绪论 第二章 线性表 绪论、线性表选择题做题笔记 第三章 栈、队列和数组 栈、队列和数组选择题做题笔记 文章目录 408数据结构前言 一、队列二、栈和队列的应用总结 前言 本篇文章为针对王道25数据结构课后习题的栈、队列和数组的做题笔记&#xff0c;后续…...

sql工具!好用!爱用!

SQLynx的界面设计简洁明了&#xff0c;操作逻辑清晰易懂&#xff0c;没有复杂的图标和按钮&#xff0c;想对哪部分操作就在哪里点击右键&#xff0c;即使你是数据库小白也能轻松上手。 尽管SQLynx是一款免费的工具&#xff0c;但是它的功能却丝毫不逊色于其他付费产品&#xff…...

嵌入式驱动开发详解3(pinctrl和gpio子系统)

文章目录 前言pinctrl子系统pin引脚配置pinctrl驱动详解 gpio子系统gpio属性配置gpio子系统驱动gpio子系统API函数与gpio子系统相关的of函数 pinctrl和gpio子系统的使用设备树配置驱动层部分用户层部分 前言 如果不用pinctrl和gpio子系统的话&#xff0c;我们开发驱动时需要先…...

【C++】IO库(一):IO类

IO 库 C 不直接处理输入输出&#xff0c;而是通过定义一族定义在标准库当中的类型来处理IO。 8.1 IO 类 为了支持不同种类的 IO 处理操作&#xff0c;除了 istream 和 ostream 之外&#xff0c;标准库还定义了其它 IO 类型。这些类型分别定义在三个独立的头文件当中&#xf…...

uniapp介入极光推送教程 超级详细

直接按照下面教程操作 一步一步来 很快就能 完成 下面的文章非常详细 &#xff0c;我就不班门弄斧了 直接上原文链接 https://blog.csdn.net/weixin_52830464/article/details/143823231...

阿里云整理(一)

阿里云整理 1. 介绍规模 2. 专业名词2.1 专有网络VPC2.2 安全组SG2.3 云服务器ECS2.4 资源组2.5 部署集2.5 web测试 1. 介绍 ‌阿里云是一家提供云计算和人工智能服务的科技公司&#xff0c;成立于2009年&#xff0c;总部位于杭州。‌它为全球客户提供全方位的云服务&#xff…...

论文笔记 网络安全图谱以及溯源算法

​ 本文提出了一种网络攻击溯源框架&#xff0c;以及一种网络安全知识图谱&#xff0c;该图由六个部分组成&#xff0c;G <H&#xff0c;V&#xff0c;A&#xff0c;E&#xff0c;L&#xff0c;S&#xff0c;R>。 1|11.知识图 ​ 网络知识图由六个部分组成&#xff0c…...

室内定位论文速递(11.23-11.25)

多传感器姿态估计的Delta滤波器和卡尔曼滤波器设计在球形移动测绘系统中的应用 关键词 球形机器人;姿态估计;传感器融合;卡尔曼滤波器;Delta滤波器;移动测绘;LiDAR 研究问题 球形移动测绘系统中的惯性姿态估计过滤技术尚未得到充分研究。由于其内在的滚动运动,该系统…...

英伟达推出了全新的小型语言模型家族——Hymba 1.5B

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...