《PIC微控制器项目设计:C语言》一1.2 微控制器系统

简介: 本文讲的是PIC微控制器项目设计:C语言一1.2 微控制器系统,本节书摘来华章计算机《PIC微控制器项目设计:C语言》一书中的第1章,第1.2节, PIC Microcontroller Projects in C: Basic to Advanced, Second Edition〔塞浦路斯〕 多甘·易卜拉欣(Dogan Ibrahim) 著许辉 吕汶译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 微控制器系统

本文讲的是PIC微控制器项目设计:C语言一1.2 微控制器系统,微控制器是一种单芯片的计算机。“微”表示该装置很小,“控制器”表明该装置可在控制应用系统中使用。另一个用于微控制器的术语是“嵌入式控制器”,这是由于在工业、商业和家庭应用设备中,大多数的微控制器都被内置或嵌入在它们控制的设备中。
微处理器在许多方面与微控制器不同。其主要区别是,微处理器需要其他一些外部组件协助进行计算操作,如程序存储器、数据存储器、I/O模块和外部时钟模块;而微控制器则是将所有这些芯片支持的功能整合于一个芯片之中。另外,由多芯片概念构造的基于微处理器的系统比基于微控制器的系统消耗更多的功耗。基于微控制器系统的另一个优点是其总成本比基于微处理器的系统低得多。
所有的微控制器(和微处理器)依靠存储在程序存储器内的一组指令(或用户程序)进行工作。微控制器从程序存储器内一个接一个地读取这些指令,解码这些指令,然后执行所需的操作。
传统意义上微控制器一直使用基于目标设备的汇编语言进行编写。虽然汇编语言执行速度快,但它有几个缺点。汇编程序由助记符组成,使用汇编语言编写的程序一般很难学习和维护。此外,由不同公司生产的微控制器使用不同的汇编语言,因而每次使用新的微控制器时,用户就需要学习一种新的汇编语言。
微控制器还可以使用高级语言进行编程,如BASIC、PASCAL和C。使用高级语言编程的优点是高级语言比汇编语言更容易学习。此外,非常大和复杂的程序可以更容易使用高级语言来进行开发。在本书中,我们将学习使用两种流行的C编程语言对高端8位PIC单片机进行编程:分别是由mikroElektronika(www.mikroe.com)开发的mikroC Pro for PIC和由Microchip(www.microchip.com)开发的MPLAB X IDE。
通常,一个单一的芯片需要有个基于微控制器运行的计算机系统。在实际应用中,可能还需要附加的组件,以允许微机通过接口与环境相连接。随着PIC系列微控制器的出现,电子项目的开发时间已减少到几个月,几周,甚至几个小时。
一般来说,微控制器(或微处理器)执行的是在其程序存储器里装入的用户程序。在这个程序的控制下,数据从外部设备接收进来(输入),被处理,然后发送给外部设备(输出)。
例如,在一个基于微控制器的液位控制系统中,其目的是控制液体保持在设定的液位值上。这里,液体的水平位置通过装有水平传感器的微型计算机进行读取。然后,运行在微控制器内的程序开启泵和阀,控制液面保持在所需值上。如果液位低,那么微型计算机操作泵从蓄水池中抽取更多的液体。在实际中,需要连续地控制泵,以使液体保持在所要求的液位上。图1.1显示了这种简单的液位控制系统的框图。
screenshot
图1.1所示的系统是一个很简单的液位控制系统。在更复杂的系统中,我们可以添加小键盘来设置液体所需的水平位置,以及用液晶显示器(LCD)来显示罐中当前液体的液位。图1.2所示为这种更复杂的液位控制系统的框图。
我们可以使设计更复杂一些(见图1.3),如果液面不在所需的位置,可以添加一个声音报警器来告知我们。此外,在任何时间,都可以每秒发送一次实际的液位值给PC,以便进行归档和进一步的处理,例如,可以在PC上每天绘制液体水平位置的变化曲线图。也可以将无线接口[如蓝牙或射频(RF)]或网络连接添加到系统里,以实现远程监控或控制液体的液位。图1.4显示了有蓝牙模块连接到微控制器的系统框图。
正如你所看到的,因为微控制器是可编程的,所以最终的系统可以被设计得尽可能简单或复杂。
screenshot
screenshot
screenshot
基于微控制器系统的另一个例子是直流(DC)电动机的速度控制。图1.5显示了一个这种系统的框图。此处,速度传感器装置读取电机的当前速度,这个速度与期望速度(假定其为模拟量)进行比较。期望速度和实际速度之间的误差信号被转换成数字信号,送给微控制器。在微控制器上运行的控制算法生成控制信号,并转换成模拟形式提供给功率放大器,功率放大器的输出驱动电动机以达到期望的速度。
screenshot
根据信号的性质,图1.5中给出的框图可以采用不同的形式进行描述。例如,如果速度传感器的输出是数字的(如光学编码器),设定速度也是数字的,那么在微控制器的输入端就没有必要使用A/D转换器。此外,如果功率放大器可以通过数字信号来驱动,那么D/A转换也可以删除掉。
微控制器是一个非常强大的工具,可以让设计人员利用程序控制创建复杂的I/O数据处理。微控制器根据处理的数字位数进行分类。8位的微控制器是最流行的,目前在大多数低成本低速度的基于微控制器的应用中使用。16位和32位的微控制器功能更强大,但通常比较昂贵,在许多小到中型通用的应用中它们可能会被不合理使用。在本书中,我们将使用8位PIC18F系列单片机。
最简单的微控制器架构是由微处理器、存储器和I/O模块构成的。微处理器包括一个中央处理单元(CPU)和控制单元(CU)。中央处理单元是微处理器的大脑,所有的算术和逻辑运算都在这里执行。控制单元用于指令解码,它控制微控制器的内部操作,并发出控制信号给微控制器的其他部分,以执行所需的操作。
存储器是微控制器系统的一个重要组成部分。根据它们的用途,我们一般将存储器分为两类:程序存储器和数据存储器。程序存储器存储的是用户程序,该存储器通常是非易失性的,即数据是永久保存的,切断电源后也不会丢失。另一方面,数据存储器存储着程序中使用的临时数据,该存储器通常是易失性的,即在切断电源后数据会丢失。

原文标题:PIC微控制器项目设计:C语言一1.2 微控制器系统

相关文章
|
28天前
|
监控 网络协议 API
C语言系统编程
C语言系统编程
|
1月前
|
存储 编译器 C语言
初识C语言——详细入门(系统性学习day4)
初识C语言——详细入门(系统性学习day4)
|
1月前
|
存储 Linux C语言
Linux系统下C语言的构造数据类型
Linux系统下C语言的构造数据类型
12 0
|
1月前
|
Linux C语言 开发者
Linux系统下C语言的高阶编程
Linux系统下C语言的高阶编程
15 0
|
1月前
|
Linux C语言
Linux系统下C语言的队列操作
Linux系统下C语言的队列操作
23 0
|
1月前
|
编译器 程序员 开发工具
c语言从入门到实战——在系统学习C语言之前所需要了解的知识
C语言是一种通用的、过程式的计算机编程语言,支持结构化编程、词汇变量作用域和递归等功能,其设计提供了低级别的存取权限,并且要求程序员管理所有的内存细节。C语言的基本构成包括数据类型(如整型、浮点型、字符型等)、运算符(如算术运算符、关系运算符、逻辑运算符等)、控制结构(如顺序结构、选择结构、循环结构等)以及函数等。此外,C语言还提供了指针的概念,这是其他许多编程语言所不具备的。指针是一个变量,其值为另一个变量的地址,通过指针可以间接访问和操作内存中的数据。C语言也支持数组、结构体、联合体等复合数据类型,以及文件操作、动态内存分配等高级功能。
49 0
|
1月前
|
编译器 Linux C语言
c语言结构体知识系统详解
c语言结构体知识系统详解
48 0
|
4月前
|
存储 C语言
C语言第六十弹----设计函数判断系统大小端字节序
C语言第六十弹----设计函数判断系统大小端字节序
|
1月前
|
存储 Linux C语言
Linux系统下C语言的文件操作
Linux系统下C语言的文件操作
17 0
|
15天前
|
机器学习/深度学习 C语言
【C语言】函数的系统化精讲(三)1
【C语言】函数的系统化精讲(三)