基于单片机的计算器论文内容摘要:

10)。 ret=1。 _nop_()。 psb=1。 //将 PSB 置 1,通信方式为 8BIT 数据并口 // _nop_()。 } //LCD 功能设置 // void lcd_set() { mand=0x30。 //基本指令集 // write_mand(mand)。 mand=0x01。 write_mand(mand)。 mand=0x06。 write_mand(mand)。 mand=0x0c。 write_mand(mand)。 } //清屏程序 // void clear_lcd () { mand=0x01。 write_mand(mand)。 mand=0x34。 write_mand(mand)。 mand=0x30。 write_mand(mand)。 } //写指令程序 // void write_mand(uchar mand) { delay(5)。 rs=0。 rw=0。 P0=mand。 en=1。 基于单片机的多功能计算器 第 15 页 共 47 页 湖南工学院 _nop_()。 _nop_()。 en=0。 } //写数据程序 // void write_data(uchar data0) { delay(5)。 rs=1。 rw=0。 P0=data0。 en=1。 _nop_()。 _nop_()。 en=0。 } 、 键盘输入设计 这里我先用 4*4 矩阵式键盘。 键盘扫描函数如下: //键扫描程序 // uchar keyscan() {uchar scancode,tmpcode。 P1=0xf0。 // 行全为 0 if((P1amp。 0xf0)!=0xf0) //有键按下 {delay(100)。 //延时去抖动 if((P1amp。 0xf0)!=0xf0) //判是否真的有键按下 {scancode=0xfe。 //诼行扫描 while((scancodeamp。 0x10)!=0) {P1=scancode。 if((P1amp。 0xf0)!=0xf0) //本行有键按下 {tmpcode=(P1amp。 0xf0)|0x0f。 //返回特征字节码 ,为 1 的位即对应于行和列 return((~scancode)+(~tmpcode))。 } else scancode=(scancode1)|0x01。 //行扫描码左移一位 } } } return(0)。 //无键按下 ,返回值为 0 } 、 计算器函数设计 计算器的设计是本次设计的重点。 因为考虑到该硬件中只有 16个按键 ,所以我采用了基于单片机的多功能计算器 第 16 页 共 47 页 湖南工学院 按键复用的方式来解决这一难题。 这 16 个键分别是 0~9 十个数字键。 四个运算符号键,一个小数点键,一个多功能键。 这个多功能键单击时为“ =”,双击时为请零键,三击时为运算类型选择键。 在待机时,该计算器显示万年历,如果要进行计算则按任意键即可进入计算界面。 默认的计算是加减乘除,如果说要进行加减乘除以外的运算,那 么就三键等号键,就可进入运算类型选择模式。 选择好相应的类型就可以进行运算啦。 下面我来介绍几个重要的函数。 ( 1)、 函数名 : sin 功 能 : 正弦函数 用 法 : double sin(double x)。 include int main(void) { double result, x =。 result = sin(x)。 printf(The sin() of %lf is %lf\n, x, result)。 return 0。 } ( 2)、 函数名 : cos 功 能 : 余弦函数 用 法 : double cos(double x)。 include int main(void) { double result。 double x =。 result = cos(x)。 printf(The cosine of %lf is %lf\n, x, result)。 return 0。 } ( 3)、函数名 : tan 功 能 : 正切函数 用 法 : double tan(double x)。 include int main(void) { double result, x。 x =。 result = tan(x)。 printf(The tan of %lf is %lf\n, x, result)。 return 0。 } ( 4) 函数名 : asin 功 能 : 反正弦函数 基于单片机的多功能计算器 第 17 页 共 47 页 湖南工学院 用 法 : double asin(double x)。 include include int main(void) { double result。 double x =。 result = asin(x)。 printf(The arc sin of %lf is %lf\n, x, result)。 return(0)。 } ( 5)、 函数名 : acos 功 能 : 反余弦函数 用 法 : double acos(double x)。 include int main(void) { double result。 double x =。 result = acos(x)。 printf(The arc cosine of %lf is %lf\n, x, result)。 return 0。 } ( 6)、 函数名 : atan 功 能 : 反正切函数 用 法 : double atan(double x)。 include int main(void) { double result。 double x =。 result = atan(x)。 printf(The arc tangent of %lf is %lf\n, x, result)。 return(0)。 } ( 7)、 函数名 : exp 功 能 : 指数函数 用 法 : double exp(double x)。 include int main(void) { double result。 double x =。 result = exp(x)。 基于单片机的多功能计算器 第 18 页 共 47 页 湖南工学院 printf(39。 e39。 raised to the power \ of %lf (e ^ %lf) = %lf\n, x, x, result)。 return 0。 } 、 程序流程图 开 始液 晶 初 始 化 , 闹 钟 初 始 化 , 定 时 器 初 始 化1 键 按 下。 否是是否开 定 时 器关 闹 钟0 键 按 下。 调 闹 钟 键 扫 键处 理 程 序否否计 算 器 工 作 模 式初 始 化3 键 按 下。 是“ = ” 连 续 按 下 四 次 ?调 计 算 器 键 扫键 处 理 程 序返 回 主程序流程图 基于单片机的多功能计算器 第 19 页 共 47 页 湖南工学院 显 示 开 始L C D初 始 化相 应 功 能设 置送 地 址送 数 据返 回显 示 汉 字 或A C S I I 码相 应 功 能设 置送 行 地 址和 列 地 址送 数 据显 示 图 形是否是是否否是 否显 示 完是 否显 示 完是否 显示程序流程图 基于单片机的多功能计算器 第 20 页 共 47 页 湖南工学院 键扫程序流程图 、 程序清单 程序清单见附录 4。 基于单片机的多功能计算器 第 21 页 共 47 页 湖南工学院 产品使用说明 该产品 16 个按键作为输入信号, 液晶为显示器,按键功能如 下 图所示。 0~9 为数字键, 其中 0~3 有第二功能,一个小数点键,一个等号键,该键为四功能键,四个 运算 符号键。 通电后显示器显 示万年历、星期和脑钟, 此时按 0键可进行校时, 可看到时钟已停,并且秒在闪烁,此时按 1 键可使秒加一,按 2 键可使秒减一,把秒设定好后,再按 0 键,秒停止闪烁,分开始闪烁,此时按 1键和 2 键同样可对分进行修改,然后依次时、日、月、年、以及闹钟的秒、分、时进行修改,然后再按 0键时钟恢复走时,万年历和闹钟的校准就完成啦。 如果要使用计算器功能,则直接按 3键即可进入计算器模式,等号键单键为“ =”,双键为清除,默认计算类型为加减乘除,若要进行其他类型的计算,则可使用等号键三键,然后选择运算类型进行运算,此时符号键所对应的运算符 号也有相应的变化。 该计算器的计算功能可实现加减乘除 、正弦余弦正切余切、反正弦反余弦反正切反余切、平方、立方、 m 的k 次方( m 和 k 均由键盘输入)、 e 为底的 m次方、自然对数、常用对数、开平方根。 可谓功能齐全,操作简单,给使用带来极大方便。 基于单片机的多功能计算器 第 22 页 共 47 页 湖南工学院 设计体会 在这次设计中使我对步进机有了更深的了解,对单片机也有了更高成次的了解,单片机的种类多,而型号杂,也是我们学习中的困难,所以就 MCS— 51系列的产品来说,就是一个典型的学习方法。 单片机编程是用汇编语言进行编程,也就需要我们对电路的分析,然后总结,查阅相关资料才能变成 好的程序,编程讲究的是多动手写,自己写,用自己的思路,不怕写错,写错再改,懂得有新的思想这样才能提高。 在这次单片机应用系统设计中遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文,才做成的。 以前 也 做过 不少 单片机设计, 但面对这次设计,似乎也有一点束手五册了。 在这次的设计中 ,让我们发自内心的明白了以下这几个道理。 其实,这几个道理以前我们就懂,就知道,甚至每个人都知道,但真正到了关键时间,我们还会 不会 遵循 它来 办事 就是一个问号啦。 书读百遍,其义自现。 三个臭皮匠 胜过一个诸葛亮。 团 结就是力量。 温故而知新。 正因为我开始没有遵循这几个道理所以 在设计中 走了不少弯路, 表现出来了 我很多的不足之处 , 就因为这样我们才会在这次设计中有进步、有发展,同时使自己的能力得到进一步的提升。 我将好好地记录下这次设计的点点滴滴,我想,这不单是我的经历,更是我的一笔财富。 参考文献 ( 1) 李广弟 《单片机原理及应用》 北京航天航空大学 出版社 ( 2) 潘新民 《微型计算机控制技术》 电子工业出版社 ( 3) 梅丽凤 《单片机原理及接口技术》 清华大学出版社 ( 4) 李陪金 《 C 语言程序设计案例教程》 西安电子科技大学出版社 ( 5) 戴佳 《 51 单片机 C 语言应用程序设计实例精讲 》 电子工业出版社 ( 6) 谭浩强 《 C 程序设计》 清华大学出版社 基于单片机的多功能计算器 第 23 页 共 47 页 湖南工学院 附录 元器件清单 名。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。