1、LOGO第第15章章实际应用系统设计实例 目录目录应用系统概要应用系统概要 1硬件设计硬件设计 2软件设计3本章以除尘间自动控制系统为例,讲述小本章以除尘间自动控制系统为例,讲述小型嵌入式系统的需求分析、硬件设计及软型嵌入式系统的需求分析、硬件设计及软件设计过程,综合运用了前面讲到的基本件设计过程,综合运用了前面讲到的基本模块,最后讲述了有关模块,最后讲述了有关MCU配置模块的使配置模块的使用方法。用方法。在本章的学习过程中,读者需要仔细体会在本章的学习过程中,读者需要仔细体会基于软硬件结合的嵌入式系统的设计过程、基于软硬件结合的嵌入式系统的设计过程、设计方法及应注意的事项等。设计方法及应注意
2、的事项等。15.1 应用系统概要应用系统概要15.1.1 应用系统概要应用系统概要 首先分析一个除尘间自动控制系统的基本首先分析一个除尘间自动控制系统的基本功能。除尘间主要用于对要进入生产车间的人功能。除尘间主要用于对要进入生产车间的人或物体进行除尘,以保持生产车间的洁净要求,或物体进行除尘,以保持生产车间的洁净要求,在所有在所有IC生产车间进口处均有除尘间。其流程生产车间进口处均有除尘间。其流程大致如下:当除尘间的前门处于关闭状态,且大致如下:当除尘间的前门处于关闭状态,且除尘间的红外探头探测到有人进入时,系统开除尘间的红外探头探测到有人进入时,系统开启除尘风扇,数码管显示除尘时间启除尘风扇
3、,数码管显示除尘时间(倒计时倒计时),时间到达后,关闭除尘机构。时间到达后,关闭除尘机构。15.1 应用系统概要应用系统概要电源键人进入工作间除尘间应急键前门指示灯红外传感器前门后门风机加热管照明灯应急键后门指示灯前门锁后门锁控制面板布局见图15.2图15-1 除尘间自动控制系统布局图图图15-1和图和图15-2展示了该除尘系统的总体布局,展示了该除尘系统的总体布局,比较清晰的模拟了除尘间的现场概貌。比较清晰的模拟了除尘间的现场概貌。15.1 应用系统概要应用系统概要电源键风机键照明键指示灯 指示灯 指示灯减少键加热键增加键指示灯图图15-2 15-2 除尘间内部控制面板布局图除尘间内部控制面
4、板布局图 15.1 应用系统概要应用系统概要15.1.2 应用系统需求分析应用系统需求分析 本系统可以设定能够自动启动的工作时间本系统可以设定能够自动启动的工作时间段,例如可以设定上午的段,例如可以设定上午的8点到下午的点到下午的6点这段点这段时间内系统是自动启动的。而在该段时间以外,时间内系统是自动启动的。而在该段时间以外,则是利用按键来手动启动除尘功能。自动启动则是利用按键来手动启动除尘功能。自动启动的流程较为复杂并繁琐,必须列举所有可能发的流程较为复杂并繁琐,必须列举所有可能发生的情况,一旦考虑不周,投入运行的系统就生的情况,一旦考虑不周,投入运行的系统就有可能面临崩溃的危险。有可能面临
5、崩溃的危险。 15.1 应用系统概要应用系统概要15.1.3 应用系统设计分析应用系统设计分析 在进行具体的硬件设计之前,首先必须弄在进行具体的硬件设计之前,首先必须弄清楚整个系统的输入输出路数,只有保证这一清楚整个系统的输入输出路数,只有保证这一步骤的正确性才能尽量避免设计硬件电路出现步骤的正确性才能尽量避免设计硬件电路出现的错误。通过分析除尘间自动控制系统的实际的错误。通过分析除尘间自动控制系统的实际应用状况,图应用状况,图15-3给出了系统的输入输出分析。给出了系统的输入输出分析。15.1 应用系统概要应用系统概要MCU前后门的前后门的反馈信号反馈信号2时钟芯片时钟芯片2红外传感器红外传
6、感器12V按键信号按键信号(7)3*3三段数码管三段数码管指示灯指示灯3加热管加热管DA(PWM)直控电源直控电源语音模块语音模块继电器继电器风机风机光电隔离光电隔离继电器继电器照明灯照明灯光电隔离光电隔离继电器继电器前后门锁前后门锁2光电隔离光电隔离图图15-3 除尘间自动控制系统框图除尘间自动控制系统框图 15.2 硬件设计硬件设计15.2.1 芯片选型 嵌入式处理器的选择应遵循以下几个参数:嵌入式处理器的选择应遵循以下几个参数:(1)处理器类型)处理器类型(2)片上集成的存储器情况)片上集成的存储器情况(3)片上集成的)片上集成的I/O接口种类和数量接口种类和数量(4)工作温度)工作温度
7、(5)操作系统的支持、开发工具的支持等)操作系统的支持、开发工具的支持等(6)功耗特性)功耗特性 除了需要遵循以上参数外,还需主要的是不要把所有除了需要遵循以上参数外,还需主要的是不要把所有的的I/O口用满,应适当预留几个输入和输出口,以便扩展口用满,应适当预留几个输入和输出口,以便扩展需要。通过分析本系统的输入量和输出量,计算得出所需需要。通过分析本系统的输入量和输出量,计算得出所需I/O口的个数:大约口的个数:大约29个,因此决定采用个,因此决定采用42引脚的引脚的MC908GP32(以下简称以下简称GP32)。15.2 硬件设计硬件设计15.2.2 设计框图图图15-4 除尘间控制器硬件
8、设计框图除尘间控制器硬件设计框图 15.2 硬件设计硬件设计15.2.3 MCU引脚汇总列表 这一部分就主控芯片这一部分就主控芯片GP32的的I/O口分配口分配情况和各个硬件模块的设计进行简要的概情况和各个硬件模块的设计进行简要的概述。在这一板中采用的述。在这一板中采用的42Pin的的GP32的通的通用用I/O口有口有PTA0PTA7、PTB0PTB7、PTC0PTC3、PTD0,PTD2PTD7、PTE0PTE1,一共,一共29个。个。 15.2 硬件设计硬件设计15.2.3 MCU引脚汇总列表15.2 硬件设计硬件设计15.2.3 MCU引脚汇总列表15.2 硬件设计硬件设计15.2.4
9、各模块硬件分析与设计1时钟模块时钟模块 时钟模块所采用的时钟芯片时钟模块所采用的时钟芯片PCF8563,它是一种低功耗的它是一种低功耗的CMOS实时时钟实时时钟/日历芯日历芯片,它提供一个可编程时钟输出,一个中片,它提供一个可编程时钟输出,一个中断输出和掉电检检测器,所有的地址和数断输出和掉电检检测器,所有的地址和数据通过据通过I2C总线接口串行传递最大总线速度总线接口串行传递最大总线速度为为400Kbits/s,每次读写数据后,内嵌的,每次读写数据后,内嵌的字地址寄存器会自动产生增量。字地址寄存器会自动产生增量。15.2 硬件设计硬件设计OSCI(1脚):振荡器输入脚):振荡器输入OSCO(
10、2脚):振荡器输出;脚):振荡器输出;INT(3脚):中断输出脚):中断输出(开漏;低电开漏;低电平有效平有效);VSS(4脚):接地;脚):接地;SDA(5脚):串行数据脚):串行数据I/O;SCL(6脚):串行时钟输入;脚):串行时钟输入;CLKOUT(7脚):时钟输出脚):时钟输出(开开漏漏);VDD(8脚):正电源。脚):正电源。 时钟模块在本系统的接法见15-61 82 73 64 5OSCIOSCOINTVSSVDDCLKOUTSCLSDA图图15-5 PCF8563的管脚图的管脚图图图15-6 时钟芯片时钟芯片PCF8563的外部电路的外部电路 15.2 硬件设计硬件设计2键盘数
11、据录入模块键盘数据录入模块 该模块实现按键的定位以及数据的输该模块实现按键的定位以及数据的输入。由于本系统需要入。由于本系统需要7个按键,因此这里使个按键,因此这里使用用33的键盘,所用的的键盘,所用的I/O口为口为PTA0PTA2和和PTD4PTD6。其中。其中PTA0PTA2与键盘的列线相连,作为中断与键盘的列线相连,作为中断输入脚;其中输入脚;其中PTD4PTD6与键盘的行线相与键盘的行线相连,编程时将连,编程时将PTA4PTA6定义为输出。定义为输出。 键盘模块在本系统的接法见键盘模块在本系统的接法见15-715.2 硬件设计硬件设计注意:注意:KB.Col1、KB.Col2、KB.C
12、ol3具有内部上拉。具有内部上拉。 图图15-7 键盘模块电路键盘模块电路 15.2 硬件设计硬件设计3数码管模块数码管模块 为了节约为了节约I/O口,在数码管模块中外加口,在数码管模块中外加了一个了一个8位串转并芯片位串转并芯片74HC164。该款。该款芯片实际上是串行输入转为芯片实际上是串行输入转为8位并行输出的位并行输出的移位寄存器,它含有两个串行数据输入口:移位寄存器,它含有两个串行数据输入口:A1和和A2,当其中一个输入口作为串行数据,当其中一个输入口作为串行数据输入时,另一输入口则被用作数据输入允输入时,另一输入口则被用作数据输入允许位。许位。 15.2 硬件设计硬件设计A1、A2
13、(1、2脚脚):串行数据输:串行数据输入入QAQH(36,1013脚脚):8位并行数据输出位并行数据输出CLK(8脚脚):时钟输入:时钟输入(9脚脚):清零:清零GND(7脚脚):地:地VCC(14脚脚):正电源端,一般:正电源端,一般接接5V数码管模块在本系统的接法见数码管模块在本系统的接法见15-915-9A1A2QAQBQCQDGND1 142 133 124 115 106 97 8VCCQHQGQFQECLK图图15-8 74HC164的管脚图的管脚图图图15-9 数码管模块的电路数码管模块的电路 15.2 硬件设计硬件设计4光电隔离控制模块光电隔离控制模块 光电隔离电路的作用是在电
14、隔离的情况下,以光为媒光电隔离电路的作用是在电隔离的情况下,以光为媒介传送信号,对输入和输出电路可以进行隔离,因而能有介传送信号,对输入和输出电路可以进行隔离,因而能有效地抑制系统噪声,消除接地回路的干扰。光电隔离的原效地抑制系统噪声,消除接地回路的干扰。光电隔离的原理其实很简单,是把发光器件理其实很简单,是把发光器件(如发光二极管如发光二极管)和光敏器件和光敏器件(如光敏三极管如光敏三极管)组装在一起,通过光线实现隔离构成电组装在一起,通过光线实现隔离构成电光和光电的转换器件。光和光电的转换器件。 在本系统中为了保护主控芯片,在主控芯片和继电器在本系统中为了保护主控芯片,在主控芯片和继电器之
15、间增加了光电隔离芯片之间增加了光电隔离芯片4N25,其管脚图如图,其管脚图如图15-7所所示。示。4N25的工作原理如图的工作原理如图15-8所示。发光二极管导通,所示。发光二极管导通,光敏三极管集电极和发射极导通;发光二极管截止,光敏光敏三极管集电极和发射极导通;发光二极管截止,光敏三极管集电极和发射极也截止。其中发光二极管的驱动电三极管集电极和发射极也截止。其中发光二极管的驱动电流最大为流最大为80mA,光敏三极管的集电极最大能承受,光敏三极管的集电极最大能承受100mA的电流。的电流。15.2 硬件设计硬件设计121 62 53 4阳极阴极N.C基极集电极发射极图15-7 4N25的管脚
16、图 图15-8 4N25的工作原理图 15.2 硬件设计硬件设计 光电隔离模块在本系统的接法见图光电隔离模块在本系统的接法见图15-12 由于本系统采用的是由于本系统采用的是5VDC继电器,它继电器,它的内阻是的内阻是72.5欧姆,经过实验发现欧姆,经过实验发现4N25不不能直接驱动该继电器,因此必须接一个三能直接驱动该继电器,因此必须接一个三极管进行放大。极管进行放大。 现以风机为例,详细说明现以风机为例,详细说明MCU的的I/O口口控制风机启动或停止的全部过程。控制风机启动或停止的全部过程。15.2 硬件设计硬件设计MCU-Fan.CtrlIn=1-U6.Out=1-U6Q1.B=1-U6
17、Q1导通导通-JDQ2线圈得电线圈得电-JDQ2.常开触点闭合常开触点闭合-风扇启动。风扇启动。MCU-Fan.CtrlIn=0-U6.Out=0-U6Q1.B=0-U6Q1截止截止-JDQ2线圈失电线圈失电-JDQ2.常闭触点闭合常闭触点闭合-风扇停止。风扇停止。 图图15-12 光电隔离模块的电路光电隔离模块的电路 15.3 软件设计软件设计15.3.1 编写硬件驱动程序注意点编写硬件驱动程序注意点硬件驱动程序的文件数量硬件驱动程序的文件数量(.h,.c)应该与划分的硬件模块应该与划分的硬件模块个数一致,一个硬件模块对应一个个数一致,一个硬件模块对应一个H文件和一个文件和一个C文件。文件。
18、一个一个C文件中可以包含若干个函数,所有对外函数必须在文件中可以包含若干个函数,所有对外函数必须在H文件中声明,仅在该文件内部调用的函数就在该文件中文件中声明,仅在该文件内部调用的函数就在该文件中声明与实现。声明与实现。一个与硬件相关的一个与硬件相关的C文件,头部是说明该文件对外的函数,文件,头部是说明该文件对外的函数,可以对外的函数按照头部说明的顺序放在最前面,每个函可以对外的函数按照头部说明的顺序放在最前面,每个函数头的说明要有足够的使用信息。数头的说明要有足够的使用信息。汇编中,原则上先用汇编中,原则上先用A,HX作为函数入口,不够用再考虑作为函数入口,不够用再考虑用用HX指向内存地址指
19、向内存地址。C中,所有子程序不得用全局变量作中,所有子程序不得用全局变量作为出口。为出口。当对划分好的模块编写硬件驱动程序时,要切记不能干预当对划分好的模块编写硬件驱动程序时,要切记不能干预该模块未用到的引脚。该模块未用到的引脚。15.3 软件设计软件设计15.3.2 各模块头文件15.3 软件设计软件设计15.3 软件设计软件设计15.3 软件设计软件设计15.3.3 各模块子程序的前导注释各模块子程序的前导注释1键盘模块键盘模块 (1) 键盘初始化键盘初始化 /* KB_Init:键盘初始化键盘初始化-* *功功 能能:初始化键盘中断的引脚,但未放开键盘中断初始化键盘中断的引脚,但未放开键
20、盘中断 * *参参 数数:无无 * *返返 回回:无无 * *-*/ void KB_Init(void) /键盘初始化键盘初始化(2)扫描键盘读取键值)扫描键盘读取键值 15.3 软件设计软件设计 /* KB_Scan:扫描读取键值函数扫描读取键值函数-* *功功 能能:扫描扫描2*3键盘上的按键,读取键值返回键盘上的按键,读取键值返回,若无按键返回若无按键返回0 xff * * *参参 数数:无无 * *返返 回回:键值,若无按键返回键值,若无按键返回0 xff * *-*/ INT8U KB_Scan(void) /扫描读取键值扫描读取键值(3)键值转换为定义值)键值转换为定义值 /*
21、KB_Def:键值转为定义值键值转为定义值-* *功功 能能:键值转化为定义值键值转化为定义值 * *参参 数数:KBKey键值键值 * *返返 回回:键定义值键定义值(返回返回0 xff,表示无此定义值表示无此定义值) * *-*/ INT8U KB_Def(INT8U KBKey) /键值转化为定义值键值转化为定义值15.3 软件设计软件设计2时钟模块 (1)读取时间日期)读取时间日期 /*ReadTime1:读取秒分时读取秒分时-* *功功 能能:读取秒分时读取秒分时3个字节的数据放到缓冲区中个字节的数据放到缓冲区中 * *参参 数数:t-存放秒分时数据缓冲区存放秒分时数据缓冲区 * *
22、返返 回回:0-成功成功 1-失败失败 * *-*/ INT8U ReadTime1(INT8U *t) /读取秒分时读取秒分时 (2)设置时间日期)设置时间日期 /*SetTime1:设置秒分时设置秒分时-* *功功 能能:将缓冲区中秒分时将缓冲区中秒分时3个字节写到时钟芯片中个字节写到时钟芯片中 * *参参 数数:t-存放秒分时数据缓冲区存放秒分时数据缓冲区 * *返返 回回:0-成功成功 1-失败失败 * *-*/ INT8U SetTime1(INT8U *t) /设置秒分时设置秒分时15.3 软件设计软件设计3数码管模块数码管模块(1)数码管初始化)数码管初始化 /*LEDInit:
23、数码管初始化数码管初始化-* *功能功能: 数码管初始化数码管初始化 * *参数参数:无无 * *返回返回:无无 * *-*/ void LEDInit(); /数码管初始化数码管初始化(2)数码管显示)数码管显示 /*LEDshow1:在一个在一个LED上显示数字上显示数字-* *功功 能能:在第在第LEDno个个LED上显示数字上显示数字 * *参参 数数:LEDno(0-2)-数码管编号数码管编号 num(0-19)-要显示的数字要显示的数字(本处转码本处转码)* *返返 回回:无无 * *说说 明明:显示数字显示数字0-9,直接输入直接输入0-9;显示字符显示字符0.-9.,输入输入1
24、019 * *-*/ void LEDshow1(INT8U LEDno,INT8U num) /在一个在一个LED上显示数字上显示数字15.3 软件设计软件设计4开关量输入输出模块开关量输入输出模块 (1)开关量输入初始化)开关量输入初始化 /* SwitchInput_Init:开关量输入初始化开关量输入初始化-* *功功 能能:初始化两个需要中断的开关量输入,但中断并不开放初始化两个需要中断的开关量输入,但中断并不开放 * *参参 数数: 无无 * *返返 回回: 无无 * *-*/(2)开关量输入初始化)开关量输入初始化 /* SwitchInput_Read:读取读取3路开关量输入的
25、状态路开关量输入的状态-* *功功 能能:读取开关量输入口存入内存中读取开关量输入口存入内存中 * *参参 数数:SWInputFlag-开关量输入状态字节的地址开关量输入状态字节的地址 * *返返 回回:开关量输入状态字节开关量输入状态字节 * *说说 明明:*SWInputFlag:0bxxxxxddd * * |_前门输入状态位前门输入状态位:1-前门关闭前门关闭;0-前门打开前门打开 * * |_后门输入状态位后门输入状态位:1-后门关闭后门关闭;0-后门打开后门打开 * * |_红外输入状态位红外输入状态位:1-无人经过无人经过;0-有人经过有人经过 * *-*/15.3 软件设计软
26、件设计(3)初始化)初始化8路开关量输出路开关量输出 /*SwitchOutput_Init:初始化初始化8路开关量输出路开关量输出-* *功功 能能: 初始化初始化8路开关量输出路开关量输出,令控制的部件处于关闭状态令控制的部件处于关闭状态 * *参参 数数: 无无 * *返返 回回: 无无 * *-*/ void SwitchOutput_Init()(4)8路开关量输出路开关量输出 /*SwitchOutput_Do:8路开关量输出路开关量输出-* *功功 能能: 根据开关量输出状态字节对相应根据开关量输出状态字节对相应I/O口进行输出口进行输出 * *参参 数数: Status-开关量
27、输出状态字节开关量输出状态字节 * *返返 回回: 无无 * *说说 明明: Status中的一位表示一路开关量输出中的一位表示一路开关量输出 * * Status:D7 D6 D5 D4 D3 D2 D1 D0 * * | | | | | | | |_前门锁前门锁:1-上锁上锁;0-失锁失锁 * * | | | | | | |_后门锁后门锁:1-上锁上锁;0-失锁失锁 * * | | | | | |_风机风机:1-开启开启;0-停止停止 * * | | | | |_照明灯照明灯:1-亮亮;0-暗暗 * * | | | |_按键无效指示灯按键无效指示灯:1-亮亮;0-暗暗 * * | | |_
28、按键有效指示灯按键有效指示灯:1-亮亮;0-暗暗 * * | |_语音开关语音开关:1-开开;0-关关 * * |_加热管运行指示灯加热管运行指示灯:1-亮亮;0-暗暗 * *-*/15.3 软件设计软件设计5加热管模块加热管模块/*PWMOut:输出输出PWM脉冲脉冲-* 功功 能能:设置输出设置输出PWM的脉冲周期、占空比的脉冲周期、占空比 * 参参 数数:period-脉冲周期脉冲周期 duty-占空比占空比 * 返返 回回:无无 *-*/void PWMOut(INT16U period,INT16U duty) /输出输出PWM脉冲脉冲6串行通信模块串行通信模块该模块是通用模块,不在此详述。该模块是通用模块,不在此详述。LOGO制作人:苏州大学
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。