




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 嵌入式系统原理 设计与应用 7嵌入式操作系统 2 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 3 概述 组件技术的优越性 提高开发的效率开发嵌入式系统的软件时 通常一些软件模块如UART的收发器模块在大多数的产品中都需要使用 通过把这些模块封装成组件 后续的开发继续使用 显然可以提高开发的效率 提高开发的可靠性新开发的软件模块都需要进行测试 包括实验室测试和公开测试 这些测试都需要时间 使用组件化的方法 可以使用以前被测试过的组件代码 可以大大提高软件的可靠性 提高软件的可移植性软件组件的设计尽量采用标准的接口 如果没有标准 可以自己定义完备的接口 便于后续系统的开发时使用 例如液晶显示模块 设计成彩色的功能接口比设计成黑白的有许多优点 彩色可以兼容黑白 适合于并行开发通常一个嵌入式系统的软件由许多模块组成 这些模块包括设备驱动模块 算法模块等 良好的组件化设计方法 可以把任务均分 并行开发 提高开发效率 4 1例 嵌入式系统模型 嵌入式处理器UART串行通信收发器键盘液晶显示器模拟量输入接口模拟量输出接口数字量输入接口数字量输出接口数码管显示器日历时钟 5 原型系统 EMCU memory AI AO LCD DI DO keyboard UART Others 6 模型系统的软件组成 模块化设计原则主程序I O驱动程序 软件组件 7 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 8 2键盘 9 2键盘 10 2键盘 主要接口函数KeyClear 清除键盘缓冲区KeyGetKeyCode 读取一个键码KeyHitKey 检查一个键是否按下KeyInitKey 初始化键盘模块 11 2键盘 键盘组件的使用 voidmain void OSInit 操作系统初始化 KeyInitKey 键盘模块组件初始化 OSStart 开始多任务运行 12 2键盘 任务中使用键盘组件模块 voidUserTask void data Integer8keycode Data data while 1 keycode KeyGetKeyCode 0 等待用户键盘输入 Switch keycode 根据键的扫描码进行相应的处理 13 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 14 3LED显示器 利用I O端口控制LED显示器 15 3LED显示器 多路复用LED显示 16 3LED显示器 组件内部实现 软件组件的数据结构设计 1 系统使用7段LED数码管显示器 2 每个LED数码管有一个编号作为地址 编号从0开始 3 对应于每一个数码管 使用3个字节作为显示缓冲区 其中第一个存放它的字符代码 为了未来的扩展 字符代码使用ASCII码 虽然目前大多数应用的LED只显示16个16进制字符和部用户定义的图形 第二个存放颜色 第三个存放闪烁属性 4 需要为LED的显示模块预留一个定时器 硬件定时器或软件定时器 用于显示的刷新 17 3LED显示器 组件内部实现 API LED 18 3LED显示器 接口函数LedInit 初始化内部数据结构LedClear 清除内部缓冲区LedDispChar Unsigned16position Unsigned8c Unsigned8color Unsignedblink 显示字符LedOff 关闭显示LedOn 打开显示 19 3LED显示器 组件的实现Leddef h定义组件模块的数据结构和配置led c实现LED组件的所有函数 20 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 21 4LCD显示器 LCD显示器被广泛地使用于个人设备中 应用范围还在不断扩大 LCD是一种被动显示技术 它本身不发光 利用反射光显示字符和图形 LCD的功耗非常低 于是在低功耗的场合特别是电池供电的嵌入式设备上得到了广泛的应用 通常LCD使用自然光 反射自然光进行显示 如果周围的光很少或没有光 那么需要在LCD的后面放置一个光源 这个光源叫做背光 背光可以通过场致发光 EL 或LED来实现 EL背光非常微弱 它产生一个非常均匀的光源 用于LED的光源颜色很多 常用白光 EL背光电流很低 但是需要较高的电压 通常在20V以上 EL背光的使用期限有限 通常在2000 3000小时 LED背光的使用寿命很长 但是耗电较多 通常LED背光嵌在LCD的后面 有很多种颜色可以选择 22 4LCD显示器 LCD显示系统分类 3类 字符LCD显示 与LED基本相同 图形LCD显示器 点阵 定制LCD显示器 为用户特殊定制 电子台历 23 4LCD显示器 LCD显示系统组件实现 24 4LCD显示器 接口函数的实现点阵显示器的种类黑白灰度彩色方案为每一种LCD定义接口函数 优点 裁减性好 缺点 应用软件的开发需要考虑移植定义一种接口函数 支持三种LCD缺点 裁减性不好优点 应用软件的开发基本不需要考虑移植性问题 25 4LCD显示器 接口函数的实现 定义一种接口函数 支持三种LCDLCD初始化 Unsigned8LcdInit struct LcInitPara 关闭和打开显示voidLcdOff voidLcdOn 清除LCD显示屏 voidLcdClear 显示字符串 voidLcdDispStr Unsigned16row Unsigned16col Unsigned8 pStr Unsigned32color Unsigned8font Unsigned8size 显示象素点 voidLcdPixel Unsigned16row Unsigned16col Unsigned32color 画线 voidLcdLine Unsigned16x1 Unsigned16y1 Unsigned16x2 Unsigned16y2 Unsigned8Linetype Unsigned32color 画矩形 LcdRectangle Unsigned16x1 Unsigned16y1 Unsigned16x2 Unsigned16y2 Unsigned8type Unsigned32color Unsigned8fill Unsigned32fillcolor 画弧型 LcdArc Unsigned16x Unsignedy Unsigned16radium Unsigned16angel1 Unsigned16angel2 Unsigned32color Unsigned8type 26 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 27 5日历时钟 概述实现方法专用日历时钟芯片时钟芯片 电池 32768时钟晶体软件实现 28 5日历时钟 实现原理 29 5日历时钟 接口函数ClockInit 时钟组件初始化ClockSetDate 设置日期ClockSetTime 设置时间ClockSetDateTime 设置日期和时间ClockGetDate 读取日期ClockGetTime 读取时间ClockGetDateTime 读取日期时间ClockFormatDate 格式化日期 30 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 31 6模拟量输入 模拟输入硬件结构 32 6模拟量输入 读取A D值的方法1 慢速的A D转换器件 1 选择需要进行模数转换的通道 2 触发进行模数转换 3 延迟一段时间 延迟的时间大于或等于模数转换的时间加上信号在模数转换器保持稳定的时间 4 读取模数转换的值 5 把读取的值提交给应用程序 33 6模拟量输入 Unsigned16AnalogInput Unsigned8channel todo 操作模拟多路开关 选择模数转换的通道 延时 等待模拟信号在模数转换器的输入端稳定 启动模数转换 延时 等待模数转换的结束 读取模数转换的结果把返回给调用者 34 6模拟量输入 方法2 利用模数转换器的结束信号来通知用户 中断方式 Unsigned16AnalogInput Unsigned8channel 选择要读取的输入通道 延时 等待模拟多路开关输入信号的稳定 启动模数转换 等待信号量SemaADor超时 if 超时 模数转换出错处理 else 读取转换的结果并返回调用者 voidIsrAD 发出SemaAD 模数转换结束信号 35 6模拟量输入 方法3 A D转换的速度比较快 直接在程序中读取 Unsigned16AnalogInput Unsigned8channel 选择模拟输入通道 延时 等待模拟信号在模数转换器的输入端稳定 启动模数转换工作 检测是否转换完成 如果完成则读取转换结果 把转换的结果返回给调用程序 36 6模拟量输入 关于移植性的考虑组件化方法把A D转换的细节隐藏在组件的内部 关于A D的精度 目前的模拟转换器的精度有8位 10位 14位等 甚至有20位 24位或更高 为了将来技术的发展 可以把转换结果表示成32位 在一定的时期内足够用了 对于小于32位的模数转换器 低位表示转换的结果 高位用0填充 最高位可以作为符号位 37 7模拟量输出 D A的环节数模转换器滤波器放大器执行器 驱动器 38 7模拟量输出 主要接口函数voidAnalogOutput Unsigned8channel Unsigned32value 39 7模拟量输出 使用例子voidUserTask Unsigned32temp 数据来源和处理 得到数据temp AnalogOutput 0 temp 此时电压表的指针指示相应的模拟量 40 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 41 8开关量输入 输出 42 8开关量输入 输出 开关量通常是1位计算机处理的数据以字节为单位接口函数的实现方法直接以字节为单位处理开关量voidIOWrite Unsignedaddress Unsigned8value Unsigned8IORead Unsignedaddress 包装以位为单位处理开关量Unsigned8SwitchRead Unsigned16channel voidUnsigned8SwitchWrite Unsigned16channel Unsigned8On Off 43 8开关量输入 输出 实现方式比较 方式 1 字节优点程序的代码量小 执行的速度快 缺点程序设计的不直观 程序的移植性不好 方式 2 位优点可移植性好 把开关进行了抽象化 屏蔽了开关量操作的细节 程序的可读性好缺点程序的代码量比较大 程序的执行时间稍长 由于现代处理器的速度提高和存储器的空间比较大 方式 2 带来的问题可以完全克服 44 8开关量输入 输出 实现方式比较 voidUserTask if SwitchRead 10 ON SwitchWrite 20 ON elseSwitchWrite 20 OFF 45 内容 嵌入式系统模型键盘LED显示器LCD显示器日历时钟模拟量输入 输出开关量输入 输出异步串行通信其它 46 9异步串行通信 接收方法1 47 9异步串行通信 接收 ISRIsrUartRx void 接收中断服务例程 Unsigned8c 保存CPU的寄存器 即把ISR中使用的寄存器压栈 从通信控制器中读取收到的字符 if 接收环形队列不满 把收到的字节放于环形队列 恢复CPU的寄存器 即把压栈的寄存器弹出 todo 中断返回 Unsigned8UartGetChar void 从接收环形队列中接收一个字节 返回收到的字节 如果环形队列中没有字节 那么返回空NULL字符 Unsigned8c c NULL todo 禁止中断 if 环形队列不空 c 从环形队列中读取的字节 todo 使能中断 returnc 48 9异步串行通信 接收 问题 应用程序以独占的方式访问环形队列的过程中 中断禁止 如果应用程序不及时地取出环形队列中的字节 环形队列将被填满 使以后接收到的字节丢失 49 9异步串行通信 接收 方法21 应用程序等待信号量SemaUartRx 2 ISR收到一个字节后 得到一个信号量 从串行端口读入字节 把它放到环形队列中 3 ISR释放一个信号量 4 任务收到信号量 读取字节 50 9异步串行通信 接收 问题每次中断发生 中断服务程序会使用信号量SemaUartRx 该操作是操作系统提供的系统调用 执行此调用会消耗一定的时间 也就是说 每次接收到一个字符 都要执行此调用 系统的开销比较大 解决方案当收到一定数量的字符或收到特定的字符后 才发出信号量 以减少开销 51 9异步串行通信 发送 方法1 缓冲方式发送 52 9异步串行通信 发送 VOidUartPutChar Unsigned8c todo 禁止CPU的中断 if 发送环形队列不满 把要发送的字符放到环形队列尾部if 此字符是队列中的第一个字符 使能发送中断 使能CPU的中断 ISRUartCharSend void 发送中断服务例程 Unsign
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国检验管理软件项目创业计划书
- 中国家居O2O项目创业计划书
- 中国激光诊断仪项目创业计划书
- 中国苦瓜种植项目创业计划书
- 中国三网融合光通信器件项目创业计划书
- 中国融合通信(UC)项目创业计划书
- 中国光网络项目创业计划书
- 中国电子信息项目创业计划书
- 深部开采工程优化设计方法-洞察阐释
- 乐理面试试题及答案
- 贷款后管理与客户满意度提升
- 五下音乐测试题及答案
- 考评员考试题及答案
- 中医骨科试题及答案
- 杭州市上城区2025年下半年下半年招考50名专职社区工作者易考易错模拟试题(共500题)试卷后附参考答案
- 2024年湖南省普通高中学业水平合格性考试地理试题(原卷版)
- T/CECS 10400-2024固废基胶凝材料
- 2025春季学期国开电大本科《理工英语3》一平台在线形考综合测试(形考任务)试题及答案
- 资质买卖居间协议书
- 数据可视化与Python试题及答案
- 2025时政试题及答案(100题)
评论
0/150
提交评论