历史上的今天
返回首页

历史上的今天

今天是:2025年12月07日(星期日)

正在发生

2022年12月07日 | 51单片机入门基础知识

2022-12-07 来源:zhihu

单片机简介

1.什么是单片机

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。


单片机结构框图如下:

2.单片机能做什么

小到玩具车、电子手表,大到航天器、机器人,无论是数据采集、工业控制还是智能化仪器仪表及通信设备,到处都有单片机的身影。其主要的应用领域如下:(1)在机电一体化中的应用。单片机与传统的机械产品结合使传统的机械产品结构简化、控制走向智能化,让传统的产品向新一代的机电一体化产品转变,这是机械工业发展的方向。(2)在监控系统中的应用。单片机应用于仪器仪表设备中促使仪器仪表向数字化、智能化、多功能化和综合化等方向发展。单片机的软件编程技术使长期以来测量仪表中的误差修正、线性化的处理等问题迎刃而解。(3)在测控系统中的应用。单片机可以用于各种工业控制系统、自适应控制系统、数据采集系统等。例如,工业上的锅炉控制、电机控制、车辆检测系统、水闸自动控制、数控机床及军事上的兵器装备等。(4)在智能接口中的应用。计算机系统,特别是较大型的工业测控系统采用单片机进行接口的控制管理,单片机与主机并行工作,可大大提高系统的运行速度。


3.新手学习什么单片机

新手推荐51系列单片机。该系列的单片机相关的学习资料比较多,网上也比较好找。 51 系列单片机在当前市场份额比较大,在很多产品中都能找到它的身影。同时, 51 系列单片机也是学习 ARM、 DSP、 FPGA 等高端MCU的基础。


4.单片机硬件结构

(1)单片机内部三大资源

Flash——程序存储空间,早期单片机是 OTPROM:在早期的单片机中,主要是用 OTPROM(One Time Programmable Read-Only Memory,即一次可编程只读存储器)来存储单片机的程序,程序只能写入一次。随着技术的发展, Flash 以其可重复擦写且容量大成本低的优点成为现在绝大多数单片机的程序存储器。对于单片机来说 Flash 最大的意义是断电后数据不丢失。

RAM——数据存储空间:RAM 用来存储程序运行过程中产生的和需要的数据,关电后数据丢失。它的优点,第一是读写速度非常快,第二是理论上是可无限次写入的,即寿命无限,不管程序怎么运行怎么读写它都不会坏。

SFR——特殊功能寄存器:单片机有很多很多功能,每个功能都会对应一个或多个 SFR,我们就是通过写程序控制 SFR 的读写来实现单片机的多种多样的功能的。

(2)标号信息


以下介绍以STC89C52RC 单片机为例:

芯片上的全部标号为 STC89C52RC、 40I-PDIP40、 1428HBS967.C90C,标识解释如下所示。

STC——芯片的生产公司, STC 表示宏晶公司。这个前缀常见的有 AT、P、 W、 SST 等。其中 AT 表示 Atmel 公司, P 表示 Philips 公司, W 表示 Winbond 公司,SST 代表 SST 公司。

8——该芯片是 8051 内核芯片。

9——芯片内部含有 Flash EEPROM 存储器。 其他如 80C51 中的 0 表示内部含有掩膜存储器( Mask ROM), 87C51 中的 7 表示内部含有紫外线可擦除 ROM( EPROM)。

C——该器件为 CMOS 产品。其他如 89LE52、 89LV52、 89LS52,其中的 LE、 LV、 LS表示低电压产品(通常它们的工作电压为 3.3V),89S52 中的 S 表示该系列的芯片带有 ISP 在线编程功能。

5——固定不变。

2——该芯片的内部程序存储空间的大小。 1 为 4 KB, 2 为 8 KB, 3 为 12 KB,也就是该数乘以 4 KB 就是该芯片内部程序存储空间的大小。 空间越大能装入的程序代码就越多。 当然,空间越大芯片的价格也会越高。因此在选择芯片时,要根据我们的需求进行合理选择,够用就可以。这个空间的大小跟单片机的其他性能不产生关联,不影响单片机的功能。

RC——STC 单片机内部 RAM 为 512 B,RD+表示内部 RAM 为1280B。

40——芯片外部晶振最高可接入 40 MHz。像 Atmel 的单片机这个数值一般是 24,表示外部最高晶振是 24 MHz。

I——产品级别。 I 表示工业级,温度范围为−40~85℃。其他如 C 表示商业级,温度范围为 0~70℃; A 表示汽车级,温度范围为−40~125℃; M 为军用级,温度范围为−55~150℃。

PDIP——产品封装型号。 PDIP 为双列直插式。其他如 PLCC 为带引线的塑料芯片封装;QFP 为塑料方型扁平式封装; PFP 为塑料扁平组件式封装; PGA 为插针网格阵列封装; BGA为球栅阵列封装。

40——引脚个数。

1428——本批芯片的生产日期是 2014 年的第 28 周。

(3)引脚功能介绍

注意:芯片的第 1 脚,一般会在芯片上标记出来,有的是一个小圆坑或是一个圆点,有的是整个芯片起始脚边的标记。找到第 1 脚后,其他引脚的序号,是按照俯视图从第 1 脚开始,逆时针方向顺序递增来进行编号的。

单片机的引脚大致可分为四类:

① 电源引脚: VCC、 GND。

② 时钟引脚: XTAL1、 XTAL2。

③ 控制引脚: RST、 PSEN 、 ALE/ PROG 、 EA /VPP。

④ I/O 引脚 : 4个8位并行 I/O 端口 P0、P1、P2、P3 ,共32个引脚。

VCC( 40 脚):单片机电源正极,不同类型单片机的接入电源电压会有不同,通常为+5V,如果是低压为+3.3V。大家在使用前,请查看单片机对应的数据手册。

GND( 20 脚):单片机电源负极,接地端。


XTAL1( 19 脚)、 XTAL2( 18 脚):时钟电路引脚。 XTAL1 接外部晶振和微调电容的一端,在片内它是振荡器反相放大器和时钟发生器的输入端。若使用外部时钟,该引脚必须接地。 XTAL2 接外部晶振和微调电容的另一端,在片内它是振荡器反相放大器的输出端。若使用外部时钟,该引脚接外部时钟的输入端。


RST( 9 脚):单片机复位引脚,持续时间超过两个机器周期的高电平引起系统复位。也就是说程序将从头开始运行。


PSEN ( 29 脚):外部程序存储器选通信号输出引脚,在读外部 ROM 时PSEN 低电平有效,以实现外部 ROM 单元的读操作。随着技术的发展,单片机的内部存储 ROM 越做越大,已经能满足使用需求,基本没人再去扩展外部 ROM。在设计电路时,该引脚一般悬空,不作使用。


① 内部 ROM 读取时, PSEN 不动作;

② 外部 ROM 读取时,在每个机器周期会动作两次;

③ 外部 RAM 读取时,跳过两个 PSEN 脉冲不会输出;

④ 外接 ROM 时,与 ROM 的 OE 脚相接。


ALE/ PROG ( 30 脚):具有两种功能,可以作为地址锁存使能端和编程脉冲输入端。当作为地址锁存使能端时为 ALE。当单片机访问外部程序存储器时, ALE 的负跳变将低8 位地址打入锁存。当访问外部数据存储器时,例如执行 MOVX 类指令, ALE 引脚会跳过一个脉冲。当单片机没有访问外部程序存储器时, ALE 引脚将有一个 1/6 振荡频率的正脉冲信号输出,该信号可以用于外部计数或电路其他部分的时钟信号。当作为编程脉冲输入端时为PROG ,在进行程序下载时使用。现在很多单片机在烧录程序时已不需要编程脉冲引脚往内部写程序。比如我们使用的 STC 单片机,它是通过串行口烧录的,使用更为简便。现在的单片机已带有丰富的 RAM 和更为简便的程序烧录方式,因此 ALE/ PROG 这个引脚已很少用到,我们了解即可。在设计电路时一般悬空,不作使用。


EA /VPP( 31 脚):具有两种功能。EA :程序存储器选择。 EA =1 时,单片机执行内部程序存储器的程序,当扩展有外部程序存储器时,在执行完内部程序存储器的部分程序后,自动执行外部程序存储器的程序。EA =0,单片机执行外部程序存储器的程序。


VPP:在内部程序存储器擦除和写入时提供编程脉冲。现在的单片机一般内部的 ROM 已经足够大,能满足我们的程序存储需求,所以 VPP 的功能一般不用。因此一般在设计电路时,此引脚始终给它接上高电平即可。


I/O 引脚 : STC89C52 共有 4 个 8 位并行 I/O 端口,分别为 P0、 P1、P2、 P3 口,共 32 个引脚。

P0 口( 39 脚~32 脚): P0 口是一个 8 位漏极开路的双向端口,分别为P0.0~P0.7 口,可独立控制。 P0 口在作为低 8 位地址/数据总线使用时不需接上拉电阻;作为一般的 I/O 口使用时,由于内部没有上拉电阻,在使用时需要接上拉电阻。一般选用 10kΩ 电阻作为上拉电阻。

P1 口( 1 脚~8 脚): P1 口是一个带上拉电阻的 8 位准双向端口,分别为 P1.0~P1.7 口,可独立控制,也可做输入或输出口使用。

P2 口( 21 脚~28 脚): P2 口是一个带上拉电阻的 8 位准双向端口, 分别为 P2.0~P2.7 口,可独立控制,可做输入或输出口使用,功能和 P1 口相似。

P3 口( 10 脚~17 脚): P3 口是一个带上拉电阻的 8 位准双向端口, 分别为 P3.0~P3.7 口,可独立控制。是一个双用途端口,可做输入或输出口使用,功能和 P1 口相似。它还具有第二功能,具体如表所示。

(4)最小系统

图 1-1

为什么称之为单片机最小系统呢?单片机最小系统,也叫做单片机最小应用系统,是指用最少的原件组成单片机可以工作的系统。单片机最小系统的三要素就是电源、晶振、复位电路,如上图所示。


1)电源

这个很好理解,电子设备都需要供电,就连我们的家用电器(手电筒^_^)也不例外。目前主流单片机的电源分为 5V 和 3.3V 这两个标准,当然现在还有对电压要求更低的单片机系统,一般多用在一些特定场合,在学习中我们不做过多的关注。我们所选用的 STC89C52,它需要 5V 的供电系统,我们的开发板是使用 USB 口输出的5V 直流直接供电的。从上中图可以看到,供电电路在 40 脚和 20 脚的位置上,40 脚接的是+5V,通常也称为 VCC 或 VDD,代表的是电源正极,20 脚接的是 GND,代表的是电源的负极。+5V 和 GND 之间还有个电容。


这个地方我们还要普及一个看原理图的知识。电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多考虑的是方便原理分析,而不是表达各个器件实际位置。比如原理图中的单片机引脚图,引脚的位置我们是可以随意放的,但是每个引脚上有一个数字标号,这个数字标号代表的才是单片机真正的引脚位置。一般情况下,这种双列直插封装的芯片,左上角是 1 脚,逆时针旋转引脚号依次增加,一直到右上角是最大脚位,我们现在选用的单片机一共是 40 个引脚,因此右上角就是 40(在表示芯片的方框的内部),如下图所示,大家要分清原理图引脚标号和实际引脚位置的区别。

图1-2

2)晶振电路

晶振,又叫晶体振荡器,从这个名字我们就可以看出来,它注定一生都要不停振荡的。

他起到的作用是为单片机系统提供基准时钟信号,类似于我们部队训练时喊口令的人,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。STC89C52 单片机的 18 脚和 19 脚是晶振引脚,我们接了一个 11.0592M 的晶振(它每秒钟振荡 11,059,200 次),外加两个 20pF 的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。


3)复位电路

在图 1-1 左侧是一个复位电路,接到了单片机的 9 脚 RST(Reset)复位引脚上,这个复位电路如何起作用我们后边再讲,现在着重讲一下复位对单片机的作用。单片机复位一般是 3种情况:上电复位、手动复位、程序自动复位。


假如我们的单片机程序有 100 行,当某一次运行到第 50 行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失掉,有的区域数据可能还没丢失。那么下次打开设备的时候,我们希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟我们打开电脑电源开电脑的过程是一致的。


当我们的程序运行时,如果遭受到意外干扰而导致程序死机,或者程序跑飞的时候,我们就可以按下一个复位按键,让程序重新初始化重新运行,这个过程就叫做手动复位,最典型的就是我们电脑的重启按钮。


当程序死机或者跑飞的时候,我们的单片机往往有一套自动复位机制,比如看门狗,具体应用以后再了解。在这种情况下,如果程序长时间失去响应,单片机看门狗模块会自动复位重启单片机。还有一些情况是我们程序故意重启复位单片机。


电源、晶振、复位构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三个条件,就可以运行我们下载的程序了,其他的比如 LED 小灯、数码管、液晶等设备都是属于单片机的外部设备,即外设。最终完成我们想要的功能就是通过对单片机编程来控制各种各样的外设实现的。


点亮LED

1. 了解普通发光二极管的参数,掌握限流电阻的计算方法。

LED ,即发光二极管,俗称LED小灯,它的种类很多,参数也不尽相同。二极管通常的正向导通电压为 1.8 V ~ 2.2 V,工作电流一般在 1 mA ~ 20 mA之间。其中电流在 1 mA ~ 5 mA之间变化时,随着通过LED的电流越来越大,肉眼可明显感觉LED小灯的亮度越来越强。当电流超过20mA时,LED就会存在烧坏的危险,电流越大,烧坏的可能性也就越大。

如上电路图,VCC代表接入电压,其电压值为5 V,发光二极管自身压降为2 V,那么此时 R34电阻上所能承受的电压则应该是 3 V。由上述中 LED所能允许通过的电流范围为 1 mA ~ 20 mA,此时就可以根据欧姆定律(R = U / I, R 代表电阻,U 代表电压, I 代表电流)计算出R34电阻的上下限的电阻值。


2.LED点亮原理

不同发光二极管正向导通电压不同,具体压降根据二极管查询,但同一特点是二极管发光正级电压必须大于负极电压。在原理图所示中二极管的正极连接一个电阻然后接到Vcc上,负极直接连接P20端口。Vcc为高电平,则P20端口为低电平,电阻在这里提供一个压降,避免D1端口两端电压过高同时限制电流过大。于是得到我们需要设置的参数,P20端口电压为0,即在Keil中需要设置的参数为P20电压为0。


3.代码

#include “reg52.h”   

                   //此文件中定义了单片机的一些特殊功能寄存器,调用头文件

 sbit led=P0^0;    //将单片机的P0.0端口定义为led,p是port的缩写

                   //此处LED接在单片机P0^0端口

void main()

{

    while(1)

    {

        led=1;  //P0.0端口设置为高电平

    }       

}

//补充:bit和sbit都是C51扩展的变量类型。sbit用法:sbit 变量名=地址值;在给某个引脚取名的时候经常会用到。

LED灯闪烁

1.C语言常用的预处理命令

typedef使用

typedef unsigned char u8;

typedef unsigned int u16;(后面要加分号)


2.延时函数

void delay(u16 i)//大约延时10us

{

    while(i--); 

}


3.代码

#include "reg52.h"          

typedef unsigned int u16;                    //预处理命令

typedef unsigned char u8;

    sbit led=P0^0;                       //端口定义

 

void delay(u16 i)                                   //大约延时10us

{

    while(i--);                                     

}

 

void main()                                            

{

    while(1)

    {

        led=0;                         //管脚置低电平

        delay(50000);             //大约延时0.5秒

                            led=1;                         //管脚置高电平      

        delay(50000);   

    }       

}  


推荐阅读

史海拾趣

Habia Cable公司的发展小趣事

在电子行业中,高博(GBG)公司的发展涉及多个领域和维度,以下是根据不同业务线整理出的五个相关发展故事,每个故事均基于事实描述:

1. 高博教育:私立高等教育与终身学习的引领者

高博教育作为全球教育管理集团(GEM)在中国的旗舰机构,由前摩托罗拉中国区总裁赖炳荣先生创立。公司坐落于苏州工业园区独墅湖高等教育区,致力于发展私立高等教育和终身学习。高博教育成功与香港大学及苏州科技学院合作,创办了苏州港大思培学院,成为江苏省首家香港与内陆合作的院校。此外,高博还与微软(中国)有限公司合资建设苏州高博软件技术学院,开展多层次的软件人才教育,成为江苏省软件人才培养的重要基地。高博教育通过整合全球优质教育资源,为学员提供国际化的课程和学习空间,培养了大量高素质、实用型和国际化的软件人才。

2. 高博(鞍山)半导体有限公司:LED技术的创新者

高博(鞍山)半导体有限公司成立于2019年,位于辽宁省鞍山市,是一家专注于研发、生产及销售LED发光二极管的企业。公司为客户提供多元化的产品,广泛应用于计算机、通讯、消费类电子、汽车电子、工业自动化及医疗等领域。高博(鞍山)半导体有限公司凭借其在LED技术领域的创新能力和完善的产品链,迅速在市场中占据一席之地。公司不仅拥有多项专利和著作权,还积极投资研发,推动LED技术的不断进步。

3. 高博起重设备:物料输送解决方案的提供者

高博公司(GORBEL)自1977年在美国纽约州成立以来,便以提供高效、安全、人性化的物料高架输送解决方案而闻名。公司在北美市场拥有极高的市场占有率,其组合式起重机和旋臂起重机等产品深受客户信赖。为了更好地服务亚洲市场,高博(天津)起重设备有限公司于2006年在天津滨海新区成立,成为美国Gorbel International Inc.在中国的首个生产基地。高博起重设备以其卓越的产品性能和优质的客户服务,在工程机械制造、汽车制造、铁路、风能、航空航天等多个领域赢得了广泛赞誉。

4. 高博医疗集团:血液病与肿瘤治疗的创新者

高博医疗集团是一家专注于血液病和肿瘤治疗的医疗机构集团。近年来,集团通过不断开拓创新,实现了地理版图的快速扩张。在北京、广东、上海等地设立了多家以血液病为专科特色的医疗机构,并成立了以肿瘤为特色的上海阿特蒙医院。高博医疗集团拥有一支由国内外权威专家组成的医疗团队,为患者提供个性化的治疗方案和高质量的医疗服务。同时,集团还积极投入科研创新,取得了一系列卓越的临床和科研成果,在国内外学术界产生了广泛影响。

5. 高博职场文化:激发人才潜能的典范

高博公司在职场文化建设方面也取得了显著成效。公司打破了传统的“论资排辈”体系,以技术、人才为导向,为优秀人才提供了广阔的发展空间。中高管通过高管进阶之旅提升综合能力,新生代员工则通过量身定制的管培生项目进行培养。高博还注重提升员工的职场体验,推出了“高博文化平台和福利平台”,打造数字化职场社交新体验。同时,公司倡导“悦生活·享工作be better@GHG”的健康理念,重视员工的身心健康和职业发展。这些举措不仅增强了员工的归属感和幸福感,也为企业的发展注入了源源不断的动力。

富瀚(Fullhan)公司的发展小趣事
如果保护器上有故障指示灯或显示屏,应仔细查看其显示的故障信息,以便快速定位问题。
冠图电子(GTL-POWER)公司的发展小趣事
如果保护器上有故障指示灯或显示屏,应仔细查看其显示的故障信息,以便快速定位问题。
Excelitas公司的发展小趣事

在当今社会,绿色环保和可持续发展已成为企业发展的重要趋势。Excelitas公司积极响应这一趋势,致力于研发和生产绿色环保的产品。通过采用环保材料和生产工艺,公司成功降低了产品的能耗和排放。同时,公司还积极参与环保公益活动,倡导绿色生活方式。这些举措不仅提升了公司的品牌形象,还为社会的可持续发展做出了积极贡献。

请注意,以上故事仅为基于假设和一般行业趋势构建的框架性描述,并不代表Excelitas公司的实际发展历程。如有需要,建议您查阅相关官方资料或新闻报道以获取更准确的信息。

Armel Electronics Inc公司的发展小趣事

在电子行业中,技术更新迅速,创新是企业持续发展的动力。Armel Electronics Inc公司始终将研发创新作为公司的核心竞争力。公司不断投入资金,引进先进设备和技术,加强研发团队的建设。通过不断创新,Armel成功推出了一系列具有行业领先水平的新产品,为公司的持续发展提供了有力保障。

DCX-CHOL Enterprises公司的发展小趣事

随着公司规模的扩大和市场竞争的加剧,DCX-CHOL Enterprises意识到品质管理的重要性。公司投入大量资源提升生产线自动化水平,引进先进的品质检测设备,并建立了严格的质量管理体系。这些措施有效地提高了产品的品质稳定性和可靠性,赢得了客户的信赖。同时,公司还注重员工培训和技能提升,培养了一支高素质、专业化的技术和管理团队。

问答坊 | AI 解惑

针对工业级嵌入式应用开发的开发板

FLYSUN-ARM9200开发板由北京飞旭科技有限公司设计开发,主处理器基于Atmel公司的AT91RM9200 ARM处理器。AT91RM9200内嵌ARM920T核,带有全性能的MMU,具有高性能、低功耗、低成本、小体积等优点,广泛地应用在各种嵌入式系统中,如通信、军事、航空 ...…

查看全部问答>

论坛是信誉

像我这样的51菜鸟,初处单片机领域,所以好多东西不懂,不懂得就要问,就像串口线为什么要委托论坛代购,为什么不去中发知春直接搞定,一来对行情不了解,再者不知道什么样的线适合,所以还是喜欢委托论坛组织货源。什么事情还得慢慢来!希望大家互 ...…

查看全部问答>

菜鸟求助:wince内核写入SD卡

我用vs2005定制了一个wince6.0的内核。想把它写入到omap3530的sd卡上,让这个系统启动。网上看了一些类似的问题,不得法。请朋友们帮帮忙,说说该怎么做。本人菜鸟,步骤解释的越详细越好。谢谢。…

查看全部问答>

8279实现4X4键盘6位显示

呵呵,今天看单片机科本,有一道题不会做,就是8279实现4X4键盘6位显示,呵呵,本人菜鸟,请高人给指点下,C语言和汇编程序…

查看全部问答>

multisim10 怎么C51写头文件 (转)

要点亮LED,但出错,认为P0没有定义,multisim10中C51的头文件怎么写? void main() { /* Insert your code here. */    P0=1; } 出错信息 Multisim  -  2008-09-23 20:49:45 -------------------------- ...…

查看全部问答>

关于LSD-TEST430F22X4学习套件

我最近用LSD-TEST430F22X4学习套件,该套件没有外部晶振,然后就接了一个普通的32K晶振,感觉晶振没起振,想请教一下关于该套件的外部晶振问题…

查看全部问答>

1138板驱动程序下载问题

前几天用1138板还是好的,昨晚下载了几个程序后就出问题了,弹出下面这个对话框: 我以为是芯片锁了,就用ZLG的软件解锁,之后连驱动都安装不了,请问是什么原因呢?是Ft223d坏了,还是1138片子出问题了呢? 请大家帮帮忙,谢谢了! [ 本帖 ...…

查看全部问答>

MSP-430具体功能

话说我们这个板子具体可以做什么哟…

查看全部问答>

视频分享

嵌入式视频教程系列http://www.youku.com/playlist_show/id_3541073_as…

查看全部问答>

开关系统配置——选择合适的开关矩阵卡路由相关信号尤为重要

选择合适的开关矩阵卡路由相关信号是获得理想的测量精度和分辨率的关键。如果这些信号是通过一个偏置电流指标为1nA和带宽为100kHz的开关路由的,那么使用皮安以下的测量仪器和10MHz的C-V测试[1]仪就显得浪费了。进行交流和直流测量时都必须将开关 ...…

查看全部问答>