单片机硬件基础知识
单片机——硬件基础知识
**单片机
——
硬件基础知识**
宗旨:技术的学习是有限的,分享的精神是无限的。
**1
、单片机内部资源**
STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源
(1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢
(2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用
(3)SFR —— 特殊功能寄存器
**2
、单片机最小系统**
最小系统:最少组件组成单片机可以工作的系统。
三要素:
(1)、 电源电路:5V
(2)、 晶振电路:11.0592MHZ、两个30PF
(3)、 复位电路:
P0:开漏输出,必须加上拉电阻
准双向口:
强推挽输出:电流驱动能力强
高阻态
上下拉电阻:上拉电路就是将不确定的信号通过一个电阻拉到高电平,同时限流作用。下拉电阻就是下拉到低电平。
上下拉电阻选取:从降低功耗方面考虑应该足够大,因为电阻越大,电流越小;驱动能力来看,小电阻
**3
、硬件基础知识**
(1)、电磁干扰(EMI)——静电放电(ESD)、快速瞬间脉冲群(EFT)、浪涌(Surge)
(2)、去耦电容的使用
低频滤波电容,平常应用最多的事钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。
高频滤波电容,电容附近,通常用104电容来进行去除高频干扰。
(3)、三极管(PNP,NPN) b,c,e — 电压驱动
控制应用
驱动应用
**4
、
LED
发光二极管
——
电流驱动**
通常红色贴片LED, 靠电流驱动,电压1.8V2.2V,电流120mA,在1~5mA亮度有所变化,5mA以上亮度基本不变。
VCC 电压是 5V,发光二极管自
身压降大概是 2V,那么在右边 R34 这个电阻上承受的电压就是 3V。
R = U/I —— 120mA —— R:1503K
**5
、
C
语言基础**
(1)、基本运算符
+ - * / % ++ – = == != += -= « » && || ! & | ~ ^
(2)、循环( 以;表示一条语句)
for/while/do…while
for(表达式1;表达式2;表达式3)
{
语句;//可以为空
}
while(表达式)//表达式为真,执行语句
{
语句;//可以为空
}
do
{
语句;//可以为空
}while(表达式);
(3)、函数 (模块化的思想)
类型 函数名(参数类型 参数)
{
函数体;
}
(4)、数组
<1>、具有相同数据类型
<2>、具有相同的类型
<3>、在存储器中连续存储
(5)、51单片机常用延时办法——循环、定时器
(P0 = ~(1 « i++);)
**5
、流水灯**
给IO口一个低电平即可点亮LED灯。
注:单片机对外设的操作其实就是对IO口电平的控制。
[cpp]
#include <reg52.h> //包含特殊功能寄存器定义的头文件
typedef
unsigned
int
uint;
typedef
unsigned
char
uchar;
int
main(
void
)
{
uint i = 0; // 定义循环变量i,用于软件延时
uchar j = 0; // 定义计数变量j,用于移位控制
while
(1)
// 主循环,程序无限循环执行该循环体语句
{
P0 = ~(1 « j++); // P0等于1左移j位,控制8个LED
for
(i = 0; i < 20000; ++i);
//软件延时
if
(j >= 8)
//移位计数超过7后,再重新从0开始
{
j = 0;
}
}
return
0;
}