嵌入式技术基础与实践课件_第1页
嵌入式技术基础与实践课件_第2页
嵌入式技术基础与实践课件_第3页
嵌入式技术基础与实践课件_第4页
嵌入式技术基础与实践课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章实际应用系统设计实例

第15章实际应用系统设计实例1目录应用系统概要

1硬件设计

2软件设计3目录应用系统概要1硬件设计2软件设计32本章以除尘间自动控制系统为例,讲述小型嵌入式系统的需求分析、硬件设计及软件设计过程,综合运用了前面讲到的基本模块,最后讲述了有关MCU配置模块的使用方法。在本章的学习过程中,读者需要仔细体会基于软硬件结合的嵌入式系统的设计过程、设计方法及应注意的事项等。本章以除尘间自动控制系统为例,讲述小型嵌入式系统的需求分析、3

15.1应用系统概要

15.1.1应用系统概要

首先分析一个除尘间自动控制系统的基本功能。除尘间主要用于对要进入生产车间的人或物体进行除尘,以保持生产车间的洁净要求,在所有IC生产车间进口处均有除尘间。其流程大致如下:当除尘间的前门处于关闭状态,且除尘间的红外探头探测到有人进入时,系统开启除尘风扇,数码管显示除尘时间(倒计时),时间到达后,关闭除尘机构。

15.1应用系统概要

15.1.1应用系统概要4

15.1应用系统概要

电源键人进入工作间除尘间应急键前门指示灯红外传感器前门后门风机加热管照明灯应急键后门指示灯前门锁后门锁控制面板布局见图15.2图15-1除尘间自动控制系统布局图图15-1和图15-2展示了该除尘系统的总体布局,比较清晰的模拟了除尘间的现场概貌。

15.1应用系统概要

电源键人进入工作间除尘间应急键前门515.1应用系统概要电源键风机键照明键指示灯指示灯指示灯减少键加热键增加键指示灯图15-2除尘间内部控制面板布局图

15.1应用系统概要电源键风机键照明键指示灯615.1应用系统概要15.1.2应用系统需求分析

本系统可以设定能够自动启动的工作时间段,例如可以设定上午的8点到下午的6点这段时间内系统是自动启动的。而在该段时间以外,则是利用按键来手动启动除尘功能。自动启动的流程较为复杂并繁琐,必须列举所有可能发生的情况,一旦考虑不周,投入运行的系统就有可能面临崩溃的危险。

15.1应用系统概要15.1.2应用系统需求分析715.1应用系统概要15.1.3应用系统设计分析

在进行具体的硬件设计之前,首先必须弄清楚整个系统的输入输出路数,只有保证这一步骤的正确性才能尽量避免设计硬件电路出现的错误。通过分析除尘间自动控制系统的实际应用状况,图15-3给出了系统的输入输出分析。15.1应用系统概要15.1.3应用系统设计分析815.1应用系统概要MCU前后门的反馈信号2时钟芯片2红外传感器12V按键信号(7)3*3三段数码管指示灯3加热管DA(PWM)直控电源语音模块继电器风机光电隔离继电器照明灯光电隔离继电器前后门锁2光电隔离图15-3除尘间自动控制系统框图

15.1应用系统概要前后门的反馈信号2时钟芯片2红外传感器9

15.2硬件设计

15.2.1芯片选型

嵌入式处理器的选择应遵循以下几个参数:(1)处理器类型(2)片上集成的存储器情况(3)片上集成的I/O接口种类和数量(4)工作温度(5)操作系统的支持、开发工具的支持等(6)功耗特性除了需要遵循以上参数外,还需主要的是不要把所有的I/O口用满,应适当预留几个输入和输出口,以便扩展需要。通过分析本系统的输入量和输出量,计算得出所需I/O口的个数:大约29个,因此决定采用42引脚的MC908GP32(以下简称GP32)。

15.2硬件设计

15.2.1芯片选型10

15.2硬件设计

15.2.2设计框图图15-4除尘间控制器硬件设计框图

15.2硬件设计

15.2.2设计框图图15-4除尘11

15.2硬件设计

15.2.3MCU引脚汇总列表这一部分就主控芯片GP32的I/O口分配情况和各个硬件模块的设计进行简要的概述。在这一板中采用的42Pin的GP32的通用I/O口有PTA0~PTA7、PTB0~PTB7、PTC0~PTC3、PTD0,PTD2~PTD7、PTE0~PTE1,一共29个。

15.2硬件设计

15.2.3MCU引脚汇总列表12

15.2硬件设计

15.2.3MCU引脚汇总列表

15.2硬件设计

15.2.3MCU引脚汇总列表13

15.2硬件设计

15.2.3MCU引脚汇总列表

15.2硬件设计

15.2.3MCU引脚汇总列表14

15.2硬件设计

15.2.4各模块硬件分析与设计1.时钟模块时钟模块所采用的时钟芯片PCF8563,它是一种低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检检测器,所有的地址和数据通过I2C总线接口串行传递最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。

15.2硬件设计

15.2.4各模块硬件分析与设计15

15.2硬件设计

OSCI(1脚):振荡器输入OSCO(2脚):振荡器输出;INT(3脚):中断输出(开漏;低电平有效);VSS(4脚):接地;SDA(5脚):串行数据I/O;SCL(6脚):串行时钟输入;CLKOUT(7脚):时钟输出(开漏);VDD(8脚):正电源。

时钟模块在本系统的接法见15-618273645OSCIOSCOINTVSSVDDCLKOUTSCLSDA图15-5PCF8563的管脚图图15-6时钟芯片PCF8563的外部电路

15.2硬件设计

时钟模块在本系统的接法见15-616

15.2硬件设计

2.键盘数据录入模块该模块实现按键的定位以及数据的输入。由于本系统需要7个按键,因此这里使用3×3的键盘,所用的I/O口为PTA0~PTA2和PTD4~PTD6。其中PTA0~PTA2与键盘的列线相连,作为中断输入脚;其中PTD4~PTD6与键盘的行线相连,编程时将PTA4~PTA6定义为输出。键盘模块在本系统的接法见15-7

15.2硬件设计

2.键盘数据录入模块17

15.2硬件设计

注意:KB.Col1、KB.Col2、KB.Col3具有内部上拉。

图15-7键盘模块电路

15.2硬件设计

注意:KB.Col1、KB.Col2、18

15.2硬件设计

3.数码管模块为了节约I/O口,在数码管模块中外加了一个8位串转并芯片——74HC164。该款芯片实际上是串行输入转为8位并行输出的移位寄存器,它含有两个串行数据输入口:A1和A2,当其中一个输入口作为串行数据输入时,另一输入口则被用作数据输入允许位。

15.2硬件设计

3.数码管模块19

15.2硬件设计

A1、A2(1、2脚):串行数据输入QA~QH(3~6,10~13脚):8位并行数据输出CLK(8脚):时钟输入(9脚):清零GND(7脚):地VCC(14脚):正电源端,一般接+5V数码管模块在本系统的接法见15-9A1A2QAQBQCQDGND1142133124115106978VCCQHQGQFQECLK图15-874HC164的管脚图图15-9数码管模块的电路

15.2硬件设计

数码管模块在本系统的接法见15-9A120

15.2硬件设计

4.光电隔离控制模块光电隔离电路的作用是在电隔离的情况下,以光为媒介传送信号,对输入和输出电路可以进行隔离,因而能有效地抑制系统噪声,消除接地回路的干扰。光电隔离的原理其实很简单,是把发光器件(如发光二极管)和光敏器件(如光敏三极管)组装在一起,通过光线实现隔离构成电-光和光-电的转换器件。在本系统中为了保护主控芯片,在主控芯片和继电器之间增加了光电隔离芯片—4N25,其管脚图如图15-7所示。4N25的工作原理如图15-8所示。发光二极管导通,光敏三极管集电极和发射极导通;发光二极管截止,光敏三极管集电极和发射极也截止。其中发光二极管的驱动电流最大为80mA,光敏三极管的集电极最大能承受100mA的电流。

15.2硬件设计

4.光电隔离控制模块21

15.2硬件设计

12162534阳极阴极N.C基极集电极发射极图15-74N25的管脚图图15-84N25的工作原理图

15.2硬件设计

1216阳极基极图15-7422

15.2硬件设计

光电隔离模块在本系统的接法见图15-12由于本系统采用的是5VDC继电器,它的内阻是72.5欧姆,经过实验发现4N25不能直接驱动该继电器,因此必须接一个三极管进行放大。现以风机为例,详细说明MCU的I/O口控制风机启动或停止的全部过程。

15.2硬件设计

光电隔离模块在本系统的接法见图15-23

15.2硬件设计

①MCU->Fan.CtrlIn=1->U6.Out=1->U6Q1.B=1->U6Q1导通->JDQ2线圈得电->JDQ2.常开触点闭合->风扇启动。②MCU->Fan.CtrlIn=0->U6.Out=0->U6Q1.B=0->U6Q1截止->JDQ2线圈失电->JDQ2.常闭触点闭合->风扇停止。图15-12光电隔离模块的电路

15.2硬件设计

①MCU->Fan.CtrlIn=1-24

15.3软件设计

15.3.1编写硬件驱动程序注意点①硬件驱动程序的文件数量(.h,.c)应该与划分的硬件模块个数一致,一个硬件模块对应一个H文件和一个C文件。②一个C文件中可以包含若干个函数,所有对外函数必须在H文件中声明,仅在该文件内部调用的函数就在该文件中声明与实现。③一个与硬件相关的C文件,头部是说明该文件对外的函数,可以对外的函数按照头部说明的顺序放在最前面,每个函数头的说明要有足够的使用信息。④汇编中,原则上先用A,HX作为函数入口,不够用再考虑用HX指向内存地址。C中,所有子程序不得用全局变量作为出口。⑤当对划分好的模块编写硬件驱动程序时,要切记不能干预该模块未用到的引脚。

15.3软件设计

15.3.1编写硬件驱动程序注意点25

15.3软件设计

15.3.2各模块头文件

15.3软件设计

15.3.2各模块头文件26

15.3软件设计

15.3软件设计

27

15.3软件设计

15.3软件设计

28

15.3软件设计

15.3.3各模块子程序的前导注释1.键盘模块(1)键盘初始化/*KB_Init:键盘初始化------------------------------------------------------**功能:初始化键盘中断的引脚,但未放开键盘中断**参数:无**返回:无**---------------------------------------------------------------------------------*/voidKB_Init(void)//键盘初始化(2)扫描键盘读取键值

15.3软件设计

15.3.3各模块子程序的前导注释29

15.3软件设计

/*KB_Scan:扫描读取键值函数---------------------------------------------**功能:扫描2*3键盘上的按键,读取键值返回,若无按键返回0xff***参数:无**返回:键值,若无按键返回0xff**-------------------------------------------------------------------------------------*/INT8UKB_Scan(void)//扫描读取键值(3)键值转换为定义值/*KB_Def:键值转为定义值---------------------------------------------------**功能:键值转化为定义值**参数:KBKey-键值**返回:键定义值(返回0xff,表示无此定义值)**--------------------------------------------------------------------------------------*/INT8UKB_Def(INT8UKBKey)//键值转化为定义值

15.3软件设计

/*KB_Scan:扫描读取30

15.3软件设计

2.时钟模块

(1)读取时间日期/*ReadTime1:读取秒分时-----------------------------------------------------**功能:读取秒分时3个字节的数据放到缓冲区中**参数:t--存放秒分时数据缓冲区**返回:0--成功1--失败**----------------------------------------------------------------------------------*/INT8UReadTime1(INT8U*t)//读取秒分时(2)设置时间日期/*SetTime1:设置秒分时----------------------------------------------------**功能:将缓冲区中秒分时3个字节写到时钟芯片中**参数:t--存放秒分时数据缓冲区**返回:0--成功1--失败**----------------------------------------------------------------------------------*/INT8USetTime1(INT8U*t)//设置秒分时

15.3软件设计

2.时钟模块31

15.3软件设计

3.数码管模块(1)数码管初始化/*LEDInit:数码管初始化--------------------------------------------**功能:数码管初始化**参数:无**返回:无**------------------------------------------------------------------------*/voidLEDInit();//数码管初始化(2)数码管显示/*LEDshow1:在一个LED上显示数字-------------------------------------------**功能:在第LEDno个LED上显示数字**参数:LEDno(0-2)-数码管编号num(0-19)-要显示的数字(本处转码)**返回:无**说明:显示数字'0'-'9',直接输入0-9;显示字符'0.'-'9.',输入10-19**-------------------------------------------------------------------------------------------*/voidLEDshow1(INT8ULEDno,INT8Unum)//在一个LED上显示数字

15.3软件设计

3.数码管模块32

15.3软件设计

4.开关量输入输出模块(1)开关量输入初始化/*SwitchInput_Init:开关量输入初始化--------------------------------------**功能:初始化两个需要中断的开关量输入,但中断并不开放**参数:无**返回:无**---------------------------------------------------------------------------------------*/(2)开关量输入初始化

/*SwitchInput_Read:读取3路开关量输入的状态----------------------------**功能:读取开关量输入口存入内存中**参数:SWInputFlag-开关量输入状态字节的地址**返回:开关量输入状态字节**说明:*SWInputFlag:0bxxxxxddd

**|||____前门输入状态位:1-前门关闭;0-前门打开**||_____后门输入状态位:1-后门关闭;0-后门打开**|______红外输入状态位:1-无人经过;0-有人经过**-------------------------------------------------------------------------------------------*/

15.3软件设计

4.开关量输入输出模块33

15.3软件设计

(3)初始化8路开关量输出

/*SwitchOutput_Init:初始化8路开关量输出-----------------------------------**功能:初始化8路开关量输出,令控制的部件处于关闭状态**参数:无**返回:无**------------------------------------------------------------------------------------------*/voidSwitchOutput_Init()(4)8路开关量输出

/*SwitchOutput_Do:8路开关量输出--------------------------------------------**功能:根据开关量输出状态字节对相应I/O口进行输出**参数:Status-开关量输出状态字节**返回:无**说明:Status中的一位表示一路开关量输出**Status:D7D6D5D4D3D2D1D0**||||||||_前门锁:1-上锁;0-失锁**|||||||____后门锁:1-上锁;0-失锁

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论