实验二 电子画板new.doc

上传人:bao****ty 文档编号:144716156 上传时间:2020-09-13 格式:DOC 页数:10 大小:86KB
返回 下载 相关 举报
实验二 电子画板new.doc_第1页
第1页 / 共10页
实验二 电子画板new.doc_第2页
第2页 / 共10页
实验二 电子画板new.doc_第3页
第3页 / 共10页
实验二 电子画板new.doc_第4页
第4页 / 共10页
实验二 电子画板new.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《实验二 电子画板new.doc》由会员分享,可在线阅读,更多相关《实验二 电子画板new.doc(10页珍藏版)》请在金锄头文库上搜索。

1、华 南 师 范 大 学 实 验 报 告学生姓名 陈世文 学 号 20092102014 专 业 嵌入式 年级、班级 2009级4班 课程名称 C/OS- 实验项目 实验二 电子画板 实验时间 2012 年 6 月 1 日实验指导老师 谭琦 实验评分 院 系:计 算 机 学 院实验课程:C/OS-实验项目:实验二 电子画板指导老师:谭琦 开课时间:2011 2012年度第 2学期专 业:嵌入式班 级:09级 4 班学 生:陈世文学 号:20092102014华南师范大学教务处实验二 电子画板一、实验目的1进一步了解触摸屏的工作原理。2学习在uCOS-II操作系统下对触摸屏的编程。3进一步熟悉绘图

2、API,图形控件,消息循环等内容。4掌握将程序通过ARM7TDMI的JTAG仿真器下载到ARM开发平台上运行的操作。二、实验内容在液晶屏上设置四个按钮控件,表示四种画板功能:画直线、画圆、画任意折线以及清除图形。在触摸屏上单击一个按钮后,即可以开始在触摸屏上画图或清除原来的图形,并结合实验一,在电子画板的基础上,让实验一的两个任务切换显示在ARM开发平台的显示屏上。 三、预备知识1、用ARM SDT 2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。2、基于uCOS-II操作系统的应用程序的框架结构。3、触摸屏的驱动程序原理。4、系统消息循环、图形API函数以及控件的使用。四、实验设

3、备及工具 硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。五、实验步骤1、新建工程,将“Exp22模拟电子画板”中的文件加入工程。2、打开main.c文件,编辑Main_Task任务中的代码。定义控件及绘图的矩形区域,创建按钮控件并显示每个按钮代表的功能。启动消息循环,响应触摸屏消息。程序流程图如图5-3所示。提示:1)用CreateButton()函数创建按钮控件,其参数Caption即要在该按钮

4、上显示的文字。这里同样需要事先指定每个控件的ID,为每个控件的矩形结构赋值,并将ASCII字符串转为Unicode字符串。 2)触摸屏消息的类型pMsg-Message为OSM_TOUCH_SCREEN,参数pMsg-WParam中包含坐标信息,用下面的语句获得(x,y)坐标值:Touch_Position.x=pMsg-WParam&0xffff;Touch_Position.y=pMsg-WParam16;3)用IsInRect()函数判断某个触摸点坐标是否在一个矩形区域内,例如: IsInRect2(pLine_Button_RECT, pTouch_Position);判断pTouch

5、_Position坐标值是否在画线按钮pLine_Button_RECT的矩形区域内。4)触摸屏消息参数pMsg-LParam为触摸屏动作,定义如下:#define TCHSCR_ACTION_CLICK1 /触摸屏单击#define TCHSCR_ACTION_DBCLICK2 /触摸屏双击#define TCHSCR_ACTION_DOWN3 /触摸屏按下#define TCHSCR_ACTION_UP4 /触摸屏抬起#define TCHSCR_ACTION_MOVE5 /触摸屏移动 在画直线功能中,第1次单击绘图区域时,触摸屏动作为TCHSCR_ACTION_CLICK,用MoveTo

6、()函数设定直线起点;第2次单击时用LineTo()函数绘制直线。程序中用Line_State作为直线起点和终点的状态标志。在画圆功能中,第一次单击绘图区域时,触摸屏动作为TCHSCR_ACTION_CLICK,记录该触摸点坐标为圆心坐标;第2次单击时用Circle()函数画圆。程序中用Circle_State作为圆心和圆周的状态标志。用下面的语句求得圆的半径:r=sqrt(x0-Touch_Position.x)*(x0-Touch_Position.x)+(y0-Touch_Position.y)*(y0-Touch_Position.y);5)在画折线功能中,触摸屏动作为TCHSCR_A

7、CTION_DOWN时用MoveTo()函数设置线段起始点;动作为TCHSCR_ACTION_MOVE时用LineTo()函数绘制线段。LineTo()函数执行完毕后绘图当前点自动转移到线段的终点。 6)系统的按钮控件本身也能对按钮上的触摸屏消息作出处理,会随着TCHSCR_ACTION_UP或TCHSCR_ACTION_DOWN动作绘制动态的按钮图形。并会在TCHSCR_ACTION_UP之后发出如下消息:pMsg=OSCreateMessage(POS_Ctrl)pButtonCtrl-parentWnd, OSM_BUTTON_CLICK, pButtonCtrl-CtrlID, NUL

8、L);SendMessage(pMsg);有兴趣的用户可以在Main_Task中用OSOnSysMessage()函数将触摸屏消息发给控件本身,并尝试处理上述由按钮控件发出的消息,而无需用IsInRect()函数判断了。3、用ARM SDT 2.5 或ADS1.2编译、下载并调试上述程序,检查运行结果。4、生成发行版本的.bin文件,通过USB下载到嵌入式开发平台中,运行并检查输出结果。创建按钮,绘图窗口触摸屏消息?绘图状态为直线绘图状态为画圆绘图状态为曲线绘图状态为清屏触摸直线按钮触摸圆按钮触摸绘图区域触摸清屏按钮触摸曲线按钮Line_State=0?Line_State=1移动Circle

9、_State=0?Line_State=0画直线Circle_State=1保存圆心坐标Circle_State=1计算半径画圆移动画线NYNY按下移动删除消息任务挂起一段时间YN图5-3 主任务实验主程序:#include.ucos-iiincludes.h /* uC/OS interface */#include .ucos-iiaddosaddition.h#include .incdrv.h#include #pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting /*任务定义

10、*/OS_STK Main_StackSTACKSIZE*8=0, ; /Main_Test_Task堆栈void Main_Task(void *Id); /Main_Test_Task#define Main_Task_Prio 11OS_STK Task1_StackSTACKSIZE*8=0, ; void Task1(void *Id);#define Task1_Prio 12OS_STK Task2_StackSTACKSIZE*8= 0, ; void Task2(void *Id); #define Task2_Prio 13/*已经定义的OS任务*tcp监控任务11以太网物

11、理层监控任务8触摸屏任务9键盘任务10lcd刷新任务59系统任务1*/*事件定义*/OS_EVENT *Nand_Rw_Sem; /Nand_Flash读写控制权旗语/and you can use it as folloeing:/ Nand_Rw_Sem=OSSemCreate(1); /创建Nand-Flash读写控制权旗语,初值为1满足互斥条件/ OSSemPend(Nand_Rw_Sem,0,&err);/ OSSemPost(Nand_Rw_Sem);OS_EVENT *Uart_Rw_Sem; /Uart读写控制权旗语/and you can use it as folloein

12、g:/ Uart_Rw_Sem=OSSemCreate(1); /创建Uart读写控制权旗语,初值为1满足互斥条件/ OSSemPend(Uart_Rw_Sem,0,&err);/ OSSemPost(Uart_Rw_Sem);/void initOSGUI()/初始化操作系统的图形界面initOSMessage();initOSList();initOSDC();initOSCtrl();initOSFile();/ Main function. /int main(void)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文件配置系统设置

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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