初识51单片机

##江科大51单片机学习

什么是单片机???

  1. 单片机,英文名,Micro Controller Unit,简称MCU(tips:有人会简称它为CPU,但不是如此,CPU其实被集成在MCU中)。
  2. 内部集成了CPU,RAM,ROM,定时器,中断系统,通讯接口等一系列电脑的常用硬件功能。
  3. 单片机的任务时信息采集(依靠传感器),处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。
  4. 单片机跟计算机相比,单片机是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低,体积小,结构简单,在生活和工业控制领域大有所用。

单片机的应用领域:

1.智能仪表  2.实时工控  3.通讯设备   4.导航系统   5.家用电器   

在加上单片机之后,该设备由单片机控制,从而变的更加智能。

设备配置---普中51---实验板

  1. 单片机型号:STC89C52RC
  2. 所属系列为:51单片机系列
  3. 公司:STC公司
  4. 位数:8位(8bit)
  5. RAM(随机存储器):256字节  (性质:掉电就丢---工作中的工厂)  类似电脑的内存条
  6. ROM(只读存储器):64KB (Flash) 掉电不丢失---仓库   类似于电脑的硬盘
  7. 工作频率:12MHZ  (后面软件控制程序会用到)

所用到的软件程序:

1.Kell uVision5---用于底层代码编写

2.STC-ISP ---用于代码安装以及调试

对于MCU(单片机)上的标签解读

可以看到它整个为STC89C52RC 40I-PDIP 40 后面的为出厂编码

  1. 89:为系列 STC 12T/6T 8051
  2. C(这是第一个C) 工作电压 : 5.5V~3.8V
  3. 52:8K字节程序空间及512字节RAM空间
  4. 40:工作频率可达到40MHZ(赫兹)
  5. I:工作温度范围: 工业级: -40摄氏度-85摄氏度
  6. PDIP:封装类型  双电直插  插针
  7. 40:管脚数为40个

大体结构图:

具体细节图:

相关细节配件

  1. 中央处理器(CPU):CPU是8051体系结构的核心,主要负责执行程序指令,数据处理,中断处理等任务。程序的编写使用到C/C++语言或是汇编语言,通过编译器(Keil uVision)生成二进制可执行文件,然后通过下载工具(STC-ISP)将程序下载到STC89C52RC中。
  2. RAM:256字节的随机存储器。用来存储程序中的变量和中间结果。编程时,需要定义变量将器存储到RAM中,以便程序可以读写变量的值。
  3. ROM:64KB的Flash存储器,可以用来存储程序代码和数据。在编程时,需要将程序代码和数据存储到Flash中,使得单片机可以读取执行。
  4. 定时器/计时器(Timer):具有3个定时器/计数器;可以用来产生定时中断PWM波形输出等功能。在编程时,需要对定时器/计数器进行初始化配置,并编写中断服务程序来处理定时中断。
  5. 串口(UART):具有一个串口,可以用来进行与外部设备的通信,编程时,需要对串口进行初始化配置,并编写发送和接收函数来进行数据传输。
  6. I/O口:可以用来连接各种外部设备,如LED,LCD,按键,传感器等。在编程时,需要对I/O口进行初始化配置,并编写I/O口的读写函数来控制外部设备的状态。
  7. 中断控制器(INT):具有中断控制器;可以用来管理各种中断源和中断服务程序;编程时,需要对中断控制器进行初始化配置,并编写中断服务程序来处理中断事件。

STC89C52系列单片机最小应用系统

 

对此有:VCC为正极  Gnd为负极---这个图我们是要去记忆的 

我有一个记忆法:左为1,3往下增;右为 0,2--0下加,2上加。

在了解单片机的初始构造后,我们来进行第一次的编辑吧。

1-1 点亮一个LED:

首先,我们了解一下,何为LED?

LED是何物?

  1. 中文名:发光二级管
  2. 外文名:Light Emitting Diode--->即为LED
  3. 简称:LED
  4. 用途:照明,广告灯,指引灯,屏幕(优点:省电,亮度高)

  (画的图有点丑哈)

这里我们可以看到,中间的为D1-D8的LED灯就为下图所示

在左边我们可以看到,有P20-P27这些引脚,它们其实与MCU对应处相连接。

在LED灯左边的为VCC---正极。

那么,为何我要讲这个呢?

因为,LED其实是一个会发光的二极管,那么正极接正极时,负极接负极时则LED便可以发光;那么如果我们将一处接反了,则LED不可能再发光了。是的,这个就是我们的理论基础。

对单片机来说,是TTL型即 5V为正极 高电频  0V 为负极 低电频。

 MCU(单片机)里面有CPU(中央处理器)--->寄存器--->驱动器--->引脚

寄存器(8位)里面可以存储二进制数,1可以被驱动器为高电频,0可以被驱动器为低电频;寄存器控制驱动器,来增大驱动能力。那么,我们想要二极管发光,只需要在我们想要发光的二极管所对应的寄存器的对应空间来设置为0,即可让对应的二极管发光,其它的二极管设置为1即可为熄灭。

Tips:CPU通过控制配置寄存器,来控制硬件电路来执行我们想要完成的功能。

使用Keil uVision

首先在桌面创建一个文件夹称为Keilproject,然后再创建一个文件夹叫为1-1点亮一个LED。

具体细节,请观看Keil uVision的文件创建和使用

#include <REGX52.H>
//引入头文件,使得P2该寄存器被定义void main()
{P2=0xFE;// 1111 1110while(1){}
/*这里P2 的P大写,并且0x是16进制的前缀,不可省略。
FE 转化为二进制为 1111 1110 可以看到最后一个为0 
它对应着第一个LED灯,可以亮,其他是熄灭的状态。
}

只要while中()的不为0,其他整数都为真。

当我们码完了这些行代码,便可以进行下一步保存文件。

  1. 第一步:点击那个类似魔法棒的东西。
  2. 第二步:点击OutPut图标,来到现在此页面。
  3. 第三步:勾选住Creat Hex File---是为了创建HEX-80
  4. 第四步:点击OK,便创建成功。 

最后记得调试一下再下载给单片机。 

TC-ISP

这个软件是SCT公司针对其产品开发使用的。

那么,我们来具体使用。

后面,单片机可以的LED区的第一个灯便开始闪亮。至此,我们的第一个MCU(单片机)的第一次开发便成功了。

(Tips:一定要确定好型号,否则,单片机与我们的主机握手失败,单片机不能下载代码)

1-2 LED灯闪烁

基本创建流程和上图相同,便不再赘述。

我们来讲讲具体实现,相对于自己去写一个时缓代码,STC-ISP友好地提供了相应的代码,我们就不用再自己去造轮子了。

那么,我们来具体看看吧。

注意:8051指令集必须是STC-Y1,应为使用的型号适配这个。 

#include <REGX52.H>
#include <INTRINS.H> //引入该头文件,为的是nop()合法化
void Delay500ms()		//@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main(){while(1){P2=0xFE;Delay500ms();P2=0xFF;Delay500ms();}
}

最后,按照以上的顺序再次执行即可看到反复闪烁的LED灯了。

最后,感谢你的观看,谢谢。

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

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

相关文章

【Elasticsearch专栏 11】深入探索:Elasticsearch如何支持多租户架构

文章目录 Elasticsearch如何支持多租户架构&#xff1f;01 隔离方式1 索引隔离2 集群隔离3 基于路由的隔离 02 配置示例1.索引隔离配置2.基于路由的隔离配置 03 实现原理04 权限控制1.定义角色2.分配用户角色 05 安全性考虑06 总结 Elasticsearch如何支持多租户架构&#xff1f…

【python】使用OpenCV进行行人检测

请确保在运行代码之前已经安装了 OpenCV 库&#xff0c;可以使用以下命令来安装&#xff1a; pip install opencv-python4.2.0.32 使用 OpenCV 中的 HOG 特征和默认的行人检测器来检测指定文件夹 "images" 中的图像中是否有行人&#xff0c;并将检测到行人的原始图…

视频评论抓取软件|抖音数据抓取工具

最近我们推出了一款基于C#语言开发的工具。这款工具提供了丰富的功能&#xff0c;旨在帮助用户轻松获取抖音视频内容。让我们一起来详细介绍一下这款工具的主要功能模块&#xff1a; 1. 批量视频提取&#xff1a; 工具提供了便捷的批量视频提取功能&#xff0c;用户只需输入关…

vue3 多层级组件传值

1. 传统方式&#xff1a;父组件通过Props将值逐级传递给要接受的子组件 // 父组件<child :data"list"></child><script lang"ts" setup> import { reactive, toRefs} from vue; const state reactive({list:[] })const { list} toRe…

第3部分 原理篇2去中心化数字身份标识符(DID)(3)

3.2.2.4. DID文档 (DID Document) 本聪老师&#xff1a;DID标识符和DID URL还都只是ID&#xff0c;必须为它附加一个基本属性才可以证明是该主体独有的。这个就是我们下面介绍的DID文档。 本聪老师&#xff1a;每个DID标识符都唯一对应一个DID文档&#xff0c;也可以说&#x…

潇洒郎:2024 IDEA、Pycharm获取最新激活码获取方式

IDEA获取最新激活码 https://idea.javatiku.cn/ 手机打开&#xff0c;看到验证码&#xff0c;30分钟有效&#xff0c;输入验证码 获取到最新激活码

node 第二十五天 基于 node 的 mongodb 数据库驱动程序 mongoose

什么是mongoose MongoDB object modeling designed to work in an asynchronous environment. MongoDB对象建模设计用于在异步环境中工作。 其实就是基于Node/Deno 的数据库驱动程序, 一句话类比就是: Navicat是基于windows/macOS/Linux 操作系统环境 操作mongodb数据库的 程序…

Redis(十六)缓存预热+缓存雪崩+缓存击穿+缓存穿透

文章目录 面试题缓存预热缓存雪崩解决方案 缓存穿透解决方案 缓存击穿解决方案案例&#xff1a;高并发聚划算业务 总结表格 面试题 缓存预热、雪崩、穿透、击穿分别是什么?你遇到过那几个情况?缓存预热你是怎么做的?如何避免或者减少缓存雪崩?穿透和击穿有什么区别?他两是…

Go 1.22 中的 for 循环新特性详解

目录 每次迭代都创建新变量 支持整数类型循环 小结 在 Go 语言中&#xff0c;for 循环是实现迭代的主要方式。Go 中的 for 循环非常灵活&#xff0c;有多种使用方式&#xff0c;包括传统的三部分 for 循环、类似于其他语言中的 while 循环以及迭代集合的 range 循环。 在 1…

基于大数据的智能家居销量数据分析

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

[HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

HTTP概要

文章目录 什么是HTTP?URL的结构请求报文结构请求方法GETHEADPOSTPUTDELETETRACEOPTIONSCONNECTPATCH解释 请求头字段 响应报文结构响应状态响应头字段 HTTP会话3次握手无状态协议 什么是HTTP? HTTP&#xff0c;即Hypertext Transfer Protocol(超文本传输协议) 它是一个”请…

Linux——简单的Shell程序

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…

C# CAD备忘录

Document doc Application.DocumentManager.MdiActiveDocument; Database db doc.Database; Editor ed doc.Editor; 1、获取打开cad文件-文件路径 string fileName db.Filename;//文件名 输出结果 fileName “L:\目录\200401.dwg” 2、获取打开cad文件-文件名称 string fi…

XUbuntu22.04之解决:systemd-journald占用cpu过高问题(二百一十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

MongoDB聚合运算符:$binarySize

$binarySize聚合运算符返回给定字符串或二进制数据的字节数。 语法 { $binarySize: <string or binData> }使用 <string or bindData>可以是任何能够被解析为字符串和二进制数据的表达式&#xff1b;如果表达式解析为null&#xff0c;则$binarySize也返回null&a…

Linux运维-Web服务器的配置与管理(PHP)

Web服务器的配置与管理(PHP) 项目场景 某企业在CentOS上搭建Web服务系统&#xff0c;以PHP作为网页开发环境&#xff0c;以MySQL为后台数据库。 基础知识 PHP PHP原始为Personal Home Page的缩写&#xff0c;已经正式更名为 “PHP: Hypertext Preprocessor”&#xff08;超…

Neo4j学习笔记1:增删改查

目录 安装练习节点和关系结构连接数据库添加节点1. Cypher2. Py2neo 添加关系1. Cypher2. Py2neo 批量添加1. Cypher2. Py2neo 查询1. Cypher2. Py2neo 更新1. Cypher2. Py2neo 删除1. Cypher2. Py2neo 安装 这边直接下载了Neo4j Desktop安装py2neo&#xff0c;安装后就可直接…

Sora,“天使”的两副面孔

在科技的天空中&#xff0c;总有一些耀眼的新星&#xff0c;它们的出现让整个世界为之震撼。2月16日&#xff0c;这样的时刻再次到来。谷歌与OpenAI两大科技巨头几乎同时宣布了各自在人工智能领域的最新突破——Gemini 1.5 Pro与Sora大模型的面世。 作为业界翘楚&#xff0c;谷…

iOS面试:4.多线程GCD

一、多线程基础知识 1.1 什么是进程&#xff1f; 进程是指在系统中正在运行的一个应用程序。对于电脑而已&#xff0c;你打开一个软件&#xff0c;就相当于开启了一个进程。对于手机而已&#xff0c;你打开了一个APP&#xff0c;就相当于开启了一个进程。 1.2 什么是线程&am…