初识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,一经查实,立即删除!

相关文章

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

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

第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;输入验证码 获取到最新激活码

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

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

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

文章目录 项目介绍主要功能截图&#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程序思路 用下图的时间轴来表示事件的发生次序…

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

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

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

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

iOS面试:4.多线程GCD

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

算法题目中图和树的存储

邻接表的方式存储图和树 这就是邻接表&#xff0c;就是将每个结点的孩子结点用链表表示出来&#xff0c;再将所有结点以数组形式连起来。 存储树和图我们需要三个数组&#xff0c;h[N], e[N], ne[N],分别表示邻接表&#xff0c;结点值&#xff0c;结点的next值&#xff0c;h[i…

面试经典150题——快乐数

​"Success is not final, failure is not fatal: It is the courage to continue that counts." - Winston Churchill 1. 题目描述 2. 题目分析与解析 2.1 思路一 还是最简单的&#xff0c;模拟最直观的思路&#xff0c;就是进行一个while循环。比如&#xff1a;…

yolov8-seg dnn调用

接上篇一直更换torch、opencv版本都无法解决这个问题&#xff08;seg调用dnn报错&#xff09;。那问题会不会出在yolov8源码本身呢。yolov8的讨论区基本都看过了&#xff0c;我决定尝试在其前身yolov5的讨论区上找找我不信没人遇到这个问题。很快找到下面的讨论第一个帖子&…

20个改善编码的Python异常处理技巧,让你的代码更高效

异常处理是写好代码的一个重要的方面&#xff0c;虽然许多开发人员都熟悉基本的try-except块&#xff0c;但是有很多更深入的知识可以使异常处理更高效、更可读和更python化。所以本文将介绍关于Python异常的20个可以显著改善编码的Python异常处理技巧&#xff0c;这些技巧可以…

软件性能测试和功能测试有何联系和区别?第三方软件检测机构简析

软件性能测试和功能测试是软件开发过程中非常重要的两个环节。从根本上说&#xff0c;它们都是为了保证软件质量和可靠性&#xff0c;但它们的目标和方法却有所不同。 软件性能测试是评估软件在特定负载下的性能表现&#xff0c;包括响应时间、吞吐量、并发能力等指标。它通过…

Jenkins详解

目录 一、Jenkins CI/CD 1、 Jenkins CI/CD 流程图 2、介绍 Jenkins 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 3、安装Jenkins 1、安装JDK 2、安装tomcat 3.安装maven 4安装jenkins 5.启动tomcat&#xff0c;并页面访问 5.添加节点 一、Jenkins CI/…

Opencv实战(2)绘图与图像操作

Opencv实战(2)绘图与图像操作 指路前文&#xff1a;Opencv实战(1)读取与像素操作 三、基本绘图 文章目录 Opencv实战(2)绘图与图像操作三、基本绘图(1).line(2).rectangle(3).circle 四、图像处理(1).颜色空间1.意义2.cvtColor()3.inRange()4.适应光线 (2).形态操作1.腐蚀2.膨…

Python语句(一)【条件语句】

条件语句&#xff1a;通过一条或多条语句的执行结果&#xff08;True或者False&#xff09;来决定执行的代码块。 其程序流程图如下&#xff1a; 条件语句包括&#xff1a;if 判断条件&#xff1a;执行语句…… else&#xff1a;执行语句……orif 判断条件1:执行语句1…… el…

电商+支付双系统项目------项目部署到服务器

我已经把这个项目的所有模块都做好了。那么&#xff0c;现在我们要做的就是将这个项目部署发布了。其实关于部署发布网上有很多的文章都会教&#xff0c;我就不写哪些很具体的步骤了&#xff0c;我就简单的总结一下怎么部署这个项目&#xff0c;让大家对项目部署有一个整体的认…