目录
单片机的介绍:
1.1单片机的介绍
•单片机,英文Micro Controller Unit,简称MCU
•内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能
•单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制
•单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用
•单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用
1.2单片机的应用领域
•单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
1.3STC89C52单片机(我们所使用的)
•为什么叫51单片机?
51单片机是一种intel开发的8051单片机内核的统称。只要可以兼容这种内核的单片机都称作“五幺单片机”。
•所属系列:51单片机系列
•公司:STC公司
•位数:8位
•RAM:512字节
•ROM:8K(Flash)
•工作频率:12MHz(本开发板使用)
•RAM和ROM的区别:
RAM和ROM是两种存储器
RAM叫做Random Access Memory,也就是随机存储器
ROM叫做Read Only Memort,也就是只读存储器
RAM的特点是掉电丢失(相当于工作的工厂,只要停止工作就不再保存了)
ROM的特点是长期存储(相当与仓库,掉电不丢失)
RAM相当于电脑的内存条
ROM相当于电脑的硬盘
1.4命名规则(以STC89C52为例)
•STC:公司名称
•89:代表的是该单片机的系列
•C:代表工作电压
C:5.5~8.8V
LE:3.6V~2.4V / 3.4V~2.4V
•52:程序空间及RAM空间的大小
52表示8字节程序空间及512字节的RAM空间大小
•35:表示工作频率
35表示工作频率可达35MHz
•I:表示工作温度范围
I:工业级:40℃~85℃
C:商业级:0℃~70℃
•DIP:封装类型
•40:管脚数
1.5单片机的内部结构
•这一整个结构都是在单片机的芯片内,芯片又分为内核和一些周边设备
8051微处理器就是8051单片机的内核
E²PROM:用于存储数据
看门狗:防止数据丢失
I/O口:引出单片机的引脚
•所有的周边设备都是连接在总线结构上的
•CPU访问主线便可访问到全部的周边设备
•单片机的管脚图:
•管脚图是需要记忆的
P1/P2:用于连接外部设备的
Vcc:电源正极
Gnd:电源负极
XTAL:外接晶振给单片机提供时钟,用于驱动代码运行
RST:用于复位的
•开发板介绍:
•单片机的缺口一定要朝上安装进开发板
•在单片机的右侧有一排D1-D8为LED
•开发板下方的红色与黑色为按键
红色的为矩阵按键
黑色的为独立按键
按键用于接收我们输入的按键数值从而达到一定的功能
•单片机的下方右侧的IR1为红外接收头,可以接受遥控器的控制
•单片机下方左侧的R13为无线模块,调动无线模块可以实现有一个单片机到另一个单片机
•单片机左侧的DS1302为时钟芯片,可以读取它的时间以达到控制效果
•单片机左侧有一个复位按键,可以手动使单片机从头再次开始执行程序
•单片机左侧的AD/DA为模数转换器,用于将输入的高低电频转换为数字信号交给单片机来处理,同时也可以将输出的数字信号转换为模拟电压给外界使用
•单片机左侧的74H595芯片,可以扩展单片机的I/O口数量
•单片机左侧的步进电机可以精确的控制角度,且不会随电压的改变而改变转速
•单片机左侧的蜂鸣器可以被单片机控制发出一定的声音
•单片机左侧的译码器用于驱动数码管
•单片机左侧的24C02为一个ROM
•单片机上方的74HC245也是用于驱动数码管
•上面的电位器用于调整液晶屏的对比度,它右侧的排座是用于插入液晶屏
•液晶屏排座下方的为点阵屏,可以驱动它使它显示不同的图案
2.点亮一个LED
2.1电阻
•作用:限流
•读数方法
前面的数字为有效数字,最后一位为倍率
102 = 10*10^2 = 1K
1002 = 100*10^2 = 10K
2.2硬件电路
•输出高低电频的根本是配置P2口的寄存器
•CPU通过控制的寄存器来控制硬件电路,然后硬件电路来实现我们想要进行的功能
2.3存数据的小盒子(C51数据类型)
•unsigned表示“无符号”及用于表示非负数
•float与double没有unsigned类型
3.独立按键控制LED
3.1独立按键
•又叫轻触按键
•相当于一种电子开关,按下时开关接通,松开时开关断开
•原理:轻触按键内部的金属弹片手里弹动来实现接通和断开
•按键的按下与松开由寄存器来识别
3.2C51数据运算
•移位操作
•0011 1100<<1 -> 0111 1000
•0011 1100>>2 -> 0000 1111
即将所有数向左/向右移动,超出的位数直接抹去,位上无数的用0代替
•按位与 &
•0001 1000 & 0010 1010 -> 0000 1000
两个1才为1,有0就为0
•按位或 |
•0001 1000 | 0010 1010 -> 0011 1010
•有1就为1
•按位异或 ^
•0001 1000 ^ 0010 1010 -> 0011 0010
相同为0,不同为1
•按位取反 ~
•~0001 1000 -> 1110 0111
3.3C51基本语句
3.4按键的抖动
•对于机械开关,当机械出点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以再开关闭合及断开的瞬间会伴随一连串的抖动
3.5按键的消抖
•硬件的消抖:通过增加电路,然后将需要消抖的线连接到新增电路中,经过一些触发器来将抖动过滤掉,以此来进行消抖
•软件的消抖:通过延迟来将抖动的时间过滤掉
利用Delay()函数
void Delay(xms)
{
unsigned char i, j;
while (xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
输入在()内输入需要延迟的时间即可
4.数码管
4.1数码管介绍
•LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件
4.2数码管的引脚定义
分类:
一位的数码管
四位一体的数码管
结构:
一位的数码管
共阴极连接
共阳极连接
引脚排列原则:就近排列
N.B.•我们的开发板用的是共阴极连接的方式,使用前要将公共端接地(给数据0或者给低电频),称之为位选端。
•需要点亮的LED输入1,不需要点亮的则输入0。这些数据共称为段码。
•共阴极连接的段码与共阳极连接的段码是相反的。
四位一体的数码管
•一个时间只能有一个数码管被点亮,即使多个同时点亮了,那么他们的数据也是相同的
•这种连接方式可以节约I/O口
4.3 138译码器
•6 4 5三个引脚叫做使能端
•优点:可以用3个I/O口控制8个输出端
•工作原理:给C B A三个端口二进制数,然后138译码器会将二进制转换为十进制后,从而选中相应的LED
4.4 双向数据缓冲器(74HC245芯片)
•DIR:direction的缩写,用于告诉缓冲器数据缓冲的方向
•若接高电频则数据从左到右输出
•若接低电频则数据从右向做读回
•用处:提高电频的驱动能力
4.5C51数组
•数组:把相同类型的一系列数据统一编制到某一个组别中,可以通过数组名+索引号简单快捷的操作大量数据
int x[3]; //定义一组变量
int x[]={1,2,3}; //定义一组变量并初始化
x[0] //引用数组的第0个变量
x[1] //引用数组的第1个变量
x[2] //引用数组的第2个变量
N.B.引用x[3]时,数组越界,读出的数值不确定,且编译器不会报错,应该避免这种操作
4.6C51子函数
•子函数:将完成某一种功能的程序代码单独抽取出来形成一个模块,在其他函数中可随时调用此模块,以达到代码的复用和优化程序结构的目的
void Function(unsigned char x)
{
}
模板: 返回值 函数名(形参)
{
函数体
}
•有三种输入与输出方法
有参数,有返回值。
无参数,有返回值。
有参数,无返回值。
N.B.•有形参的函数在引用时要有在()内写参数
•无返回值的函数用void
•有返回值的函数记得末尾有return语句
4.6数码管的消影
•数码管在选中各个位选和段选的过程中,由于数据传输过快会导致数据的篡位。
•所以要在传递玩一个段选后将段选清零,这样之后即使数据篡位也不会对下一个段选造成影响
4.7数码管的驱动方式
•单片机直接扫描:硬件设备简单,但会稿费大量的单片机CPU时间
•专用驱动芯片:内部自带显存、扫描电路、单片机只需告诉它显示什么即可
(TM1640 74HC595等)