单片机课程设计报告---计算器.docx
《单片机课程设计报告---计算器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告---计算器.docx(20页珍藏版)》请在优知文库上搜索。
1、目录:1、 课题目标22、 系统总体设计方案规划与选定23、 硬件设计24、 软件设计31. 1主程序流程图44. 2键盘读取程序流程图55. 3显示函数流程图66. 4数值转换流程图65、 调试76、 新增功能及实现方法107、 小结与体会118、 参考文献129、 附录(源程序代码、电路图等)121 课程目标设计一个计算器,实现两个4位数(含整数和小数)的加减乘除,运算功能数据输入及运算结果显示与平时使用计算机相同。用8279接口实现,4*5键盘及8位LED灯显示。20个键包括09共10个数字键,+,共4个运算键,键,小数点键以及清零键,剩余3个键可以自由发挥。系统复位后,应在最右边LED
2、上显示0。2 .系统总体设计方案规划与选定由于本学期学习了C51单片机的课程,此次的单片机选择了AT89C51,同样因为前段时间的实验使用过LED,所以这次显示屏幕还是选择了LED的显示屏,方便操作和使用。接口部分课程规定要用8279,其功能十分强大,读取键盘等都十分便利,利于LED灯和键盘的扩展,其中还使用了74HC138,74LS373配合电路的实现和连接。3 .硬件设计AT89C51通过8279扩展键盘和LED灯,其中PO口作为单片机芯片与8279传递命令,状态,数据的端口,P2口通过P2.0的状态来区分8279是状态字传送还是数据传送。INTO与8279的IRQ连接,当有键按下时会产生
3、一个中断,从而执行中断程序。8279中的SL0,SLbSL2产用编码模式,通过一个74H的38可以控制8条线,其中4条线分别和键盘行线相连接,作为扫描线。同时8279中的RL04作为键盘的列线,当键盘上有键按下时,可以通过扫描值和返回值得到键的准确位置,从而根据位置执行不同的函数。8279的OUTA,OUTB共8个端口通过一个74LS373与LED相连,作为LED的数据线,而8个LED灯的片选端由8279的SL0,SLl,SL2控制。(详细电路图见附录一)4 .软件设计4.1主程序流程图4.4数字转换流程图5 .调试电路图调试:将程序放入单片机后,在实际运行的时候发现显示屏上出现了相同的乱码,
4、按下键盘不能改变显示。在检查了一遍连线后,我们对器件也进行了一次检查,发现我们在器材选择时选择了共阳极的LED灯,于是我们上网查了共阴极LED的编号并改了过来。但在运行时发现还是无法正常显示,我们决定一步一步执行来找到问题所在。我们在按下开关时,观察开关两端的电位变化发现无论开关按下与否,开关右侧始终显示高电平,导致键盘返回值一直是零而无法产生中断。我们尝试将电阻去掉后发现键盘的电位变化正常了。我们再次运行程序,发现键盘可以引起显示的变化,但是显示的全部都是乱码,与我们设想的不一样。我们首先检查了一遍键码表,发现没有问题后我们再次检查了连线,看各个端口的连接是否有问题。通过反登检查和8279功
5、能键的比对,我们发现OUTA,OUTB这两个口在作为输出口的时候是OUTA作为高4位的,我们连错了位置,结果导致显示结果出现了很大的偏差。电路图是修改程序的基础,只有在电路图正确的基础上我们才能准确的判断程序的正确性。经过多次的调试之后,电路图终于可以正常工作了。程序调试:整个程序比较长,因此我们将整个程序分成4个部分来编写和分析,包括键盘读取程序,显示程序,数值转化程序以及主程序和中断程序等连接程序。首先是对主程序和中断程序的检查,主要是状态字的书写时候正确,有没有正确清零LED灯:这部分的问题比较少,基本没有浪费太多时间。键盘读取程序:键盘读取程序的编写比较麻烦,需要考虑数字键和功能键的区
6、别。在实际运行过程中,当我们在按下功能键后发现不能对先前输入的数清除,当有数字键按下后会跟在原先的数字后显示出来。这应该是属于功能键部分的问题,我们通过检查发现我们在功能键部分忘了给它赋值。解决这个问题后我们又发现当我们按下清零键后,再按小数时小数位数会发生叠加的现象,我们不得不再次检查清零键部分,反复比对之后发现我们在清零之后没有对记录小数位数的变量清零,导致小数位数山错。在键盘读取程序中,我们还需要对输入的各个数字转化为能运算的数值,这个我们同样是通过一个小数点标志位来判断,对其进行不同的操作,达到运算的要求。其中运算同样是在这里完成,在完成运算后将结果作为返回值。显不程序:显示程序部分程
7、序比较短,主要是对有无负数,有没有无效零的判断。通过负数标志位来判断负数,通过从后向前循环查询的方式将数组中的无效零都清除,并改变数值的显示长度。运行时我们发现一旦出现了负号,我们在按下清零键之后发现不能将负号给清除。我们首先尝试了清空FlFo和显示RAM的操作,发现并没有能解决这一问题,后来我们又检查了一遍清零程序,发现我们漏掉了负号标志位的赋值。因为这是后来加上的功能,导致遗漏了这样一个小问题,让我们寻找了很长时间。数值转化程序:这部分是十分重要的一部分,需要将计算得出的结果转化成一个一个的数字才能实现LED的显示。数值转化过程我们用的大体思路是将结果都转化成小数,然后乘以10取整就能得到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告 计算器
