51单片机学习笔记之基础部分
目录
一、普中单片机详解
二、51单片机介绍
三、C语言基础
四、单片机最小系统
五、开发软件安装与工程建立
从0开始,重新学单片机,from 0 to 100. ----2019/1/14
一、普中单片机详解
电源接口(火牛接口):额定电压5V
ch340:USB转串口
DB9串口:RS232芯片,可用于下载程序,要用普通线
官方STC下载软件是软启动的,是手动下载的
晶振
温度传感器DS18B20
红外
温度和红外不能插反,有方向
独立按键(8个IO口)
学会看原理图
交通灯(10个LED)
AD/DA转换(0-5V,模拟信号,SPI)
矩阵键盘(16个按键)
555模块
时钟模块,有纽扣电池,断电也能走
595模块:IO口扩展
LED模块:245/573芯片,驱动数码管
静态数码管/动态数码管
1602LCD:注意方向
12864LCD
TFT彩屏(短接片的配置)
165芯片:并转串
245芯片:双向导通
24c02:e2prom,掉电不丢失
138芯片:38译码器
点阵:16*16,用595驱动
电机(五线四相等)
继电器模块
蜂鸣器模块
复位电路
供电按键
单片机插入方向:凹口朝手把
坚持
二、51单片机介绍
1、从0开始,C语言基础
ROM:只读存储器,掉电不丢失,存程序
RAM:随机存储器,掉电丢失,存变量参数
看一块芯片:CPU位数,ROM/RAM大小,IO口数量,定时器,计数器等等
DIP(直插)封装/贴片封装
2、怎样开始学习?
1.实践第一。
2.补充必要的理论(数电、模电、C语言)知识,即缺什么补什么。
3.做工程项目积累经验。(可在网络上搜集题目,也可自己有什么想法大胆的去试 验)
3、单片机的预备知识
1.电平特性
2.2进制与16进制的表示及转换
3.二进制数的逻辑运算
4.8051单片机介绍
5.C51基础知识
4、电平特性
数字电路中只有两种电平:高电平和低电平
高电平:5V或者3.3V,取决单片机电源。
低电平:0V
RS232电平:计算机串口的电平
高电平:-12V
低电平:+12V
所以当我们用单片机跟电脑通信的时候,我们要通过各种元器件将单片机的电平转换为计算机可识别的电平才能跟电脑进行通信。(MAX232芯片)
5、2进制与16进制的表示及转换
二进制
由于数字电路中的只有两种电平的特性,计算机中使用的数字采用都是二进制的。(1 高电平 0低电平)
二进制是使用0和1两个数码来表示的数,它的基数是2,进位规则是“逢二进一”。
十六进制
十六进制的基数是F,进位规则是“逢十六进一”。(0~9,A~F)
二进制和十六进制之间的转换
6、二进制数的逻辑运算
1.“与”运算
有0得0
1&1=1 ; 1&0=0 ; 0&0=0 ;
2.“或”运算
有1得1
1|1=1 ; 1|0=1 ; 0|0=0;
3.“非”运算
1的非得0,0的非得1。
~1=0; ~0=1;
4.“异或”运算
必须不同,否则没有(0)-----不同为1,相同为0
1^1=0;1^0=1;0^0=0;
7、8051单片机介绍
1.80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的 CMOS工艺单片机产品统称为80C51系列。当前常用的80C51系列单片机主要产品 有:
﹡ Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;
﹡ ATMEL的:89C51、89C52、89C2051等;
﹡ Philips、华邦、Dallas 、STC 、Siemens(Infineon)等公司的许多产品 。
2.P3口第二功能各引脚功能定义:
P3.0:RXD串行口输入
P3.1:TXD串行口输出
P3.2:INT0外部中断0输入
P3.3:INT1外部中断1输入
P3.4:T0定时器0外部输入
P3.5:T1定时器1外部输入
P3.6:WR外部写控制
P3.7:RD外部读控制
3.总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;(掉电丢失)
ROM:用以存放程序、一些原始数据和表格;(掉电不丢失)
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。
8、单片机工作的基本时序
机器周期和指令周期
(1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,我们开发板上为12MHZ。
(2) 状态周期: 每个状态周期为时钟周期(振荡周期)的 2 倍, 是振荡周期经二分频后得到的。
(3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。
(4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。
MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。
9、学单片机到底学什么
1.对I/O口的控制,无论单片机对外界进行何种控制,都是通过I/O口进行的。
2.接受外部的控制,通过I/O来感受外部的电压。
3.51单片机总共有P0、P1、P2、P3四个8位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲器。4个I/O端口都能作输入输出口用。
P0:开漏输出,要外接上拉电阻
P1/2/3:准双向IO(内部有上拉电阻)
上下拉电阻
上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻起到一个限流的作用,下拉就是下拉到低电平。
1、OC(漏极开路)门要输出高电平,外部必须加上拉电阻。
2、加大普通IO口的驱动能力。
3、起到限流的作用。
4、抵抗电磁干扰。
上下拉电阻的选取原则(4.7k - 10k)
1、从降低功耗方面考虑应该足够大,因为电阻越大,电流越小。
2、从确保足够的引脚驱动能力考虑应该足够小,电阻越小,电流才能越大。
3、开漏输出时,过大的上拉电阻会导致信号上升沿变缓。
三、C语言基础
#include<reg51.h>
void main() main不能写错
{
while(1)
{
}
}
包涵头文件 reg51.h/reg52.h
程序主函数 main不能写错
非0就为真
++a/a++
C-51的数据类型扩充定义
sfr:特殊功能寄存器声明
sfr 变量名=地址值;
*特殊功能寄存器在reg51.H这个头文件里面都帮我们定义好了,所以平时我们就不要自己去定义寄存器的名字。
sbit:特殊功能位声明
sbit 变量名=地址值;
*在给某个引脚取名的时候经常会用到。
bit:位变量声明
*用来定义位数据变量
例:sfr SCON = 0X98;
sbit LED = P0^2;
C51中常用到的一些预处理命令
#define
#define A P0(注意后面不用加分号)
#typedef
typedef unsigned char uint;(后面要加分号)
重新定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的位宽是不一样的。
#ifndef…#endif
条件编译,常用于头文件的定义还有一些程序条件编译
C言语常用的运算符
+ - * / (加 减 乘 除)
> >= < <= (大于 大于等于 小于 小于等于)
== != (测试等于 测试不等于)(它是逻辑运算符)
比如说:if(a==1)或者if(a!=1)
{
b=2;
}
&& || ! (逻辑与 逻辑或 逻辑非 )
比如说:if((a>0)&&(b>0))
{ do something}
四、单片机最小系统 (P0要接上拉)
1.电源电路
2.复位电路
3.时钟电路 12MHZ
4.下载电路
五、开发软件安装与工程建立
步骤百度上有
以管理员身份运行keil,进行破解
是否需要启动文件,否
output 生成hex文件(下载到单片机的文件)
xdata--外部ram大小
main函数 不能写成mian