《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验

上传人:QQ15****706 文档编号:107050880 上传时间:2019-10-17 格式:DOC 页数:28 大小:316.50KB
返回 下载 相关 举报
《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验_第1页
第1页 / 共28页
《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验_第2页
第2页 / 共28页
《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验_第3页
第3页 / 共28页
《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验_第4页
第4页 / 共28页
《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验》由会员分享,可在线阅读,更多相关《《嵌入式系统与应用》设计性实验报告-基于ARM的多通道仪表数据采集实验(28页珍藏版)》请在金锄头文库上搜索。

1、 物理与电子工程学院 嵌入式系统与应用设计性实验报告 题目 基于ARM的多通道仪表数据采集实验 系 别 物理与电子工程学院 年 级 专 业 班 级 学 号 学生姓名 指导教师 实验时间 2011.12 目录一摘要3二引言42.1本课题的目的:42.2运行环境:4三课题研究53.1主函数模块53.2 AD数据采集模块63.3响应键盘消息模块73.4绘图显示模块8四总结与体会11参考文献12附 录13设计性实验报告成绩: 指导教师签名:28一摘要在实际应用中,常常需要对现场的设备进行监测,通过采集设备的运行参数随时了解、跟踪设备运行状态,进而对设备进行分析和诊断。传统的数据采集系统一般采用PC 加

2、数据采集卡,主要做法是将一块基于IAS 或PCI的板卡插入工业计算机或商用机上,将外部信号通过导线引至计算机,然后接入数据采集卡,通过定制的软件进行采集。但是采用数据采集卡的缺点是安装麻烦、易受机箱内环境的干扰,而且由于受计算机插槽数量和位置、中断资源的限制,不可能挂接很多设备。从未来的发展方向上看,数据采集系统的数据采集部分应朝着强实时、多参数、高精度方向发展;数据存储部分朝着大容量、微型化、便携式方向发展;数据传输部分朝着多通讯方式、远距离数据传输方向发展。一般的基于单任务顺序机制的单片机数据采集系统又很难胜任对于稳定性、实时性要求很高的场合。基于此,本设计了一种基于ARM7 处理器,采用

3、了串口、USB、以太网3 种与PC 机的通讯方式,以适应不同场合的需要。采用多任务编程方法,每个任务监视一路AD 转换, 每一路AD 的转换结果在液晶屏上用一个条形图的长短来表示,直观地显示每路模拟输入电压的大小。可以通过文本框给每路AD 设置警戒值,某路输入超出警戒线之后条形图中超出的部分会以闪动的方式显示。二引言2.1本课题的目的:采用多任务编程方法,每个任务监视一路AD 转换, 每一路AD 的转换结果在液晶屏上用一个条形图的长短来表示,直观地显示每路模拟输入电压的大小。可以通过文本框给每路AD 设置警戒值,某路输入超出警戒线之后条形图中超出的部分会以闪动的方式显示。 在此基础上,利用实验

4、箱中的数码管显示每一路的电压采样值,并能在超出警戒值的情况下闪烁显示。或在LCD屏上对应条形图的顶部显示具体的电压值。2.2运行环境:嵌入式开发平台(ARM7)和PC机三课题研究3.1主函数模块在 main()函数中调用 OSStart()函数之前用下列语句创建任务:OSTaskCreate(TaskName,(void*)0,(OS_STK*)&TaskName_StackSTACKSIZE-1,TaskName_Prio);OSTaskCreate()函数的原型是:INT8U OSTaskCreate (void (*task)(void *pd), void *p_arg, OS_STK

5、 *ptos, INT8U prio);需要将任务函数 TaskName,任务堆栈 TaskName_Stack,任务优先级 TaskName_Prio 三个参数传给 OSTaskCreate()函数。根据任务函数的内容决定堆栈大小,宏 STACKSIZE 定义为4KB,可以在此基数上乘倍。任务优先级越高,TaskName_Prio 值越小;uCOS-II 可以管理 64个任务,由 OSInit()创建的空闲任务的优先级最低为 63;uCOS-II 保留 4 个最高和 4 个最低 优先级,用户任务可以使用其余 56 个优先级值。int main(void)Uart_Printf(nArm Ta

6、rget Init OK.); Zlg7289_Reset();/zlg7289复位ARMTargetInit(); /开发板初始化OSInit(); /操作系统初始化 uHALr_ResetMMU();/复位MMULCD_Init(); /初始化LCD模块LCD_printf(LCD initialization is OKn);/向液晶屏输出数据LCD_printf(320 x 240 Text Moden);initOSGUI();/初始化图形界面LoadFont();/调Unicode字库LoadConfigSys();/使用config.sys文件配置系统设置LCD_printf(C

7、reate task on uCOS-II.n);OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);/ 创建系统任务OSTaskCreate(Display_Task,(void *)0, (OS_STK *)&Display_Task_StackSTACKSIZE-1, Display_Task_Prio);/ 20OSTaskCreate(AD0_Task,(void *)0, (OS_STK *)&AD0_Task_StackSTACKSIZE-1, AD0_Tas

8、k_Prio);OSTaskCreate(AD1_Task,(void *)0, (OS_STK *)&AD1_Task_StackSTACKSIZE-1, AD1_Task_Prio);OSTaskCreate(AD2_Task,(void *)0, (OS_STK *)&AD2_Task_StackSTACKSIZE-1, AD2_Task_Prio);OSTaskCreate(AD3_Task,(void *)0, (OS_STK *)&AD3_Task_StackSTACKSIZE-1, AD3_Task_Prio);OSAddTask_Init();/创建系统附加任务LCD_prin

9、tf(Starting uCOS-II.n);LCD_printf(Entering graph mode.n);LCD_ChangeMode(DspGraMode);/变LCD显示模式为文本模式InitRtc();/初始化系统时钟Nand_Rw_Sem=OSSemCreate(1); /创建Nand-Flash读写控制权旗语,初值为1满足互斥条件/OSStart();/操作系统任务调度开始/不会执行到这里return 0;3.2 AD数据采集模块使用GetADresult()函数即可得到某路AD 输出的二进制代码。由于处理器的8路10 位AD 转换单元的最大输入电压是2.50V,所以实际电压

10、值就是result_ADx=GetADresult(x)*2.50/1024;代码如下:void AD0_Task(void * Id) /Main_Test_Taskfor(;)result_AD0=GetADresult(0)*33/1024;/Uart_Printf(result_AD0=%dn,result_AD0);OSTimeDly(100);void AD1_Task(void * Id) /Main_Test_Taskfor(;)result_AD1=GetADresult(1)*33/1024;/Uart_Printf(result_AD1=%dn,result_AD1);O

11、STimeDly(100);void AD2_Task(void * Id) /Main_Test_Taskfor(;)result_AD2=GetADresult(2)*33/1024;/Uart_Printf(result_AD2=%dn,result_AD2);OSTimeDly(100);void AD3_Task(void * Id) /Main_Test_Taskfor(;)result_AD3=GetADresult(3)*33/1024;/Uart_Printf(result_AD3=%dn,result_AD3);OSTimeDly(100);3.3响应键盘消息模块流程图如图

12、5-4 所示。图5-4 流程图1)这里设置了两个文本框,用来输入通道编号和该通道的警戒值,在键盘消息响应函数里针对两个文本框分别作出处理,只处理回车键和取消键,其他键由控件本身处理。程序里用变量EditNumber 指示当前要编辑的文本框控件;用变量input 指示该文本框控件是否处于输入编辑状态。以此决定回车键应该执行的功能。2)当文本框控件不是编辑状态时,回车将使其进入编辑状态,在程序里用SetWndCtrlFocus( )函数将焦点转移到该控件并用SetTextCtrlEdit() 函数设置为编辑状态;当文本框正处于编辑状态时,回车将使其退出编辑状态,并将要编辑的文本框切换到另一个文本框

13、控件,取消键的处理和这种情况类似。3)如果当前要编辑的文本框是警戒值输入框,在编辑状态中回车确定后,所输入的通道编号以及警戒值就会保存在数组WarnningData 中,代码如下: WarnningDataUnicode2Int(pChannelTextCtrl-text)=Unicode2Int(pValueTextCtrl-text);3.4绘图显示模块流程图如下:图5-5 Display_Task 流程图1)程序中用TextOut()函数显示文本框的提示信息,用数组edit 记录两个文本框是否处于编辑状态,用变量IsEdit 指示提示信息是否显示。实际上,IsEdit这个变量在显示任务循环一次就改变一次状态,当IsEdit=1 时将提示信息擦掉,否则保持显示不变。这就是闪烁显示的原理,表示AD 转换结果的条形图超出警戒值的部分的闪烁也是这样实现的,随着任务的循环隔次的改变状态。TextOut(pdc, 10, 35, Channel_Caption_16, TRUE, FONTSIZE_SMALL);2)和变量IsEdit 的作用类似,warnningx是条形图闪烁的指示变量。当某路AD 转换的结果result_ADx 大于对应通

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号