一、什么是单片机?
单片机(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创建一个编程项目并使单片机按照代码逻辑运行。