嵌入式51单片机

什么是嵌入式

概念:以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统

51单片机

  1. 1980年,Intel公司推出一款MCS-51系列(8051型号单片机),从MCU转型CPU市场

  2. Atmel -> AT89C51、Philip(P89V51 增强型单片机,支持单片机ISP在线编程)、STC(宏晶半导体 STC89C51、STC89C52、STC89C52RC)

相关概念

|-------------|------------------------------------------------------------------------------------------|
| 概念 | 作用 |
| MCU | Micro Ctroller Unit,微控制器,集成度高,将所有功能集成到一块芯片中(CPU、RAM、ROM、IO控制器、UART控制器、定时器、中断系统),成本低,简单控制 |
| CPU | Central Processing Unit,中央处理器,完成数据运算、指令处理,CPU性能越好,完成数据运算的时间就越快 |
| MPU | Micro Processing Unit,微处理器,集成度低,只有CPU模块,需要单独外接一些功能模块(存储、外设),成本高,复杂应用,可以跑Linux操作系统 |
| GPU | Graphics Processing Unit(图像处理单元),处理图形数据,图像渲染(GPU性能越好,图像处理质量越高) |
| NPU | Neural Processing Unit(神经网络处理单元),AI推理、硬件加速、神经网络处理(华为 达芬奇NPU AI自动优化照片) |
| FPU | Float Point Unit(浮点数单元),完成浮点数运算和处理(IEE754),集成在CPU内部 |
| SOC | System On Chip(片上系统),将多个功能芯片集成到一起 |
| ROM | Read-Only Memory,只读存储器,主要存放单片机程序和指令,单片机掉电数据不丢失 |
| RAM (片内RAM) | Random Access Memory, 随机访问存储器,主要单片机程序运行过程的变量,掉电数据丢失 大小256byte |

51单片机芯片内部资源:

MCU单片机芯片

原理图

1~40:引脚的标号

P开头的为网络编号,在其他原理图中,含有相同网络编号的引脚彼此互通,可避免复杂连线

实物图

STC:宏晶半导体

89C52RC:单片机芯片型号

DIP40:双列直插式,40个引脚

将40个引脚划为4组(P0, P1, P2, P3)

Pi:Pi_0 ~ Pi_7(i = 0,1,2,3)

板功能示意图

芯片上方绿色的杆:拔码杆,可用来插拔芯片,注意芯片不要插反了

发光二极管

二极管:阳极+阴极,具有单向导通性

共阳极二极管:将所有发光二极管的阳极连接到VCC,发光二极管的阴极接到单片机的引脚,此时阳极输出高电平,给对应单片机引脚低电平,造成电压差,满足发光二极管的单项导通性,使其发亮

共阴极与之相反,阴极接到GND,阳极接引脚

原理图

竖线一侧为阴极,另一头为阳极,例如上图左侧为阴极右侧为阳极

RP7,RP7:四位一体电阻,限流,防止电流过大烧毁二极管

实物图

位运算

|-----|------|----------------------------------------------------------|-------------|------------------------|
| 运算符 | 名称 | 功能 | 应用场景 | 例子 1001 1110 1101 0011 |
| & | 按位与 | 将对应位的bit进行比较,如果都为1,结果为1,如果有一个bit为0,结果为0(有0则0) | 指定位清0,其余位不变 | 1001 0010 |
| | | 按位或 | 将对应位的bit进行比较,如果有一个为1,结果为1,如果都为0,结果是0(有1则1) | 指定位置1,其余位不变 | 1101 1111 |
| ^ | 按位亦或 | 将对应位的bit进行比较,如果两个bit相同,则结果为0,如果两个bit不相同,则结果为1(相同为0,相异为1) | 电平翻转 | 0100 1101 |
| ~ | 按位取反 | 每一位的bit进行翻转(1,0转换) | | 0110 0001 0010 1100 |

以P2 = 0000 0000为例解释应用场景(一共7位,最左侧为第0位)

指定位置1:P2 |= (1 << 5) | (1 << 2),此时P2 = 0001 0100

指定位清0:P2 &= ~(1 << 2),此时P2 = 0001 0000

电平翻转:P2 = P2 ^ (0xFF),此时P2 = 1110 1111

注意:&的用法不能像|可以连续用,例如P2 &= ~(1 << 2) | ~(1 << 5),事实上这并不是指定第二位和第五位清零,要达到这样的效果需要写两行&

进制转换表

八进制转二进制

|-----|-----|-----|-----|-----|-----|-----|-----|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |

十六进制转二进制(0-7同上并在二进制前加"0")

|------|------|------|------|------|------|------|------|
| 8 | 9 | A | B | C | D | E | F |
| 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |

51单片机程序开发流程

1,安装Keil4软件

2,打开Keil4软件

3,创建单片机工程

1)上方Project → New μVision Project

2)选择Atmel中的AT89C51,点击OK

3)是否选择启动代码加入工程,选择否

4)将.c文件加入到Source Group 1目录下,双击Source Group 1,选择并点击add

4,编写单片机程序

包含头文件reg51.h

5,点击Target Options → Output → Create HEX File → OK

6,编译,左上角Bulid(快捷键F7)和Rebuild,由于勾第五步进行了勾选,会生成自动.hex文件

7,打开单片机程序STC-ISP

8,选择单片机芯片和串口,并打开程序文件.hex

9,点击左下角下载/编程,需要对开发板进行复位

逻辑分析仪

作用:以方波的形式获取引脚电平变化

CH0-CH7:逻辑分析仪通道,通过杜邦线将通道与引脚连接

GND:通过杜邦线将逻辑分析仪GND与单片机的GND连接

逻辑分析软件Logic

看到如下字样,代表逻辑分析仪连接成功:

点击Device Setting按钮,可以设置通道和速率:

显示形式:鼠标指向的表示高/低电平持续的时间

数码管

数码管:基极 + 发射极 + 集电极,51单片机上搭载了4位共阴极数码管,每一个数码管可以独立显示一个数值,但在同一时刻只能有一个数码管被点亮

注意:与二极管相反,二极管是共阳极,数码管是共阴极,所以数码管要亮起,引脚应该为高电平,此时基极和发射极会产生压降,使集电极和发射机导通,即三极管被导通

原理图

根据P0对应的字母对应数码管亮起的部位,其中P07对应的dp是小数点


三极管有PNP和NPN两种类型,箭头朝外为NPN,对于NPN来说箭头的起点为基极,箭头指向的为发射极,箭头另一侧为集电极,PNP相反,如图中B为基极,E为发射极,C为集电极

实物图

数码管显示

1,先位选,再段选

位选:将数码管对应的NPN三极管的基级(P10-P13)给定高电平,就可以选中某一位数码管

段选:给定对应段的引脚高电平,即可选中某一段

具体例子

二极管

亮灭

n搭配while做了个简易的延时,首先是P2=0,二进制就是八个0,0对应低电平,八个二极管全部亮起,短暂延时后P2 = 0xA5,二级制1010 0101,所以第1、3、4、6,也就是D2、4、5、7亮起

连续亮起

左下角的警告是正常的,意思是在led.c文件中有函数没有用到

该代码的效果是二极管从D1依次亮到D8然后再亮回D1

数码管

亮起

位选为1,P0二进制为0000 0110,高电平亮起低电平熄灭,所以第三个数码管亮1

同时显示

数码管在同一时刻只能显示一位,但利用人的肉眼视觉暂留效应(余晖效应),在某一位数码管显示一个数值后,可以通过快速刷新延时,再去在其他位数码管显示数值

通过逐步取余,并代入位选和段选参数,delay(100)耗时极短,可产生余晖效应

相关推荐
恶魔泡泡糖3 小时前
51单片机独立按键
单片机·嵌入式硬件·51单片机
炸膛坦客4 小时前
Cortex-M3-STM32F1 开发:(五十)软件模拟 IIC 和硬件 IIC 的区别,以及软件 IIC 配置步骤及相关函数,以及相关问题
stm32·单片机·嵌入式硬件
清风6666665 小时前
基于单片机的电流电压可调数控电源
单片机·毕业设计·课程设计·期末大作业
泡泡糖的中文规格书5 小时前
【无标题】
单片机·嵌入式硬件·规格说明书·datasheet
风雨中的蜜蜂5 小时前
SKY13330-397LF国产替代ATR5330 SPDT开关芯片
单片机·嵌入式硬件
殷忆枫5 小时前
基于STM32的ESP8266连接Onenet(HAL库)
stm32·单片机·嵌入式硬件
Sophia么么5 小时前
嵌入式知识---如何配置定时器的时基单元,如何配置输出通道
单片机·嵌入式硬件
Katecat996635 小时前
尿液样本中细胞与非细胞成分检测分类系统实现
单片机·分类·数据挖掘
2401_863318636 小时前
基于单片机的恒温箱设计
单片机·嵌入式硬件