作者:mobiledu2502892513 | 来源:互联网 | 2024-11-11 23:53
本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。
一、单片机概述
1、什么是单片机
单片机就是在一块硅片上集成了微处理器(类比CPU)、存储器(类比硬盘和内存)及各种输入/输出接口的芯片(类比键盘鼠标控制芯片),这样一块芯片就具有了计算机的属性,因而被称为单片型微型计算机,简称单片机。
2、单片机引脚描述
单片机引脚分为三类:①电源和时钟引脚。如VCC、GND、XTAL1、XTAL2;②编程控制引脚。如RST,PSEN_n、ALE/PROG_n、EA_n/VPP;③I/O口引脚。如P0、P1、P2、P3,4组8位I/O口。
VCC、GND——单片机电源引脚,不同型号单片机接入对应的电压电源,常压位+5V,低压位+3.3V。
XTAL1、XTAL2——外接时钟引脚。XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,需在这两个引脚外接石英晶体和振荡电容;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
RST——单片机的复位引脚。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码,通俗来讲,就是单片机从头开始执行程序。
PSEN_n——程序存储器允许输出控制端。在读外部程序存储器时PSEN_n低电平有效,以实现外部程序存储器单元的读操作,由于现在我们使用的单片机内部已经有足够大的ROM,所以几乎没有人再去扩展外部ROM,因此这个引脚只需了解即可。①内部ROM读取时,PSEN_n不动作。②外部ROM读取时,在每个机器周期会动作两次。③外部RAM读取时,两个PSEN_n脉冲被跳过不会输出。④外接ROM时,与ROM的OE脚相接。
ALE/PROG_n——在单片机扩展外部RAM时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的复用。在没有访问外部存储器器件,ALE以1/6振荡频率输出(即6分频),当访问外部存储器时,以1/12振动周期输出(12分频),从这里可以看出,当系统没有进行扩展时,ALE会以1/6振荡周期固定频率输出,因此可以作为外部时钟,或作为定时脉冲使用。PROG_n位编程脉冲的输入端,单片机的内部有程序存储器(ROM),它的作用时用来存放用户需要执行的程序,那么我们怎样才能将写好的程序存入这个ROM中?实际上,我们是通过编程脉冲输入才写进去的,这个脉冲的输出端口就是PROG_n。现在有很多单片机都已经不需要编程脉冲引脚往内部写程序了,比如我们用的STC单片机,它可以直接通过串口往里面写程序,只需要三个线与计算机相连即可。而且现在的单片机内部都已经带有丰富的RAM,所以也不需要再扩展RAM 了。因此ALE/PROG_n这个引脚的用处已经不太大。
EA_n/VPP——EA_n接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完ROM后自动读取外部ROM。EA_n接低电平时,单片机直接读取外部ROM。8031单片机内部是没有ROM的,所以使用8031单片机时,这个引脚是一直低电平的。8751单片机烧写内部EPROM时,利用此引脚输入21V的烧写电压。因为现在我们用的单片机都有内部的ROM,所以再设计电路时此引脚始终接高电平。
I/O口引脚——P0口、P1口、P2口和P3口;
3、电平特性
单片机是一种数字集成芯片,数字电路中只有两种电平:高电平和低电平。
常用的逻辑电平有TTL、CMOS、LVTTL、ECL、PECL、GTL、RS-232、RS-422、RS-485、LVDS等。其中TTL和CMOS的逻辑电平按典型电压可分为4类:5V系列、3.3V系列、2.5V系列和1.8V系列。
5V TTL和5V CMOS是通用的逻辑电平。3.3V及以下的逻辑电平被称为低电压逻辑电平,常用的为LVTTL电平。低电压逻辑电平还有2.5V个1.8V两种。ECL/PECL和LVDS是差分输入/输出。RS-422/485和RS-232是串口的接口标准,RS-422/485是差分输入/输出,RS-232是单端输入/输出。
4、进制与逻辑运算
进制包括二进制、8进制、10进制和16进制。
逻辑运算包括与(&、&&)、或(|、||)、非(!)、同或(C语言中没有同或运算符,异或的非为同或)、异或(^)。
5、C51中的基本数据类型
在C语言书记中还能看到short int,long int,signed short int等数据类型,在单片机的C语言中我们默认的规则如下:short int即为int,long int即为long,前面若无unsigned符号则一律认为是signed型。
6、C51数据类型扩充定义
单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际上就是将这些个寄存器在内存中的地址编号赋给这个名称,这样编译器在以后的程序中才可认知这些名称所对应的寄存器。实际上这些寄存器的声明已经完全被包含在51单片机的特殊功能寄存器声明头文件“reg51.h”中了。
sfr——特殊功能寄存器的数据声明,声明一个8位的寄存器。
sfr16——16位特殊功能寄存器的数据声明。
sbit——特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位。
bit——位变量声明,当定义一个位变量时可使用此符号。
例如:sfr SCON = 0x98;SCON时单片机的串行口控制寄存器,这个寄存器在单片机内存中的地址位0x98,这样声明后,我们以后要操作这个控制寄存器时,就可以直接对SCON进行操作,这时编译器也会明白,我们实际上要操作的单片机内部0x98地址处的这个寄存器,而SCON仅仅时这个地址的一个代号或者名称而已。当然,我们也可以定义成其他的名称。
例如:sfr16 T2 = 0xCC;声明一个16位的特殊功能寄存器,它的起始地址位0xCC。
例如:sbit TI = SCON^1;SCON是一个8位寄存器,SCON^1表示这个8位寄存器的次低位,最低位是SCON^0;SCON^7表示这个寄存器的最高位。该语句的功能是将SCON寄存器的次低位声明为TI,以后若要对SCON寄存器的次低位操作,则可直接操作TI。
7、C51中常用的头文件
通常由reg51.h,reg52.h,match.h,ctype.h,stdio.h,stdlib.h,absacc.h,intrins.h。但常用的却只有reg51.h或reg52.h,match.h。
reg51.h和reg52.h是定义51单片机或52单片机特殊功能寄存器和位寄存器的,这两个头文件中的大部分内容是一样的,52单片机比51单片机多了一个定时器T2,因此reg52.h中就比reg51.h中多几行定义T2寄存器的内容。
match.h是定义数学运算的,比如求绝对值,求方根,求正余弦等,该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。
8、C51中的运算符
9、C51中的基础语句
10、学习单片机应该掌握的内容
1)、掌握单片机最小系统能够运行的必要条件:电源、晶振、复位电路。
2)、掌握对单片机任意I/O口的操作:输出控制电平高低、输入检测电平高低。
3)、定时器:重点掌握最常用的方式2.
4)、中断:掌握外部中断、定时器中断、串口中断。
5)、串口通信:掌握单片机之间通信、单片机与计算机之间的通信。
参考《新概念51单片机C语言教程入门、提高、开发》