东北大学嵌入式课程设计报告.doc

上传人:jian****018 文档编号:9342032 上传时间:2020-04-04 格式:DOC 页数:22 大小:727KB
返回 下载 相关 举报
东北大学嵌入式课程设计报告.doc_第1页
第1页 / 共22页
东北大学嵌入式课程设计报告.doc_第2页
第2页 / 共22页
东北大学嵌入式课程设计报告.doc_第3页
第3页 / 共22页
点击查看更多>>
资源描述
嵌入式系统课程设计报告姓名:张阳学号:20082723班级:电子0803 摘要 嵌入式系统应用广泛,涉及通信、网络消费电子产品、医疗仪器、汽车电子、工业控制、仪器仪表、航天军事等各个行业和领域。通信领域大量使用嵌入式系统,主要包括程控交换机,路由器,IP交换机,传输设备等。在消费电子产品领域,随着技术的发展,消费电子产品正向数字化和网络化方向发展。在医疗仪器,汽车电子,工业控制,仪器仪表等领域,随着医疗卫生,汽车,工业等各部门对智能控制需求的不断增长,需要对设备进行智能化,数字化改造,位嵌入式系统提供了很大的市场。就汽车电子系统而言,目前的大多数高档轿车每两拥有约50个嵌入式微处理器。嵌入式系统在应用数量上已经远远超过了各种通用计算机。可以说嵌入式产品“无处不在”。本次课程设计,使用基于华邦W90P710处理器的实验教学系统设计了一个电子密码锁。关键字:华邦W90P710微处理器、UART、USI、FLASH、LCD,键盘 目 录1.绪论4 1.1 课程设计的目的4 1.2 课程设计的要求4 1.3 课程设计的任务4 1.4 课程设计的意义42.应用试验箱开发电子密码锁系统 5 2.1 电子密码锁系统概述5 2.2 题目意义5 2.2.1 系统的主要功能5 2.2.2 密码锁系统功能框图7 2.2.3 LCD液晶显示模块7 2.3 软件设计流程及主要函数描述 8 2.3.1 程序流程图8 2.3.2 主要函数113.程序设计中遇见的问题及解决的方法124.课程设计体会125.参考文献131. 绪论1.1 课程设计目的(1)通过设计加深对书本知识的理解;(2)增强实践动手能力;(3)培养综合设计能力。1.2 课程设计要求(1)根据教师布置的题目自行选题;(2)根据实验板提供的功能,自行设计功能模块,画出硬件原理图;(3)画出软件流程图;(4)采用C语言进行编程;(5)编写完整的软件程序;(6)调试、修改、完善;(7)写出课程设计报告。1.3 课程设计任务用华邦W90P710开发板实现电子密码锁。要求:1、设置密码:从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到Flash芯片中,设置密码完成。2、通过密码登陆系统:(1)、从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。(2)、如果密码正确,则LED灯点亮;如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。1.4 课程设计的意义本次实训,在实验指导书中已经给出一些实例程序,其中包括已有实验程序:(1)启动代码程序;(2)流水灯程序;(3)键盘程序;(4)外部中断程序;(5)定时计数器程序;(6)串口通信程序;(7)实时时钟程序;(8)USI程序;(9)LCD显示程序; 通过对已有程序的理解,之后进行修改拼凑,在由华邦W90P710为核心器件的硬件系统上实现了具有一定功能的系统。通过设计,熟悉了ARM 开发系统,及开发流程,并深入了解了嵌入式系统的实际应用,能更深地理解课堂上所学的内容,使得单调的理论知识与实际联系起来,帮助我们更好的理解。2. 应用实验箱开发电子密码锁系统2.1 电子密码锁系统概述2.2 题目意义生活中,安全一直都是人们关心的话题。随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。本次课程设计,我实现一款电子密码锁,既简单又适用。2.2.1 系统的主要功能本系统的基本功能就是密码锁,如果用户是第一次使用则提示其先设定密码,要求输入两次以确认。成功设定密码后将密码通过USI写到FLASH中保存,并写入密码已设定的标志。如果用户不是是第一次使用则提示其输入密码,系统将比对设定好的密码及用户输入的密码,如果密码正确,则屏幕显示“密码正确”;若不正确则提示错误,同时LED闪烁,若连续三次错误,系统就自动锁定。2.1.3 创新特点本设计添加了退格键,以便用户输入错误密码时可以退格清除。在设定密码阶段加上了重输密码以确认的功能,防止用户不小心设定了错误的密码。界面和操作更友好,更人性化。2.2 硬件电路设计及描述2.2.1实验箱硬件电路及原理框图2.2.2 密码锁系统功能框图嵌入式处理器华邦W90P710键盘输入LCD液晶显示器LED错误提示KPI接口系统各个功能模块的概述: 1) 嵌入式处理器模块: 此模块为本系统的重心,是程序运行的载体,同时这个模块也是我们这次课程设计的运行平台,我们所做的便是通过编写程序应用其自身的外设和资源。2) 按键输入模块: 通过键盘调实现密码输入。3) LCD模块:密码锁界面显示。2.2.3 LCD液晶显示模块LCD控制器的主要目的是用于将video/OSD的原始图像数据显示到外部显示设备。它支持一般的小包RGB和小包YUV格式的原始数据,并且能够连接到一般的TFT LCD, STN LCD和电视编码器。可以支持LG的 TFT屏,CASIO的TFT屏,以及STN LCD,支持VIDEO和OSD 模式,这两种模式的设定有不同的寄存器控制,通过设定寄存器的设置可以实现不同的模式及功能。W90P710试验板,使用的是AUO 3.0 TFT A030DL01(960x240, 8 位数据总线) 数字式TFT 液晶屏,可以将video/OSD的原始图像数据显示到外部显示设备。TFT液晶屏的显示是对屏上每个像素点进行操作,通过向这些像素点配置不同的值,以显示不同的颜色,由于其内部没有缓存,所要显示的数据要随着时钟脉冲一点一点的传送过来。因此,它需要在中开辟出一片缓冲区,将要显示的数据先存放到的缓冲区中,即存在SDRAM 中,一般按照一维数组的形式进行存储,然后把存储数据的SDRAM的地址送给FIFO,然后送给颜色生成器,进而实现在屏幕上的显示;如果在屏上的定位显示,算出所要显示的内容在屏幕上的位置,然后在相应的SDRAM的地址内存入要显示的数据即可。硬件图如下:该模块由40个引脚与外界电路相连,由于本身没有寄存器,需要由W90P710提供的LCD控制寄存器来控制选择对应的液晶类型及显示形式,FIFO的使用、颜色的显示模式和时序的设置,并通过配置相应的的寄存器即可实现。模块可以选择并行或串行方式与微控制器相连,通过配置寄存器、送入指令和数据,可对显示方式和显示内容作出选择。2.3 软件设计流程及主要函数描述2.3.1 程序流程图主函数流程图:调用设定密码函数LCD、LED、USI、键盘等初始化从FLASH中读取密码设定标志开始是否已设定密码调用输入密码函数是否结束LED工作流程正确LED亮LED初始化从FLASH中读取密码设定标志开始是否误操作系统锁定是否结束LED工作的代码: for(i=0;i5;i+) EBILedSet(0xF0); Delay(1000000); EBILedSet(0x0f); Delay(1000000); if(+ti=3) for(i=0;i10;i+) EBILedSet(0xFF); Delay(1000000) EBILedSet(0x81); Delay(1000000); 2.3.2 主要函数int main(void) LCD_IMAGE_T LCD_Size; LCD_LOCATION_T LCD_Location; LCD_Size.width = 480; LCD_Size.height = 240; LCD_Location.StartX = 0; LCD_Location.StartY = 0; LCD_Location.EndX = 960; LCD_Location.EndY = 240;LCDInit(); /LCD初始化 LCDShow(LCD_Size, LCD_Location); LCDFIFOBufferSet(gImage_login); /装入背景图片 LCDDisplayOn(); /开显示 KPIInit(); /键盘初始化 EBILedInit(); /LED初始化USIInit(); /USI初始化/USIRead_ID();USIRead(0x0,2,pswSign); /从FLASH中读取0x0开始的/两个“已设定密码”标志if(pswSign0=0x00& pswSign1=0x01) setFlg=1;/如果两位分别是0x20,0x09则表示已经设定好密码,置setFlg为1if(!setFlg) setPsw(); /如果未设定密码,则先调用设定密码函数USIRead(0x10,6,psw2); /从FLASH中读取6位密码inpPsw(); /调用输入密码函数 return 0;3. 调试设计中遇见的问题及解决的方法 首先我实现了密码锁最基本的功能:设置密码,输入正确密码允许进入,输入错误密码禁止进入,三次错误后密码锁锁定,以及相应的屏幕文字显示和LED灯相应变化。接下来我打算扩展密码锁的功能:(1)当输入密码正确时显示图片。(2)操作密码锁是可以作为电子相册。 1)问题:把多个工程的相关文件组合成一个工程时出现编译错误。 解决方法:分析各变量、函数所依赖的头文件,把缺失的加入到工程,把相同的定义去除。 2)问题:LCD无法显示汉字和显示图片失真。 解决方法:在调试运行时把汉字字库文件加载到内存即可显示汉字。把图片转换成字模时色彩选择“真彩”,字模数组大小为960*240。4. 课程设计体会 在大学时候的第一次在书本之外,自己设计实现的小系统让我初步的了解嵌入式的前景。这次小系统设计让我体会了一种学习方式,那就是实践和书本上的理论很不同,却又紧密相关,激发了我积极参与到实践中的热情,收获了实践的经验。 5. 参考文献1张石,佘黎煌等.嵌入式系统技术教程.北京:人民邮电出版社,2009.32嵌入式实验指导书程序的主要代码:MAIN .Cint main(void) U8 np=0,ti=0,i;U8 pswSign2,setFlg=0,reFlg=0;U8 psw6,psw26;U8 ast=;U8 prmpt1= 请设定密码:;U8 prmpt2= 请重输确认:;U8 prmpt3= 两次密码不符!请重新输入:;U8 prmpt4= 密码设定成功!;U8 prmpt5= 请输入密码:;U8 prmpt6= 密码错误!请重新输入:;U8 prmpt7= 密码正确!;U8 prmpt8= 对不起,您已经连续三次输入密码错误,系统锁定!;LCD_IMAGE_T LCD_Size; LCD_LOCATION_T LCD_Location; LCDShowParameter LSP,LSP0,LSP1,LSP2,LSP3,LSP4,LSP5,LSP6,LSP7,LSP8 LCD_Size.width = 480; LCD_Size.height = 240; LCD_Location.StartX = 0; LCD_Location.StartY = 0; LCD_Location.EndX = 960; LCD_Location.EndY = 240; LSP.StartX = 12; LSP.StartY = 4; LSP.LibPlace = 0x400000; LSP.Color = 0x0; LSP.LetterChar = ast; LSP.LCDBuffer = BlackBoard; LSP0.StartX = 12; LSP0.StartY = 4; LSP0.LibPlace = 0x400000; LSP0.Color = 0x07ff; LSP0.LetterChar = ast; LSP0.LCDBuffer = BlackBoard; LSP1.StartX = 5; LSP1.StartY = 4; LSP1.LibPlace = 0x400000; LSP1.Color = 0x07ff; LSP1.LetterChar = prmpt1; LSP1.LCDBuffer = BlackBoard; LSP2.StartX = 5; LSP2.StartY = 6; LSP2.LibPlace = 0x400000; LSP2.Color = 0x07ff; LSP2.LetterChar = prmpt2; LSP2.LCDBuffer = BlackBoard; LSP3.StartX = 8; LSP3.StartY = 8; LSP3.LibPlace = 0x400000; LSP3.Color = 0x07ff; LSP3.LetterChar = prmpt3; LSP3.LCDBuffer = BlackBoard; LSP4.StartX = 8; LSP4.StartY = 8; LSP4.LibPlace = 0x400000; LSP4.Color = 0x07ff; LSP4.LetterChar = prmpt4; LSP4.LCDBuffer = BlackBoard; LSP5.StartX = 5; LSP5.StartY = 4; LSP5.LibPlace = 0x400000; LSP5.Color = 0x07ff; LSP5.LetterChar = prmpt5; LSP5.LCDBuffer = BlackBoard; LSP6.StartX = 8; LSP6.StartY = 8; LSP6.LibPlace = 0x400000; LSP6.Color = 0x07ff; LSP6.LetterChar = prmpt6; LSP6.LCDBuffer = BlackBoard; LSP7.StartX = 8; LSP7.StartY = 8; LSP7.LibPlace = 0x400000; LSP7.Color = 0x07ff; LSP7.LetterChar = prmpt7; LSP7.LCDBuffer = BlackBoard; LSP8.StartX = 4; LSP8.StartY = 8; LSP8.LibPlace = 0x400000; LSP8.Color = 0x07ff; LSP8.LetterChar = prmpt8; LSP8.LCDBuffer = BlackBoard;/*/USIInit();USIRead_ID();USIRead(0x0,2,pswSign);if(pswSign0=0x20 & pswSign1=0x07) setFlg=1;LCDInit(); LCDShow(LCD_Size, LCD_Location); LCDFIFOBufferSet(BlackBoard); LCDDisplayOn();KPIInit();EBILedInit();EBILedSet(0x00);if(!setFlg)LCDOutputShow(LSP1,6);LCDOutputShow(LSP2,6);while(!setFlg)if(keyFlg)keyFlg=0;if(keyValue=0x0e)if(np=6)if(reFlg)for(i=0;i6;i+)if(pswi!=psw2i) break;if(i0)np-;LSP0.StartX-;LSP.StartX=LSP0.StartX;LCDOutputShow(LSP,1);elseif(np=6) continue;if(reFlg) psw2np+=keyValue;else pswnp+=keyValue;LCDOutputShow(LSP0,1);LSP0.StartX +;USIRead(0x10,6,psw2);LSP.StartX = 8;LSP.StartY = 8;LCDOutputShow(LSP,14);LCDOutputShow(LSP5,6);np=0;LSP0.StartX = 12;LSP0.StartY = 4;LSP.StartY = 4;while(1)if(keyFlg)keyFlg=0;if(keyValue=0x0e)if(np=6)for(i=0;i6;i+)if(pswi!=psw2i) break;if(i6)LCDOutputShow(LSP6,11);np=0;LSP0.StartX = 12; LSP0.StartY = 4; LSP.StartX = 12; LSP.StartY = 4; LCDOutputShow(LSP,6); for(i=0;i5;i+) EBILedSet(0xF0); Delay(1000000); EBILedSet(0x0f); Delay(1000000); if(+ti=3) for(i=0;i10;i+) EBILedSet(0xFF); Delay(1000000); EBILedSet(0x81); Delay(1000000); LSP.StartX = 8;LSP.StartY = 8;LCDOutputShow(LSP,14);LCDOutputShow(LSP8,23);while(1)for(i=0;i0)np-;LSP0.StartX-;LSP.StartX=LSP0.StartX;LCDOutputShow(LSP,1);elseif(np=6) continue;pswnp+=keyValue;LCDOutputShow(LSP0,1);LSP0.StartX +;while(1) return 0;
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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