4x4矩阵键盘计算器_第1页
4x4矩阵键盘计算器_第2页
4x4矩阵键盘计算器_第3页
4x4矩阵键盘计算器_第4页
4x4矩阵键盘计算器_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录目录 1 1 前言前言.1 1 1.1 设计背景.1 1.2 系统设计目的和意义.1 2 2 总体方案总体方案 .2 2 2.1 方案论证.2 2.3 最终方案 .3 3 3 单元模块设计单元模块设计.4 4 3.1 各单元模块功能介绍及电路设计.4 3.2 系统元器件选择.7 4 4 软件设计软件设计.8 8 4.1 系统程序流程.8 8 5 5 系统调试系统调试.1010 5.1 硬件调试 .10 5.2 软件调试 .10 5.3 软硬件调试 .10 7 7 总结总结 .1212 8 8 参考文献参考文献 .1313 附录附录 .1414 1 1 前言前言 1.11.1 设计背景设计背

2、景 计算器是一种在日常生活中应用广泛的电子产品,无论是在超市商店,还是在办 公室,或是家庭都有着它的身影。计算器随着供应量的增多、用户使用方便度日益更 新,从又大又重到又小又轻,从复杂的模拟电路到一块几厘米的单片机,计算器实现 的功能越来越多样化,从简单的加减乘除运算到乘方、开方运算,指数、对数、三角 函数、反三角函数的计算不断的变化着。现今,市面上已经出现了使用太阳能电池的 计算器,使用 asic 设计的计算器。如何使计算器变得越来越轻便化、智能化已经成为 电子领域研究的重要课题之一。 1.21.2 系统设计目的和意义系统设计目的和意义 本次实验的任务就是要以51系列单片机为核心实现一个4*

3、4矩阵式键盘计算器,满 足计算器的基本要求, 可以基本的运算(加减乘除),数据归零功能。采用at89c51单 片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语 言编程,通过软件编程可实现简单无符号加减乘除,。单片机将检测到的按键信号转换 成数字量,显示于led显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广 阔的开发前景。设计仿真和调试要用到protues 、keil等软件。 通过这次设计,进一步掌握单片机理论知识,知道 at89c51 单片机的原理、编程和 各种功能的应用,了解简易计算器的工作原理,初步掌握计算器的硬软件设计、编写、 调试和仿真,充分提高动手

4、能力和排除故障的能力。同时通过此次设计加深我们对单 片机的认识和兴趣,提高我们的动手能力。 2 2 总体方案总体方案 2.12.1 方案论证方案论证 本设计可以采用两种方案,一种是以 fpga 为核心处理芯片,配备相应的外设;另 外一种是以 at89s52 处理器,配备相应的外设。 2.1.12.1.1 方案一:采用方案一:采用 fpgafpga 控制控制 键盘模块存储模块 显示模块计算模块 图 2.1 基于 fpga 计算器框图 fpga 是一种高密度的可编程逻辑器件,自从 xilinx 公司 1985 年推出第一片 fpga 以来,fpga 的集成密度和性能提高很快,其集成密度最高达 50

5、0 万门/片以上,系统性能 可达 200mhz。由于 fpga 器件集成度高,方便易用,开发和上市周期短,在数字设计和电 子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。 2.1.22.1.2 方案二:采用方案二:采用 at89c51at89c51 时钟电路 单片机 at89c51 键盘电路复位电路 led 显示 图 2.2 基于 at89c51 的计算器原理框图 单片机是单片微型机的简称,故又称为微控制器 mcu(micro control unit) 。通 常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器 cpu,存 储器和 i/o 接口电路等

6、。因此,单片机只要和适当的软件及外部设备相结合,便可成 为一个单片机控制系统。 2.22.2 方案比较选择方案比较选择 两个方案都能实现本次设计的功能要求。但是方案一基于 sram 编程的 fpga,其编 程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差,而 其对于一个简单的计算器而言,实用 fpga 有点大材小用,成本太高。而方案二运用单 片机,单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单, 实用方便,价格便宜等优点而其中 at89c51,是单片机中典型的代表,应用于各种控制 领域。因此,通过以上两种方案论证和比较,从设计的实用性,方便性和

7、成本出发,选 择了以 at89c52 单片机作为中央处理单元进行计算器的设计,这样设计能够实现本次 设计的基本要求。 2.32.3 最终方案最终方案 经过仔细分析和论证,决定了系统各模块的最终方案如下: (1)控制模块:采用 at89c51 单片机; (2)液晶显示模块:lcd1602 液晶显示器; 方案原理图如图 2.2 所示,通过 at89c51 芯片 po 口与键盘相接,键盘中的键就是 一个行列开关,该开关位于行列的交点处,通过按下某个键,该交点的行线和列线联 通,相应的行列电平发生变化,从而可以确定按下的功能键。读取 p0 的值就可以确定 按键,再由 at89c51 芯片读取按键的值通

8、过 p1 口和 p2 口显示在 lcd12864 上。 3 3 单元模块设计单元模块设计 3.13.1 各单元模块功能介绍及电路设计各单元模块功能介绍及电路设计 3.1.13.1.1 主控制模块主控制模块 该模块以 at89c51 为控制核心, at89c51 单片机是在一块芯片中集成了 cpu、ram、rom、定时器/计数器和多功能 i/o 等一台计算机所需要的基本功能部件。 如果按功能划分,它由如下功能部件组成,即微处理器(cpu)、数据存储器(ram)、 程序存储器(rom/eprom)、并行 i/o 口、串行口、定时器/计数器、中断系统及特殊 功能寄存器(sfr)。单片机是靠程序运行的

9、,并且可以修改。通过不同的程序实现不 同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智 能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以 实现简单计算器运算功能。 at89c51是一种带4k字节flash存储器(fperomflash programmable and erasable read only memory)的低电压、高性能cmos 8位微处理器,俗称单片机。 at89c2051是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只 读存储器可以反复擦除1000次。该器件采用atmel高密度非易失存储器制造技术制造,

10、 与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪速存储器组 合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版 本。at89c51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及 引脚排列如图所示: 图 3.1 at89c51 外形及引脚图 3.1.23.1.2 时钟电路时钟电路 时钟电路由 at89c51 得 18、19 引脚的时钟端(xtal1 及 xtal 2)以及 12mhz 晶振、33pf 的电容 c1、c2 组成,采用片内振荡方式。其时间周期为 1/12us,机器周 期为 1s。单片机的外部晶

11、振电路如图 3 所示。at89c51 中有一个用于构成内部振荡器 的高增益反相放大器,引脚 xtal1 和 xtal2 分别是该放大器的输入端和输出端。这个 放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成振荡器。振荡器特性: xtal1 和 xtal2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。 石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,xtal2 应不接。有余输入 至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求, 但必须保证脉冲的高低电平。 3.2 时钟电路图 3.2.33.2.3 复位电路复位电路 用上位电路,由 100

12、电阻及 1uf 电容接至 at89c51 的 rst 复位端电阻给电容充电, 电容的电压缓慢上升直到 vcc,没到 vcc 时芯片复位脚近似低电平,于是芯片复位,接 近 vcc 时芯片复位脚近高电平,于是芯片停止复位,复位完成。按键后电容器被短路 放电、rst 直接和 vcc 相连,就是高电平,此时进入“复位状态” 。松手后电源开始对 电容器充电,此时,充电电流在电阻上,形成高电平送到 rst,仍然是“复位状态” , 稍后,充电结束,电流降为 0,电阻上的电压也将为 0,rst 降为低电平,开始正常工 作。 3.3 复位电路图 3.3.43.3.4 键盘电路键盘电路 键盘电路的设计原理:首先行

13、列式键盘中的键实际上就是一个机械开关,该开关位 于行线和列线的交点处,通过按键加以连接。当按下某个键时,该交点的行线和列线 接通,相应行线或列线上的的电平发生变化,从而可以确定被按下的功能键其次运用 线翻转法判断有无键按下: 键盘的高 4 位用于列控制,低 4 位用于行控制,并将全部 行线 y0y3 置低电平,然后再检查列线电平的状态。只要其中有一列电平为低,则表 示右键按下,并且被按下的键位于低电平和 4 根行线交叉的某一个按键中。 图 3.4 键盘电路图 3.23.2 系统元器件选择系统元器件选择 主要用到的硬件:单片机 stc89c52 、液晶显示屏 lcd1602 、4*4 按键键盘

14、硬件分配: 1、p3 口:作为输入口,与键盘连接,实现数据的输入; 2、p0、p2 口:作为输出口(p2 口为高位,p0 口为低位) ,控制 lcd 液晶显示屏显示数 据的结果; 3、液晶显示屏 lcd1602 显示输出。 4 4 软件设计软件设计 在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。设 计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各 模块可以单独设计、编程和调试,然后组合起来。这种方法便于设计和调试,容易实 现多个程序共存,但各个模块之间的连接有一定的难度。 4.14.1 系统程序流程系统程序流程 根据需要我们可以采用自上而下的程序

15、设计方法,此方法先从主程序开始设计, 然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。 这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。 程序流程图如下: 读取键码 lcd 显示 数字键清零键功能键 状态清零输入数值 数值送显示缓冲 y n 等待数值输入 结果送显示缓冲 根据上次功能键和输入的数据计算 结果 本次功能键? 等待数值输入 结果送显示缓冲 等待数值输入 结果送显示缓冲 开始 初始化 是否有键输 入? 图 4.1 程序流程图 如上图所示:初始化后,程序开始进入主程序,1、进行按键判断,如果有键按 下,继续往下执行,否则重新扫描;2

16、、如果有键按下,读取按键键码,判断按键是数 字键、清零键还是功能键 3、如果是数字键则送到缓冲区,如果是清零键则状态清零, 如果是功能键则再次进行判断是什么功能键 4、判断功能键之后,等待数值输入,再根 据上次输入计算结果; 5、把处理的数据,放到 led 数码管中动态显示。实现简单的 四则运算。 5 5 系统调试系统调试 单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。一般 方法是排除明显的硬件故障,在进行综合调试,排除可能的软(硬)件故障。 5.15.1 硬件调试硬件调试 硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一 般不会出现什么问题的。 静态

17、调试一般采用的工具是万用表,它是用户系统未工作 时的一种硬件检测。 动态调试是在用户系统工作的情况下发现和排查错误的一种硬件 检测。调试步骤为:首先把电路分为若干模块,调试过程中与该模块无关的元件可以 不加考虑,这样可把故障限定在一定的范围内,故障清除后,把各个模块合在一起进 行联调,即可完成整个硬件调试工作。 5.25.2 软件调试软件调试 软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑 错误并加以排除纠正的过程。 调试过程: 1、代码录入完成进行调试。 2、在 keil uvision3 中检测查找错误。 3、检测过程中总是有一处错误无法解决。 4、最后把原程序分开

18、逐个调试,检查每段程序的错误,修正每个代码错误。 5、这种分开调试方法的效率还是很不错的,经过几次修改就完成了程序的调试, 运行结果没有错误,电路显示也完全正确。 5.35.3 软硬件调试软硬件调试 软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检 查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。 若有错误,通过改写软件来调试,直至达到预期效果。 6 6 结论结论 基于单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了两周时间的 摸索与设计,我们不仅仅对于单片机软件与硬件的常用设计与功能有所认识,如 at89c51 单片机包含中央处理器、程序

19、存储器、数据存储器、定时/计数 器、并行接口、 串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线, 。键盘 控制程序需完成的任务有:检查是否有按键按下,有键按下时,如无硬件去抖动电路时, 应用软件延时方法消除按键抖动;当有多个按键按下时,只响应一个按键,不管持续多 长时间,仅执行一次按键功能程序。还使我对于一项设计研究的制作过程所需要的详 细步骤和具体实现方法有了进一步的掌握。 由于我们的初步尝试,当中的缺点是无可非议地存在着。当我们焊接好后进行 实物仿真出现了一系列问题,如显示屏显示不明显,不能正常清零等。经过一系列调 试终于能正确运行。通过调试,本次设计能实现的功能有:

20、简单的加减乘除运算,以 及计算器的清零,基本上达到本次设计的要求。但是,需要改进的地方还有很多:运算 方式不多,显示不够具体等。虽然遇到的困难很多但是我们学到了很多经验,希望在 下次课程设计过程中能吸取这次设计经验有更大的进步。 7 7 总结总结 课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻 炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技 术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可 以说得是无处不在。因此作为自动化专业的学生来说掌握单片机的开发技术是十分重 要的。我的题目是简易计算器硬软件的设计,对于我们这些

21、工科学生来说,这是一次 考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专 业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。 这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个 计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学 过的知识,而且学到了很多在书本上所没有 学到过的知识,掌握了一种系统的研究方 法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很 重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从 理论中得出结论,才能 真正为社会服务,从

22、而提高自己的实际动手能力和独立思考的 能力。 同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够 深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。这次课程设计通过自己的 努力,同学的帮助,网络资料的收集,最终顺利完成了。 8 8 参考文献参考文献 1范立南,谢子殿等.单片机原理及应用教程m.北京大学出版社 2马忠梅,籍顺心,张凯等.单片机的 c 语言应用程序设计m.北京航空航天大学出 版社,2006. 3张毅刚,彭喜元,董继成.单片机原理及应用 高等教育出版社,2003. 4谭浩强c 语言程序设计(第二版) 5肖洪兵.跟我学用单片机.北京:北京航空航天大学出版社,2002

23、 6何立民.单片机高级教程(第 1 版).北京:北京航空航天大学出版社,2001 7杨居义.单片机课程设计指导.北京:清华大学出版社,2009 附录附录 附录附录 1 1:相关设计图 设计总原理图 减法运算 除法运算 附录附录 2 2: 元器件清单表 元件名称容量个数 电容 233pf 显示屏 2 at89c511 按键 17 电阻 1100 晶振 1mhz1 附录附录 3 3:相关设计软件 软件编程 编译用 keil 软件,原理图绘制软件仿真用 proteus 软件 附录附录 4:4:相关源代码 #include #include #define uchar unsigned char #d

24、efine uint unsigned int uchar temp38,temp48; uchar zero8=0,0,0,0,0,0,0,0; uchar code table= 0 xc0,0 xf9,0 xa4,0 xb0, 0 x99,0 x92,0 x82,0 xf8, 0 x80,0 x90,0 x88,0 x83, 0 xc6,0 xa1,0 x86,0 x8e; uchar num,temp,num1,cnt,sub,add,mul,div,ent,shift,cal; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110

25、;y0;y-); uchar keyscan() /键盘扫描程序 p1=0 xfe; temp=p1; temp=temp while(temp!=0 xf0) delay(5); temp=p1; temp=temp while(temp!=0 xf0) temp=p1; switch(temp) /将键盘第一行分别定义为 7,8,9 和/号 case 0 xee:num=7; break; case 0 xde:num=8; break; case 0 xbe:num=9; break; case 0 x7e:num=10;div=1,cal=/; break; while(temp!=0

26、 xf0) temp=p1; temp=temp p1=0 xfd; temp=p1; temp=temp while(temp!=0 xf0) delay(5); temp=p1; temp=temp while(temp!=0 xf0) temp=p1; switch(temp) /将键盘第二行分别定义为 4,5,6 和*号 case 0 xed:num=4; break; case 0 xdd:num=5; break; case 0 xbd:num=6; break; case 0 x7d:num=11;mul=1,cal=*; break; while(temp!=0 xf0) te

27、mp=p1; temp=temp p1=0 xfb; temp=p1; temp=temp while(temp!=0 xf0) delay(5); temp=p1; temp=temp while(temp!=0 xf0) temp=p1; switch(temp) /将键盘第三行分别定义为 1,2,3 和-号 case 0 xeb:num=1; break; case 0 xdb:num=2; break; case 0 xbb:num=3; break; case 0 x7b:num=12;sub=1,cal=-; break; while(temp!=0 xf0) temp=p1; t

28、emp=temp p1=0 xf7; temp=p1; temp=temp while(temp!=0 xf0) delay(5); temp=p1; temp=temp while(temp!=0 xf0) temp=p1; switch(temp) /将键盘第四行分别定为 13,0,14 和/号 case 0 xe7:num=13; shift=1; break; case 0 xd7:num=0; break; case 0 xb7:num=14;ent=1; break; case 0 x77:num=15;add=1,cal=+; break; while(temp!=0 xf0) temp=p1; temp=temp return num; void move(uchar *a) /定义左移函数 move() uchar k; for(k=7;k0;k-)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论