24小时联系电话:18217114652、13661815404
中文
技术专题
单片机编程分步指南
单片机编程分步指南
对于那些希望从微控制器编程开始的人,这是一个循序渐进的指南。本文首先介绍了将在本指南中使用的一些基本术语,一系列工具,编程语言,最后是可下载代码的示例以及逐步指南,可用于实践微控制器编程。
但是在进入微控制器编程之前。让我们定义前两个基本术语:硬件和软件。
硬件由系统中的物理组件组成,例如芯片,键盘,鼠标,监视器,内存,I / O设备。与软件相比,硬件更难开发,必须针对非常特定的应用程序进行设计,并且它是高速系统中非常有效且完美的解决方案。
软件是在硬件上运行的非物理组件或应用程序,例如操作系统,计算机游戏和网络应用程序。软件是高度可配置的,易于开发且开发速度较快,与硬件相比也非常便宜。
什么是微控制器
要了解什么是微控制器,我们首先需要了解什么是微处理器或CPU(中央处理单元)。CPU是任何计算机系统的心脏,就像执行任务时的人脑一样。我们基本上可以将其分为两个基本部分:
控制单元:该单元用于从内存中获取数据。
执行单元:该单元用于执行或运行数据。
处理器类型
处理器有很多类别,例如通用处理器,专用系统处理器和多处理器系统。通用处理器有多种类型:
▪微处理器
▪单片机
▪嵌入式处理器
▪数字信号处理器
微处理器是半导体设备或芯片上的计算机,而不是功能齐全的计算机。其中央处理器单元包含
▪ALU
▪程序计数器
▪寄存器
▪其他电路(时钟时间,中断)
微控制器是一种IC,其中包含微处理器和一些外围设备,这些外围设备将构成完整的功能计算机,例如ADC,RAM,ROM,DAC等外围设备。
单片机的历史
最初,英特尔公司是第一家制造微控制器的公司。第一个微控制器于1971年在美国生产。它是一个名为i4004的4位微控制器。后来,英特尔当时使用8位微控制器生产了更复杂的模型,此后,东芝开发了12位微控制器。
微控制器的应用
微控制器在许多行业中都有许多应用,例如汽车,医疗,工业自动化,航空航天,机器人技术。
例如,在汽车工业中,当今的现代汽车具有100多个微处理器,用于诸如空调,ABS,EBD和ADAS之类的系统,或者诸如自适应居里控制器和车道辅助系统之类的高级驾驶辅助系统,以下是ECU的图像或电子控制单元。
在医疗领域,有些医疗设备包括微控制器,例如MRI,葡萄糖测试仪,便携式EKG。下图是葡萄糖测试设备。
在航空航天领域,大多数飞机都采用微控制器设计了新的航空电子系统。此外,还有所有基于微控制器的飞行控制系统,空中交通控制系统,导航和气象系统。
流行的微控制器
微控制器的类型和平台很多,但是选择微控制器取决于许多因素:
▪申请
▪预算
▪表现
▪GPIO引脚数
▪内存大小
▪工作环境温度
▪耗电量
AVR微控制器
下图包含AVE12DA的框图,AVE12DA是最流行的微控制器之一-AVR微控制器:
AVR微控制器由Atmel公司(现为Microchip)生产。Atmel拥有6个系列的AVR微控制器,4个系列的通用微控制器和2个专用的微控制器。通用微控制器是:
▪8位–大型AVR
▪8位– AT Tiny
▪8位和16位– AVR Xmega
▪32位– AVR
专用微控制器是:
▪汽车AVR
▪电池管理
车载AVR,顾名思义,是为汽车应用而开发的。它可以在高达150摄氏度的高温下工作,并且包括用于短路问题的保护系统。
电池管理微控制器是为电池管理系统开发的,以确保充电和放电操作的安全。
AVR平台示例
▪Arduino UNO
▪Adafruit蓝色水果微
▪Raspduino
▪Digispark Pro
ARM微处理器/微控制器
ARM微处理器是世界上最受欢迎的处理器,尤其是在消费类应用中。您可能拥有基于ARM处理器的设备,但您不知道!在大多数成功的32位嵌入式系统中,ARM几乎都是关键组件。第一个ARM于1985年开发。
RISC技术
ARM使用了RISC技术,RISC代表精简指令集计算机,这是一种在单个周期内交付简单指令的设计理念。它更多地依赖于软件。另一方面,CISC技术更多地依赖于硬件。
RISC技术致力于减少处理器的指令集。另一方面,CISC处理器具有指令集的非固定编号。
ARM功能
Arm具有每个嵌入式系统设计人员想要的许多功能,例如,由于其紧凑的尺寸而降低了功耗,而且由于我们正在开发嵌入式系统,因此高代码密度是另一个功能,在大多数情况下,我们的资源将有限。
基于ARM的微控制器的内部结构
该图显示了大多数基于ARM的设备的内部结构:
框代表功能,线代表总线。让我们详细讨论每个组件:
▪ARM处理器是它负责处理操作的核心组件
▪控制器用于协调系统功能,如存储和中断控制器
▪外围设备用于提供系统输入和输出
▪总线用于在系统中不同组件之间交换数据
ARM平台的例子
有许多具有手臂微处理器的设备和嵌入式平台,例如
▪Arduino到期
▪树莓派
▪STM32F103C8T6
▪恩智浦LPC1768
其他微控制器和平台
正如我们在选择微控制器或平台之前所说的,这取决于许多因素(预算,引脚数等)。还有其他微控制器和平台,例如
▪PIC微控制器
▪8051
▪ESP32
▪摩托罗拉微控制器
单片机软件和硬件工具
自从创建微控制器以来,已经有许多类型的软件和硬件开发工具。当然,某些工具可以在各种微控制器类型中使用,但是某些工具对于每个微控制器来说都是非常特定的。在开始微控制器编程之前,您可能需要熟悉微控制器编程工具以及最后但并非最不重要的开发过程。
使用嵌入式开发工具,我们可能需要以下工具:
组装工
它是一个软件工具,可以将汇编中的源代码转换为机器代码,例如(GNU汇编器)。
编译器
它是一个软件程序,可以将高级编程语言的源代码转换为汇编语言或机器代码。编译可以是:
▪本机:这意味着您在同一台计算机上运行编译器和生成的代码
▪交叉:这意味着您在计算机上运行编译器,而生成的代码在另一台计算机(处理器体系结构)上运行。
链接器和定位器
链接器是一个程序,它收集和链接编译和汇编操作并生成单个exe。
定位器是一种程序工具,可用于更改链接器输出的内存映射。
仿真器
它是一个模拟真实场景的程序,它产生实时系统的近似值。使用模拟器:
▪如果实际硬件不可用
▪在危险的测试环境和场景中
调试器
它是一种软件程序和硬件设备,可以与我的PC连接到嵌入式目标。使用调试器:
▪设置断点
▪跟踪执行
▪转储内存
硬件调试器可以
▪在线调试器
▪调试板载代理软件
闪存装载器
它是一种程序和硬件设备,可用于:
▪程序ROM /闪存
▪观察变量
▪擦除ROM /闪存
探查器
Profiler是监视软件代码性能的工具
集成开发环境
它是一个软件程序,其中包含大多数工具。它可能包括
▪文字编辑器
▪编译器
▪调试器
▪分析器
▪模拟器
▪链接器
单片机软件语言
我们可以将它们分为两种类型:
高水平
▪C / C ++
▪Java
▪艾达
使用此类型将提供硬件级别的抽象
低级
机器码
它是0和1,很难被人写,但是很容易让计算机理解
集会
它是一个助记码和伪指令,以提高可读性
例子:
一条指令由助记符(操作码)+操作数组成
操作码是机器处理器执行的操作
操作数是最终目标;操作码必须执行一个操作。
汇编语言比机器代码更具可读性和可理解性,但是您需要在特定的处理器上使用汇编语言并了解其体系结构。
C / C ++编程语言
高级语言具有以下功能
▪易于编写
▪灵活
▪独立于处理器
▪高生产率
使用AVR ATMEGA16的单片机编程示例
ATmega 16具有以下功能:
▪16 Kb系统内自可编程闪存
▪512字节EEPROM
▪1 KB内部SRAM
▪编程锁的安全性
外围功能
▪带有独立振荡器的实时计数器
▪可编程串行USART
▪四个PWM通道
▪8通道10位ADC
▪片内振荡器
▪开机休息和掉电检测
▪内部RC振荡器和中断源
▪电压(2.7v至5.5v)