(一)、单板机
将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)
(二)、单片机
在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。Intel公司推出了MCS-51系列单片机:集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。
ROM:只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。
总结:只读存储器,掉电不丢失数据,一般用来存储程序。
RAM:随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
总结:随机存储器,掉电丢失数据,一般用来存储变量。
(三)、单片机能做什么
工业自动化:数据采集、测控技术。
智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等。
消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。
通讯方面:调制解调器、程控交换技术、手机、小灵通等。
武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。
凡是与控制或简单计算有关的电子设备都可以用单片机来实现,根据具体实际情况还可以选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等。
(四)、80C51系列单片机
80C51是MCS-51系列中的一个典型品种,其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。
80C51系列单片机主要产品有:
l Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;
l ATMEL的:89C51、89C52、89C2051等;
l Philips、华邦、Dallas、STC、Siemens(Infineon)等公司的许多产品;
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外部读控制
8051内部结构:
总线:
总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。
内部资源:
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊
功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统:
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。
机器周期和指令周期:
振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,一般为12MHZ(通过晶振产生)。
状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。
机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。
指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。
(五)、单片机最简程序与最小系统
5.1、开发环境的搭建
1、首先安装KEIL C51 Version 9.00,双击C51V900.exe,直接下一步...下一步...傻瓜安装就好,遇到需要填写的信息,直接空格就好。
2、准备好软件stc-isp,这个软件不需要安装,是一个上位机程序,用于把写好的C语言程序上次给单片机,下载好软件之后双击就可以运行,可以发送到桌面快捷方式。
3、安装USB转TTL的下载器,安装PL2303,双击安装即可。
下载地址:
链接:https://pan.baidu.com/s/1kcludXeInbRJm48wLfevVA
提取码:fpnv
5.2、KEIL建立工程
1、首先创建一个文件夹,用来存放工程文件,文件夹名称可以为中文。
2、打开软件KEIL,Project ->new uVision Project,选择刚才新建的文件夹,输入项目的名称,然后点击保存,这里我们需要选择单片机的型号,选择Atmel公司的AT89C52即可,当然也可以选择AT89C51RC,内核是一样的,所以可以通用。
这是是否需要添加单片机启动代码,点击是就可以了。
下图的STARTUP.A51就是单片机的启动文件,使用汇编写的。
3、我们找到我们创建的工程文件夹,在里面新建一个文本文档,随便一个重命名,但是文件的扩展名称改为.c的文件,这样就建立了一个C文件。点击Source Group1文件夹,右键Add File to Group “****Source Group1****”****,把我们的C文件添加进去即可。
5.2、最小系统电路图
5.2.1、物料准备:
51单片机STC89C52RC X 1:2020年这个型号的单片机入门使用的比较多。
按键开关 X 1:这个开关用来做复位电路使用。
电阻10K X 1:用在复位电路上。
12M的晶振 X 1:晶振是为单片机提供一个基本震荡源,也就相当于人体的心跳,没有震荡源单片机是无法启动的。
10uf电解电容 X1 和30pf瓷片电容 X 2:瓷片电容作用是滤除晶振工作时产生的一下谐波,电解电容用在复位电路上。
最后需要一块面包板和若干导线。
5.2.2、烧写程序:
这里我们需要一个USB转TTL的烧写器。
长相酷似一个U盘,上面有五个引脚,但其实我们只需要4个就可以了,因为上电电压这里有5V和3.3V,根据不同的单片机做出相应的选择,这里的STC89C52RC使用5V的上电电压。
VCC(5V/3.3V) ------> 单片机的40引脚。
GND ------> 单片机的20引脚(VSS)。
RXD ------> 单片机的11引脚(TXD)。
TXD ------> 单片机的10引脚(RXD)。
RXD和TXD是信号线:
RXD,全称receive external data,即接收外部设备传来的数据,也称为接收数据的引脚。
TXD,全称transmit external data,即发送给外部设备的数据,也称为发送数据的引脚。
5.2.3、、实物电路连接
右边的RGB灯珠是为后面的测试程序准备的。
5.2.4、单片机最简单程序
程序测试:
# include "reg52.h"
// set bit 4组IO口p0 p1 p2 p3 、每一组都有八个针p10 p12 p13.....
sbit LED_R = P1^1;
sbit LED_G = P1^2;
sbit LED_B = P1^3;
void main()
{
// 实现灯的闪烁。
int i;
while(1)
{
LED_B = 1;
LED_R = 1;
LED_G = 1;
for(i=0; i<30000; i++); // 程序等待
LED_B = 1;
LED_R = 0;
LED_G = 0;
for(i=0; i<30000; i++);
LED_B = 1;
LED_R = 1;
LED_G = 0;
for(i=0; i<30000; i++);
LED_B = 1;
LED_R = 0;
LED_G = 1;
for(i=0; i<30000; i++);
LED_B = 0;
LED_R = 0;
LED_G = 0;
for(i=0; i<30000; i++);
}
}
5.2.5、编译程序:
编译程序执行,要设置一下,点击下图左上角的图标,生成.HEX文件。
然后点击下方的第2个按钮,进行编译。
5.2.6、使用上位机烧写程序
选择一个单片机型号,然后点击“打开程序文件”,选择我们生成的.HEX文件,点击“下载/编程”,然后这里需要给单片机重新上电,可以拔掉烧写器的VCC引脚然后再插上即可。