




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1和匕样东北大学信息学院2010级嵌入式课程设计东北大学信息学院2010级电子信息工程专业嵌入式系统课程设计报告姓名:马然江艾合买提学号:20113079班级:电子1101电话mail: 3947250782013年7月8日摘要嵌入式系统应用广泛,涉及通信、网络消费电子产品、医疗仪器、汽车电子、 工业控制、仪器仪表、航天军事等各个行业和领域。目前全球嵌入式芯片的年出 货量达到了 60亿。嵌入式系统在应用数量上已经远远超过了各种通用计算机。 可以说嵌入式产品“无处不在”。本次课程设计,使用基于ARM7TDMI核的华邦 W90P71处理器,它提供了 4K的指令缓存和4K的
2、数据缓存,并具有强大的外 设资源,同时具有一个 AC97E制器,一个双向通道GDMA一个LCD空制器,两 个24位定时器,它的外部总线接口控制器支持 SDRAMROM/SRAMFLASH#储器 和I/O设备的方便接入,还具有串行通信和以太网接口,以适应通信网关和其他 的应用场合。在人们对个人隐私等权益愈发注重的今天,个人信息及所有物的安全性不容 忽视。题本次课程设计的题目一一基于华邦 W90P71处理器的电子密码锁设计 就是基于这一现状给出的具有使用性的设计。实现了密码设定、三次密码输入、 显示电子相册及播放音乐的功能。关键字:华邦 W90P71微处理器、电子密码锁、嵌入式系统东北大学信息学院
3、2010级嵌入式课程设计目录一、题目设计意义及特点1.1 设计意义及特点1.2 系统的主要功能二、系统功能设计.3.4.4.4.5.2.1 硬件设计及描述 5.2.1.1 系统功能模块整体5.2.1.2 各模块作用及硬件连接图 52.2 软件设计及描述8.2.2.1 程序流程框图8.2.2.2 源程序代码 9.却匕样东北大学信息学院2010级嵌入式课程设计一、题目设计意义及特点1.1 设计意义及特点(1)设计意义如今个人物品等问题开始暴露,传统的密码锁容易损坏、丢失,实用性、安 全性很低,而电子密码锁因其绝对的精度使信息及物品的保密称为可能。此次题目具有很强的实际意义。另外,在老师对程序例子的
4、讲解及自己的理解之后, 通过查阅资料在原有程 序上进行改写、融合和添加,设计出了电子密码锁,提高了自己的程序阅读能力, 并了解了嵌入式系统的开发流程,应用软件的使用方法。增强了自主学习能力, 能与课本知识相融合,更加灵活的使用 AR般成语言。(2)特点电子密码锁与电子相册、音乐播放相结合,在登录成功后播放相册及音乐; 具有密码设定及三次输入机会。1.2 系统的主要功能(1)设置密码:LCD 显示“请输入密码”,从键盘输入任意6位数字作为密码存入寄存 器,设置成功。(2)通过密码登陆系统:LCD显示“请输入密码”从键盘输入密码,比较键盘输入的密码与Flash 中是否相,每次按键则相应LED灯点亮
5、;如果密码正确,则LEW全亮,LCD显示“密码正确”,并且开始切换 图片,播放电子相册,最后播放音频文件;如果第一次密码不正确,则 LED灯闪烁,LCD显示“密码不正确,请 重新输入”;如果第二次密码不正确,则 LED灯闪烁,LCD显示“密码不正 确,您还有一次机会,请重新输入”;如果第三次密码不正确,则LED灯闪 烁,LCD显示“对不起,您已经连续三次输入密码错误,系统锁定”,锁定 系统,无法进行任何操作。(3)电子相册显示“密码正确”后,自动播放电子相册,多张图片顺序播放。并在播放完成后播放音乐二、系统功能设计2.1 硬件设计及描述2.1.1 系统功能模块整体2.1.2 各模块作用及硬件连
6、接图(1)华邦嵌入式处理器芯片 W90P710W90P710为此次课程设计的中心和运行平台。它是基于ARM7TDMI内核的处理器,提供了 4K的指令缓存和4K的数 据缓存,并具有强大的外设资源,包括一个USB1.1主控制器,一个SD/SDIO主 控制器,4个独立的UART接口,一个看门狗定时器,71个可编程I/O 口,PS/2 键盘控制器和高级中断控制器 AIC,同时具有一个AC97控制器,一个双向通道 GDMA, 一个LCD控制器,两个24位定时器,它的外部总线接口控制器支持 SDRAM、ROM/SRAM、FLASH存储器和I/O设备的方便接入,还具有串行通 信和以太网接口,以适应通信网关和
7、其他的应用场合。东北大学信息学院2010级嵌入式课程设计ECSOW90P710Gpio30:41Core Module(2) LCD显示模块90P710试验板,使用的是 AUO 3.0 TFT A030DL01 (960x240, 8 位数据总线)数字式TFT液晶屏,可以将video/OSD的原始图像数据显示到外部显示 设备。TFT液晶屏的显示是对屏上每个像素点进行操作,通过向这些像素点配置 不同的值,以显示不同的颜色,由于其内部没有缓存,所要显示的数据要随着时 钟脉冲一点一点的传送过来。因此,它需要在中开辟出一片缓冲区,将要显示的 数据先存放到的缓冲区中,即存在 SDRAMfr, 一般按照一
8、维数组的形式进行存 储,然后把存储数据的SDRAM勺地址送给FIFO,然后送给颜色生成器,进而实 现在屏幕上的显示;如果在屏上的定位显示,算出所要显示的内容在屏幕上的位 置,然后在相应的SDRAMfi地址内存入要显示的数据即可。,匕六-P1QMsmur -: i:*二口一二二- -11It:*一二:1: CT.4LO 1 CT TTA3U3J: I+3.3V 1A-TClS上LCD BACKLIGHTK=:L- “ 1k 7: .T-4C 1:1 .:二Vfosi一:三二:三 一-,:CWItf ICV(3)4-.P|MEftLICMIH CimG二 c-IDMC5N 二HQFICCFK!Z3
9、”皿一HDP 皿13尸1J3OF ICC3-5*1 Efl0E2OIE J-MHma131二IM 二1G,口H1B|E M一F6W|E5|iR口MD键盘输入模块ROJC:FIO.二 Di.FIO1Z中-VW 域贝_CWii E:FIC3上 4sIBYihCiRICHn91 -c、.PIC :K;PI3J. w-1*S=-i 1 J不GPKil11r11r1r ,上 二八jB.- LO4 口i加 pkhi,1 J、IgTRF4 WVIF4H 21roa*.h ci J 4-.W1hZWVXwon J51 口 4.MXhia ca 4.W1W-feF-WUEX通过外部键盘输入及软件编程实现键盘对系
10、统的控制wmehWW.swu M.S.VEQ3R 0宣口PU 骂H.KFTRCIW1PUSH-KEYCOL3门口 LTPtJSHKE/PUSH-KEY-KF Ycol#ICIHVDD31BP10rnBPI 21 2ROW口PUU2KEY即ISi la HowlCPULULbmi niTUTT(4) LED模块U13GND1soon34SUD3 ?jUZDUGSTT7K17而IUM青巾如留mSD缢空露叩用gE百口口o2D RP1B省T12151号19TIRPI8D0-D7 LED DISPLAYVDD6P4R-221J6P4R-22*74F3732.2软件设计及描述2.2.1 程序流程框图主函数
11、中,函数调用了 KPI、第一次输入为设定密码,之后USI、LCD、AC-97、LED 初始化程序。13次为密码匹配,成功则播放相册及音乐,否则三次后锁定密码锁程序框图如下:2.2.2源程序代码一、主程序部分int main(void) int cnt,i;U8 wchar1=请输入密码;U8 wchar3=密码不正确,请重新输入;U8 wchar4=密码不正确,您还有一次机会,请重新输入II.U8 wchar5尸对不起,您已经连续三次输入密码错误,系统锁定/* U32 j;*/U8 LBuffer512=0;U32 ClearLoop;LCD_IMAGE_T LCD_Size;LCD_LOCA
12、TION_T LCD_Location;LCDShowParameter LSP;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();LCDShow(LCD_Size, LCD_Location);LCDFIFOBufferSet(shurumima);LCDDisplayOn();printf(printf(* USI* Flash测试程序 *n);
13、型号 W25P10*n);USIInit();读器件IDprintf(读器件 ID:);USIRead_ID();擦除扇区0printf(写使能:n);USIWriteEnable();while(USICheckBusy();USISectorErease(0x0);for(cnt=0;cnt5;cnt+)acnt =cnt;/发送数据初始化LSP.StartX = 12;LSP.StartY = 7;LSP.LibPlace = 0x400000;LSP.Color = 0x07ff;LSP.LetterChar = wchar1;/显示汉字请输入密码LSP.LCDBuffer = shu
14、rumima;/ 显示图片和5堂东北大学信息学院2010级嵌入式课程设计LCDOutputShow(LSP,5);Delay(10000000);KPIInit(); 键盘初始化EBILedInit(0x00);printf(Please press keys.n);while(1)if(p=1)/输入密码正确EBILedInit(0xFF);输入密码正确,灯全亮LCDFIFOBufferSet(sky);LSP.LCDBuffer = sky;LCDDisplayOn();LetterConvert(mi, LBuffer);LetterShow(224, 52, LBuffer, sky)
15、;/X 、Y,shurumima=LBufferDelay(3000000);LetterConvert(ma, LBuffer);LetterShow(352, 52, LBuffer, sky);Delay(3000000);LetterConvert(zheng, LBuffer);LetterShow(480, 52, LBuffer, sky);Delay(3000000);LetterConvert(que, LBuffer);LetterShow(608, 52, LBuffer, sky);Delay(6000000);LCDFIFOBufferSet(yuansu);temp
16、 = (U32)yuansu;Delay(6000000);LCDFIFOBufferSet(yuanyuan);temp = (U32)yuanyuan;Delay(6000000);LCDFIFOBufferSet(shici);temp = (U32)shici;Delay(6000000);LCDFIFOBufferSet(xinshang);temp = (U32)xinshang;Delay(6000000);music();if(p=2)/第一次输入密码不正确,显示密码不正确,请重新输入LSP.StartX = 12;LSP.StartY = 7;LSP.LibPlace = 0
17、x400000;LSP.Color = 0x07ff;LSP.LetterChar = wchar3;LSP.LCDBuffer = shurumima;LCDOutputShow(LSP,11);EBILedInit(0xFF);/ 灯闪烁Delay(0x7270E0);EBILedInit(0x00);Delay(0x7270E0);if(p=3)/第二次输入密码不正确,显示密码不正确,您还有一次机会,请重新输入LSP.StartX = 6;LSP.StartY = 7;LSP.LibPlace = 0x400000;LSP.Color = 0x07ff;LSP.LetterChar =
18、wchar4;LSP.LCDBuffer = shurumima;LCDOutputShow(LSP,19);EBILedInit(0xFF);/ 灯闪烁Delay(0x7270E0);EBILedInit(0x00);Delay(0x7270E0);if(p=4)/第三次输入密码不正确,显示对不起,您已经连续三次输入密码错误,系统锁7ELSP.StartX = 5;LSP.StartY = 7;LSP.LibPlace = 0x400000;LSP.Color = 0x07ff;LSP.LetterChar = wchar5;LSP.LCDBuffer =shurumima;LCDOutpu
19、tShow(LSP,22);EBILedlnit(OxFF);Delay(0x7270E0);EBILedInit(0x00);Delay(0x7270E0);return 0;二、音乐播放程序部分/*延时函数*/static void Delay(int nCnt)volatile int loop;for (loop=0; loop= uDataLen)memcpy(pucBuff, &PlayData_uPcmQHead, uDataLen);_uPcmQHead = (_uPcmQHead + uDataLen) % PCM_QUEUE_LEN;elsememcpy(pucBuff,
20、&PlayData_uPcmQHead, nLen);memcpy(&pucBuffnLen, PlayData, uDataLen - nLen);_uPcmQHead = uDataLen - nLen;return 0;/*读AC97寄存器*/static UINT16 ac97_read_register(INT nIdx)UINT volatile nWait;/*置起R_WB位并写入寄存器地址*/REG_ACTL_ACOS1 = (0x80 | nIdx);/*设置帧是否有效和有效的时隙*/REG_ACTL_ACOS0 = 0x11;Delay(100);/*检查AC_ACTL_A
21、CCON 的AC_R_FINISH 位是否被置高,若被置高,说明读数据 缓存区已经准备好给 CPU读取*/for (nWait = 0; nWait 0x10000; nWait+)if (REG_ACTL_ACCON & AC_R_FINISH) break;REG_ACTL_ACOS0 = 0;Delay(100);return (REG_ACTL_ACIS2 & 0xFFFF);/*写AC97寄存器*/static INT ac97_write_register(INT nIdx, UINT16 sValue) volatile UINT nWait;/*清R_WB位并写入寄存器地址*/
22、REG_ACTL_ACOS1 = nIdx;/*写入AC97寄存器的值*/REG_ACTL_ACOS2 = sValue;/*设置帧的有效位和有效的时隙*/REG_ACTL_ACOS0 = 0x13;Delay(100);/*检查AC_ACTL_ACCON 的AC_W_FINISH 位,若被清零,说明AC-LINK控制数据 输出缓存已经被CPU移到编解码器*/for (nWait = 0; nWait 0x10000; nWait+)if (!(REG_ACTL_ACCON & AC_W_FINISH)break;/*若读回的值和写入的值相同,则说明写入成功*/if (ac97_read_re
23、gister(nIdx) != sValue) while(1)REG_ACTL_ACOS0 = 0; return 0;却匕样东北大学信息学院2010级嵌入式课程设计/*初始化AC97*/UINT8 Initac97()/*使能音频控制器和 AC-LINK接口*/REG_ACTL_CON = REG_ACTL_CON | IIS_AC_PIN_SEL | AUDIO_EN | ACLINK_EN | PFIFO_EN | RFIFO_EN | T_DMA_IRQ | R_DMA_IRQ | DMA_EN;Delay(IOOO);/*stereo 模式 */REG_ACTL_RESET = R
24、EG_ACTL_RESET | 0x3000;/*重启音频控制器 */REG_ACTL_RESET = REG_ACTL_RESET | ACTL_RESET_BIT;Delay(1000);REG_ACTL_RESET = REG_ACTL_RESET & ACTL_RESET_BIT;Delay(1000);/*重启AC97接口 */REG_ACTL_RESET = REG_ACTL_RESET | AC_RESET;Delay(1000);REG_ACTL_RESET = REG_ACTL_RESET & AC_RESET;Delay(1000);/*冷启动AC97 */REG_ACTL
25、_ACCON = REG_ACTL_ACCON | AC_C_RES;Delay(1000);REG_ACTL_ACCON = REG_ACTL_ACCON & AC_C_RES;Delay(1000);/*检查AC97的ACTL_ACIS0的CODEC_READY 位,若置起则说明 AC97准备好了 */if (!(REG_ACTL_ACIS0 & 0x10)while(1);Delay(100);/*选择麦克 1; 3D控制 关;looback关*/ac97_write_register(AC97_GENERAL_PURPOSE, 0);return 0;UINT8 StartPlay(I
26、NT nSamplingRate) /*使能VRA Vvariable rate audio)并设置播放采样率 */ac97_write_register(AC97_EXT_AUDIO_CTRL, ac97_read_register(AC97_EXT_AUDIO_CTRL)|0x1);ac97_write_register(AC97_FRONT_DAC_RATE, nSamplingRate);/*设置DMA基地址和目的地址长度 */REG_ACTL_PDSTB = base_addres; REG_ACTL_PDST_LENGTH = 0x1000;PlayLastBlock = 0;/*
27、开始播放*/REG_ACTL_ACOS0 = 0x1c; /设置数据传输时隙有效 REG_ACTL_PSR = 0x3;REG_ACTL_RESET = REG_ACTL_RESET | AC_PLAY;return 0;/*设置音量*/INT SetPlayVolume(UINT8 ucLeftV ol, UINT8 ucRightV ol) INT nLData, nRData;if (ucLeftVol = 0) nLData = 0x80;elsenLData = 31 - (ucLeftV ol & 0x1f);if (ucRightVol = 0) nRData = 0x80;el
28、senRData = 31 - (ucRightV ol & 0x1f);sPlayVolume = (nLData 8) | nRData;if (ucLeftVol = 0) nLData = 0x80;elsenLData = 62 - ucLeftV ol*2;if (ucRightVol = 0)却匕样东北大学信息学院2010级嵌入式课程设计nRData = 0x80;elsenRData = 62 - ucRightV ol*2;_uPlayVol = (nLData = (PCM_QUEUE_LEN-4096) break;StopPlay();、键盘及验证密码部分void KPI_Handler(void)/int i;U8 KeyValue, tmp;int cnt,sum=0;tmp = REG_KPISTA TUS; / 取按键值tmp &= 0x0000000f; 因为硬件连接关系,需要对按键进行处理 if(tmp 0x7) & (tmp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年高考语文二轮复习专题2小说阅读突破练9复合文本阅读的考查方式
- 中国人的健康现状
- 绿茶冲泡技术课件
- 井下透水安全培训
- 重症监护室术后健康宣教指南
- 关于超额预定的培训方案
- 【课件】+声音的产生与传播(教学课件)2024-2025学年初中物理人教版(2024)八年级上册+
- 珠宝门店黄金培训
- 学校领导安全培训
- 2025年深远海风电场建设规划与海上风能资源评估报告
- 《中医推拿按摩教程》课件
- 数字化赋能城乡融合发展
- 心脏骤停病人的抢救与护理
- 小红书种草营销师(初级)认证考试真题试题库(含答案)
- 汽车行业智能汽车维修与保养方案
- 安全防汛培训课件
- 医药运输配送员培训
- 战略合作框架协议
- 药品经营使用和质量监督管理办法2024年宣贯培训课件
- DB11T 1445-2017 民用建筑工程室内环境污染控制规程
- 35kV线路工程电杆组立施工方案
评论
0/150
提交评论