单片机学习笔记-基础知识
一、入门篇
1.1基础知识
- 单片机:集成芯片(微处理器、存储器、输入/输出接口)
- CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
- RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
- ROM:用以存放程序、一些原始数据和表格;
- I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
- T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
- 五个中断源的中断控制系统;
- 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
- 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。
- 功能实现:编程(C语言/汇编语言)
- 编程目的:控制芯片各引脚在不同时期输出不同电平(高电平/低电平),进而控制与单片机各个引脚相连接的外围电路的电气状态
- 芯片上的标号有特定意义
- 芯片封装
- DIP双列直插式封装
- PLCC带引线的塑料芯片封装
- QFP塑料方形扁平式封装和PFP塑料扁平组件式封装
- PGA插针网格阵列封装
- BGA球栅阵列封装
- 学习外围电路的设计与调试方法
1.2外部引脚介绍
- 基于8051内核的单片机,若引脚数相同或封装相同,引脚功能相通
- 常用40脚DIP封装(有20、28、32、44等不同引脚数)
- 总线:总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。
- 区分芯片引脚序号(PDIP封装为例)
- 小圆坑/小标记——第一引脚
- 逆时针方向数引脚1-N
- 按功能类别
- 电源和时钟引脚:Vcc、GND、XTAL1、XTAL2等
- Vcc(40脚)、GND(20脚)——电源引脚,常压+5V,低压+3.3V
- XTAL1(19脚)、XTAL2(18脚)——外接时钟引脚,分别为片内振荡电路的输入、输出端
- 编程控制引脚:RST、PSEN▔、ALE/PROG▔、EA▔/Vpp等
- I/O口引脚:P0、P1、P2、P3,4组8位I/O口(每个口可独立控制)
- P0口(39脚-32脚)——双向8位三态I/O口,无上拉电阻,为高阻状态,一般外接10KΩ的上拉电阻
- P1口(1脚-8脚)——准双向8位I/O口,内带上拉电阻,无高阻状态,输入不能锁存,该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号
- P2口(21脚-28脚)——与P1口相似
- P3口(10脚-17脚)——准双向8位I/O口,内带上拉电阻,第一功能与P1口相似,第二功能各引脚定义如下表,P3口的每一个引脚均可独立定义为第一功能的输入/输出或第二功能
- 电源和时钟引脚:Vcc、GND、XTAL1、XTAL2等
标号 |
引脚 |
第二功能 |
说明 |
P3.0 |
10 |
RXD |
串行输入口 |
P3.1 |
11 |
TXD |
串行输出口 |
P3.2 |
12 |
INT0▔ |
外部中断0 |
P3.3 |
13 |
INT1▔ |
外部中断1 |
P3.4 |
14 |
T0 |
定时器/计数器0外部输入端 |
P3.5 |
15 |
T1 |
定时器/计数器1外部输入端 |
P3.6 |
16 |
WR▔ |
外部数据存储器写脉冲 |
P3.7 |
17 |
RD▔ |
外部数据存储器读脉冲 |
1.3电平特性
- 数字电路电平特性:高电平、低电平
- 暂且定义单片机输出与输入为TTL电平(+5V等价逻辑1,0V等价逻辑0),高电平+5V,低电平0V;计算机串口为RS-232C电平(负逻辑电平),高电平-12V,低电平 +12V
- 计算机与单片机之间通信时要加电平转换芯片
1.4二进制与十六进制
- 二进制
- 逢二进一,借一当二
- 后缀B
- 当二进制数转换成十进制数时,从二进制数的最后一位起往前看,每一位代表的数为2的n次幂,n表示从最后起的第几位二进制数,从0算起,2n为位权
- 十六进制
- 逢十六进一,借一当十六
- 后缀H
1.5二进制的逻辑运算
- 与
- 必须都有,否则就没有
- C语言中运算符为&
- 运算规则
- 0&0=0
- 0&1=1&0=0
- 1&1=1
- 运算符号
- C语言中&表示“按位与”,变量之间按二进制位数对应关系一一进行与运算
- 或
- 只要其中之一有就有
- C语言中运算符为|
- 运算规则
- 0|0=0
- 0|1=1|0=1
- 1|1=1
- 运算符号
- C语言中|表示“按位或”,变量之间按二进制位数对应关系一一进行或运算
- 非
- 求反
- C语言中运算符为!
- 运算规则
- !0=1
- !1=0
- 运算符号
- C语言中~表示“按位取反”,如~01010101=(10101010);!表示对单一位进行运算
- 运算符号
- 同或
- 必须相同,否则就没有
- 逻辑运算符为⊙
- 异或
- 必须不同,否则就没有
- 逻辑运算符为⊕
- C语言中有“按位异或”运算”^“
1.6单片机的C51基础知识介绍
- 基本数据类型
数据类型 |
关键字 |
所占位数 |
表示数的范围 |
无符号字符型 |
Unsigned char |
8 |
0~255 |
有符号字符型 |
Char |
8 |
-128~127 |
无符号整型 |
Unsigned int |
16 |
0~65535 |
有符号整型 |
Int |
16 |
-32768~32767 |
无符号长整型 |
Unsigned long |
32 |
0~232−1 |
有符号长整型 |
Long |
32 |
-231~231−1 |
单精度实型 |
float |
32 |
3.4e-38~3.4e38 |
双精度实型 |
double |
64 |
1.7e-308~1.7e308 .. |
位类型 |
bit |
1 |
0~1 |
- 数据类型扩充定义
- 单片机内部有很多特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称
- 特殊功能寄存器声明头文件 reg51.h
- Sfr——特殊功能寄存器的数据声明,声明一个8位的寄存器
- Sfr16——16位特殊功能寄存器的数据声明
- Sbit——特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位
- Bit——位变量声明,当定义一个位变量时可使用此符号
- 常用头文件
- Reg51.h,reg52.h,math.h
- 运算符
- 算术运算符
算术运算符 |
含义 |
+ |
加法 |
- |
减法 |
* |
乘法 |
/ |
除法(或求模运算) |
++ |
自加 |
-- |
自减 |
% |
求余运算 |
- 关系(逻辑)运算符
关系(逻辑)运算符 |
含义 |
> |
大于 |
>= |
大于等于 |
< |
小于 |
<= |
小于等于 |
== |
测试相等 |
!= |
测试不等 |
&& |
与 |
|| |
或 |
! |
非 |
- 位运算符
位运算符 |
含义 |
& |
按位与 |
| |
按位或 |
^ |
异或 |
~ |
取反 |
>> |
右移 |
<< |
左移 |
- 基础语句
语句 |
类型 |
if |
选择语句 |
while |
循环语句 |
for |
循环语句 |
switch/case |
多分支选择语句 |
do-wnile |
循环语句 |
- 应该掌握的主要内容
- 最小系统运行的必要条件
- 电源
- 晶振
- 复位电路
- 对单片机任意I/O口的操作
- 输出控制电平高低
- 输入检测电平高低
- 定时器
- 重点掌握最常用的方式2
- 中断
- 外部中断
- 定时器中断
- 串口中断
- 串口通信
- 最小系统运行的必要条件
单片机学习笔记-基础知识相关推荐
- go get 拉取指定版本_go语言学习笔记-基础知识-3
相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...
- Cracer渗透视频课程学习笔记——基础知识(1)
常见的术语介绍 脚本(asp,php,jsp):可以编写动态网站的,浏览器右击查看不到,只能看到静态代码. html(css,js,html):解释语言,静态的,浏览器右击查看源码可以看到 HTTP协 ...
- 设计模式学习笔记-基础知识篇
1. 设计模式的重要性 1.1 设计模式解决的是在软件过程中如何来实现具体的软件功能.实现同一个功能的方法有很多,哪个设计容易扩展,容易复用,松耦合,可维护?设计模式指导我们找到最优方案. 1.2 设 ...
- java学习笔记-基础知识-2023.3.29
学习网站:https://www.sxt.cn/Java_jQuery_in_action/History_Direction.html 刷题网站 牛客网专题-spring java sql 第一章 ...
- mysql 实战 45讲 学习笔记 基础知识 原理剖析
MySQL 实战45讲 持续更新中~ 00讲 开篇 我们知道如何写出逻辑正确的SQL语句来实现业务目标,却不确定这个语句是不是最优的 我们听说了一些使用数据库的最佳实践,但是更想了解为什么这么做 我们 ...
- Validform 学习笔记---基础知识整理
面对表单的验证,自己写大量的js毕竟不是一个明智的做法.不仅仅是代码很长而且不便于梳理.Validform就是一款开源的第三方验证js的控件,通过添加相应的js以及css能够有效的验证表单,维护起来也 ...
- html css学习笔记~ 基础知识和页面显示的四个区域内容及display:flex 等常用的一些命令(手画)
一般 在html文件中输入<link href=".../xxx.css" rel="stylesheet"/> 通过这样的外部样式联系 css & ...
- Spring学习笔记—基础知识总结
一. Spring概述 1.spring框架是什么? spring是java的开源框架, 核心技术是ioc,aop. spring也是一个容器,容器放的是java对象. 通过spring框架可以实现解 ...
- k8s学习笔记——基础知识
1.关于svc中ClusterIP的API格式 https://localhost:6443/api/v1/namespaces/$ns/services/$svc 前提是token具有相应访问权限 ...
- HTML学习笔记-基础知识整理
VScode默认快捷键 VScode默认快捷键 ctrl + b 打开关闭侧边栏 ctrl + d 查找相同的代码 ctrl + z 撤销 ctrl + y 重做(取消撤销) ctrl + f 查找 ...
最新文章
- Google今天的logo
- 怎么发表论文能保证被收录
- unity3d技术摄像头跟随_堪比灯厂,新时代智能安全灯光技术,体验大众迈腾GTE IQ.LIGHT...
- APP不显示GPU过度渲染的问题
- java自动随机字符_java随机字符生成工具
- 加班累到住院,到30岁年薪百万:你所谓的拼命,绝不是职场捷径
- Datawhale 三月组队学习计划
- java定义整形输出_java程序命令行接受字符转换为整形并相加输出
- python的get和post方式请求详解
- linux分享二:Linux如何修改字符集
- switch 是如何支持 String 的?为什么不支持 long?
- S/4 HANA中的数据库锁策略
- Windows下Cesium Terrain Builder编译 (VS2015)
- 自定义百度网盘分享密码 提取码
- Android 10.0修改系统型号(Build.MODEL)
- 我国《个人信息保护法》立法背景与制度详解
- 计算机无法识别点读笔,点读笔插电脑上不识别
- 电子商务:说说转化率
- Hadoop启动错误:WARNING log4j.properties is not found. HADOOP_CONF_DIR may be incomplete
- Swift内存所有权宣言