当前位置:首页 > 单片机原理课程设计 - OLED电子计算器 - 图文
作品可实现四个浮点数的加减乘除四则运算,但在计算乘除法,特别是两个浮点数的乘除法时会会产生数据精度被削减的问题,此问题暂时没有找到解决的方法,有待日后改进。
第七章 设计总结和心得体会
本次课程设计历时两周,在课程设计的过程中遇到了许多的问题,同时也学到了许多知识。
在最初的硬件调试时总是遇到下载器检测不到单片机的情况,为了找出问题所在,我首先检查单片机的最小系统是否正常工作,检查发现电源供电正常,复位电路连接正常,晶振电路能正常起振,最后仔细查阅数据手册才知道,STC89C52RC单片机和以前使用的其他类型的单片机不同,它采用的是高电平复位,而以前自己使用的单片机是低电平复位,在修改了复位电路后,下载器便能正常检测到单片机。
在调试LCD的驱动时总是遇到显示乱码和错位的问题,通过在程序中设置断点的调试方法发现是数据格式转换是出现了问题,主要是在整型数据和浮点数转为字符型时出现的问题,通过查阅C语言的相关书籍发现,使用sprintf()函数可以很好地实现数值向字符串的转换,但是8051内核运行这个函数总是显得有些吃力,为了到达较好的显示效果,只能舍弃了运行速度。
在对两个数进行运算时,特别是浮点数的运算时,运算结果有时出现精度降低或者是数值溢出的问题,通过查阅开发手册得知,在Keil C51中unsigned int型数据占两个字节,数据范围为0~65535,signed int型数据占两个字节数据范围为-32768~+32767,float类型数据占四个字节,数据范围为:±1.175494E-38~±3.402823E+38,而自己输入的数据或运算的结果可能超出了上述的范围值,因此造成数据溢出并显示错误,在修改了
10
数据的存储类型后,上述的问题得到了有效的解决,但是输入的数值和运算的结果却有了一定的范围限制。
本次课程设计的作品到目前位置仍有一些缺陷,比如输入数据位数的问题和计算结果精度降低的问题,由于时间的原因,只能在以后的时间里慢慢完善。
通过本次课程设计,不仅让我在课堂上学到的东西学以致用,更重要的是提高了我的动手能力和解决问题的能力,为以后的工作打下了很好的基础。
11
附录1 STC89C52RC资料
STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的8051内核单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。 其主要特性如下:
? 增强型8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选
择,指令代码完全兼容传统8051。 ? 工作电压:5.5V~3.3V。 ? 工作频率范围:0~40MHz。 ? 用户应用程序存储空间为8K。 ? 片上集成512B的RAM。
? 32个I/O口,复位后P1/P2/P3为准双向口/弱上拉,PO口为漏极开路,
作为总线扩展时不用加上拉电阻,作为I/O口时需要加上拉电阻。 ? ISP/IAP。
? 3个16为定时/计数器。
? 4路外部中断,下降沿或低电平触发。
STC89C52RC的引脚图如图9所示。
图9 STC89C52RC引脚图
12
附录2 器件选型
器件名称 单片机 按键 电阻 晶振 瓷片电容 芯片座 排孔 液晶 型号 STC89C52RC 四角按键 10K欧姆 11.0592MHz 33pF 40DIP 1*8 LCD12864 数量 1 17 1 1 2 1 1 1
13
共分享92篇相关文档