触摸屏的软件设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• SPI总线系统可直接与各个厂家生产的多种标 准外围器件直接接口,该接口一般使用4条线: • 串行时钟线(SCK)、 • 主机输入/从机输出数据线MISO、 • 主机输出/从机输入数据线MOSI • 低电平有效的从机选择线SS • (有的SPI接口芯片带有中断信号线INT或INT、 有的SPI接口芯片没有主机输出/从机输入数据 线MOSI)。
第3章 触摸屏的软件设计
• • • • 1.软件系统的功能分块和结构 2.系统设备驱动程序 3.USB器件控制器驱动程序 4.触摸屏控制器驱动程序

整个触摸屏软件系统按照功能可分为模数转换、 数字量输入输出、背光控制、对比度调节、对象 控制、报警历史记录、上位机通信、显示屏数据 接收发送、用户设置、系统时钟显示调节等。大 部分的软件功能模块由一个单独C源文件构成, 将每个源文件和主程序相连就构成了整个软件系 统。 好处:如果需要对此部分进行改进,则直接改 动C源文件就可以而不用理会软件系统的其它部 分,如果不需要此部分,则将这个C源文件直接 删除就行,不会影响到整个软件系统的运行。
• 为双向同时通信,即通信的双方可以同时 发送和接受信息的信息交互方式。
SCK MOSI MISO CPU
器件1 SS1
器件1 SS2 SS3
器件1
SPI总线接口
• 在把SPI与几种不同的串行芯片相连时,必须使 用每片的允许控制端,这可用MCU的I/O端口来 控制。此时应特别注意这些串行I/O芯片的输入/ 输出特性: • (1)输入芯片的串行数据输出是否有三态控制 端。平时未选中芯片的输出端应处于高阻态。若 没有三态控制端,应外加三态门;否则MCU的 MISO端只能连接1个输入芯片。 • (2)输出芯片的串行数据输入是否有允许控制 端。即应该只有在该芯片允许时,SCK脉冲才能 把串行数据移入该芯片;芯片禁止时,SCK对芯 片无影响。若没有允许控制端,应在外部用门电 路对sCK进行控制后,再加到芯片的时钟输入端, 或者sPI只连接一个芯片,不能再连接其它输入 或输出芯片。
注意:1.对特定硬件设备,对应的设备驱动 程序是不同的。 2.对操作系统来说,挂接的设备越多,所需 的设备驱动程序也越多 3.操作系统本身不对种类繁多的硬件设备提 供通用的驱动设备,只有扩展设备的接口。
• 设备驱动程序是一种内核模块,负责管理 硬件设备的底层 I/O 操作。设备驱动程序是 使用标准接口编写的,内核可通过调用该 标准接口与设备进行交互。设备驱动程序 也可以是仅针对软件的,即模拟仅存在于 软件中的设备,如 RAM 磁盘、总线以及伪 终端。
系统时钟显示调节
数模转换
来自百度文库显示屏数据接收发送
数字量输入输出
背光控制
对象控制
设备驱动
报警量历史记录
上位机应用程序
图1 触摸屏软件系统结构图
• 3.1模拟量及数字量采集软件模块: • 模拟量从外部接入到模数转换板中的模拟多路 开关AD7506上,通过软件选择通道将一路模拟量 接到A/D转换器上,由软件控制模数转换开始,转 换完毕后,将数据读出保存。重复以上步骤,开始 下一个通道的模拟量转换。 • 为 了使程序的可读性加强便于维护,将A/D转换 流程图中多路开关选择到将结果显示在液晶屏这段 包括在一个函数getad(unsigned char channel) 中,其形参channel为要选择的通道号。并将函数 getad()放在头文件mylib.h中。这样在A/D转换 软件模块的源文件中,软件过程简洁明了。
依据不同的计算机架构与操作系统差异平台, 驱动程序可以是8位(8-bit)、16位(16bit)、32位(32-bit),甚至是最新的64位 (64-bit),这是为了调和操作系统与驱动 程序之间的依存关系。
例如在Windows 3.11的16位操作系统时代,
大部份的驱动程序都是16位,到了32位的

由于除了“时钟及系统名称”和“功能 菜单”显示控制界面以外,其它在图3.1中 的显示控制界面都是具体的功能界面,在 做相应的操作之后,就应该退回到这两个 界面等待以进行下一次操作。所以,只在 “时钟及系统名称”和“功能菜单”显示 控制界面检测报警量。出于同样的原因, 除了进入遥测界面进行模数转换以外,每 隔1小时进行一次的模数转换也只放在了这 两个软件模块中。报警量模块软件流程图 下图所示。
3.2系统设备驱动程序
• • • • • 1.设备驱动描述 2.设备驱动和文件系统 3.字符设备 4.设备驱动基础内容 5.设备模块化编程
• 1.设备驱动描述: 设备驱动程序(device driver),简称驱动 程序(driver),是一个允许高级(High level) 计算机软件(computer software)与硬件 (hardware)交互的程序,这种程序建立了 一个硬件与硬件,或硬件与软件沟通的界面, 经由主板上的总线(bus)或其它沟通子系 统(subsystem)与硬件形成连接的机制, 这样的机制使得硬件设备(device)上的数 据交换成为可能。

在C程序设计中,当一个程序较大时,就 将一个程序分为几个部分,每个部分单独成 为一个源文件,将这些源文件编译连接起来 组合成一个完整的程序。有两种方法实现这 样的组合:include方法和project方法。软 件系统采用include方法将上述的各个软件功 能模块组合在一起。
ADS7843
触摸屏监控程序
• 3.1.3触摸屏ADS7843工作软件 • 工作过程 • Spi总线
• (1)ADS7843工作过程 • 系统上电后,执行程序在液晶显示屏上显示相应 的控制菜单,每个控制菜单都具有相应的执行程序。 ADS7843一直处于触摸中断等待状态,当手指或 光笔等点触屏幕上需要的内容时,产生一个ARM 中断,并转向中断地址执行中断服务程序,中断服 务程序首先是向触摸屏控制芯片发送指令, ADS7843开始工作,对采集到的电压值进行A/D转 换。然后ARM读取经过控制芯片模数转换后的坐 标值,得到坐标值后,与各子程序的坐标值的比较, 从而确定转向与坐标值相符合的子程序去执行相应 的功能。
• SPI还是一个数据交换协议:因为SPI的数 据输入和输出线独立,所以允许同时完成 数据的输入和输出。不同的SPI设备的实现 方式不尽相同,主要是数据改变和采集的 时间不同,在时钟信号上沿或下沿采集有 不同定义,在点对点的通信中,SPI接口不 需要进行寻址操作,且为全双工通信,显 得简单高效。在多个从设备的系统中,每 个从设备需要独立的使能信号,硬件上比 I2C系统要稍微复杂一些。



• •

在系统内部,I/O设备的存取通过一组固定的入口点来进行, 这组入口点是由每个设备的设备驱动程序提供的。字符型 设备驱动程序能够提供如下几个入口点: (1) open入口点。打开设备准备I/O操作。对字符设备文 件进行打开操作,都会调用设备的open入口点。Open子 程序必须对将要进行的I/O操作做好必要的准备工作,如清 除缓冲区等。如果设备是独占的,即同一时刻只能有一个 程序访问该设备,则open子程序必须设置一些标志以表示 设备处于“忙”状态。 (2) close入口点。关闭一个设备。当最后一次使用设备 终结后,调用close子程序。独占设备必须标记设备可再次 使用。 (3) read入口点。从设备上读数据。对于有缓冲区的I/O 操作,一般是从缓冲区里读数据。对字符设备文件进行读 操作将调用read子程序。 (4) write入口点。向设备写数据。对于有缓冲区的I/O操 作,一般是向缓冲区里写数据。对字符设备文件进行读操 作将调用write子程序。 (5) ioctl入口点。执行读和写之外对硬件的操作。
CPU 开中断
送测量x坐标控制字
ADS7843测量x坐标
送测量y坐标控制字
ADS7843测量y坐标
返回
(2)SPI串行总线
• SPI是英文Serial Peripheral Interface的缩 写,中文意思是串行外围设备接口,SPI是 Motorola公司推出的一种同步串行通讯方式, 是一种三线同步总线,因其硬件功能很强, 与SPI有关的软件就相当简单,使CPU有更 多的时间处理其他事务。它可以使MCU与 各种外围设备以串行方式进行通信以交换 信息。外围设置FLASHRAM、网络控制器、 LCD显示驱动器、A/D转换器和MCU等。
C语言的结构
先看示例
main() { printf("C语言世界www.vcok.com,您好!\n"); }
• Main为主函数。 • 每行可以有注释。 • 输入输出函数。
• • • • •
一个源程序由一个或多个源文件组成。 每个源文件可由一个或多个函数组成。 只能有一个main函数,即主函数。 源程序中可以有预处理命令。 语句都以分号结尾。除预处理命令外 。
• 要注意的是,SCK信号线只由主设备控制, 从设备不能控制信号线。同样,在一个基于 SPI的设备中,至少有一个主控设备。这样传 输的特点:这样的传输方式有一个优点,与 普通的串行通讯不同,普通的串行通讯一次 连续传送至少8位数据,而SPI允许数据一位 一位的传送,甚至允许暂停,因为SCK时钟 线由主控设备控制,当没有时钟跳变时,从 设备不采集或传送数据。
Windows XP则大部份是使用32位驱动程序
(微软提供了Windows Driver Model可实
现driver),至于64位的Linux或是
Windows Vista平台上,就必须使用64位的 驱动程序(WDM与WDF皆可实现64位驱动 程序)。

对于嵌入式,更没有通用的驱动程序可以使用。因此, 驱动程序开发是整个嵌入式系统设计过程中必不可少的一 部分。触摸屏和操作站进行连接时(如通过RS232口串行 通信),应用软件是通过设备驱动程序实现通信的。 • RS232有单向,半双向和全双向三种通信方式。(1) 单向通信是一种最简单的通信方式,RS232接口仅有二根 导线组成。一根信号线以精确的时间间隔传输一连串串行 数据位,一次传送1位数据“0”或“1”。另一根线是信号 地线。这种仅在一个方向传送数据的通信方式称为单向通 信,其二线接口称为单向接口。(2)半双向通信方式中, 数据仅在二根导线(一根信号线,一根地线)进行双向传 输,不过,在同一时间仅在一个方向可使用半双向接口, 即,不能同时双方通信。 (3)全双向RS232通信需要三 根导线,一根信号线向一个方向传送数据,一根信号线向 相反方向传送数据,另一根导线是信号地线。两端设备可 同时传送数据,于是避免了信号交换代码或额外的信号交 换导线。这是一种最常用的通信接口方式。
语言的特点
• • • • • • 简洁紧凑,灵活方便 运算符,数据结构丰富 是结构式语言,自由度大 可直接访问物理地址 程序生成代码质量高,运行效率高 适用范围大,可移植性好
入口 显示模拟量名
对取得数据合并计算
调用模数转换程序
调用程序将结果显示到液晶屏 多路开关通道选择 显示超时标志进 行下一条道选择
启动AD转换
按下返回按钮?
延时,判断转换 结束? 退出模数转换界面,返回功能菜单 取得数据
• 3.1.2数字量采集显示软件模块 • 此监控系统中所用到的24个数字输入量中除了 4个用于控制对象状态检测,另外20个都用作报警 信号输入。就是说,当检测到这20个输入中任意 一个或多个为高电平,就说明此时直流系统有了 报警信号。如果系统正处于“时钟及系统名称”或 “功能菜单”显示时,测控装置检测到输入有高电 平,则自动跳转到遥信显示。在此时液晶屏上显示 出20个报警量,对那些有报警的遥信量以高亮度 显示。平时可以按压遥信按钮来查看这20个报警 量的名称。
• 2.设备驱动和文件系统: 任务: 自动配置和初始化子程序,检测所要驱动的硬件设 备是否存在,是否可以正常工作。 若正常,则对该设备及该设备程序相关软件进行 初始化。 • 服务I/O请求的子程序,又称为驱动程序的上半部 分。调用这部分是系统调用的结果。在执行这部 分程序的时候,系统仍认为和进行调用的进程属 于同一个进程,只是由用户状态变成了核心态, 并具有进行此系统调用的用户程序的运行环境, 所以可以在其中调用与进程运行环境有关的函数。
相关文档
最新文档