基于HD7279和51单片机的计算器
接到这个课程设计之前我自己懒懒散散地看了一段时间的C51(用C语言编写单片机代码),之前老师教的是A51(用汇编编写单片机代码),我玩了很久,但是发现A51真的很局限,汇编这种语言是写给机器看的,真正地写0和写1,真正是一个寄存器一个寄存器的调用,对于8位的51单片机来说,要实现1000×1000或者小数是比较困难的。老师推荐用C,之前只是看书实现过一些小东西这回要做比较大的项目了,虽然还有其他课题比如温度计和数字钟,不过都做过,只是环境不一样,修改一下代码太没有挑战性了。
确实开始轻敌了,真正做的时候发现不是那么简单,
高中的时候学过一点VB做过计算器,如果让我现在做,也许给我几天我可以做出来,用C我也没什么问题,但是C51就有难度了,要考虑太多硬件的东西,特别是显示这个模块好不容易瘦下去的头又两个大了。等我真正意识到的时候,已经过去几个礼拜了,呵呵,要和朋友说抱歉了,虽然我答应“等我做完计算器之后再帮你改下程序”但是没一个实现。
当然,此程序因为基本全是自己写的,被方晋甬老师称之为“程序设计不成熟、比较乱”的,额,本来准备用switch语句,但是吕昂老师说switch语句会产生过多闲置寄存器(可是他没有考虑到我仅仅是实现很少的功能),这段程序只实现+-×÷,符号闪烁,过八位报错等功能但是没有小数,只能计算一步(加少数程序即可计算多部)。其实程序挺早就写出来了,只是一直出不来效果,后来在仿真和VC++编译环境下修改了很多,理论上是可以实现了,可是还是没有显示,于是抓狂了“看来我已处在瓶颈...”,晃了最后一个礼拜,周日周一看了两天晚上,依然没有看出什么来,礼拜二去方晋甬老师办公室请教,查了近3个钟头【基本看过了我所有奇形怪状的子程序—。—||||】,在仿真多遍之后发现就少了一句“while(!key)【检测释放按键】”【程序中红字部分即主程序最后一句】囧啊~~~~以至于周四答辩的时候我演示之后,刚点看ppt他就说直接给A,不用答了。。。。
程序的完整版下载地址:http://www.51hei.com/ziliao/file/jsjq.rar
评论