基于单片机的计算器论文内容摘要:
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 页 湖南工学院 附录 元器件清单 名。基于单片机的计算器论文
相关推荐
信号很小时,则量化噪声对系统的音质影响就将十分明显。 量化噪声的减低对于量化噪声可采用在信号中加给高频抖动信号的方法,量化后,再减去高频抖动信号,而使量化噪声白噪声化。 量化噪声随量化比特数增大而相应减小,但不能减为零。 量化噪声是不同于白噪声(即等带宽能量相等的噪声)的一种高频噪声,它是由比较少的孤立频谱重叠而成的噪声。 因此在听感上与白噪声不同,是一种较粗糙的、刺耳的、称为颗粒性噪声的声音。
装;封装形式: SOP、 SSOP 和 DIP。 ③引脚分配 Em78p153 单片机引脚分配如 图 34。 图 34 Em78p153 引脚图 第 3章 硬件电路 11 MAX232 MAX232 芯片是美信( MAXIM)公司专为 RS232 标准串口设计的单电源电平转换芯片,使用 +5v 单电源供电。 此处用于对 T4016 激励电压的放大。 ① MAX232 引脚图 芯片引脚如图 35。
脚图及其引脚功能说明 硬件电路设计 第 4 页 (共 61 页 ) 图 3 AT89C51引脚图 VCC:电源电压 GND:地 PO 口: P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址 /数据总线复用口。 作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口写“ 1”可作为高阻抗输入端用。 在访问外部数据 存储器或程序存储器时,这组口线分时转换地址(低 8
度。 人体辐射的红外线中心波长为 910um,而探测元件的波长灵敏度在 范围内几乎稳定不变。 在传感器顶 端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为 710um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器。 一旦人侵入探测区域内,人体红外辐射通过部分镜面聚焦,并被热释电元接收
现 0~9数字的显示。 基于单片机的篮球赛计时计分系统的设计 19 图 一位动态 LED显示 MOV R1, 0AH MOV R0, 00 BUF: MOV A, R0 MOV DPTR, DATA MOVC A , @A+DPTR MOV P1,A INC R0 DJNE R1,BUF SJMP NEXT DATA:DB 3F,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。 5. 蜂鸣器模块 蜂鸣器是一种一体化结构 的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 蜂鸣器在电路中用字母“ H”或“ HA”(旧标准用“ FM”、“