欢迎来到天天文库
浏览记录
ID:49170406
大小:5.21 MB
页数:20页
时间:2020-02-29
《矩阵键盘简易计算器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《微处理器系统与接口技术》课程实践报告计算器班级:学号:学生姓名:指导老师:日期:2014.7.5******电子与信息工程学院20目录1、设计题目:计算器32、设计目的33、计算器总体设计框图34、计算器详细设计过程44.1输入模块44.2键盘输入电路54.3主程序模块65、分析与调试67、运行结果88、结束语88、参考文献89、源程序附录99.1主程序99.2延时函数delay129.3显示函数display129.4键盘扫描函数149.5预定义函数15201、设计题目:计算器2、设计目的此次课程实践题目是基于单片机简单计数器的设计,本此设计使用的是
2、Intel公司MCS-51系列的8051AH单片机。设计的计算器可以实现2位小数的加、减、乘、除运算以及整数的乘方运算,其中用4*4矩阵键盘来输入待参与运算的数据和运算符;八位数码管动态显示输入待参与运算的数据以及运算后产生的结果,每个硬件模块的调用过程中涉及到了函数入口及出口参数说明,函数调用关系描述等。3、计算器总体设计框图计算器以MCS-51系列的8051AH单片机作为整个系统的控制核心,应用其强大的I/O功能和计算速度,构成整个计算器。通过矩阵键盘输入运算数据和符号,送入单片机进行数据处理。经单片机运算后控制LED数码管的输出。整体框图如图1所示
3、:图3整体框图本系统硬件主要由矩阵键盘、独立键盘I/O输入输出、数码管显示等主要部分组成。各模块的主要功能如下:(1)矩阵键盘将十六进制编码的数字送到单片机。(2)单片机扫描键盘信号并接收,对输入的键盘信号进行处理(3)LED以动态扫描的方式移位显示每次输入的数据和最后的运算结果。实践设计的具体流程图如下图2所示:20图3整体流程图4、计算器详细设计过程(处理器型号型号:IntelMCS-51系列8051AH)计算器设计原理图4.1输入模块20计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的
4、I/O口资源,因此在很多情况下都不采用这种方式。为此,我们引入了矩阵键盘的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率,如图3所示:图3键盘按键4.2键盘输入电路每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键
5、的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。当无按键闭合时,P1.0-P1.3与P1.4-P1.7之间开路;当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置行线P1.4-P1.7为输入状态,从列线P1.0-P1.3输出高电平,读入列线数据,若某一列线为高电平,则该列线上有键闭合。第二步,读入列线值,将该值输出到列线值,之后再读出列线值。综合一二两步的结果,最后键
6、盘最后组合码值可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。204.3主程序模块这次设计共涉及到了处理器、矩阵键盘、独立键盘、数码管显示等主要的模块,在软件主程序中,通过函数的调用实现相应的功能模块处理。通过num=KeyPro()函数的调用实现了将通过4*4矩阵行列反转扫描法得到的数据送入单片机,用于处理器进一步处理数据。因为该课程实践要求计数器具有2位小数的加减乘除运算,所以我们在读取矩阵键盘之后,使用语句sscanf(temp,"%f",&a),该语句的
7、意思是将字符串数组temp中的字符以浮点数的形式输出到变量a,因此键盘输的的数据都被转换成了浮点数,所以可以很方便的实现带小数的加减乘除运算,运算所得结果也是浮点数的形式。在对输出结果输出到数码管的过程中,使用语句sprintf(temp,"%f",a);,该语句的意思是把浮点数变量a输出到字符串数组temp中,此时就可以调用显示函数对字符形式的计算结果进行输出。5、分析与调试在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计、编程和调试,然后组
8、合起来。这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定
此文档下载收益归作者所有