购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 呼吸灯应用系统的硬件设计

呼吸灯应用系统的硬件设计重点是如何使用RCL电路驱动发光二极管发光。

1.3.1 硬件系统的模块划分

呼吸灯的硬件模块划分如图 1.14 所示,由ATmega128 单片机、三极管开关电路、RCL驱动电路和LED构成,其各个部分的详细说明如下所示。

图 1.14 呼吸灯的硬件模块划分

(1)ATmega128 单片机:呼吸灯系统的核心控制器件。

(2)三极管开关电路:受到ATmega128 单片机PWM输出波形的驱动,当输出为高电平时,三极管导通,电源给RCL电路充电;当输出为低电平时,三极管截止,电源从RCL电路上断开,RCL电路开始放电。

(3)RCL驱动电路:利用充放电原理将ATmega128 单片机输出的数字信号转换为模拟信号,对发光二极管进行控制。

(4)LED:发光器件。

1.3.2 硬件系统的电路图

呼吸灯的硬件系统电路如图 1.15 所示,ATmega128 单片机使用PA7 引脚驱动由PNP三极管和NPN三极管构成的三极管开关电路(Q1 和Q2);一个 5V的电源通过这个开关电路给由L1、C4 和R2 构成的RCL电路供电,在R2 上串联了一个用于发光显示的发光二极管D1。

图 1.15 呼吸灯的硬件系统电路

呼吸灯电路中涉及的典型器件说明参见表 1.1。

表 1.1 呼吸灯电路涉及的典型器件说明

1.3.3 硬件模块基础——发光二极管(LED)

发光二极管(LED)是构成呼吸灯的基础元件,也是最常见的ATmega128 单片机人机交互通道器件,通常用于指示单片机系统的工作状态,有红、黄、绿等多种颜色及不同的大小(直径),还有高亮等类型,它们主要的区别在于外形大小、发光功率和价格。

发光二极管LED和普通二极管一样,具有单向导电性。当加在发光二极管两端的电压超过其导通电压(一般为 1.7~1.9V)时,发光二极管就会导通,当流过发光二极管的电流超过一定电流时,发光二极管则会发光。

ATmega128 单片机系统中发光二极管的典型应用电路可以分为“灌电流”和“拉电流”两种,如图 1.16 所示。

图 1.16 发光二极管的典型应用电路

图 1.16 所示电路中引脚PB0 上的发光二极管D2 的驱动方式称为“灌电流”驱动方式,当PB0 输出高电平时,D2 两端无电压差,不发光;当PB0 输出低电平时,D2 两端有 5V电压差,D2 发光。图 1.16 所示电路中引脚PB7 上的发光二极管D1 的驱动方式为“拉电流”驱动方式,当PB7 输出高电平时,D1 相对地有 5V的电压差,D1 发光;当PB7 输出低电平时,5V电压差将落在上拉电阻R2 上,D1 两端无电压差,D1 不发光。图 1.16 所示电路中的R4 和R3 都是限流电阻,当电阻值较小时,电流较大,发光二极管亮度较强;当该电阻值较大时,电流较小,发光二极管亮度较弱。

1.3.4 硬件模块基础——三极管

呼吸灯应用系统中使用两个三极管构成了一个开关电路,用于控制电源对RCL电路的充电。三极管是一种用电流来控制电流的半导体器件,是ATmega128 单片机系统中最常用的功率驱动器件,其作用是把微弱信号放大成幅值较大的电信号,也常常用作无触点开关(如用作多位数码管的选择控制器件)。

三极管按材料可以分为锗管和硅管,按照元件结构又可以分为NPN和PNP两种,目前使用最多的是NPN硅管和PNP锗管。

三极管有多种型号,但是都有三个引脚,分别为发射极(emitter,E)、基极(base,B)和集电极(collector,C),如图 1.17 所示。

图 1.17 三极管的引脚封装

可以把三极管看做一个电子开关,其中基极是电子开关的控制端,当基极输出高电平时,三极管导通,在被控元件两端形成电压差;当控制端输出低电平时,被控元件两端的电压差消失。

注意: 控制端电阻的参数必须选取合适,因为较小的电流将不足以使三极管导通。

1.3.5 硬件模块基础——电阻、电容和电感

电阻、电容和电感是构成RCL电路的基础,同时也是ATmega128 单片机中最常用的基础元器件。

1.电阻

电阻是用某种介质材料制成、有一定结构形式、能在电路中起限制电流通过作用的二端电子元件,其中阻值不能改变的电阻称为固定电阻器,而阻值可变的电阻称为电位器或可变电阻器。

电阻可限制通过其所连支路的电流大小,图 1.16 所示电路中R2 的作用就是限制发光二极管上的电流大小。

电阻的主要参数是其电阻值和功率。

2.电容

电容是用于存储电荷能量的元件,其主要参数是工作电压和其电容值。

3.电感

电感是利用当线圈通过电流后,在线圈中形成感应磁场,感应磁场又会产生感应电流来抵制通过线圈中的电流的原理制成的器件,其包括自感和互感两种完全不同的效应。

(1)自感是指当线圈中有电流通过时,线圈的周围就会产生磁场,当线圈中的电流发生变化时,其周围的磁场也产生相应的变化,变化的磁场可使线圈自身产生感应电动势(感生电动势)。

(2)互感是指当两个电感线圈相互靠近时,一个电感线圈的磁场变化将影响另一个电感线圈的效应,互感的大小取决于电感线圈的自感与两个电感线圈耦合的程度,利用此原理制成的元件称为互感器。

电感的主要参数是电感值。

1.3.6 硬件模块基础——ATmega128 单片机的I/O引脚

ATmega128 单片机有 53 个可编程通用I/O引脚,分为PA~PG共 7 组,其中PA~PF每组分别有 8 个引脚,PG有PG0~PG4 共 5 个引脚。

ATmega128 的I/O引脚都有数据寄存器PORTX、数据方向寄存器DDRX 和端口输入引脚寄存器 PINX,其中数据寄存器和数据方向寄存器为读/ 写寄存器,而端口输入引脚寄存器为只读寄存器,其详细说明如下所示。

(1)数据寄存器PORT XA ~PORT XG :控制ATmega128 对应I/O引脚的输出电平。

(2)数据方向寄存器DDR XA ~DDR XG :控制ATmega128 对应I/O引脚的输入/输出方向。

(3)端口输入引脚寄存器PIN XA ~PIN XG :存放ATmega128 对应I/O引脚的输入电平。

在使用ATmega128 的I/O引脚之前,必须通过对ATmega128 的DDR寄存器中的DDR xn 位的配置来选择引脚的方向,当DDR xn 为“1”时,对应的引脚PIN xn 被配置为输出状态,否则配置为输入状态。当引脚配置为输入状态时,若PORT xn 为“1”,则上拉电阻将使能。如果需要关闭这个上拉电阻,可以将PORT xn 清零或者将这个引脚配置为输出,ATmega128 上电复位时各引脚为高阻态。当引脚配置为输出状态时,若PORT xn 为“1”,则对应的引脚P xn 输出高电平,否则输出低电平。

ATmega128 的端口引脚配置参见表 1.2,SFIOR位是PUD寄存器中一个用于打开或关闭所有I/O引脚的内部上拉电阻的控制位。

表1.2 ATmega128 的端口引脚配置表

注意: 当ATmega128 的引脚在高阻态({DDRxn,PORTxn} = 0b00)和输出高电平({DDRxn,PORTxn} = 0b11) 两种状态之间进行切换时,上拉电阻使能({DDRxn,PORTxn} = 0b01) 或输出低电平({DDRxn,PORTxn} = 0b10),这两种模式必然会有一个发生。在上拉电阻输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态({DDRxn,PORTxn} = 0b00) 或输出高电平({DDRxn,PORTxn} = 0b11) 作为中间步骤。

除了基本的输入/输出功能之外,ATmega128 的I/O引脚通常都有第二功能,这些第二功能将在后续的相应章节中分别介绍。

1.3.7 硬件模块基础——ATmega128 单片机的定时/计数器T/C0

ATmega128 内部集成了一个具有独立预分频功能和比较器功能的 8 位定时/计数器T/C0,用户通过对相应的寄存器进行操作来对其进行控制,这些寄存器包括T/C0 控制寄存器TCCR0、T/C0 寄存器TCNT0、T/C0 输出比较寄存器OCR0、T/C0 中断屏蔽寄存器TIMSK、T/C0 中断标志寄存器TIFR、特殊功能IO寄存器SFIOR。ATmega128 通过对这些寄存器的操作来实现对T/C0的控制。

1.T/C0 控制寄存器TCCR0

TCCR0 寄存器用于对T/C0 进行相应的设置和控制,其内部位结构参见表 1.3。

表 1.3 T/C0 控制寄存器TCCR0 内部结构

(1)FOC0:强制输出比较位,在PWM工作模式下必须对其清零,当对其置“1”后,波形发生器将立即进行比较操作,比较匹配输出引脚OC0 将按照COM01、COM00 的设置输出相应的电平。需要注意的是,FOC0 类似于一个锁存信号,真正对强制输出比较起作用的是COM01、COM00 的设置,对FOC0 位的操作不会引发任何中断,也不会在利用OCR0 作为TOP的CTC模式下对定时器进行清零操作,FOC0 读操作的返回值永远为 0。

(2)WGM01、WGM00:工作模式控制位,这两位用于控制T/C0 的工作模式、累加计数器的最大值及产生何种波形。T/C0 支持的工作模式有:普通模式,比较匹配发生时清除计数器模式(CTC)),以及两种PWM模式。工作模式控制位说明参见表 1.4。

表 1.4 工作模式控制位说明

(3)COM01、COM00:比较匹配输出模式控制位,用于控制比较匹配发生时输出引脚OC0上的电平变化。如果COM01~COM00 中的一位或全部都被置位,OC0 以比较匹配输出的方式进行工作;同时,其方向控制寄存器位要设置为“1”以使能输出驱动器。当OC0 被连接到物理引脚上时,COM01、COM00 的功能依赖于WGM01、WGM00 的设置。当WGM01、WGM00设置不同模式时,COM01、COM00 的功能参见表 1.5 至表 1.7。

表 1.5 比较输出工作模式,非PWM模式

表 1.6 比较输出工作模式,快速PWM模式

注意: 当OCR0 等于TOP,且COM01 被置位时,比较匹配将被忽略,而计数到TOP时,OC0 的动作将继续有效。

表 1.7 比较输出工作模式,相位修正PWM模式

注意: 当OCR0 等于TOP,且COM01 被置位时,比较匹配将被忽略,而计数到TOP时,OC0 的动作将继续有效。

(4)CS02~CS00:时钟选择位,用于选择T/C0 的时钟源,参见表 1.8。

表 1.8 T/C0 的时钟选择

2.T/C0 寄存器TCNT0

TCNT0 寄存器用于对T/C0 的 8 位数据进行读写,对TCNT0 寄存器的写访问将在下一个时钟阻止比较匹配。在计数器运行的过程中,修改TCNT0 的数值有可能丢失一次TCNT0 和OCR0的比较匹配。TCNT0 寄存器的内部位结构参见表 1.9。

表 1.9 TCNT0 寄存器的内部位结构

3.T/C0 输出比较寄存器OCR0

输出比较寄存器OCR0 内包含一个 8 位的数据,不间断地与计数器数值TCNT0 进行比较,匹配事件可以用来产生输出比较中断,或者用来在OC0引脚上产生波形,其内部位结构参见表1.10。

表 1.10 T/C0 输出比较寄存器OCR0 内部位结构

4.中断屏蔽寄存器TIMSK

TIMSK中的OCIE0 位和TOIE0 位用于对T/C0 的中断使能事件进行处理,其内部结构参见表 1.11。

表 1.11 中断屏蔽寄存器TIMSK的内部结构

(1)OCIE0:T/C0 输出比较匹配中断使能位。当OCIE0 和状态寄存器的全局中断使能位I都为“1”时,T/C0 的输出比较匹配中断使能;当T/C0 的比较匹配发生时,即TIFR中的OCF0置位时,触发中断事件。

(2)TOIE0:T/C0 溢出中断使能位。当TOIE0 和状态寄存器的全局中断使能位I 都为“1”时,T/C0 的溢出中断使能;当T/C0 发生溢出即TIFR中的TOV0 位被置位时,触发中断事件。

5.中断标志寄存器TIFR

中断标志寄存器TIFR中的OCF0 位和TOV0 位用于标志T/C0 的中断事件,其内部位结构参见表 1.12。

表 1.12 中断标志寄存器TIFR的内部位结构

(1)OCF0:输出比较标志 0 位。当T/C0 与OCR0(输出比较寄存器 0)的值匹配时,OCF0被置位,此位在中断服务程序里被硬件清零,也可以通过对其写“1”来清零,当SREG中的位I、OCIE0(T/C0 比较匹配中断使能)和OCF0 位都被置位时,触发中断服务事件。

(2)TOV0:T/C0 溢出标志位。当T/C0 溢出时,TOV0 被置位,此位在中断服务子程序中被硬件清零,也可以通过写“1”来清零;当SREG 中的位I、TOIE0(T/C0 溢出中断使能位)和TOV0 都被置位时,触发中断事件,当ATmega32 工作在相位修正PWM模式下,且T/C0 在0x00 改变计数方向时,TOV0 被置位。

6.特殊功能I/O寄存器SFIOR

特殊功能I/O寄存器SFIOR的PSR10 位控制T/C0 的预分频器复位操作,其内部位结构参见表 1.13。

表 1.13 特殊功能I/O寄存器SFIOR的内部位结构

PSR0 是T/C0 的预分频器复控制位。置位时T/C0 的预分频器复位;操作完成后这一位由硬件自动清零;写入零时不会引发任何动作。

1.3.8 Proteus硬件仿真环境的使用

Proteus软件是英国Labcenter Electronics公司开发的EDA工具软件,可以对 51 单片机应用系统进行仿真,并且支持与Keil μVision联合进行调试,本章将介绍其基础使用方法,以及与Keil μVision联合调试的方法。

Proteus是一个基于ProSPICE混合模型仿真器,完整的嵌入式系统软/硬件设计仿真平台,它由ISIS和ARES两大应用功能软件组成,前者是一个原理图输入软件,用于电路原理设计和仿真,后者则用于PCB电路图布线。Proteus可以实现从原理图设计、ATmega128 单片机编程、ATmega128 单片机应用系统仿真到应用系统PCB设计的流程化工作,其具体功能模块组成如图 1.18 所示。

图 1.18 Proteus的功能模块组成

1.Proteus的界面

图 1.19 是Proteus的界面,它由预览窗口、编辑窗口、器件显示窗口等窗口,以及菜单栏、快捷工具栏、工具箱、仿真工具栏等组成。

Proteus的界面可以分为编辑窗口、预览窗口、器件显示窗口三大区域,每个窗体都有自己独特的作用,其详细说明如下所示。

(1)编辑窗口(Editing Window):编辑窗口用于放置元器件、进行连线、绘制原理图、输出运行和仿真结果等,这是Proteus的主要操作和显示区域。

(2)预览窗口(Overview Window):预览窗口用于显示当前的图纸布局和正在操作的器件的相关情况。

图 1.19 Proteus的界面

(3)器件显示窗口(Components Window):器件显示窗口用于显示在当前项目加载的各个器件的相关情况,包括器件名称、引脚分布等。

除了三个常用的窗口,Proteus还有菜单栏、快捷工具栏、工具箱、仿真工具栏等常用的辅助操作栏,其详细说明如下所示。

(1)菜单栏:提供相应的操作菜单,单击任何一个菜单项后都会弹出子菜单项。

(2)快捷工具栏:提供相应的操作快捷按钮,单击后会启动对应的快捷操作。

(3)工具箱:提供诸如虚拟仪器等工具的启动操作,单击后会启动对应的工具。

(4)仿真工具栏:提供启动仿真、暂停仿真等操作的快捷按钮。

2.Proteus支持的文件格式

Proteus支持如下文件格式。

(1).DSN:Design Files,这是Proteus ISIS的设计文件。

(2).DBK:Backup Files,这是Proteus ISIS的备份文件。

(3).SEC:Section Files,这是Proteus ISIS的部分电路存盘文件。

(4).MOD:Module Files,这是Proteus ISIS的器件仿真模式文件。

(5).LIB:Library Files,这是Proteus ISIS的器件库文件。

(6).SDF:Netlist Flies,这是Proteus ISIS的网络列表文件。

3.Proteus的菜单项、快捷工具栏和工具箱

图 1.20 是Proteus的菜单项示意图,其提供了文件、视图、编辑、工具、设计、图形、源设置、调试、库元件、模板、系统设置和帮助共 12 个菜单项。

图 1.20 Proteus的菜单项

Proteus ISIS的快捷工具可以分为菜单项下方的快捷工具栏和左侧的工具箱两部分,如图 1.19 所示,为用户提供了一个快速操作的通道。

Proteus的快捷工具栏位于菜单项的下方,主要为用户提供与文件(File Toolbar)、视图(ViewToolbar)、编辑(Edit ToolBar)和设计(Design ToolBar)相关的快捷方式,可以通过View菜单项中的ToolBar选项打开或关闭全部或部分。

Proteus的工具箱位于界面的左侧,提供了一些用于图形设计的命令和一些快捷工具箱命令。

4.Proteus的使用

Proteus ISIS原理图完整的设计流程包括新建设计文档、设置工作环境等 8 个步骤,如图 1.21所示,其详细说明如下所示。

图 1.21 Proteus ISIS原理图完整的设计流程

(1)新建设计文档。在进行原理图设计之前,首先要构思好原理图,即必须知道所设计的项目需要哪些电路来完成,用何种模板;然后在Proteus ISIS编辑环境中画出电路原理图。

(2)设置工作环境。根据实际电路的复杂程度来设置图纸的大小等。在电路图设计的整个过程中,图纸的大小可以不断地调整。设置合适的图纸大小是完成原理图设计的第一步。

(3)放置元器件。首先从添加元器件对话框中选取需要添加的元器件,将其布置到图纸的合适位置,并对元器件的名称、标注进行设定;再根据元器件之间的走线等联系对元器件在工作平面上的位置进行调整和修改,使原理图美观、易懂。

(4)原理图布线。根据实际电路的需要,利用ProteusISIS编辑环境所提供的各种工具、命令进行布线,将工作平面上的元器件用导线连接起来,构成一幅完整的电路原理图。

(5)建立网络表。在完成上述步骤之后,即可看到一张完整的电路图,但要完成印制电路板的设计,还需要生成一个网络表文件。网络表是印制电路板与电路原理图之间的纽带。

(6)电气规则检查。当完成原理图布线后,利用Proteus ISIS编辑环境所提供的电气规则检查命令对设计进行检查,并根据系统提示的错误检查报告修改原理图。

(7)调整。如果原理图已通过电气规则检查,那么原理图的设计就完成了。但是对于一般的电路设计,尤其是较大的项目,通常需要对电路进行多次修改才能通过电气规则检查。

(8)保存并输出报表。Proteus ISIS提供了多种报表输出格式,同时可以对设计好的原理图和报表进行保存和输出打印。 FOqWktCHy8Kxi8vgQ8xA/zue39jG/mxw4GBG6JZbKY2Ul7RnCB+/9e32KPO0nTpS

点击中间区域
呼出菜单
上一章
目录
下一章
×