实际应用系统设计实例.ppt

上传人:sccc 文档编号:5327513 上传时间:2023-06-26 格式:PPT 页数:36 大小:2.03MB
返回 下载 相关 举报
实际应用系统设计实例.ppt_第1页
第1页 / 共36页
实际应用系统设计实例.ppt_第2页
第2页 / 共36页
实际应用系统设计实例.ppt_第3页
第3页 / 共36页
实际应用系统设计实例.ppt_第4页
第4页 / 共36页
实际应用系统设计实例.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《实际应用系统设计实例.ppt》由会员分享,可在线阅读,更多相关《实际应用系统设计实例.ppt(36页珍藏版)》请在三一办公上搜索。

1、第15章,实际应用系统设计实例,目录,本章以除尘间自动控制系统为例,讲述小型嵌入式系统的需求分析、硬件设计及软件设计过程,综合运用了前面讲到的基本模块,最后讲述了有关MCU配置模块的使用方法。在本章的学习过程中,读者需要仔细体会基于软硬件结合的嵌入式系统的设计过程、设计方法及应注意的事项等。,15.1 应用系统概要,15.1.1 应用系统概要 首先分析一个除尘间自动控制系统的基本功能。除尘间主要用于对要进入生产车间的人或物体进行除尘,以保持生产车间的洁净要求,在所有IC生产车间进口处均有除尘间。其流程大致如下:当除尘间的前门处于关闭状态,且除尘间的红外探头探测到有人进入时,系统开启除尘风扇,数

2、码管显示除尘时间(倒计时),时间到达后,关闭除尘机构。,15.1 应用系统概要,图15-1和图15-2展示了该除尘系统的总体布局,比较清晰的模拟了除尘间的现场概貌。,15.1 应用系统概要,图15-2 除尘间内部控制面板布局图,15.1 应用系统概要,15.1.2 应用系统需求分析 本系统可以设定能够自动启动的工作时间段,例如可以设定上午的8点到下午的6点这段时间内系统是自动启动的。而在该段时间以外,则是利用按键来手动启动除尘功能。自动启动的流程较为复杂并繁琐,必须列举所有可能发生的情况,一旦考虑不周,投入运行的系统就有可能面临崩溃的危险。,15.1 应用系统概要,15.1.3 应用系统设计分

3、析 在进行具体的硬件设计之前,首先必须弄清楚整个系统的输入输出路数,只有保证这一步骤的正确性才能尽量避免设计硬件电路出现的错误。通过分析除尘间自动控制系统的实际应用状况,图15-3给出了系统的输入输出分析。,15.1 应用系统概要,图15-3 除尘间自动控制系统框图,15.2 硬件设计,15.2.1 芯片选型 嵌入式处理器的选择应遵循以下几个参数:(1)处理器类型(2)片上集成的存储器情况(3)片上集成的I/O接口种类和数量(4)工作温度(5)操作系统的支持、开发工具的支持等(6)功耗特性 除了需要遵循以上参数外,还需主要的是不要把所有的I/O口用满,应适当预留几个输入和输出口,以便扩展需要。

4、通过分析本系统的输入量和输出量,计算得出所需I/O口的个数:大约29个,因此决定采用42引脚的MC908GP32(以下简称GP32)。,15.2 硬件设计,15.2.2 设计框图,图15-4 除尘间控制器硬件设计框图,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

5、.3 MCU引脚汇总列表,15.2 硬件设计,15.2.4 各模块硬件分析与设计1时钟模块 时钟模块所采用的时钟芯片PCF8563,它是一种低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检检测器,所有的地址和数据通过I2C总线接口串行传递最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。,15.2 硬件设计,OSCI(1脚):振荡器输入OSCO(2脚):振荡器输出;INT(3脚):中断输出(开漏;低电平有效);VSS(4脚):接地;SDA(5脚):串行数据I/O;SCL(6脚):串行时钟输入;CLKOUT(7脚):时钟输出(

6、开漏);VDD(8脚):正电源。,时钟模块在本系统的接法见15-6,图15-5 PCF8563的管脚图,图15-6 时钟芯片PCF8563的外部电路,15.2 硬件设计,2键盘数据录入模块 该模块实现按键的定位以及数据的输入。由于本系统需要7个按键,因此这里使用33的键盘,所用的I/O口为PTA0PTA2和PTD4PTD6。其中PTA0PTA2与键盘的列线相连,作为中断输入脚;其中PTD4PTD6与键盘的行线相连,编程时将PTA4PTA6定义为输出。键盘模块在本系统的接法见15-7,15.2 硬件设计,注意:KB.Col1、KB.Col2、KB.Col3具有内部上拉。,图15-7 键盘模块电路

7、,15.2 硬件设计,3数码管模块 为了节约I/O口,在数码管模块中外加了一个8位串转并芯片74HC164。该款芯片实际上是串行输入转为8位并行输出的移位寄存器,它含有两个串行数据输入口:A1和A2,当其中一个输入口作为串行数据输入时,另一输入口则被用作数据输入允许位。,15.2 硬件设计,A1、A2(1、2脚):串行数据输入QAQH(36,1013脚):8位并行数据输出CLK(8脚):时钟输入(9脚):清零GND(7脚):地VCC(14脚):正电源端,一般接5V,数码管模块在本系统的接法见15-9,图15-8 74HC164的管脚图,图15-9 数码管模块的电路,15.2 硬件设计,4光电隔

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

9、,15.2 硬件设计,图15-7 4N25的管脚图,图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-U6Q1导通-JDQ2线圈得电-JDQ2.常开触点闭合-风扇启动。MCU-Fan.CtrlIn=0-U6.Out=0-U6Q1.B=0-U6Q1截止-JDQ2线圈

10、失电-JDQ2.常闭触点闭合-风扇停止。,图15-12 光电隔离模块的电路,15.3 软件设计,15.3.1 编写硬件驱动程序注意点硬件驱动程序的文件数量(.h,.c)应该与划分的硬件模块个数一致,一个硬件模块对应一个H文件和一个C文件。一个C文件中可以包含若干个函数,所有对外函数必须在H文件中声明,仅在该文件内部调用的函数就在该文件中声明与实现。一个与硬件相关的C文件,头部是说明该文件对外的函数,可以对外的函数按照头部说明的顺序放在最前面,每个函数头的说明要有足够的使用信息。汇编中,原则上先用A,HX作为函数入口,不够用再考虑用HX指向内存地址。C中,所有子程序不得用全局变量作为出口。当对划

11、分好的模块编写硬件驱动程序时,要切记不能干预该模块未用到的引脚。,15.3 软件设计,15.3.2 各模块头文件,15.3 软件设计,15.3 软件设计,15.3 软件设计,15.3.3 各模块子程序的前导注释1键盘模块(1)键盘初始化/*KB_Init:键盘初始化-*功 能:初始化键盘中断的引脚,但未放开键盘中断*参 数:无*返 回:无*-*/void KB_Init(void)/键盘初始化(2)扫描键盘读取键值,15.3 软件设计,/*KB_Scan:扫描读取键值函数-*功 能:扫描2*3键盘上的按键,读取键值返回,若无按键返回0 xff*参 数:无*返 回:键值,若无按键返回0 xff*

12、-*/INT8U KB_Scan(void)/扫描读取键值(3)键值转换为定义值/*KB_Def:键值转为定义值-*功 能:键值转化为定义值*参 数:KBKey键值*返 回:键定义值(返回0 xff,表示无此定义值)*-*/INT8U KB_Def(INT8U KBKey)/键值转化为定义值,15.3 软件设计,2时钟模块(1)读取时间日期/*ReadTime1:读取秒分时-*功 能:读取秒分时3个字节的数据放到缓冲区中*参 数:t-存放秒分时数据缓冲区*返 回:0-成功 1-失败*-*/INT8U ReadTime1(INT8U*t)/读取秒分时(2)设置时间日期/*SetTime1:设置秒

13、分时-*功 能:将缓冲区中秒分时3个字节写到时钟芯片中*参 数:t-存放秒分时数据缓冲区*返 回:0-成功 1-失败*-*/INT8U SetTime1(INT8U*t)/设置秒分时,15.3 软件设计,3数码管模块(1)数码管初始化/*LEDInit:数码管初始化-*功能:数码管初始化*参数:无*返回:无*-*/void LEDInit();/数码管初始化(2)数码管显示/*LEDshow1:在一个LED上显示数字-*功 能:在第LEDno个LED上显示数字*参 数:LEDno(0-2)-数码管编号 num(0-19)-要显示的数字(本处转码)*返 回:无*说 明:显示数字0-9,直接输入0

14、-9;显示字符0.-9.,输入1019*-*/void LEDshow1(INT8U LEDno,INT8U num)/在一个LED上显示数字,15.3 软件设计,4开关量输入输出模块(1)开关量输入初始化/*SwitchInput_Init:开关量输入初始化-*功 能:初始化两个需要中断的开关量输入,但中断并不开放*参 数:无*返 回:无*-*/(2)开关量输入初始化/*SwitchInput_Read:读取3路开关量输入的状态-*功 能:读取开关量输入口存入内存中*参 数:SWInputFlag-开关量输入状态字节的地址*返 回:开关量输入状态字节*说 明:*SWInputFlag:0bx

15、xxxxddd*|_前门输入状态位:1-前门关闭;0-前门打开*|_后门输入状态位:1-后门关闭;0-后门打开*|_红外输入状态位:1-无人经过;0-有人经过*-*/,15.3 软件设计,(3)初始化8路开关量输出/*SwitchOutput_Init:初始化8路开关量输出-*功 能:初始化8路开关量输出,令控制的部件处于关闭状态*参 数:无*返 回:无*-*/void SwitchOutput_Init()(4)8路开关量输出/*SwitchOutput_Do:8路开关量输出-*功 能:根据开关量输出状态字节对相应I/O口进行输出*参 数:Status-开关量输出状态字节*返 回:无*说 明

16、:Status中的一位表示一路开关量输出*Status:D7 D6 D5 D4 D3 D2 D1 D0*|_前门锁:1-上锁;0-失锁*|_后门锁:1-上锁;0-失锁*|_风机:1-开启;0-停止*|_照明灯:1-亮;0-暗*|_按键无效指示灯:1-亮;0-暗*|_按键有效指示灯:1-亮;0-暗*|_语音开关:1-开;0-关*|_加热管运行指示灯:1-亮;0-暗*-*/,15.3 软件设计,5加热管模块/*PWMOut:输出PWM脉冲-*功 能:设置输出PWM的脉冲周期、占空比*参 数:period-脉冲周期 duty-占空比*返 回:无*-*/void PWMOut(INT16U period,INT16U duty)/输出PWM脉冲6串行通信模块该模块是通用模块,不在此详述。,制作人:苏州大学,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号