day02 51单片机

51单片机学习

1闪烁LED

1.1 需求描述

这个案例,我们要让P00引脚对应的LED按照1秒闪烁1次。

1.2 硬件设计

在这里插入图片描述

1.1 软件设计

1)LED闪烁的代码

想让LED闪烁,就需要P00的值不断在0和1之间循环变化。实现这一功能的代码也很简单:

#include <STC89C5xRC.H> //包含STC89C52的头文件
#include <INTRINS.H>sbit g_led = P0 ^ 0;void Delay_1MS(unsigned int count);void main()
{// 让led变为低电位g_led = 0;// 死循环卡住单片机,让它不要继续往下执行while (1){// 对led不断取反,取反就是亮灭转换g_led = ~g_led;// 延时500msDelay_1MS(500);}
}void Delay_1MS(unsigned int count) //@11.0592MHz
{unsigned char data i, j;while (count > 0){_nop_();i = 2;j = 199;do{while (--j);} while (--i);count--;}
}

2)代码解读

(1)延时函数说明

这段代码中,LED闪烁的部分其实相当简单,就是对LED变量不断取反。亮灭的节奏主要取决于延时函数的实现。那我们如何实现一个1ms的延时函数呢?这里,我们可以使用STC-ISP自带的软件延时计算器。打开STC-ISP,选择软件延时计算器标签,指定时长1ms,指令集选择STC-Y1(说明:STC89/STC90单片机都是Y1指令集),即可得到1ms的延时代码。

在这里插入图片描述

(2)延时的原理

由于执行每条指令都需要时间,那么可以通过不断的执行指令以达到延迟的效果。具体执行一条指令需要多长时间,我们来计算一下。

时钟周期=1/晶振频率=1/11.0592MHz≈0.09us

机器周期=12时钟周期(约等于1.08us)。

指令周期=1条指令完成所需要的时钟周期(一般12/24/48)。

在这里插入图片描述

2 流水灯

2.1 需求描述

本案例我们会让P00到P07的LED依次亮起,间隔100ms,不断循环。

2.2 硬件设计

2.2.1 硬件原理图

在这里插入图片描述

2.3 软件设计

#include <STC89C5xRC.H> //包含STC89C52的头文件
#include <INTRINS.H>// 增加自定义类型,简化代码编写
typedef unsigned char u8;
typedef unsigned int u16;// 声名延时函数
void Delay_1MS(u16 count);void main()
{// 声名临时变量u8 temp = 1;// temp是8个bit,对应8个led,1代表亮,正好和P0相反// 之后我们只要对temp做左位移,即可实现流水灯while (1){// P0 是temp取反;0000 0001 取反 1111 1110P0 = ~temp;// 左移依次为:0000 0001,0000 0010,0000 0100,0000 1000,… 1000 0000temp <<= 1;// temp是char类型8位,如果等于1000 0000,再左移一位就变成0000 0000,所以如果temp等于0时,需要将temp再设置为1if (temp == 0){temp = 1;}// 延时100ms

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xss【2】

1.xss钓鱼 钓鱼攻击利用页面&#xff0c;fish.php黑客钓鱼获取到账号密码存储的位置 xss进行键盘记录 2.xss常规防范 3.xss验证payload XSS&#xff08;跨站攻击&#xff09;_details/open/ontoggle-CSDN博客

数据结构(3)----栈和队列

目录 一.栈 1.栈的基本概念 2.栈的基本操作 3.顺序栈的实现 •顺序栈的定义 •顺序栈的初始化 •进栈操作 •出栈操作 •读栈顶元素操作 •若使用另一种方式: 4.链栈的实现 •链栈的进栈操作 •链栈的出栈操作 •读栈顶元素 二.队列 1.队列的基本概念 2.队列的基…

Annaconda的替代品miniforge!

用了多年的Annaconda竟然要收费了&#xff08;个人不收费&#xff0c;企业收费&#xff0c;但个人电脑在企业IP下&#xff0c;还是被警告了&#xff09;&#xff0c;只能用miniforge 全面替换了&#xff01; 一、卸载anaconda windows下卸载&#xff0c; 设置 -> 应用和功…

【算法】动态规划练习(一)

目录 1137. 第 N 个泰波那契数 分析 代码 面试题 08.01. 三步问题 分析 代码 746. 使用最小花费爬楼梯 分析 代码 泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n&#xff0c;请返回第 n 个泰波…

C++进阶篇11---IO流

一、对C语言的输入输出的理解 C语言中我们经常用scanf()和printf()进行输入输出&#xff0c;形象的描述它们的作用如下 对于缓冲区的理解&#xff1a; 可以屏蔽掉低级I/O的实现&#xff0c;低级I/O的实现依赖操作系统本身内核的实现&#xff0c;所以如果能够屏蔽这部分的差异…

基于PHP的校园招聘管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的校园招聘管理系统 一 介绍 此校园招聘管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为个人用户&#xff0c;企业和管理员三种。 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二…

蓝桥杯第十四届C++C组

目录 三国游戏 填充 翻转 【单调队列优化DP】子矩阵 【快速幂、欧拉函数】互质数的个数 【tire树】异或和之差 【质因数分解】公因数匹配 子树的大小 三国游戏 题目描述 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵X, Y, Z (一开始可以认为都…

C语言整数和小数的存储

1.整数在内存中的存储 计算机使用二进制进行存储、运算&#xff0c;整数在内存中存储使用的是二进制补码 1.1原码、反码、补码 整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&am…

Qt实现无边框圆角窗口

我们在使用QDialog的时候许多场景下都不需要默认的标题栏&#xff0c;这时候我们需要设置他的标志位。 this->setWindowFlags(Qt::FramelessWindowHint);由于现代的窗口风格&#xff0c;我们一般会设置窗口为圆角边框的样式&#xff0c;我们可以使用qss的方式来进行设置。 …

汇编——SSE打包整数

SSE也可以进行整数向量的加法&#xff0c;示例如下&#xff1a; ;sse_integer.asm extern printfsection .datadummy db 13 align 16pdivector1 dd 1dd 2dd 3dd 4pdivector2 dd 5dd 6dd 7dd 8fmt1 db "Packed Integer Vector 1: %d, %d, %d, %d",…

提升团队工程交付能力,从“看见”工程活动和研发模式开始

作者&#xff1a;张裕、雅纯 理想中的研发团队应当具有以下特征&#xff1a; 总是工作在最高优先级的事项上 理想的研发团队能够识别并始终集中精力在当前最紧迫和最有价值的任务上。这需要团队具备出色的项目管理能力和决策能力&#xff0c;以便能够正确评估优先级&#xff0…

Ant Design Vue

Ant Design Vue是一个由阿里巴巴团队打造的Vue组件库&#xff0c;它以其优雅的设计和丰富的功能集成而被广泛使用。以下是对Ant Design Vue的简单介绍&#xff1a; 首先&#xff0c;Ant Design Vue采用了精良的设计风格&#xff0c;为用户提供了简约、美观的界面&#xff0c;符…

MySQL-视图:视图概述、创建、查看、更新、修改、删除

第14章 视图 1. 常见的数据库对象2. 视图概述2.1 为什么使用视图&#xff1f;2.2 视图的理解 3. 创建视图3.1 创建单表视图3.2 创建多表联合视图3.3 基于视图创建视图 4. 查看视图5. 更新视图的数据5.1 一般情况5.2 不可更新的视图 6. 修改、删除视图6.1 修改视图6.2 删除视图 …

微信小程序使用自己的布局

我第一天学习微信小程序&#xff0c;照着黑马程序员老师的操作模仿编辑。因为视频是23年的&#xff0c;我24年4月份学习发现很多地方不一样了。 新版微信开发者工具中没有自带wxss文件。我自己建了一个list.wxss文件&#xff0c;发现用不了&#xff0c;在list.wxml文件中编写v…

pbootcms模板网站饰品首饰玛瑙水晶钻石饰品玉石戒指复古珠宝饰品pbcms网站源码下载

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 pbootcms模板网站饰品首饰玛瑙水晶钻石饰品玉石戒指复古珠宝饰品pbcms网站源码下载PC版 pbootcms内核开发的网站模板&#xff0c;该模版适用于饰品首饰类企业网站&#xff0c;复古珠…

spring面试八股

常用的注册bean的方式 ComponentScan扫描到的service和Controller等的注解 Configration配置类或者是xml文件的定义。 spring中有几种依赖注入的方式 1.构造器注入。 2.setter方法注入。 3.使用field属性的方式注入。 applicationContext是什么 spring bean spring aop Aop…

iOS 应用内网络请求设置代理

主要通过URLSessionConfiguration 的connectionProxyDictionary 属性 为了方便其他同学使用&#xff0c;我们可以通过界面来进行设定&#xff08;是否开启代理、服务端、端口&#xff09;&#xff0c;从而达到类似系统上的设定 具体链接参考&#xff1a;为 iOS 网络请求设置代理…

【电子取证篇】USB软只读锁软件

【电子取证篇】USB软只读软件 推荐的这两款USB只读软件都免安装版本&#xff0c;方便携带—【蘇小沐】 1、实验环境 Removable Access Tool_v1.2usbblock_v1.0Windows 11 专业工作站版23H2&#xff08;22631.3374&#xff09; &#xff08;一&#xff09;Removable Access …

Spring——框架介绍

每一个Java技术中都会存在一个“核心对象”&#xff0c;这个核心对象来完成主要任务为了得到核心对象&#xff0c;需要创建若干个辅助对象&#xff0c;从而导致开发步骤增加JDBC中 JDBC 核心对象——PreparedStatement 通过DriverManager得到数据库厂商提供的Driver对象DriverM…

【御控物联】JSON结构数据转换在物流调度系统中的应用(场景案例三)

文章目录 一、前言二、场景概述三、解决方案四、在线转换工具五、技术资料 一、前言 物流调度是每个生产厂区必不可少的一个环节&#xff0c;主要包括线边物流和智能仓储。线边物流是指将物料定时、定点、定量配送到生产作业一线的环节&#xff0c;其包括从集中仓库到线边仓、…