ARM9嵌入式课程设计报告.doc

上传人:叶*** 文档编号:35127018 上传时间:2022-08-20 格式:DOC 页数:11 大小:54KB
返回 下载 相关 举报
ARM9嵌入式课程设计报告.doc_第1页
第1页 / 共11页
ARM9嵌入式课程设计报告.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《ARM9嵌入式课程设计报告.doc》由会员分享,可在线阅读,更多相关《ARM9嵌入式课程设计报告.doc(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于UCOSSII系统的移动检票器1. 设计内容31.1设计目的31.2设计意义32. 设计方案42.1设计要求42.2设计方案的可行性分析43. 需求分析43.1功能需求43.2性能需求43.3环境需求44. 概要设计44.1GUI图形界面设计54.3串口的输出54.4VIVI模式65详细设计65.1GUI图形的界面的实现65.2主要函数的调用关系85.3主要负责车票信息核对模块85.4车票信息的添加9本部分内容由组员曾德亮具体负责,这里不一一叙述。96设计心得与体会97附录91. 设计内容1.1设计目的1、 注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并

2、获得科学研究的基础训练。2、了解所选择的ARM芯片各个引脚,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。3、通过软硬件设计实现利用ARM芯片对信号的采集及显示。1.2设计意义嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减

3、利用。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。2. 设计方案2.1设计要求(1)键消息输入票务信息(2)和票务数据库核对(3)显示检票

4、结果(4)输入票务数据库(可以用文本文件表示)2.2设计方案的可行性分析自动检票器是根据检票计划,实现自动检票判读票务信息功能,能够实现合法旅客通过,阻挡非法旅客进。在车站、旅游景点、企事业单位中有巨大的作用,对减少作业量,提高工作效率,实现现代化管理等方面都具有非常重要的意义。移动检票器,是根据自动检票器的基础演变而来的便携式检票设备。该设备通过嵌入式系统,运用自动识别、参数对比、数据写入等技术,实现了灵活的检票。是一种重要的检票设备。3. 需求分析3.1功能需求1.有接口按钮来实现信息的输入工作2.有以文本文件形式的简单数据库3.数据库可以写入、输出数据,实现增、删、改、查功能4.能够在L

5、CD显示屏上显示检票结果5.可以将票务信息输入数据库6.良好的界面3.2性能需求软件能够运行,具有良好的稳定性,没有语法、逻辑错误。调试成功后,具有友好的界面,能够满足移动检票器的主要功能。3.3环境需求1. Windows XP操作系统2.ADS1.2集成开发环境,仿真调试驱动程序3.EL-ARM-860嵌入式教学试验箱4.仿真调试电缆,串口直连电缆4. 概要设计4.1GUI图形界面设计这里就是根据实验五,模仿的。4.2按键的实现部分按键的串口输出函数,在开头宏定义里面实现。在Tasks_Strart任务中实现。部分代码实现如下:for(;)Key_P = OSMboxPend(Key_Mb

6、ox, 0, &err); /等待任务间的通信邮箱内的键值指针Key_Val = *Key_P;switch(Key_Val)case 0x01 :GUI_StoreKey(GUI_KEY_1);break;case 0x02 :GUI_StoreKey(GUI_KEY_2);break;case 0x0C :GUI_StoreKey(GUI_KEY_ESCAPE);break;case 0x03 :GUI_StoreKey(GUI_KEY_START);break;default:break;4.3串口的输出打开ADS1.2开发环境,从里面打开试验程序UCOSIIADS实验五Task_USO

7、SII目录下的Tasks_USOSII.mcp项目文件并进行编译。编译通过后,进入ADS1.2调试界面,加载实验程序USOSSIIADS实验五Tasks_UCOSSIIm目录下Tasks_datadebug中的映像文件程序映像Tasks.axf。按两下“3”键,观察LCD屏幕上和CPU版面上的显示。之后,选择“上”,“中”,“下”,“左”,“右”键4.4VIVI模式打开超级终端,配置串口属性为COM2,配置波特率为115200,校验位无,数据位为8,停止位为1,数据控制流无;检查连接时否可靠,可靠后,接入电源,系统上电,同时按住“空格”建,进入VIVI状态,按下LCD电源开关。5详细设计本次试

8、验由两人共同完成,经过我们二人两个礼拜的合作与交流,现在分工如下:本人主要负责需求分,在功能实现方面,主要负责图形界面的初步设计及车票信息核对模块。曾德亮同学负责的是图形界面的代码实现以及车票信息插入功能模块。5.1GUI图形的界面的实现图形界面设计主要是一些基本的图形的坐标定位,矩形、文字在LCD显示屏的坐标。当用户通过首界面进入后,部分代码以及注释如下:Set_Color(GUI_YELLOW);/显示界面Set_BkColor(GUI_RED); Set_Font (&CHINESE_FONT16);Disp_String (CN_start移动检票器CN_end,320,80);Dis

9、p_String (CN_start功能选择CN_end,360,120);Disp_String (CN_start一、票务信息核对CN_end,320,160);Disp_String (CN_start二、票务信息录入CN_end,320,200);Disp_String (CN_start退出CN_end,320,280);Loop = FALSE;number = 0;break;/通过选项2进入数据的插入,case GUI_KEY_2:/功能二,按键“2”Set_Color(GUI_RED);Fill_Rect(40,40,600,440);Set_Color(GUI_YELLOW

10、);/信息录入模块Set_BkColor(GUI_RED);Set_Font (&CHINESE_FONT16);Disp_String (CN_start票务信息录入CN_end,320,120);Set_Font(&CHINESE_FONT16);Disp_String (CN_start请输入车票号码:CN_end,100,240);Uart_GetString(no);Uart_Printf(%sn,no);Set_Font(&GUI_Font8x16);Disp_String(no,230,240);Set_Font(&CHINESE_FONT16);Disp_String (CN_

11、start请输入发车时间:CN_end,100,280);Uart_GetString(time);Uart_Printf(%sn,time);Set_Font(&GUI_Font8x16);Disp_String(time,230,280);Set_Font(&CHINESE_FONT16);Disp_String (CN_start请输入车票价格:CN_end,100,320);Uart_GetString(price);Uart_Printf(%sn,price);Set_Font(&GUI_Font8x16);Disp_String(price,230,320);insert(no,t

12、ime,price);/插入函数Set_Font(&GUI_Font8x16);Disp_String (TicketListi.num,100,380); Disp_String (TicketListi.time,200,380); Disp_String (TicketListi.price,300,380);Loop = TRUE;number = 0;break;/用户进入插入界面后,通过键盘的操作对数据库进行信息的插入,将信息录入保存,case GUI_KEY_ESCAPE: Loop = FALSE; break;当程序运行完成之后,设置escape键退出循环,在start运行程

13、序5.2主要函数的调用关系主函数void Main()任务一任务四任务二5.3主要负责车票信息核对模块信息核对何工,其实就实现函数的查询功能,所以这里,我也是用的search函数来实现的。核心代码如下:for(i=0;iMaxSize;i+)if(strcmp(TicketListi.num,no)=0)Set_Font(&CHINESE_FONT16);Disp_String(CN_start车票号码CN_end,100,200);Set_Font(&GUI_Font8x16);Disp_String(TicketListi.num,100,240);Set_Font(&CHINESE_FO

14、NT16);Disp_String(CN_start时间CN_end,200,200);Set_Font(&GUI_Font8x16);Disp_String(TicketListi.time,200,240);Set_Font(&CHINESE_FONT16);Disp_String(CN_start价格CN_end,300,200);Set_Font(&GUI_Font8x16);Disp_String(TicketListi.price,300,240);i=MaxSize+1;elseSet_Font(&CHINESE_FONT16);Disp_String(CN_start没有此车票

15、信息!CN_end,300,300);5.4车票信息的添加本部分内容由组员曾德亮具体负责,这里不一一叙述。6设计心得与体会在这次ARM嵌入式系统课程设计中,我们小组的设计课题是移动检票器。通过这次课程设计,我对ARM嵌入式系统尤其是GUI图形界面集系统有了更进一步的了解,同时知识面也进一步得到了扩展和加深。7附录/程序源代码;* 北京精仪达盛科技有限公司;* 研 发 部;*- 文件信息 - ;* 文件名称 : MAIN.c;* 文件功能 : 应用程序;* 补充说明 : ;*- 最新版本信息 -;* 修改作者 : ARM开发小组;* 修改日期 : 2004/00/00;* 版本声明 : V1.0

16、.1;*- 历史版本信息 -;* 文件作者 : ARM开发小组;* 创建日期 : 2004/06/25;* 版本声明 : v1.0.0#include .incconfig.h#defineSTACKSIZE256#define MaxSize 10/声明结构体(车票信息)struct Ticket_infochar *check;char num10;/车票号码char time10;/开车时间char price10;/价格TicketListMaxSize;OS_STK_DATA stk;extern GUI_FONT CHINESE_FONT12;extern GUI_FONT CHI

17、NESE_FONT16;extern GUI_FONT GUI_Font8x16;OS_EVENT *Key_Mbox;* 分配各任务的堆栈容量 *OS_STK Stack_Task_1STACKSIZE;OS_STK Stack_Task_2STACKSIZE;OS_STK Stack_Task_3STACKSIZE;OS_STK Stack_Task_4STACKSIZE*3;* 信息插入操作函数 *Void insert(char *num,char *time,char *price)int i=0;for(;iMaxSize;i+)if(TicketListi.check = NUL

18、L)strcpy(TicketListi.num,num);strcpy(TicketListi.time,time);strcpy(TicketListi.price,price);Set_BkColor(GUI_RED); Set_Font(&GUI_Font8x16);Disp_String (TicketListi.num,200,380);i= MaxSize+1;- 函数名称 : Task_4(void *pdata)- 函数说明 : GUI任务,优先级为56- 输入参数 : pdata- 输出参数 : 无void Task_4(void *pdata) I32 number; c

19、har time10; char num10; char price10; I32 flag=1; char no10;INT8U Loop;I32 i; for(;) number = GUI_WaitKey();Loop = TRUE;doswitch (number)case GUI_KEY_START:/ 得到开始命令Set_Color(GUI_BLUE); Fill_Rect(0,0,639,479); Set_Color(GUI_WHITE); Set_BkColor (GUI_BLUE); Fill_Rect(0,0,639,2); Fill_Rect(0,0,2,479); F

20、ill_Rect(0,477,639,479); Fill_Rect(6377,0,639,479);Set_Color(GUI_RED);/画矩形Fill_Rect(40,40,600,440); Set_Color(GUI_YELLOW);/显示界面Set_BkColor(GUI_RED); Set_Font (&CHINESE_FONT16);Disp_String (CN_start移动检票器CN_end,320,80);Disp_String (CN_start功能选择CN_end,360,120);Disp_String (CN_start一、票务信息核对CN_end,320,16

21、0);Disp_String (CN_start二、票务信息录入CN_end,320,200);Disp_String (CN_start退出CN_end,320,280);Loop = FALSE;number = 0;break; default:/ 等待主任务发送的键值命令number = GUI_WaitKey();Loop = TRUE;break;while(Loop=TRUE);do number = GUI_WaitKey();switch (number)case GUI_KEY_1:/功能一,按键“1”Set_Color(GUI_RED);Fill_Rect(40,40,6

22、00,440);Set_Color(GUI_YELLOW);/信息核对模块Set_BkColor(GUI_RED); Set_Font(&CHINESE_FONT16);Disp_String (CN_start信息核对CN_end,320,120);Disp_String (CN_start请输入车票号码:CN_end,100,150);Uart_GetString(no);Uart_Printf(%sn,no);Set_Font(&GUI_Font8x16); Disp_String(no,300,200);for(i=0;iMaxSize;i+)if(strcmp(TicketListi

23、.num,no)=0)Set_Font(&CHINESE_FONT16);Disp_String(CN_start车票号码CN_end,100,200);Set_Font(&GUI_Font8x16);Disp_String(TicketListi.num,100,240);Set_Font(&CHINESE_FONT16);Disp_String(CN_start时间CN_end,200,200);Set_Font(&GUI_Font8x16);Disp_String(TicketListi.time,200,240);Set_Font(&CHINESE_FONT16);Disp_Strin

24、g(CN_start价格CN_end,300,200);Set_Font(&GUI_Font8x16);Disp_String(TicketListi.price,300,240);i=MaxSize+1;elseSet_Font(&CHINESE_FONT16);Disp_String(CN_start没有此车票信息!CN_end,300,300);Loop = TRUE;number = 0;break;case GUI_KEY_2:/功能二,按键“2”Set_Color(GUI_RED);Fill_Rect(40,40,600,440);Set_Color(GUI_YELLOW);/信息

25、录入模块Set_BkColor(GUI_RED);Set_Font (&CHINESE_FONT16);Disp_String (CN_start票务信息录入CN_end,320,120);Set_Font(&CHINESE_FONT16);Disp_String (CN_start请输入车票号码:CN_end,100,240);Uart_GetString(no);Uart_Printf(%sn,no);Set_Font(&GUI_Font8x16);Disp_String(no,230,240);Set_Font(&CHINESE_FONT16);Disp_String (CN_start

26、请输入发车时间:CN_end,100,280);Uart_GetString(time);Uart_Printf(%sn,time);Set_Font(&GUI_Font8x16);Disp_String(time,230,280);Set_Font(&CHINESE_FONT16);Disp_String (CN_start请输入车票价格:CN_end,100,320);Uart_GetString(price);Uart_Printf(%sn,price);Set_Font(&GUI_Font8x16);Disp_String(price,230,320);insert(no,time,p

27、rice);/插入函数Set_Font(&GUI_Font8x16);Disp_String (TicketListi.num,100,380); Disp_String (TicketListi.time,200,380); Disp_String (TicketListi.price,300,380);Loop = TRUE;number = 0;break;case GUI_KEY_ESCAPE: Loop = FALSE; break; default:/ 等待主任务发送的键值命令number = GUI_WaitKey();Loop = TRUE;break;while(Loop =

28、 TRUE);- 函数名称 : Task_3- 函数说明 : 任务3,向串口发送数据- 输入参数 : pdata- 输出参数 : 无void Task_3(void *pdata) for(;) if(key_number!=0xff)Uart_Printf(key_number=%xn,key_number); /任务的干得活儿就是向超级终端发送内容 key_number=0xff; OSTimeDly(30); /延时100个节拍- 函数名称 : Task_2- 函数说明 : 系统启动后运行的第2个任务,,点亮LED1熄灭LED2,优先级为5- 输入参数 : pdata- 输出参数 : 无

29、void Task_2(void *pdata) INT32U i,flag=0; for(;) OSTimeDly(30); if(flag=0) for(i=0;i100000;i+); rGPGDAT = rGPGDAT&(0x38)|(0x18); for(i=0;i100000;i+); flag = 1; else for(i=0;i100000;i+);rGPGDAT = rGPGDAT&(0x38)|(0x28);for(i=0;i100000;i+);flag = 0; OSTimeDly(30); /延时30个节拍- 函数名称 : Task_START- 函数说明 : 系统

30、启动后运行的第一个任务- 输入参数 : pdata- 输出参数 : 无void Task_1(void *pdata) INT8U err; INT8U *Key_P; INT8U Key_Val; Timer1_Init(); /打开时钟节拍,让操作系统跑起来 /STaskCreate(Task_2, (void *)0, (OS_STK *)&Stack_Task_2(STACKSIZE) - 1, 9); /在任务里创建另一个任务 /STaskCreate(Task_3, (void *)0, (OS_STK *)&Stack_Task_3(STACKSIZE) - 1, 10); /在

31、任务里创建另一个任务OSTaskCreate(Task_4, (void *)0, (OS_STK *)&Stack_Task_4(STACKSIZE*3) - 1, 56); /在任务里创建另一个任务 for(;) Key_P = OSMboxPend(Key_Mbox, 0, &err); /等待任务间的通信邮箱内的键值指针 Key_Val = *Key_P; switch(Key_Val)case 0x01 : GUI_StoreKey(GUI_KEY_1); break;case 0x02 : GUI_StoreKey(GUI_KEY_2); break; case 0x0C : GU

32、I_StoreKey(GUI_KEY_ESCAPE); break; case 0x03 : GUI_StoreKey(GUI_KEY_START); break; default: break;- 函数名称 : Main(void)- 函数说明 : 系统的主程序入口- 输入参数 : 无- 输出参数 : 无void Main(void) Target_Init(); GUI_Init(); /ARMII实验系统的初始化,包括CPU板 OSInit(); / 操作系统的初始化Key_Mbox = OSMboxCreate(void *)0);OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1STACKSIZE - 1, 5); /创建任务一 OSStart();

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

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com