- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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,也就是
您可能关注的文档
- 建筑垃圾统管处置工作方案(汇报稿).PDF
- 建立健全中小学法治教育机制.PDF
- 建筑施工论文施工工艺方向论文范文.PDF
- 建筑空调制冷系统施工中的管理要点.PDF
- 建筑材料检测对建筑工程的作用.PDF
- 建筑设计中的视觉符号设计探讨.PDF
- 建筑业企业资质证书.PDF
- 建设工程招标文件备案(施工类)办事指南.doc
- 建议供卫生大会通过的决议对秘书处的财政和行政影响.PDF
- 建设诚信中国159家企业向舞弊亮剑.PDF
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)