《嵌入式系统》课程设计报告论文题目:简易计算器设计学院(系):电子信息与自动化学院班级:113070303学生姓名:杨智学号:11307030316指导教师:杨泽林王先全冯济琴杨继森时间:从2016年6月20日到2016年7月8日评阅教师评语:课程设计成绩考勤成绩实做成绩报告成绩总评成绩指导教师签名:2目录前言................................................................3摘要................................................................3一、原理与总体方案..................................................4⒈总体方案......................................................4二、硬件设计........................................................5⒈元器件如表2.1:..............................................5⒉键盘接口电路..................................................53.各模块的介绍和功能............................................7三、调试............................................................9⒈GPIO特性.....................................................9⒉硬件和程序原理...............................................9四、测试与分析.....................................................10五、结束语.........................................................13附件:程序代码.....................................................133前言:近几年随着大规模集成电路的发展和应用,各种便携式嵌入式设备具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统作为装置或设备的一部分。通常嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上所有带有数字接口的设备如手表、微波炉、录像机、汽车等都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。在嵌入式系统中数据和命令通过网络接口或串行口经过ARM程序处理后或显示在LCD上或传输到远端PC上,本次课程设计是通国LPC2138芯片完成的简易计算器,正是对嵌入式应用的学习、思考和探索。【摘要】计算器一般是指“电子计算器”是能进行数学运算的手持机器拥有集成电路芯片。对于嵌入式系统以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先在KELL软件中进行相应程序的编写、运行,最后导入PROTUES进行仿真。最后利用ARM中的LPC2138芯片来控制液晶显示器和4X6矩阵式键盘从而实现简单的加、减、乘、除等四则运算功能。【关键字】中断扫描仿真计算显示4一、原理与总体方案⒈总体方案主程序在初始化后调用键盘程序再判断返回的值。若为数字0-9,则根据按键的次数进行保存和显示处理。若为功能键则先判断上次的功能键,根据代号执行不同功能并将按键次数清零。程序中键盘部分使用行列式扫描原理若无键按下则调用动态显示程序并继续检测键盘情况,若有键按下则得其键值并通过查表转换为数字0—9和功能键与清零键的代号最后将计算结果拆分成个、十、百位再返回主程序继续检测键盘并显示,若为清零键则返回主程序的最开始。电路设计与原理通过LPC2128芯片进行相应的设置来控制LCD显示器。而通过对键盘上的值进行扫描把相应的键值让ARM芯片接收。2.系统流程图:NY开始端口初始化引脚功能初始化向量中断初始化外部中断初始化LCD初始化时钟初始化中断定时初始按键扫描显示时间调用显示模式设置计算键值,调用参数设定子程序5二、硬件设计⒈元器件如表2.1:器件数量Lpc21381LCD16021KEYPAD1电缆线1USB电源线1电源若干导线若干表2.1元器件表⒉键盘接口电路计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式在这种情况下。,程会很简单,但是会占用大量的I/O口资源。因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。在本次课程设计中矩阵键盘采用四条I/O线作为行线,六条I/O线作为列线,组成键盘在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×6个。这种行列式键盘结构能有效地提高单片机系统中I/O的利用率。矩阵键盘的工作原理如图2.1:6图2.1矩阵键盘的工作原理计算器的键盘布局如图2.2,有24个键组成,在lpc2138芯片中,由于芯片某些引脚无输出,我们将键盘的4根行线和6根列线接入P12-P21口作为引键盘输入端口,而且这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。图2.2计算器的键盘布局显示模块:本设计采用LCD1液晶显示屏来显示输出数据。通过D0-D7引脚向LCD1写指令字或写数据以使LCD1实现不同的功能或显示相应数据。73.各模块的介绍和功能①Lpc2138特性和引脚功能:Philips公式的32位ARM7微控制器lpc2138具有强大的储存空间,内嵌有32KB片内静态ARM和512KB的Flash存储器,可以实现在系统可编程(ISP),在应用可编程(IAP);2个8路10位A/D转换器,1个D/A转换器,转换迅速准确;引脚资源丰富,多达47个可承受5V的通用I/O口;多个串行接口,包括2个16C550工业标准的UART,2个高速12C借口,SPI,以及具有缓冲作用和数据长度可变功能的SSP协议,lpc2138可以移植uC/COII操偶做系统,软件的可移植性好,工作可靠(如图2.3)。图2.3LPC2138仿真图管脚说明:V3、VBAT、VREP、供电电压Vss、VSSA:接地;8XTAL反向振荡放大器的输入及内部时钟工作电路的入;XTAL来自反向振荡器的输出;P1.12-P1.23作为GPIO接口;P1.16—P1.26作为LCD显示电路接口;②LCD的特性说明:LCD显示屏(图2.4)可以采用字符显示,当使用字符显示方式时可以直接用外码作为输入数据,由显示屏自动给出显示字模数据而无需由微处理器提供字模。图2.4LCD显示屏③键盘特性:数字式键盘(图2.5)的实质仍是行列式键盘,4根行线和6根列线通过下拉电阻接地,在其表面贴有标示对应按键的膜,使得易于观察和操作,更加贴近使用者的需求。图2.5数字式键盘本设计中选用LPC2138的P1.16—P1.26口与LCD显示屏相连,它们所输出信号控制显示屏上的显示,其中P1.16-P1.23分别接显示屏D0-D7,P1.24—9P1.26分别接显示屏的RS、RW、E接口;选用LPC2138的P0.12—P0.21口连续10个IO口计算器键盘相连,可通过按键检测到按下的按键,再通过查键盘对应的字符编码使LCD显示,其中P0.0—P0.3口依次接键盘的4根行线,P0.4—P0.9口依次接键盘的6根列线。④管脚说明:P0.0-P0.3口为行键扫描电平输出端,P0.4-P0.9口为列键输入读取端;三、调试⒈GPIO特性LPC2000系列ARM的GPIO具有如下特性:a、可以独立控制每个GPIO口的方向,输入/输出模式;b、可以独立设置每个GPIO的输出状态,高/低电平;c、所有GPIO口在复位后默认为输入状态。每个作为GPIO功能的引脚受到四个寄存器控制;分别为控制方向的IOxDIR、控制输出电平状态的IOxSET和IOxCLR、反映引脚电平状态的IOxPIN。这四个寄存器构成一组;而一组寄存器控制着一个端口,P0、P1、P2或P3。⒉硬件和程序原理在键盘按键后;产生一个中断;KEYSCAN对键盘进行扫描;确定按下的键;如果不是等号,就把按下的字符依次存入数组,并用LCD显示表达式,如果是等号,就计算出数组中存入的表达式的值,并显示在LCD中。计算表达式值的方法:把表达式中的表示数值的字符转成数值存入一个数值数组,把表达式中的表示运算符的字符存入运算符数组;关于四则运算优先级算法:依次检索运算符数组,当遇到*号或者/号的时候,就先计算乘法或除法,算出结果后存入数值数组相应位置,然后删除此运算符和多余的数值,再重复检索,直到数值数组中只有一个数值为止,这个数10值即是运算结果。调用stdio.h库里的sprintf函数,把数值转化成字符数组,然后显示到LCD中。在本次课程设计中,我们在简易就算器的基础上进行拓展,不仅具有加、减、乘、除功能,还具有开方,开根,求对数的功能,在于输入错误可以进行退格处理,结束运算后可以进行清零处理,不仅如此,还有时间显示的功能,并且可以通过按键调整时间。四、测试与分析⒈KEIL工程文件:见附件1;⒉Proteus实时仿真如图4.1;11图4.1Proteus实时仿真⒊Proteus实时仿真子功能如图4.2—4.7图4.2时钟显示图4.3对数运算图4.4加法图4.5减法图4.6乘法图4.7除法12图4.8平方图4.9开根⒋实物图图4.10图4.1013五、结束语对我们而言,知识上的收获重要,对ARM处理系统有了更深刻的认识。挫折是一份财富:经历是一份拥有。这次实习必将成为我人生旅途上一个非常美好的回忆通过这次课程设计使我懂得了理论与实际相结合是很重要的。只有理论知识是远远不够的:只有把所学的理论知识与实践相结合起来:从理论中得出结论:才能真正为社会服务:从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,例如无法下载程序时后来通过排查,发现芯片的某些I/O无效,通过修改程序,采用其他端口才得以解决,同时在设计的过程中发现了自己的不足之处:对以前所学过的知识理解得不够深刻:掌握得不够牢固。附件:程序代码/*************************************File:main.c*功能:计算器基本程序*************************************/#includeconfig.h#includestdlib.h#includestdio.h#includestring.h//memsethanshu#includemath.h14#defineLCD_RS(124)#defineLCD_RW(125)#defineLCD_E(126)#definenop(){__asm(nop);}//#definebusy(123)uint8txt0[]={Hello!};uint8time[2]={12,34};//时、分、秒计数voidtimeshow(void);voidtimer0_init(void);void__irqtimerInt(void);/************************************名称函数及变量声明*功能显示文本*********************************/voidport_init(void);voidcov(longintb,uint8*p);voidLCD_Cursor(charrow,charcolumn);voidShowInt(uint8addr,uint16num);voiddeal_date(void);voiddeal_ope(void);doublecalculate(void);doubl
本文标题:ARM课程设计报告
链接地址:https://www.777doc.com/doc-2898577 .html