收藏 分享(赏)

《嵌入式操作系统及ARM Cortex-MO》课件第十章.pptx

上传人:bubibi 文档编号:22680007 上传时间:2024-06-27 格式:PPTX 页数:50 大小:4.49MB
下载 相关 举报
《嵌入式操作系统及ARM Cortex-MO》课件第十章.pptx_第1页
第1页 / 共50页
《嵌入式操作系统及ARM Cortex-MO》课件第十章.pptx_第2页
第2页 / 共50页
《嵌入式操作系统及ARM Cortex-MO》课件第十章.pptx_第3页
第3页 / 共50页
《嵌入式操作系统及ARM Cortex-MO》课件第十章.pptx_第4页
第4页 / 共50页
《嵌入式操作系统及ARM Cortex-MO》课件第十章.pptx_第5页
第5页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、LPC82XLPC82X 典型应用实例典型应用实例本篇包括第十至十三章本篇包括第十至十三章,共给出了三个典型应用项目实例共给出了三个典型应用项目实例,依次为基于依次为基于LPC824LPC824学习板的智能门密码锁设计实例学习板的智能门密码锁设计实例,智能温度采集、显示与报警系统以及数字智能温度采集、显示与报警系统以及数字电压采集与显示实例电压采集与显示实例,最后还给出了一个最后还给出了一个NXPNXP公司设计的开源硬件平台公司设计的开源硬件平台LPCXLPCXPRESSO824-MAXO824-MAX。该学习平台的硬件和软件设计规范。该学习平台的硬件和软件设计规范,且学习资料丰富且学习资料丰

2、富,可作可作为基于为基于LPC824LPC824设计应用系统的开发模板。设计应用系统的开发模板。第十章第十章智能门密码锁应用实例智能门密码锁应用实例10.110.1智能门密码锁功能设计智能门密码锁功能设计10.210.2智能门密码锁程序设计智能门密码锁程序设计智能门密码锁是通过输入密码控制门锁开关的装置,这里使用LPC824学习板模拟智能门密码锁:当输入正确的6位数字密码后(按下确认键S15),用ZLG7289B驱动的四合一七段数码管显示“OOOO”模拟门被打开,且LCD屏主界面显示“欢迎回家!”;当按下S16按键时,模拟门被关闭(此时,数管码全部熄灭),界面将显示“请输入密码:”。输入的密码

3、用“*”号显示。S1S10按键为10个数字输入键,其中S10表示数字“0”,S1表示数字“1”,依次类推,S9表示数字“9”。初始密码为:123456,在开门状态下,当用户按下S11按键时可修改密码,首先会提示输入原密码,输入6位数字原密码并按确认键S15后,提示输入新密码,输入6位数字后,按下S15确认键后要求再次输入新密码,再输入一次新密码后按下S15按键确认新密码,如果两次输入的新密码相同,则修改密码成功。智能门密码锁实现的功能如图10-1和图10-2所示。图图10-110-1、10-210-2请看下页请看下页 10.110.1 智能门密码锁功能设计智能门密码锁功能设计图图10-110-

4、1智能门密码锁关门状态下的功能智能门密码锁关门状态下的功能图图10-210-2智能门密码锁开门状态下的功能智能门密码锁开门状态下的功能10.110.1 智能门密码锁功能设计智能门密码锁功能设计由图10-1和图10-2可知,关门状态下只能输入密码开锁,而没有其他功能;当输入错误的密码后,数码管将显示“EEEE”报警。开门状态下可以修改密码,此外,开门状态下按下S16键,则进入关门状态(模拟关门)。由于本实例受到篇幅限制,程序代码不宜过长,故仅考虑实现上述智能门密码锁的基本功能,读者可以在此基础上添加屏幕保护功能,实现更美观的界面设计。此外,密码应该保存在EEPROM等安全性高的只读存储器中,由于

5、LPC824学习板上没有EEPROM,所以这里的密码只是一个普通的RAM变量。在实际智能门密码锁中,还应该将这个变量加密后写入到EEPROM中。每次门锁通电后,首先将EEPROM中的信息读出到LPC824内存中,然后解密这些信息,得到真实的开锁密码。每次修改开锁密码时,都要将该密钥加密后,写入到EEPROM中。加密算法可以采用高级加密标准AES算法。10.110.1 智能门密码锁功能设计智能门密码锁功能设计在项目ZLX16的基础上新建项目ZLX22,保存在目录D:ZLXLPC824ZLX22下,此时的工程ZLX22与ZLX16相同。然后,按表10-1修改项目ZLX22。表表10-110-1项目

6、项目ZLX22ZLX22在项目在项目ZLX16ZLX16基础上的改动基础上的改动10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计建设好的项目ZLX22如图10-3所示。图图10-310-3项目项目ZLX22ZLX22工作界面工作界面10.210.2 智能门密码锁程序设计智能门密码锁程序设计下面依次介绍表10-1中新添加到项目ZLX22中的各个文件。程序段程序段10-110-1文件文件task02.ctask02.c1/Filename:task02.c 23#inclu

7、deincludes.h 45 extern OS_EVENT*Mbox01;6第5行声明外部定义的消息邮箱Mbox01。7 void Task02(void*data)8 9 INT8U err;10 INT8U*keyCd;11 INT8U keyN;12第10行的KeyCD用于指向接收到的消息(消息包含了按键码),第11行的keyN用于保存按键的编号。10.210.2 智能门密码锁程序设计智能门密码锁程序设计13 data=data;1415 DoorLock();16第15行调用DoorLock函数,将门的初始状态设为关门状态。17 while(1)18 19 keyCd=(INT8U

8、*)OSMboxPend(Mbox01,0,&err);20 keyN=KeyNumber(keyCd0);21 if(keyN=11)22 DoorKeyS1_11(keyN);23 if(keyN=15)24 DoorKeyS15();25 if(keyN=16)26 DoorLock();27 28 10.210.2 智能门密码锁程序设计智能门密码锁程序设计第19行请求消息邮箱Mbox01,将请求到的消息(即按键码)赋给keyCd。第20行调用KeyNumber函数由按键码keyCd0得到按键的编号keyN。第2122行说明当按键为S1S11时,调用函数DoorKeyS1_11,其参数为

9、按键编号,其中S1S10为数字输入键,S1对应着数字1,S2对应着数字9,依次类推,S9对应着数字9,而S10对应着数字0。S11为启动修改密码的按键,只有在开门状态下,才能修改密码。按键S12S14没有使用。第2324行说明当按下S15键时,调用函数DoorKeyS15,S15键为输入密码的确认键。第2526行表示如果按下按键S16,则调用DoorLock函数,模拟关门动作,即按下S16键时,由开门状态进入到关门状态。10.210.2 智能门密码锁程序设计智能门密码锁程序设计程序段程序段10-2 10-2 文件文件task02.htask02.h1/Filename:task02.h 23#

10、ifndef_TASK02_H 4#define_TASK02_H 56#define Task02StkSize 80 7#define Task02ID 2 8#define Task02Prio(Task02ID+3)910 void Task02(void*);1112#endif文件task02.h宏定义了任务Task02的堆栈大小为80字、任务ID号为2和任务优先级号为5。第10行声明了任务函数Task02。10.210.2 智能门密码锁程序设计智能门密码锁程序设计程序段程序段10-310-3文件文件task03.ctask03.c1/Filename:task03.c 23#in

11、cludeincludes.h 45 extern OS_EVENT*Sem01;6第5行声明外部定义的信号量事件Sem01。7 void Task03(void*data)8 9 INT8U err;10 data=data;1112 while(1)13 14 OSSemPend(Sem01,0,&err);15 SegDoorOff();16 DoorLock();17 18 用户任务Task03始终请求信号量Sem01(第14行),请求成功后,第1516行才能执行,将四合一七段数码管关闭,然后调用DoorLock函数进入关门状态。10.210.2 智能门密码锁程序设计智能门密码锁程序设

12、计程序段程序段10-4 10-4 文件文件task03.htask03.h1/Filename:task03.h 23#ifndef_TASK03_H 4#define_TASK03_H 56#define Task03StkSize 50 7#define Task03ID 3 8#define Task03Prio(Task03ID+3)910 void Task03(void*);1112#endif文件task03.h宏定义了任务Task03的堆栈大小为50字、任务ID号为3和任务优先级号为6。第10行声明了任务函数Task03。10.210.2 智能门密码锁程序设计智能门密码锁程序设

13、计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计程序段程序段10-6 10-6 文件文件uctmr.huctmr.h1/Filename:uctmr.h 23#ifndef_UCTMR_H 4#define_UCTMR_H 56 void ucTmrsCreate(void);7 void StartTmrErr(void);89#endif文件uctmr.h给出了文件uctmr.c中定义的函数的声明。10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.2

14、10.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计144145 const I

15、NT8U strStar=/146 0 x01,0 x00,0 x01,0 x00,0 x03,0 x80,0 x03,0 x80,0 x03,0 x80,0 x07,0 xC0,0 xFF,0 xFE,0 x7F,0 xFC,147 0 x3F,0 xF8,0 x0F,0 xE0,0 x0F,0 xE0,0 x1F,0 xF0,0 x1E,0 xF0,0 x18,0 x30,0 x20,0 x08,0 x00,0 x00;/148第5147行为各个汉字字串的点阵数组,使用软件PCtoLCD2002生成,生成方式为逐行式,高位在前。例如生成汉字字串“请输入密码:”的点阵数组,使用如图10-4和

16、图10-5所示的方法。图图10-410-4PCtoLCD2002PCtoLCD2002生成汉字点阵生成汉字点阵图图10-510-5PCtoLCD2002PCtoLCD2002工作选项配置工作选项配置10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序

17、设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2 智能门密码锁程序设计智能门密码锁程序设计10.210.2

18、 智能门密码锁程序设计智能门密码锁程序设计程序段程序段10-8 10-8 文件文件doorlock.hdoorlock.h1/Filename:doorlock.h 23#includedatatype.h 45#ifndef_DOORLOCK_H 6#define_DOORLOCK_H 78 void SegDoorErr(void);9 void SegDoorOff(void);10 void SegDoorOn(void);11 void DoorLock(void);12 void DoorKeyS15(void);13 void DoorKeyS1_11(Int08U);1415#

19、endif文件doorlock.h中声明了文件doorlock.c中定义的函数SegDoorErr、SegDoorOff、SegDoorOn、DoorLock、DoorKeyS15和DoorKeyS1_11。10.210.2 智能门密码锁程序设计智能门密码锁程序设计回到图10-3,编译链接并运行项目ZLX22,LPC824学习板的显示结果如图10-6所示。图图10-610-6工程工程ZLX22ZLX22执行结果执行结果 10.210.2 智能门密码锁程序设计智能门密码锁程序设计在图10-6中,LPC824开机状态为关门状态,如图10-6(a)所示。输入六位数字后如图10-6(b)所示,此时按下

20、S15按键,如果输入的密码正确,则进入图10-6(c)所示的开门状态,LCD屏显示“欢迎回家!”,四合一七段数码管显示“OOOO”;如果输入的密码错误,则进入图10-6(d)所示界面,LCD屏显示“密码错误!”,四合一七段数码管显示“EEEE”。在图10-6(c)所示开门状态下,按下按键S11,则进入图10-6(e)所示界面,要求“输入原密码:”,此时输入6位原始密码,如图10-6(f)所示,然后按下按键S15,进入图10-6(g)所示界面。在图10-6(g)中输入6位数新密码,按下按键S15,进入图10-6(h)所示界面,在其中再次输入6位数新密码,并按下S15键,则进入图10-6(i)所示界面,显示“密码设置成功!”。在图10-6(c)所示界面中,按下S16键,则由开门状态切换为关门状态,即进入图10-6(a)所示界面。10.210.2 智能门密码锁程序设计智能门密码锁程序设计

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

当前位置:首页 > 教育专区 > 高等教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报