
【单片机】简易计算器
简介
基于STC89C52RC-40I-PDIP40单片机设计的简易计算器,整体设计全部采用插件类型封装,方便新手焊接练习,入门单片机项目学习。
简介:基于STC89C52RC-40I-PDIP40单片机设计的简易计算器,整体设计全部采用插件类型封装,方便新手焊接练习,入门单片机项目学习。开源协议
:GPL 3.0
描述
一、项目介绍
基于STC89C52RC-40I-PDIP40单片机设计的简易计算器,主要由LCD1602液晶屏、STC单片机主控加上4×5矩阵按键组成,支持简单的加减乘除以及取余和小数运算,用户可通过矩阵按键输入对应的数字或运算符,当按下等于号后,会计算得出结果。默认为浮点型,且保留两位小数。
二、总体设计
简易计算器项目,主控单片机使用STC89C52RC-40I-PDIP40,电源输入为5V,采用2P直插的Typec-C接口,带有一个滑动开关,可通过开关来关断整体电源,按键使用6×6×6mm的直插封装,且具有4行5列组成矩阵按键用于输入对应的数据,项目使用串口引脚进行下载,使用LCD1602进行数据显示。
三、电路原理
1.电源电路
电源选用2P直插的Type-C接口,当电源输入时,会先经过滑动开关KEY1,当开关闭合时,电源经过C1电容给整个项目进行供电。
2.单片机最小系统电路
主控选用STC89C89C52RC-40I-PDIP40单片机,插件封装,方便焊接,P0口比较特殊,内部无上拉电阻,所以作I/O口必须外接4.7K~10K的上拉电阻。当P0作为地址/数据复用总线使用时,是低8位地址线A0~A7,数据线的D0~D7,此时无需外接上拉电阻。关于EA#(EA#管脚已内部上拉到VCC),如外部不加上拉或外部上拉到VCC,上电复位后单片机从内部开始执行程序;如外部下拉到地,上电复位后单片机从外部开始执行程序。
外部RST引脚复位,电容为10uF,电阻为10kΩ,通过RST1按键,将RST复位引脚被拉高,松开RST1按键,RST复位引脚被拉低,产生外部复位脉冲使系统复位。这种拉高复位引脚来产生复位的信号源需要被保持24个时钟加上10us,才能产生复位,再将RST引脚拉低,结束复位,单片机从用户程序的0000H处开始正常工作。
晶振的作用是给单片机最小系统提供的时钟信号,晶振频率X1选为11.0592MHz,谐振电容为47pF,作用是保证输出的振荡频率更加稳定。
3.LCD1602液晶屏
LCD1602液晶屏功耗低,直接与主控单片机的P0口和P2.5,P2.6和P2.7相连接,电源直接使用Type-C输入的VCC(+5V),V0是LCD1602液晶屏的对比度调整端,可以通过调节RP1可调电阻的阻值来改变显示对比度,对比度过高时会产生鬼影。
4.矩阵按键
按键控制部分主要由20个独立按键组成,分为4行5列,在每一行和列的起点处均有一个引脚,此时可以通过设置某一行或某一列的引脚为高电平/低电平,从而判断另外一侧按键电平变化。
假设此时将P1_4引脚拉低,其余引脚全部拉高,那即可通过判断P1_0~P1_3的引脚来判断第一列的按键是哪个按下了。
四、电路板设计
在了解完简易计算器硬件电路原理后接下来进行原理图与PCB电路板设计环节,原理图设计部分包含了元器件选型、元器件搜索以及原理图整理的内容;PCB设计部分包含边框设计、元器件分类布局、PCB走线与设计检查、PCB生产与打样等内容。
1.原理图设计
1.1 工程创建
打开嘉立创EDA专业版软件https://pro.lceda.cn/editor ,登录账号后选择创建工程, 输入工程名称:【51】简易计算器,系统会自动创建一个工程项目,接下来就在该项目中完成简易计算器的原理图与PCB设计。
创建好工程后打开左侧工程列表中的Schematic1图页,在右侧画布区域放置元器件进行连接,底下的PCB1是用来绘制PCB图的页面,设计流程是先完成原理图的设计后再到PCB设计。
1.2 元器件搜索
器件搜索的方式有三种途径,第一种可以在左侧的常用库中找到官方提供的参考库进行放置,优点是比较方便,缺点是库种类较少;第二种方式是通过顶部菜单栏中的放置按钮选项,可以看到器件实物图与参考价格、数据手册等信息;第三种方式是在软件底部面板中搜索放置器件,这种方式的好处是可以看到所选器件的符号、封装与3D模型效果图。
使用技巧:熟悉使用快捷键可以大大提升设计效率哦~
1.3 元器件放置
为了方便初学者学习,该项目提供了完成电路图中所需的元器件清单,可以直接根据器件清单中提供的器件编号及备注信息进行元器件的搜索和放置。以底部面板搜索器件为例,在原理图工作区打开底部库面板,选择器件类目,在搜索栏中输入器件编号,进行搜索找到对应元器件点击放置在画布中即可。里面的M3铜柱在EDA左侧常用库的最后一项可以找到并放置。
1.4 物料清单
1.5 原理图整理
完成元器件放置后接下来进行电路图的连接与整理工作,参照以下电路图,完成元器件间的连接,使用网络标签可以替代导线连接,两个相同网络的位置放置相同网络标签即可。接下来按功能模块划分各个电路,使用矩形边框包围住各个电路模块,并用文本加上电路模块标识说明。最好使用设计菜单栏下的检查DRC功能查看电路连接是否有误。
2.PCB布局与走线
2.1 边框设置
为了使用嘉立创提供的免费打样,这里我们设置51单片机开发板的板框尺寸为80×100mm,在顶部菜单栏处将单位切换成mm,然后点击放置-板框-矩形,在PCB画布中放置绘制一个矩形,点击矩形框,在右侧属性栏中将尺寸修改为80×100mm,圆角尺寸修改为2mm。
2.2 PCB布局
边框放置好后可以将四个螺丝孔放置在板子四周,布局时可以先将大尺寸器件放置在板子内部,进行初步局,使整个板面电路模块清晰,布局合理,方便使用。
布局时元器件相互连接处有一根淡蓝色的线条,这根线叫做飞线,它起的作用是告诉我们那两个焊盘是相同网络,需要使用导线连接,所以飞线也叫做指引线。但是页面中飞线太多影响布局摆放,在布局走线时可以将GND网络的飞线隐藏,使页面更简洁。隐藏方式是:在左侧“工程设计”列表中选择网络,在搜索栏中搜索GND,在飞线列表中将GND前的眼睛关闭即可。走线完成后别忘了重新打开哦~
接下来布局时把相关模块电路放到一起,按照飞线的指引摆放,尽可能使飞线水平,走线时减少拐弯,开关接口靠边方便操作,布局时可以使用3D预览功能实时查看布局效果是否合适。最终布局效果如下所示。
2.3 PCB布线
好的布局已经成功了一半,接下来只需掌握以下几点走线基本要求即可:
- 建议优先使用顶层走线,走不通的地方切换到底层进行连接;
- 走线以直线为主,如需拐弯时拐角以135°钝角或圆角优先,减少直角的使用;
- 走线线宽电源线宽大于信号线,该项目中信号线走线宽度为15mil,电源走线为25mil;
- 覆铜完成后如果还存在飞线,可通过在存在飞线的位置放置对应网络的过孔或者是调整走线位置使网络能够连接,也可以采用手动接线的方式消除飞线;
- 走线完成后可在“工具”菜单栏选择泪滴添加,加强焊盘与走线的连接,最后再进行覆铜操作,如果对走线有移动调整也应使用快捷键Shift+B进行重建覆铜。
完成走线后点击底部面板中的检查DRC按钮,若显示无报错警告,则代表该PCB设计完成。实际设计过程中往往可能出现各种错误,也可以通过检查DRC找到错误点进行修改,确保PCB板设计一板成功!
3.注意事项
1、在绘制原理图中应注意:
- 按模块电路划分进行绘制,注明电路功能;
- 在图纸属性上填写工程名称等信息;
2、在采购物料中应注意:
- 先筛选有库存物料,再筛选价格排序进行购买;
- 尽量购买同一仓库物料,选择靠近的货仓,缩短交货时间;
- 购买有多个订单时,可以通过绑定订单方式,节省运费;
3、在PCB Layout中应注意:
- 滤波电容应注意电流流向,尽量离需滤波元件近一点;
- 晶振尽量紧挨芯片,底部不要走线,防止信号串扰;
- 走线优先走直线,需要拐弯的地方以钝角或圆弧为主;
- 在绘制调整完PCB后加上泪滴,使板子更加美观稳固;
- 添加丝印标识,注释说明接口功能;
- JLCJLCJLCJLC指定客编丝印可藏在器件下,成板美观;
五、焊接调试
待电路板生产完成后即可进行元器件的焊接。该项目为插件焊接,适合初步焊接学习和训练,需要掌握焊接工具的使用,元器件极性的识别以及系统调试的方法流程。
1 焊接工具介绍
1.1 电烙铁
电烙铁是电子制作和电器维修的必备工具,主要用途是焊接元件及导线,由机械机构可分为内热式和外热式电烙铁两种,简单理解就是烙铁头可拆且没有发热功能靠接触导热的就是外热式,如果烙铁头内部集成发热芯的就是内热式。 以下两种为常见电烙铁外观及特性:
在使用电烙铁时,手指握住电烙铁胶皮位置,不能直接接触金属,避免烫伤,保持焊接桌面整洁,头发长的同学绑好头发避免烫到,焊接温度保持在300—350摄氏度为宜。
1.2 焊锡丝
焊锡丝是一种熔点较低的合成金属,焊接时将焊锡熔化后连接到两个器件焊点上,待温度冷却后焊锡固定,完成焊接过程。
1.3 清洁工具
焊接时烙铁头上容易沾上多余的焊锡,保持烙铁头的清洁需要用到清洁工具,常用的有高温海绵和高温钢丝球两种。
- 高温海绵使用方法:使用时先用水浸湿,然后拧干后使用,用烙铁头在海绵上蹭干净;
- 高温钢丝球使用方法:使用时用烙铁头进去刮几下,注意轻刮,避免刮掉烙铁头保护层。
2 插接器件的焊接
2.1 插件的焊接
插件元件的焊接方法大同小异,总结起来分四步,先将元器件按特定的位置插入板子,适当掰弯插件器件引脚,再用电烙铁靠近焊点加热焊盘,随后将焊锡丝送到焊盘上融化,再将焊锡丝拿到后再移开烙铁,最后用斜口钳剪掉多余引脚。
2.2 插件的拆卸
都说上手容易下山难,焊接也是如此,但总会由于一些原因焊错元器件的位置,这时需要了解插件器件焊错后如何拆卸与通孔的技巧。
发现电阻焊接错误时,用电烙铁在电路板的反面轮流对被拆电阻器的引脚加热,使引脚上的焊锡全部熔化,然后用镣子夹住元器件向外拉,把电阻器从印制电路板上取下来。此方法也可用于同类型插件器件的拆卸。
而通孔相对复杂一些,拆掉电阻或其他插件器件后焊盘会被堵住,通孔方法可以使用吸锡器、吸锡带或者空心针等工具进行通孔。如果以上工具都没有的话可以先在堵塞的孔上再加些焊锡,然后用烙铁加热,使焊锡融化后拿起板子往桌面一敲,利用焊锡融化及向下的惯性使用孔中的焊锡掉落,该方法有点粗鲁,但有奇效!
3 核心板焊接说明
3.1 焊接准备
掌握基础焊接方法后接下来进行焊接实训练习,焊接时可以通过对比原理图中的位号与PCB上的对应关系找到正确的位置进行元器件的安装与焊接,也可以通过嘉立创EDA专业版中提供的辅助焊接工具对照元器件位置,避免焊接错误。
3.2 焊接流程
在焊接核心板时,焊接原则为先焊接矮的器件,再焊接高的器件,即从矮到高原则,由于51单片机核心板上电阻众多,先一个个焊接几个找到感觉后可一次性将电阻全部安装到电路板上,一次性焊接完,然后用斜口钳剪掉多余引脚。
焊接顺序可按照以下顺序进行焊接:
直插电阻→LED灯→USB→电源开关→三极管→芯片底座→晶振→瓷片电容→电解电容→轻触开关→数码管→蜂鸣器→排阻→排针,最后再将芯片插到芯片座上。
3.3 注意事项
焊接最小系统时有的器件不分正负极,可以随意安装比如电阻,而像LED和电解电容等器件是分正负极的,焊接时不能焊反。在焊接时要认真看好元器件的正负极性,确认无误后再进行安装。
- 电解电容长引脚黑边为正,短引脚白边为负。
- 排阻圆点位公共端,接VCC引脚。
在焊接中应注意:
- 在进行焊接时,可在嘉立创EDA的工具栏中点击焊接辅助工具,实时交互方便焊接;
- 在焊接顶层时,主控芯片建议优先焊接,避免其它器件影响焊接;
- 焊接排针时可用一块空板或洞洞板顶住,防止焊斜,影响使用;
- 焊接顺序应遵循从低到高原则进行,避免影响小器件的焊接。
六、软件开发
1.整体思路
简易计算器代码主要是对思维逻辑的考验,通过将矩阵按键按下的值转换为对应的字符数字,当按下“=”之后,对字符串进行解析,提取出每一个数字以及运算符,遵循先乘除后加减的运算优先级进行计算,最终得到结果。
2.LCD显示代码
LCD1602的显示代码是比较简单的,在网上也有非常多的参考,这里与之不同的是引脚分配,在LCD1602的DB0~DB7引脚中,并不是直接分配一组IO给它使用,这样导致Lcd_Write写数据或写指令函数会麻烦一点,实际代码如下。
3.按键扫描代码
矩阵按键的扫描在电路原理中已经分析过了,此时仅需要遍历扫描然后返回对应的字符数字即可,推荐返回值使用char类型,这样输入的数据可以直接使用字符数组进行接收,不需要重新转换。
4.主逻辑代码
主逻辑代码相对较为复杂,主要分为拆分数据、计算乘除法、计算加减法三部分,我采用的方法是将字符数组中的每一个数和每一个运算符都拆分单独保存起来,其中如果有小数,也是一样的操作,把它当成一个数进行保存。
拆分数据完成后,需要先计算乘除以及取余,此时需要依次遍历运算符,假设是1×2×3这样的字符,那我们需要计算出来,然后将结果保存到第一个数据上。取余计算的话需要注意不能是小数,需要定义整形变量进行强制类型转换。
最后是加减,也是依次遍历运算符,此时是将结果保存在sum中,最后打印sum即可,这里的逻辑需要大家自行理解,同时51单片机调试较为困难,我强烈建议使用一个标准的c语言编译器进行代码验证,比如vs、devc++等等,我们指定一个字符串然后进行处理即可,这里并不设计任何GPIO等操作,标准c语言编译器可以很好的使用调试和printf等操作输出,而且不用反复烧录代码。
注:此处我使用devc++进行测试,然后将其转换到51单片机工程中去,该项目逻辑不可避免会有bug,若有问题欢迎随时联系。
源码&测试代码,均在gitee资料中
七、实物图片
设计图

BOM


评论