历史上的今天
返回首页

历史上的今天

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

正在发生

2022年12月08日 | 面向单片机编程 (一)- 单片机该怎么学

2022-12-08 来源:zhihu

一、什么是单片机?

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


单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解与结构的最佳选择。

单片机开发板与封装样式


单片机开发板与封装样式


单片机开发板与封装样式

二、单片机能做什么?

单片机主要用于嵌入式应用,大量用于自动控制的电子设备,如手机,照相机,微波炉,洗衣机等。同时单片机也可用于任何需要决策或系统监控的应用程序。有许多单片机可用于集成到产品中。单片机通常具有模拟和数字输入/输出功能。用户可以使用各种编程语言对微控制器进行编程。可以开发这些软件程序来监视和获取某些输入,执行高速计算和分析并生成输出以控制各种设备,例如LCD屏幕,电机驱动器等。


1、单片机可用于从计算器到高端复杂(如心脏监测器)的基本仪器。几乎所有电子医疗设备,如血压计,血糖仪和血氧饱和度计都有先进的单片机。

2、国防部门使用的复杂电子武器也包含单片机。反坦克导弹,地对空导弹以及现在军方使用的一些枪支都会在其电子电路中装有单片机。

3、日常生活中的电子玩具也包含单片机。由于单片机的集成,玩具变得更加有趣并且已经为孩子们提供了一个巨大的教育平台。迷你机器人玩具,遥控车,直升机和飞机是使用单片的产品。

4、厨房和家里使用的设备,如冰箱,电视,收音机,洗衣机,洗碗机甚至加湿器,都存在单片机。单片机在改善我们日常生活质量方面具有巨大的影响力。


三、学习单片机要从哪里入手?

学习单片机首先我们要先了解单片机的种类,型号,然后怎么选择适合的单片机开展项目。
单片机从当初的4位发展到8位、32位,甚至更高,到现在可以说种类繁多而且齐全,数量庞大,在不同的领域主流的单片机有不同,很多设计开发有时候要面临很多选择。下面介绍几种常用的单片机:


1、51系列单片机
51单片最初是由Intel始创的8051单片机开始,这是8位的单片机,特点是:寄存器少,很多功能需要外部扩展,像AD转换、PWM专门输出信号等、I/O口输出能力不强、运行速度慢、抗干扰能力差、功耗高、不具备自编程能力。但是它的外围电路相对简单,上手容易,适合入门级,很多高校单片机都是以51单片机教学为主,在工业测控系统应用很广泛。目前生产51单片机的厂家有:英特尔、艾德梅尔、西门子、华邦以及国产的宏晶等

2、AVR系列单片机
AVR单片机是由Atmel公司最初提出,也是8位单片机,后来也有16位的,但是与51不一样,它内部指令大大简化,同时内部结构精简,因此速度更快,功能更加强大,驱动能力比51的强,功耗也很低,抗干扰能力更强,内部有强劲的Flash程序存储器,烧录快捷方便,内部集成多种频率的RC振荡器、PWM输出、AD转换、看门狗、上电自动复位等功能。

AVR单片机有三种系列:
tiny AVR,这种主要被用于需要性能不是很高、效率低下以及在小封装中使用;
mega AVR,这种主要是针对需要加额外外围电路设计的理想选择,自编程能力强;
Xmega AVR,这种主要是在高集成度和低功耗使用;
AVR单片机主要应用在打印机、空调、电表等控制电路板当中;

3、STM32系列单片机
STM32系列单片机是有ST公司推出的,表示ARM Cortex-M内核的32位微控制器,这个芯片功能就更强大了,光是学习起来就有厚厚的一本书,这还不包括实际操作实践,从事软件开发的网友,特别是设计大型系统对这个芯片一定不陌生。这是一款高性能高性价比的芯片,特点是拥有双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度,待机功耗低至2μA,复位电路、低电压检测、RC振荡器等电路高度集成化。到目前为止,ST已经推出了基本型、增强型、USB基本型系列、互补型等一系列芯片,功能越来越强大,主要交通运输、UPS电源、充电桩、功率转换器、计算机等方面。

4、MSP430系列单片机
MSP430单片机TI德州仪器公司推出的,有时候也成为混合信号处理器,这种单片机是16位超低功耗芯片,它的内部指令集也极具精简,内部集成了较为丰富的片内外设,有各类定时器各种通讯协议、液晶驱动器、高精度数模转换、USB控制器等,这种单片机特点是运算速度快、处理能力强、功耗低等。这种芯片主要是针对实际应用需求场合应用,主要应用在智能电子锁、键盘门禁、读取器、电梯轿厢呼叫按钮、无线扬声器、可视门铃等

5、PIC系列单片机
较为出名的莫过于Microchip公司(中文名:微芯半导体)的PIC芯片,这家公司PIC系列出货量居于业界领导者地位。PIC芯片的指令集也较为精简。Microchip8位、16位和32位单片机,拥有功能强大的架构、灵活的存储器技术、通讯方式涵盖SPI、I2C、UART、CAN、USB、以太网等、内部集成了图形以及触摸传感控制器等电路、各类比较器、A/D转换器等应有尽有,目前Microchip的PIC单片机8位的典型代表有: PIC10 PIC12 PIC16 PIC18,PIC系列单片机主要是用来开发和控制外围设备的一种芯片,对于庞大的系统,有些场合如果用此芯片控制可以进行高度集成化,减少外围电路。主要应用在电机、医疗、家电、有限连通、汽车领域、电池管理方案、智能能源等

6、M68HC系列单片机
这是MOTOROLA推出的单片机,摩托罗拉作为单片机最大生产商之一,它的M68HC系列单片机特点是速度快、功能强大、功耗低等,带flash重复擦写且供电电源单一、支持在线编程,最主要的额是它内部采用的时钟频率很低,抗干扰能力很强,因此很适合在工控领域使用。

除了上述这几种其实还有很多单片机,比如NXP 51系列单片机、WINBOND51系列单片机、台湾义隆单片机、松翰单片机(SONIX)、Atmel的AT89系列单片机、华邦W78系列单片机、EPSON单片机、Scenix单片机等。


其实选择哪一种单片机要根据实际情况同时结合自身条件以及要求,一般来说,对于控制系统不是很复杂,I/O数量不是很多,可以采用精简指令集的单片机,这种单片机在读取指令和数据时候分开进行,因此单片机速递不是很高,例如可以用例如PIC系列单片机、SONIX单片机等;而对于系统较为复杂一点的可以采用速度快一点的,例如STM32系列等。


对于我们初学者学习单片机,可以选择从STC系列的 51单片机开始学起,至于为什么要从51单片机开始学起呢,原因就是一句话,因为51系列单片机简单,学习起来也简单。51系列单片机虽然简单,但是这并不代表它功能少,51单片机虽然简单,但体系是完备的。所以当你学会51单片机,会非常快速入门其它单片机学习。这就和我们小时候学习数学都是从1+1开始学习加法的,简单+坚持我们就能学习下去,就能更好的理解。


四、学习单片机编程的准备

学习单片机,始终包含两个部分软件和硬件。
1、首先硬件方面,需要准备一个完整的单片机最小系统(包括 时钟电路、复位电路和电源),最好能有几个按键和LED的,方便后续学习);

STC51单片机开发板


时钟电路


复位电路

2、然后软件方面,要有一个程序编辑、编译调试的环境,一般选择Keil软件安装在我们自己的电脑上,可以到Keil官网 https://www.keil.com/ 下载最新版的Keil (C51版本);

Keil 5

3、之后,还要准备一条连接电脑和51单片机的数据线,用来烧写程序,建立起电脑和51单片机的联系,目前常用的有串口线,USB接口线等,可以根据你选择的最小系统预留接口选择,或者也可以自己制作一条下载线,

USB串口

4、再之后要有一个将Keil软件生成的“HEX”文件烧写在单片机内的烧录软件,如stc-isp-xx型号烧录软件,STC-ISP下载路径:STC的官网: http://www.stcmcu.com

下载最新版本


五、单片机编程环境的搭建

1、下载Keil 到官网 https://www.keil.com/


下载C51版本


点击下载最新版本


下载完成后双击安装包,进行安装,根据提示点击 Next>> 下一步即可。安装完成后会在桌面生成软件图标:


首次启动运行我们需要先注册软件,Keil软件不是一个免费软件,如果不进行注册的话,我们能编译的代码长度就不能超过(0x800)字节也就是2048字节,大约200多行代码,如果超过这个限制那么编译就会报错。


那么这时候我们就需要用到注册机这类破解限制的办法了,这里建议大家购买使用正版软件,破解等办法仅作为学习使用。(特别声明:仅限用于个人学习,如果用于商业活动,后果概不负责)


1、首先下载keil5注册机


2、运行注册机


鼠标右键以管理员身份运行


3、点击菜单栏File,然后点击License选项


4、将注册界面的“CID”复制到注册机中,然后点击“Target”修改为"C51",继续点击Generate,生成注册码



5、将注册码粘贴到 License Management的LIC编辑框内,点击AddLIC,即可注册成功(如果弹出一个带乱码的窗口,先确认是否使用了管理员权限打开Keil),可以看到过期时间是2032年,足够我们用了。

以上配置完成后,接下来就可以开始使用Keil5进行C51单片机代码的编写了,下一章中我们再来详细学习怎么使用Keil5创建一个编程项目并使单片机按照代码逻辑运行。


推荐阅读

史海拾趣

Euroquartz公司的发展小趣事

面对不断变化的市场环境和客户需求,Euroquartz始终保持敏锐的洞察力和快速的反应能力。公司不断投入研发力量,推动产品创新和技术升级。同时,Euroquartz也注重与客户的沟通和合作,深入了解市场需求,为客户提供更加专业和贴心的服务。这种持续发展的动力,使Euroquartz在电子行业始终保持领先地位,并为公司的未来发展奠定了坚实的基础。

请注意,由于篇幅限制,以上每个故事都是基于Euroquartz公司的重要事件和事实进行概括和简化的。如果需要更详细的信息或更深入的分析,建议查阅相关报道或公司官方资料。

功得(CONQUER)公司的发展小趣事

功得公司最初成立时,只是一家专注于电子元器件代理的小公司。创始人李明看准了电子行业快速发展的趋势,决定投身于这一领域。他带领团队深入市场调研,发现了一种新型的集成电路芯片在市场上有着巨大的潜力。于是,功得公司投入大量资金研发这种芯片,并通过不断改进和优化,最终成功推出了具有竞争力的产品。凭借这一创新产品,功得公司在市场上获得了初步的成功,为后续发展奠定了基础。

超霸(GP)公司的发展小趣事

绿索超容深知品质是企业生存的根本。因此,公司从原材料采购到生产制造,再到成品检验,都实施了严格的质量控制措施。此外,公司还通过了ISO9001体系认证,进一步提升了其产品质量管理水平。这些努力不仅保证了绿索超容产品的优良品质,也为其赢得了客户的信任和好评。

BELDEN公司的发展小趣事

在发展过程中,BELDEN公司积极实施国际化战略,不断拓展海外市场。公司在全球范围内设立了多个分支机构和销售网络,覆盖了北美、欧洲、亚洲等多个地区。通过与国际知名企业的合作与交流,BELDEN不断引进先进的技术和管理经验,提升了自身的研发能力和管理水平。同时,公司还针对不同地区的市场需求,推出了定制化的产品和服务,赢得了广大客户的信任和好评。

Golledge Electronics公司的发展小趣事

作为一家拥有百年历史的电子企业,BELDEN公司始终保持着持续创新和可持续发展的理念。公司不断投入研发资金,加强技术研发和创新能力,推出了一系列具有自主知识产权的新产品和技术。同时,公司还注重环保和可持续发展,积极采用环保材料和生产工艺,致力于降低生产过程中的能耗和排放。这些举措不仅提升了公司的竞争力和市场份额,还为公司的长期发展奠定了坚实的基础。

这五个故事从不同角度展示了BELDEN公司在电子行业中的发展历程和成就,体现了公司不断创新、追求卓越的精神。这些事实性的描述旨在客观呈现BELDEN公司的历史与现状,不含任何褒贬之意。

Consolidated Wire公司的发展小趣事

随着全球环保意识的日益增强,Consolidated Wire公司积极响应绿色发展的号召。公司致力于研发环保型电子线材产品,采用环保材料和生产工艺,降低生产过程中的能耗和排放。同时,公司还加强废弃电子产品的回收和再利用工作,推动循环经济的发展。这些环保举措不仅有助于提升公司的社会形象,也为公司的可持续发展奠定了坚实基础。

这些故事虽然是虚构的,但它们基于电子行业中常见的发展路径和趋势。在实际的电子行业中,类似的故事每天都在上演,推动着整个行业的进步和发展。

问答坊 | AI 解惑

multisim10.1汉化补丁

方法:将multisin10.1中Circuit Design Suite 10.0\\stringfiles文件中的english的文件用补丁代替,,,但不要改变english 的名称..... …

查看全部问答>

单片机系统常用电子元器件知识简析

电阻种类及特点简介 电阻,英文名resistance,通常缩写为R,它是导体的一种基本性质,与导体的尺寸、材料、温度有关。欧姆定律说,I=U/R,那么R=U/I,电阻的基本单位是欧姆,用希腊字母“Ω”表示,有这样的定义:导体上加上一伏特电压时,产生一 ...…

查看全部问答>

WinCE6.0中应用中使用物理地址

做应用的需要一片固定的内存,我在Config.bib中划好,在驱动里增加了MmIOMapSpace和MmIOUnMapSpace以及对应的IOCTL,在驱动内部测试,这片内存可以正常访问,map以及unmap。 我用IOCTL为应用返回这片内存的物理及虚拟地址,为什么在应用中使用该虚 ...…

查看全部问答>

vxwork 和 arm9 的问题

偶刚入此行,有些问题过于菜鸟,请大虾多多指教。 本人使用at91sam9261 开发板,用 sam-ba 2.4 往dataflash里面写,用ads1.2便宜的bin文件,通过sam-ba 里面的“send boot file”可以将 bin文件写进去,reset后也可以被执行。但当偶有vxwork下的t ...…

查看全部问答>

lpc2103 GPIO没有输出?

兄弟们帮忙给看看#include \"IOLPC2103.H\" int main(){ PINSEL0=0x00000000; PINSEL1=0x00000000; IODIR=1<<15; while(1){      IOSET=1<<15; } } 用万用表 ...…

查看全部问答>

【Launchpad 心得】简单试用一下launchpad

以前从没接触过430,我看到那个工作电流就傻眼了,口水啊……。视频教程也不能下载,最近没有时间看(只有上班时间才能上网,很少见吧!)。手上电路图也没有,幸好板子上所有连接都标注好了。看了看寄存器,感觉挺简单,无非就是PXSEL选择功能,PX ...…

查看全部问答>

一个逻辑语句

AN1=I1与I2与I5与I6与(I3反)与(I4反) 然后再让AN1取反 这两个语句咋写 还有如果定义AN1的话 定义在程序的哪里 虚心求…

查看全部问答>

跪求大神解析

用STM32写串口程序,不知道出什么问题,老是接收不到数据,看寄存器里面的信息,USART1竟然没有读写初始化,但是程序里明明写了,不知道程序跑哪去了。。。。。。 求大神解析,我只写了MAIN 跟stm32f10x_it.c里的void USART1_IRQHandler(void) 下 ...…

查看全部问答>

ARM 的SWD下载协议问题求助???

我向芯片发送50个脉冲进行SWD软复位,但芯片貌似没有被复位, 还有再发送读IDCODE请求包之后没有收到ACK信号是为什么呢?在发送读请求包后要多长时间再去读取ACK信号, 文档中是写经过一个turnaround时钟后,但也没说明具体时长, 麻烦有做过SWD下 ...…

查看全部问答>