基于单片机实现的计算器毕业设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录 第一章、设计总体思路 1 1.1基本原理 1 1.2设计方案 1 1.3设计方案 2 第二章、单元电路设计 3 2.1 显示电路设计 3 2.2 按键电路设计 4 第三章、程序调试 5 第四章、程序清单 9 第五章、整体电路图 33 第六章、体会 34 、设计总体思路 1.1 基本原理 根据课程设计任务书的内容与要求,要实现简易计算器的设计过程,实现计算器的键盘输入,进行加、减、乘、除基本四则运算,并将运算结果显示在1602液晶上。键盘的应用,设计的是4*4键盘和几个独立键盘,对键盘进行扫描,固定列扫描行,设置相应的按键功能,包括数字键、运算符键,正常输入:显示相应的数字及运算符(+、—、*、/等),按 下等于(=)键后显示计算结果,在1602液晶的第二行显示两个操作数和运算符,在第一行显示运算结果。 1.2 设计方案 首先,实现对键盘的扫描及设置对应按键;其次,实现在1602液晶上显示键盘输入内容;最后,对输入数据进行基本运算处理并在1602液晶上显示相应结果。在键盘扫描时,每个键盘都有对应的数字或符号,当有键按下后,单片机会判断键盘信息,并将键盘的相关数字或符号显示在1602液晶上,并保存数据信息。当按下等于(=)时,单片机会进行相关的计算,然后将结果显示在1602液晶上。 1.2 基本框图 输入 输出 图1-1 设计框图 第二章、单元电路设计 2.1 显示电路设计 前面简单介绍了1602液晶显示器的信息,现在介绍其工作原理。它是通过想液晶内部自带打RAM写数据来显示时间的。在这之前我们要先对它内部进行一些设置。如开关,光标,是否移动,是否清频,还有数据写在何处都要设置。其中D0~D7接单片机的P1口,RS控制命令和数据,接单片机的P2.0口;RW控制读和写,接单片机的P2.7;E是使能端口,接单片机的P2.1口。 图2-1显示电路 2.2 按键电路设计 本次设计使用了矩阵键盘和五个是独立键盘,分别选用P3口和P2.2——P2.5引脚作输入引脚。单键盘不按下时,引脚为高电平,所以在读取引脚电平是就判断引脚为高电平还是低电平。若为低电平则表示按键按下。 图2-2 按键电路 、程序调试 程序调试跟据设计要求操作,分加,减,乘,除,平方根,任意次幂和任意次方根。 首先进行加操作,输入100+32按下等于键,仿真得到的结果如图3-1所示: 图3-1 加运算仿真 在进行减操作,输入3-22按下等于键,仿真得到的结果如图3-2所示: 图3-2 减运算仿真 再进行乘操作,输入55*46按下等于键,仿真得到的结果如图3-3所示: 图3-3 乘运算仿真 在进行除操作,输入99/33按下等于键,仿真得到的结果如图3-4所示: 图3-4 除运算仿真 在进行平方根操作,输入81再按下根号键,仿真得到的结果如图3-5所示: 图3-5 平方根运算仿真 再进行任意次幂操作,输入4^4按下等于键,仿真得到的结果如图3-6所示: 图3-6 任意次幂运算仿真 再进行任意次方根操作,输入81 yroot 4 按下等于键,仿真得到的结果如图3-7所示: 图3-7任意次方根运算仿真 第四章、程序清单 #includereg51.h #includemath.h #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define ZERO 0.0001 sbit rs=P2^0; sbit en=P2^1; sbit ql=P2^2; sbit sqr=P2^3; //平方根 sbit xy=P2^4; //x的y次方 sbit fg=P2^5; sbit hs=P2^6; sbit rw=P2^7; uchar flag,s,ws,ws1,xs,eq;//ws1,ws表示有几位小数,eq表示等于键是否按下 int cur=0; enum STATE{operand, sign}; double sum,aa; long double out,out1,k; signed long hh,ll; void delay(uint z) //延时程序1ms { uint x,y; for(x=0;xz;x++) for(y=0;y110;y++); } void write_com(uchar com) //写指令进入LCD模块 { rw=0; rs=0; P1=com; delay(5);

文档评论(0)

mx597651661 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档