ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:266.91KB ,
资源ID:12752843      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12752843.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ARM嵌入式系统设计与应用技术密码锁系统设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ARM嵌入式系统设计与应用技术密码锁系统设计.docx

1、ARM嵌入式系统设计与应用技术密码锁系统设计南京航空航天大学研究生实验报告项目名称:ARM嵌入式系统设计与应用技术 设计专题: 综合实验三类:密码锁系统 班级/任课教师: xxxxxxx 小组成员(第六组)(1)姓名: 学号: 学科: 电话: Email: 签名: (2)姓名: 学号: 学科: 电话: Email: 签名: xxx年x月x日一、本实验主要内容利用FLASH,编写程序实现一个设置密码和解码的密码锁系统。要求如下:1、采用开发板上的按键和显示模块进行相关控制:1)Joystick键用来设置“09”。向上为增,向下为减,左右为调整输入对应的位。2)输入数字过程中,用指示灯LED1-L

2、ED4表示输入状态指示灯,即上面的JOY_UP(LED1)、JOY_DOWN(LED2)、JOY_LEFT(LED3)、JOY_RIGHT(LED4)。每按一次上面的键,对应的LED就亮一次。3)按下Key键表示6位数字密码最终确认。2、设置密码步骤(设置密码需要输入两次)。1)在没有给FLASH设定密码前,系统处于待设定密码状态。液晶屏幕上默认显示如下:(居中显示,显示内容也必须一致)Keywords:0-0-0-0-0-0Please Set Keywords2)用Joystick键按照第1点的方式设置密码。将初始密码设置为:1-2-3-4-5-6。3)当上面6位密码输入完之后,按下Key

3、键表示确认密码设置完成,此时将设定的密码写入FLASH存储器(M25PE80),写入确认成功后(读回写入的数据并比较即为检查成功),清屏,并显示:Keywords DonePlease Set Keywords againKeywords:0-0-0-0-0-0根据提示再次输入6位密码。按Key再次确认输入后,系统将本次输入的密码与FLASH中第一次设置的密码进行比较,不相同表示密码设置失败,相同则表示密码设定成功。密码设定失败后,复位后液晶显示:The Keywords set unsuccessfulPlease Set Keywords:0-0-0-0-0-0设定密码成功后,注意这边一定

4、要是复位后液晶显示:The Keywords has setPlease Enter the Keywords:0-0-0-0-0-0 此时进入解码状态。3、密码锁解码步骤(解码仅需输入一次密码):1)6位密码输入过程与“设置密码”相同。2)输入6位解码密码后,按Key确认。此时,系统将读取FLASH中6位数据进行匹配。如果数据匹配,那么解码成功,此时液晶屏幕以500毫秒闪烁4次,并显示: You Success!如果数据不匹配,则解码失败,液晶显示: You Wrong! Please Enter the Keywords:0-0-0-0-0-0在液晶屏合适的位置显示组名、姓名、学号、开发日

5、期等信息。可利用STM32开发板的资源扩展其他自定义功能。二、硬件框图1、LED与GPIO硬件连接图Key 按键GPIO引脚连接图2、Joystick键硬件连接图3、SPI Flash4、LCD三、程序流程图主程序流程框图(无子程序流程框图)四、调试和结果分析1、软件的调试在此次实验过程中,遇到了许多问题:(1)调用库函数的时候该添加哪些文件?怎么设置软件查找文件的路径等。通过查询新建工程模板上详细的解释得以解决。但是程序中存在的库函数的.h文件重定义问题,依然没有解决。(2)实验中LCD上的字符的显示和数字的显示问题?我采用了分别定义数组,分别用不同的函数来显示,至于字符和数字之间的距离,是

6、通过不断的调试最终得出合适的值。(3)如何用JOYSTICK摇杆键来实现对LCD上数字的加减和移位操作?我采用调用库函数uint8_t Key_Scan(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);然后判断按个按键按下,执行程序中运用数组的操作。比如向上拨动JOYSTICK键:if (Key_Scan(GPIOG, GPIO_Pin_15) = KEY_ON) STM_EVAL_LEDOn(LED1); delay_ms(20); STM_EVAL_LEDOff(LED1); if(codei9) codei=codei+1; else codei=9; POINT_

7、COLOR=RED; LCD_ShowNum(148+(2*i-1)*8,90,codei,1,16); (4)在此次实验中最大的难点是Key键作为输入密码的确认键用的很频繁,而且每次按下Key键需要执行的程序不一样?我采用标志位的方法实现每次Key按键按下的时候执行不同的程序。2、实验结果(1)设定密码成功( “ ”表示按下Key键 ) (2)设定密码不成功(第一次输入:1-2-3-4-5-6,第二次输入:1-1-1-2-2-2) (3)解码成功(设定密码为1-2-3-4-5-6) (3)解码不成功(输入密码为1-2-2-1-3-3,再次输入1-2-3-4-5-6,解码成功) 五、源程序清单

8、#include include.h#include stm32f10x.h#include stm32_eval.h#define KEY_ON 0#define KEY_OFF 1unsigned char Keywords1 = Passwords: - - - - - ;Unsigned char Keywords2 = Please Set Passwords;unsigned char Keywords3 = Passwords Done;unsigned char Keywords4 = Please Set Passwords again;unsigned char Keywo

9、rds5 = The Passwords has set;unsigned char Keywords6 = Please Enter the Passwords;unsigned char Keywords7 = The Passwords set unsuccessful;unsigned char Keywords8 = You Success!;unsigned char Keywords9 = You Wrong!;unsigned char Keywords10 = Zhou Diqi;unsigned char Keywords11 = SX1505073/Group 6;uns

10、igned char Keywords12 = May 9th,2016;unsigned int code6=0,0,0,0,0,0;unsigned int GetCode6;void Key_GPIO_Config(void);uint8_t Key_Scan(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);int main(void) unsigned int sectorCnt; static unsigned int i,k,m,n,cmt,cnt,flag=0; SystemInit(); delay_init(); uart_init(9600); STM

11、_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); Key_GPIO_Config(); NVIC_Configuration(); LCD_Init(); SPI_FLASH_Init(); sectorCnt=sizeof(code)/SPI_FLASH_SectorSize; if(sizeof(code)%SPI_FLASH_SectorSize != 0) sectorCnt+; for(n=0; nsectorCnt;n+) SPI_FLASH_Se

12、ctorErase(i*SPI_FLASH_SectorSize); POINT_COLOR=BLUE; LCD_ShowString(60,70,Keywords2); LCD_ShowString(60,90,Keywords1); LCD_ShowString(160,160,Keywords10); LCD_ShowString(130,180,Keywords11); LCD_ShowString(140,200,Keywords12); for(k=0;k6;k+) codek=0;for(m=0;m6;m+) POINT_COLOR=RED;LCD_ShowNum(148+(2*

13、m-1)*8,90,codem,1,16); while(1) if(Key_Scan(GPIOG, GPIO_Pin_13) = KEY_ON) STM_EVAL_LEDOn(LED4); delay_ms(20); STM_EVAL_LEDOff(LED4); if(i0) i-; else i=0; if(Key_Scan(GPIOD, GPIO_Pin_3) = KEY_ON) STM_EVAL_LEDOn(LED2); delay_ms(20); STM_EVAL_LEDOff(LED2); if(codei0) codei=codei-1; else codei=0; POINT_

14、COLOR=RED;LCD_ShowNum(148+(2*i-1)*8,90,codei,1,16); if(Key_Scan(GPIOG, GPIO_Pin_15) = KEY_ON) /JOY_UP is pushed STM_EVAL_LEDOn(LED1); delay_ms(20); STM_EVAL_LEDOff(LED1); if(codei9) codei=codei+1; else codei=9; POINT_COLOR=RED; LCD_ShowNum(148+(2*i-1)*8,90,codei,1,16); if(Key_Scan(GPIOG, GPIO_Pin_8)

15、 = KEY_ON) /Key is pushed cnt+; flag+; if(flag = 1) SPI_FLASH_BufferWrite(u8*)code, 0, sizeof(code); LCD_Clear(WHITE); POINT_COLOR=BLUE; LCD_ShowString(60,70,Keywords3); LCD_ShowString(60,90,Keywords1); LCD_ShowString(40,110,Keywords4); LCD_ShowString(160,160,Keywords10); LCD_ShowString(130,180,Keyw

16、ords11); LCD_ShowString(140,200,Keywords12); POINT_COLOR=RED; for(k=0;k6;k+) codek=0; for(m=0;m6;m+) POINT_COLOR=RED; LCD_ShowNum(148+(2*m-1)*8,90,codem,1,16); i=0; flag=2; if(cnt = 2) i=0; SPI_FLASH_BufferRead(u8*)GetCode, 0, sizeof(code); for(k=0;k6;k+) if(codek=GetCodek) cmt+; if(cmt=6) LCD_Clear

17、(WHITE); POINT_COLOR=BLUE; LCD_ShowString(60,50,Keywords5); LCD_ShowString(60,70,Keywords6); LCD_ShowString(60,90,Keywords1); LCD_ShowString(160,160,Keywords10); LCD_ShowString(130,180,Keywords11); LCD_ShowString(140,200,Keywords12); for(k=0;k6;k+) codek=0; for(m=0;m6;m+) POINT_COLOR=RED; LCD_ShowNu

18、m(148+(2*m-1)*8,90,codem,1,16); cnt = 3; cmt = 0; else cnt = 0; cmt = 0; flag = 0; LCD_Clear(WHITE); POINT_COLOR=BLUE; LCD_ShowString(40,50,Keywords7); LCD_ShowString(60,70,Keywords2); LCD_ShowString(60,90,Keywords1); LCD_ShowString(160,160,Keywords10); LCD_ShowString(130,180,Keywords11); LCD_ShowSt

19、ring(140,200,Keywords12); for(k=0;k6;k+) codek=0; for(m=0;m=4&cnt=9) SPI_FLASH_BufferRead(u8*)GetCode, 0, sizeof(code); for(k=0;k6;k+) if(codek=GetCodek) cmt+; if(cmt=6) for(i=0;i4;i+) LCD_Clear(WHITE); delay_ms(250); POINT_COLOR=BLUE; LCD_ShowString(100,90,Keywords8); LCD_ShowString(160,160,Keyword

20、s10); LCD_ShowString(130,180,Keywords11); LCD_ShowString(140,200,Keywords12); delay_ms(250); POINT_COLOR=BLUE; LCD_ShowString(100,90,Keywords8); LCD_ShowString(160,160,Keywords10); LCD_ShowString(130,180,Keywords11); LCD_ShowString(140,200,Keywords12); cnt=10; cmt=0; else LCD_Clear(WHITE); POINT_COL

21、OR=BLUE; LCD_ShowString(100,50,Keywords9); LCD_ShowString(60,70,Keywords2); LCD_ShowString(60,90,Keywords1); LCD_ShowString(160,160,Keywords10); LCD_ShowString(130,180,Keywords11); LCD_ShowString(140,200,Keywords12); i = 0; for(k=0;k6;k+) codek=0; for(m=0;m6;m+) POINT_COLOR=RED; LCD_ShowNum(148+(2*m-1)*8,90,codem,1,16); cnt =3; cmt=0; 六、实验分工和安排自己编写七、对本实验课程的感想和建议自己编写

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1