单片机的学习归纳和总结(一):单片机基础知识
1、单片机的最小系统由三部分组成:
(1)晶振电路
(2)复位电路
(3)电源电路(实现:供电、程序下载、串口通信)。
2、单片机简介:单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。
3、单片机发展历史:单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段。
(1)SCM即单片微型计算机阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
(2)MCU即微控制器阶段,主要的技术发展方向是:不断扩展满足嵌入式应用。
(3)SoC嵌入式系统阶段,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决。
4、单片机的应用:凡是与控制或简单计算有关的电子设备都可以用单片机来实现,根据具体实际情况还可以选择不同性能的单片机,如:ATMEL、STC、PIC、AVR、凌阳、STM32、ARM等
5、8051系列单片机介绍:8051是一种8位的单芯片微控制器。
6、80C51单片机特点:集成8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器、5个中断源、2个中断优先级。外部ROM和RAM寻址范围64KB,并有控制功能较强的布尔处理器。
7、总线:是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其他部件之间的连线。外部总线有三种:数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线(CBControl Bus)
8、STC89C51RC/RD+系列单片机简介:
9、GPIO与上下拉电阻:GPIO即通用I/O口,通过设置P0、P1、P2、P3,就可以控制对应I/O外围引脚的输出逻辑电平“0(低电平)”和“1(高电平)”;
10、上下拉电阻:就是将不确定的信号通过一个电阻拉到高电平,同时此电阻起到一个限流的作用。下拉电阻就是下拉到低电平。OC门要输出高电平,外部必须加上拉电阻。
11、上拉电阻的作用:
(1)加大普通IO口的驱动能力
(2)起到限流的作用
(3)抵抗电磁干扰
12、上下拉电阻选取原则:
(1)从降低功耗方面考虑应该足够大,因为电阻越大,电流越小。
(2)从确保足够的引脚驱动能力考虑应该足够小,电阻越小,电流才能越大。
(3)开漏输出时,过大的上拉电阻会导致信号上升沿变缓。
13、两个电流概念:
(1)灌电流:MCU被动输入的电流
(2)拉电流:MCU主动输出的电流
14、机器周期与指令周期
(1)振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期,即开发板所使用的“晶振频率”的倒数。
(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。
(3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。
指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。
15、数字电路基础知识
(1)电平特性:
数字电路中只有两种电平:高电平和低电平
高电平:5V或者3.3V,取决单片机电源
低电平:0V
RS232电平:计算机串口的电平
高电平:-12V
低电平:+12V
因此在RS232串口通信时,需要使用一个电平转换的芯片,将正负12V转换为5V/3.3V和0V。
(2)逻辑运算
“与”运算:1 & 1 = 1;1 & 0 = 0;0 & 0 = 0
“或”运算:1 | 1 = 1;1 | 0 = 0;0 | 0 = 0
“非”运算:~1 = 0; ~0 = 1
“异或”运算:1 ^ 1 = 0; 0 ^ 1 = 1; 0 ^ 0 = 0; 1 ^ 0 = 1;
16、嵌入式C语言的所引进的数据类型
1)sfr:特殊功能寄存器声明
sfr 变量名 = 地址值
例如:sfr SCON = 0X98
特殊功能寄存器在REGtenxTM52F5278B.h这个头文件里面都帮我们定义好了,所以平时我们就不要自己去定义寄存器的名字。
2)sbit:特殊功能位声明,在给某个引脚取名的时候经常会用到。
sbit 变量名 = 地址值
例如:sbit led = P2^0;
3)bit:位变量声明,用来定义位数据变量。
17、C51中常见的一些预处理命令如下:
(1)#define
eg: #define A P0(注意后面不用加分号)
(2)#typedef
eg:typedef unsigned char uint; (后面要加分号)
重新定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的位宽是不一样的。
(3)#ifndef...#endif
条件编译,常用于头文件的定义还有一些程序条件编译
(4)#if(1/0)...#endif