成的实验板即可,当然你要是有别的实验板也可以用,大同小.PDFVIP

成的实验板即可,当然你要是有别的实验板也可以用,大同小.PDF

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
成的实验板即可,当然你要是有别的实验板也可以用,大同小

欢迎转载,转载请注明原作者:kidcao1987 。出处:/?2975 基于51 单片机的计算器DIY 大概设计过程 写在前面:关于这个计算器的制作完全是出于对 DIY 的爱好,因为闲的无聊总要做些 东西玩玩,于是想到做一个计算器。这个计算器的功能跟平常大家网上见到的计算器的差别 大概也就是在功能上支持浮点数的运算吧。不过目前因为使用单精度浮点数所以只能精确到 小数点后面的第六位,其实第六位在很多时候已经不准确了。以目前我的编程思路我只能做 到这里了。如果哪位有兴趣的朋友能做到更精确的话请跟我联系,洗耳恭听~ ! 在此写一下大概的思路,希望对于喜欢自己DIY 的朋友有所帮助或者能让你看到有可以 借鉴的地方。 整个框架在硬件部分很简单,只有三部分,从这个角度来讲很容易实现DIY (便宜并且 器件都是常用的,容易凑齐) 1. 单片机及最小系统部分:我使用的是 CEPARK 的实验板,所以这部分我不用做,用现 成的实验板即可,当然你要是有别的实验板也可以用,大同小异。 2. 显示部分:至少是 LCD1602 的显示了,数码管肯定是满足不了要求的,而且我用的这 个板子上数码管是四位的,所以用常用的LCD1602 吧。 3. 键盘部分:这部分就自己DIY 一个吧,要不整个过程也就算不上是DIY 了,没有一个 模块是自己做的,我当时设计的时候大概想了一下是有22 个键需要使用,故采用了4*6 的矩阵键盘。当然实际上在我实际编程的时候很多按键没有用上,因为实在是RAM 空 间不够用了。 基本上这就是一个计算器完整的三个模块了,但是实际上我在这个基础上加了一个红外的模 块,也就是说这个计算器得到的结果我是可以控制的,呵呵,是不是很邪恶~~ ,使用定时 器对红外遥控器解码准确的很,没有任何出现按键显示不准的情况。有兴趣的可以跟我交流。 前面就先说到这里,下面开始分模块介绍一下。 第一部分:最小系统部分 这部分其实没有什么好说,这里对 CEPARK 的实验板发表一点小意见。我要扩展的时 候4 根矩阵键盘的行线是要接到P1 口的低四位的,这样比较有利于写矩阵键盘的检测程序, 但是后来发现在我安装上LCD1602 的时候,液晶盖住了P1.0 口没有办法连线,后来我想用 高四位也行啊~于是,很开心的接上高四位~~第一次测试程序的时候差点没把我吓晕~ ,对 CEPARK 的板子比较了解的朋友可能会记得P1.7 口是接在蜂鸣器上的,呵呵,所以最后只好 用了P1.3,P1.4,P1.5,P1.6 来接矩阵键盘的行线,至于程序,慢慢写了~~ ,呵呵。其实也是可 以的,只是比较费劲而已,但是程序行差不多,注意端口电平。 第二部分:显示部分 显示部分的函数我在原始的帖子里已经贴出来了,有兴趣的可以看一下,原帖的地址是: /viewthread.php?tid=2717extra=page%3D1 ,至于LCD1602 的操作不是 本文讨论的内容,如果还不清楚液晶的操作请参见sunhm版主的单片机教程,在单片机综合 板块,有很详细的介绍。这里只是想提一下两个函数。 void lcd_printf(uchar *str)//显示字符串 { while(*str!=\0) { write1602(*str,1); //写入数据 str++; } } void lcd_moveto(uchar x,uchar y)//指定显示的行列坐标 欢迎转载,转载请注明原作者:kidcao1987 。出处:/?2975 { if(x==0) write1602(0x80|y,0); if(x==1) write1602(0xc0|y,0); } 第一个函数void lcd_printf(uchar *str)是用来显示字符串的,学过C 语言的朋友对指针肯 定都很熟悉,对于一个字符型的数组,起数组名跟指向数组第一个元素的地址其实是一样的, 所以在需要输出一个字符串的时候我们就可以一次性输出,而不用用for 循环来实现,这样 最少看起来比较简洁而且实用。在后面的浮点数的输出中,这个是很有用的,现在你就可以 想一下如果是你来做的话你怎么将任一个浮点数在液晶上显示出来了。 第二个函数lcd_moveto(uchar x,uchar y),很显然这个函数是用来定位显示的数据在1602 上的位置的,x,y 分别表示是在哪一行和第几个位置,在第一行时x=0 ,第二行x=1,也就是

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档