admin管理员组

文章数量:1571949

一、基础知识

1.51单片机介绍

①单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。

②单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用。

③在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

注:io口指单片机上的一组引脚,用于与外部设备进行数据交互。它可以实现数字输入、数字输出、模拟输入、模拟输出等功能。

 

 

2.51所用的运算符

 3.①传统方式编程太过繁杂,故可以用模块化编程(有.c文件:函数、变量的声明和.h文件:可被外部调用的函数、变量的声明)

②预编译(#……)

 ③举例

 4.寄存器

 5.51的数据类型

 ①位变量——bit:是C51 编译器的一种扩充数据类型,它的值是一个二进制位,不是0 就是1。函数可包含类型为"bit"的参数,也可以将其作为返回值。对位变量定义的限制。

②特殊功能寄存器——sfr:是一种扩充数据类型,值域为0~255。用于访问51单片机内部的所有特殊功能寄存器。“sfr”是定义语句的关键字,其后必须跟一个MSC-51单片机真实存在的特殊功能寄存器名,“=”后面必须是一个整型常数,不允许是带有运算符的表达式,是特殊功能寄存器“sfr-name”的字节地址,这个常数值的范围必须在SFR地址范围内,位于0x80-0xFF。

③16位特殊功能寄存器——sfr16:为C51的扩充数据类型,只不过是用来定义单片机的内部16位特殊功能寄存器,并且占用两个内存单元。

④可寻址位——sbit:是C51 中的一种扩充数据类型,利用它可以访问芯片内部的RAM 中的可寻址位或特殊功能寄存器中的可寻址位。

注:sbit和bit区别:bit和其他普通变量类型(如int)类似,只不过是定义的是一个位普通变量,而sbit定义的位必需是特殊功能寄存器或内部RAM区中的可寻址位。

二、51单片机操作

1.1点亮LED

①LED:又叫发光二极管,是一种常用的发光器件,通过电子与空穴复合释放能量发光,可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。

 ②原理

 

 注:①LED一边接VCC(正极),另一边接负(低电平)则被点亮。若寄存器为一,通过驱动器,给LO口高电平;若寄存器为零,给io口低电平。②CPU:储存代码

 

③代码

 ④结果(LED一亮一灭)

 1.2LED闪烁

①代码

 注:单片机扫描速度过快,导致代码执行太快,从而导致LED闪的特别快,所以需要添加一个Delay函数来延时。

②结果:LED以1s为周期的闪烁

1.3LED流水灯

①代码

(1)

 

 代码(2)

 ②结果:前两个LED运行时间间隔为一秒,后面的时间间隔为100毫秒

2.1独立按键控制LED亮灭

①独立按键的介绍

(1)轻触按键:一种电子开关,按下时开关接通,松开开关断开。原理:通过轻触按键内的金属弹片受力弹动来实现接通和断开。

 

注:弹片被按下时,三个点会连接,实现导通

②原理

 独立按键一边接GND(低电平),一边接io口(默认高电平)。即:按键没有按下,io口保持高电平,寄存器值为1,LED不会被点亮;按键按下,io口变为低电平,寄存器值为0,LED会被点亮。

③代码

 ④结果:LED按下会点亮,松手会灭。

2.2独立按键控制LED状态

①按键的抖动:对于机械开关,断开闭合时,由于机械触点的弹性作用,一个开关闭合时不会马上稳定的接通,断开时也不会一下断开,所以在一瞬间有一连串的抖动。

 ②解决方法:通过Delay延时函数把抖动时间延时过去

③代码

 ④结果:按下k1,松手时LED亮,再按下,松手时LED灭。

2.3独立按键控制LED显示二进制

①代码

 ②结果:按k1,使LED以二进制点亮。

2.4独立按键控制LED移位

①代码

 

 ②结果:按k1,灯往左移;按k2,灯往右移。

3.1静态数码管

①数码管介绍:

八个LED有两种连接方式:共阴极连接和共阳极连接

注:51开发部是共阴极连接

 

 注:3,8(位选)接地(低电平),另一边接高电平(io口值为1)会被点亮。

②四位一体数码管

 

 

 

 注:12,9,8,6为位选,接高电平的话,负极接到了正极,则不亮;接低电平则亮。下面的引脚给高电平则亮,低电平不亮。

74LS138芯片:A,B,C为输入端,Y0-7是输出端,该芯片接电源,G1,G2A,G2B是使能端(类似于开关),G1接高电平,G2A,G2B接低电平时开始工作。C,B,A给的值是二进制,转化为十进制,对应输出端有效(低电平0),实现三个线控制八个线。

高电平驱动能力弱,低电平驱动能力强。

③多位同时显示的方法:不断很快的扫描,通过余晖达到同时显示。

④代码

 ⑤结果:第二位显示3。

3.2动态数码管显示

①代码

 

 注:加入Delay函数是为了消影。

4.1LCD1602

 

 5.1矩阵键盘

①原理:矩阵形式,可减少io口的占用。采用逐行或逐列的扫描。逐行扫描:把一行看为一个整体,给P14-17赋值,若这个整体接低电平,则这个整体有效,若给1,则无效,然后控制P10-13口,若P1=0,则代表按键按下(和独立按键类似)。在这我们使用逐列扫描,如果使用逐行扫描,因为引脚冲突,蜂鸣器会响。逐列扫描:把一列看成一个整体,给P10-13赋值,再控制P14-17口来判断按键是否按下。

 ②扫描

 ③代码

 ④结果

 注:按键按顺序从一排列到16,显示在LCD上。

6.1定时器/计数器(单片机内部)

①作用:用于计时系统;替代上时间的Delay。

②STC89C52RC有三个定时器(T0、T1、T2)。

③过程

 ④定时器的工作模式

.T0和T1均有四种工作模式

    模式0:13位定时器/计数器

    模式1:16位定时器/计数器(常用)

    模式2:8位自动重装模式

    模式3:两个8位计数器

.模式一

 

(1)计数部分

TL0和TH0:十六位(两个字节)(65535个数)的计数器,高字节是TH,低字节是TL,0代表是定时器0。

过程:左边的时钟提供脉冲,每来一个脉冲,计数器的值就加一,加到最大值之后,在下一个脉冲的时候,会产生溢出,计数器会回到0(65535+1=0),会制一个标志位---TF0,它会向中断系统申请中断。

(2)控制部分

控制时钟,控制启动暂停。TR0:控制定时器的启动和暂停

(3)时钟部分

时钟最初的来源有两个:一个是SYSclk(系统时钟,即晶振周期,我使用的开发部晶振为11.0592MHz),另一个是T0pin(单片机外部的一个接口)。

晶振上电之后通过内部元件(压电陶瓷),这种陶瓷会发出固定频率的振动,用这种信号产生一个固定的频率。产生的脉冲会被12分频,开关如果连到12分频,输出频率就是11.0592/12赫兹,周期就是12/11.0592us,计数单元每隔12/11.0592us计数一次,计到最大值,就会产生中断。

c/T(T上有横杠):如果配置为1(高电平)的话,就是c功能,也就是计数器功能(T0pin);如果给0,上面横杠代表低电平,就是T功能(定时器功能)。

6.2中断系统

①作用:使CPU具有对外界紧急事件的实时处理能力而设置的。

②定义:CPU正在处理某件事时发生了紧急事件,CPU暂停当前工作,去处理紧急事件,处理完之后,再回到原来被中断的地方,继续原来的工作。

注:请求CPU中断的请求源是中断源。每个中断源都有一个优先级别,CPU先响应优先级别最高的中断请求。

中断嵌套:当CPU正在处理一个中断源时,发生了另一个优先级更高的中断源请求,CPU暂停原来中断源的处理,去处理优先级别更高的中断源,处理完之后,再回来继续处理原来的中断源。有中断嵌套的中断系统是多级中断系统,反之则是单级中断系统。

 

 ③STC89C52RC中断资源

.中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器中断1、串口中断、外部中断2、外部中断3)

.中断优先级:4个

.中断号(中断的入口)

 ④相关的寄存器

 

.寄存器是连接软硬件的媒介,相当于复杂机器的“操作按钮”。

.在单片机中寄存器就是一段特殊的RAM存储器,可以存储和读取数据,每一个寄存器背后都连接了一根导线,控制着电路的连接方式。

.TCON

 TRO:定时器T0的运行控制位。该位由软件置位。当GATE(TMOD.3)=0,TR0=1时允许T0开始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=0且INT0(上有横杠)输入高电平时,允许T0计数。

TF0:定时器/计数器T0的溢出中断标志。T0加到最大值后溢出,由硬件置“1”TF0,向CPU请求中断,保持CPU响应该中断时,硬件清“0”TF0。

.TMOD

M1、M0:控制定时器/计数器0模式的选择,一开始配置成0 1。

 注:非门:左边给1,右边就变成0(把数据反向)。或门:输入全为0,输出为0,其他均输出1。与门:输入端有0,输出就是0,输入端全为1,输出1。

 .EA(总开关):CPU总中断允许控制位,EA等于0相当于开关断开

 .ET0:T0的溢出中断允许位,ET0=1,允许T0中断;ET0=0,禁止中断

.IP:中断优先级控制寄存器低

⑤代码

 

 

 

 ⑥结果:按K1,流水灯向左流动;按K2,流水灯向右移动。

 7.1串口

①作用:可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大扩展了单片机的应用范围,增强了单片机系统的硬件实力。

②原理

 .发送端(TXD)和接收端(RXD)要交叉连接

.当电平标准不一致时,需要加电平转换芯片

 .单向数据传输,直接一根通信线

 

 注:

.这个整体都在MCU里,最左边是数据的总线。

.时钟部分:靠控制T1的溢出率,经过分频,来控制收发器的采样时间,从而控制波特率。

 .SBUF:写操作时,写入的是发送寄存器,读操作时 读出的是接受寄存器。

 ③UART:四种工作模式

模式0:同步移位寄存器

模式1:8位UART,波特率可变

模式2:9位UART,波特率固定

模式3:9位UART,波特率可变

注:波特率:串口通信的速率(发送和接受各数据位的间隔时间)

④寄存器

 8.1LED点阵屏

 .LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素
以“8"字型排列而已。
.LED点阵屏与数码管一样,有共阴和共阳两种接法。
.LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示。

②原理

 注:SER(串形数据)给移位寄存器输入,SERCLK(串形时钟),每来一个上升沿,数据就会一位一位的向下走,RCLK可以把输入的八个数据搬到右边的输出缓存中,溢出的数据会移到QH'中

③引脚对应关系

 ④代码

 

 ⑤结果(哭脸)

 

 

 

本文标签: 单片机基础