- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈尔滨工业大学华德应用技术学院计算机应用技术系课程设计/培训(报告)
-
嵌入式系统工程设计
报告
题目:基于MiniGUI的电压采集显示系统
专业:计算机科学与技术(嵌入式系统方向)
学期: 2010 春季学期
班级: 0791142
学号: 1079114223
姓名: 任光伟
成绩:
哈尔滨工业大学华德应用技术学院
2010年07月02日
基于MiniGUI的电压采集显示系统
一、功能分析
示意图:
通道1
通道1
通道2
电压(v)
时间(s)
峰值
0
0
在MiniGUI窗口中显示界面如上,通过ADC采集实验箱上电位器的电压值,调整电位器,柱状图实时显示电压值;使用实验箱提供的ADC驱动程序;软件实现对电压采样值施加软件滤波。实现通道2坐标图曲线实时显示。
MiniGUIADC驱动模拟电压 读取电压
MiniGUI
ADC驱动
模拟电压
采集
ADC模块 打开 读取 显示
ADC模块
LCD设备文件
LCD
设备文件
转换
数字电压
数字电压
图1.1 ADC转换 图1.2 MiniGUI图形显示
二、平台设计
LPC2200是基于一个支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-STM CPU的微控制器对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%而性能的损失却很小
由于LPC2200的144脚封装极低的功耗多个32位定时器8路10位ADCPWM输出以及多达9个外部中断使它们特别适用于工业控制医疗系统访问控制和POS机
通过配置总线LPC2200最多可提供76个GPIO由于内置了宽范围的串行通信接口它们也非常适合于通信网关协议转换器嵌入式软modern以及其它各种类型的应用
图2.1 ADC转换模块
本系统使用的软件平台有uClinux和MiniGUI
uClinux就是Micro Controller Linux,是针对于工业控制领域,由Linux内核派生面向低端控制器(无MMU)的嵌入式操作系统。uClinux在对物理内存的管理上仍然采用分页管理方式,但由于uClinux运行在没有MMU管理的CPU上,所以实际上uClinux采用物理存储管理策略,uClinux系统中所有进程访问的地址都是实际的物理地址。同时,由于采用了一系列的技术,uClinux内核和用户软件对内存大小的占用很小。
MiniGUI为实时嵌入式操作系统建立一个跨操作系统的、快速、稳定和轻量级的图形用户界面支持系统。属于一种“嵌入式图形中间件”软件产品。目前,MiniGUI已成为跨操作系统的图形用户界面支持系统,可在 Linux/uClinux、eCos、VxWorks、pSOS、ThreadX、Nucleus、uC/OS-Ⅱ、OSE 等操作系统,以及 Win32 平台上运行。
图例,系统结构图如图2.2所示。
图2.2 ADC电压采集结构图
三、软件设计
开始
开始
设置主窗口
窗口过程函数
设定定时时间
绘制窗口
注销定时器
判断定时器
定时器1
定时器0
采集电压
销毁主窗口
绘制线条
采集电压
结束
判断电压是否改变
N
Y
判断电压等级
绘制对应窗口区域
显示主窗口
进入消息循环
MSG-CREATE
MSG-PAINT
MSG-TIMER
MSG-CLOSE
图3.1 ADC转换模块程序流程图
static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{ HDC hdc;
static int x0 = 130, y0 = 200; // 当前坐标
static int x1 = 130, y1 = 200; // 保存上一次坐标
static int t;int i;
static int count1,sum1;
static int count2,sum2;
static int stack1[5],stack2[5];
static int volt_level0,volt_level0_old;
char disp_buf[20];
static char *top = 峰值;
static char *buttom = 0;
static char *voltage = V;
static char *time = s;
switch(message)
{
ca
原创力文档


文档评论(0)