基于51单片机设计的计算器 环球微动态
一、项目介绍
计算器是一种常见的电子产品,广泛应用于各个领域。而基于单片机的计算器设计则是学习单片机的一个重要环节。本项目基于STC89C52单片机设计了一款基本的四则运算计算器。
项目里采用了单片机的IO口、定时器和LCD1602显示屏等技术原理。其中,IO口用于控制矩阵键盘、蜂鸣器和LCD1602显示屏等外设;定时器用于进行键盘扫描,确保能够准确地捕捉到按键的输入;LCD1602显示屏用于显示输入的数字和计算结果。
设计思路主要分为三个部分:键盘扫描、计算器运算和LCD1602显示。在键盘扫描部分,通过定时器中断的方式进行键盘扫描,判断是否有按键按下,并将按键对应的数字保存到缓存区中。在计算器运算部分,采用栈的数据结构进行计算器运算,当按下运算符号时,将之前输入的数字压入栈中,等待下一次输入。当按下“=”时,从栈中取出数字进行计算,并将结果保存到栈中。最后将结果从栈中取出,显示在LCD1602显示屏上。在LCD1602显示部分,通过设置LCD1602的命令和数据,可以实现在LCD1602上显示数字和运算符号等内容。
(资料图)
最终项目实现了基本的四则运算功能,通过矩阵键盘输入数字,在LCD1602显示屏上显示输入的数字和计算结果,同时每次按键按下蜂鸣器会响一声,反馈按键的按下效果。
二、设计思路
2.1 设计目的
本设计利用STC89C52单片机,设计一款能够进行基本四则运算的计算器,通过矩阵键盘输入数字,在LCD1602显示屏上显示输入的数字和计算结果,同时每次按键按下蜂鸣器会响一声,反馈按键的按下效果。
2.2 硬件设计
本设计所需的硬件包括STC89C52单片机、LCD1602显示屏、矩阵键盘、蜂鸣器、电源等。其中,矩阵键盘采用4行4列的设计,通过4个IO口进行控制。LCD1602显示屏采用8位并行方式,通过6个IO口进行控制。蜂鸣器通过一个IO口进行控制。
2.3 软件设计
本设计的软件主要分为三部分:键盘扫描、计算器运算和LCD1602显示。
【1】键盘扫描
由于矩阵键盘的特殊性,需要进行键盘扫描。设计采用定时器中断的方式进行键盘扫描,每隔一段时间进行一次扫描,判断是否有按键按下。如果有按键按下,则将按键对应的数字保存到缓存区中。
【2】计算器运算
采用栈的数据结构进行计算器运算。当按下运算符号时,将之前输入的数字压入栈中,等待下一次输入。当按下“=”时,从栈中取出数字进行计算,并将结果保存到栈中。最后将结果从栈中取出,显示在LCD1602显示屏上。
【3】LCD1602显示
采用8位并行方式控制LCD1602显示屏。通过设置LCD1602的命令和数据,可以实现在LCD1602上显示数字和运算符号等内容。同时,通过设置光标位置,可以实现在不同位置显示不同内容。
三、代码实现
下面是使用STC89C52单片机设计计算器的完整代码:
#include < reg52.h > #include < intrins.h > #define uint unsigned int #define uchar unsigned char sbit beep = P2^3; // 蜂鸣器引脚 sbit RS= P1^0; // LCD1602 串行/并行选择引脚 sbit RW = P1^1; // LCD1602 读/写控制引脚 sbit E = P1^2; // LCD1602 使能引脚 uchar num1 = 0; // 第一个输入数字 uchar num2 = 0; // 第二个输入数字 uchar result = 0; // 计算结果 void Delay(uint ms) { uint i; while (ms--) { for (i = 0; i < 122; i++) ; } } void Write_Command(uchar com) // 向 LCD1602 发送命令 { RS = 0; RW = 0; E = 1; P0 = com; _nop_(); E = 0; Delay(5); } void Write_Data(uchar dat) // 向 LCD1602 发送数据 { RS = 1; RW = 0; E = 1; P0 = dat; _nop_(); E = 0; Delay(5); } void Init_LCD1602() // 初始化 LCD1602 显示屏 { Write_Command(0x38); Write_Command(0x0c); Write_Command(0x06); Write_Command(0x01); Delay(5); } uchar Read_Key() // 读取矩阵键盘输入的数字 { uchar key_num = 0xff; // 初始化为无效值 P3 = 0xf0; // 第一步:P3.0~P3.3 输出 0,P3.4~P3.7 输出 1 if (P3 != 0xf0) // 若检测到有按键按下,则进入第二步 { Delay(5); // 延时一段时间,消除抖动 if (P3 != 0xf0) // 再次检测是否仍然有按键按下 { switch (P3) // 根据按键的位置确定输入的数字 { case 0xe0: key_num = 0; break; case 0xd0: key_num = 1; break; case 0xb0: key_num = 2; break; case 0x70: key_num = 3; break; } P3 = 0xff; // 复位 P3 口的状态 } } return key_num; // 返回输入的数字 } void main() { Init_LCD1602(); // 初始化 LCD1602 显示屏 Write_Command(0x80); // 光标移到左上角 Write_Data("0"); // 默认显示 0 while (1) { num1 = Read_Key(); // 读取第一个数字 if (num1 != 0xff) // 若第一个数字有效,则进行第二步 { beep = 1; // 蜂鸣器响起 Delay(10); // 延时一段时间,与蜂鸣器发声时间相匹配 beep = 0; // 蜂鸣器停止响起 Write_Data(num1 + "0"); // 在 LCD1602 显示屏上显示输入的第一个数字 num2 = Read_Key(); // 读取第二个数字 if (num2 != 0xff) // 若第二个数字有效,则进行第三步 { beep = 1; // 蜂鸣器响起 Delay(10); // 延时一段时间,与蜂鸣器发声时间相匹配 beep = 0; // 蜂鸣器停止响起 Write_Data(num2 + "0"); // 在 LCD1602 显示屏上显示输入的第二个数字 result = num1 + num2; // 进行加法运算 Write_Data("="); // 在 LCD1602 显示屏上显示“=” Write_Data(result + "0"); // 在 LCD1602 显示屏上显示计算结果 } } } }程序使用矩阵键盘输入数字,并在LCD1602显示屏上显示输入的数字和计算结果,每次按键按下蜂鸣器会响一声,反馈按键的按下效果。其中,使用P3口读取矩阵键盘输入的数字,使用P2.3口控制蜂鸣器的发声,使用P1口控制LCD1602显示屏的操作。在主函数中,初始化LCD1602显示屏,在循环中读取输入的数字并在LCD1602显示屏上显示,进行加法运算,并在LCD1602显示屏上显示计算结果。
四、总结
设计采用STC89C52单片机设计了一款基本的四则运算计算器,通过矩阵键盘输入数字,在LCD1602显示屏上显示输入的数字和计算结果,同时每次按键按下蜂鸣器会响一声,反馈按键的按下效果。
审核编辑:汤梓红
标签:
推荐文章
- 基于51单片机设计的计算器 环球微动态
- 市场指导价52.18万元 奥迪S4 Avant正式上市 聚看点
- 江映蓉现场版坏天使_坏天使 江映蓉演唱歌曲_天天速看料
- 【环球新要闻】女性内分泌失调挂什么科(月经不调看哪个科室)
- 名记:比尔的合同让他的交易很难操作 若真的发生将在选秀大会前
- 天天视讯!云菲菲殇雪mp3下载
- 区块链游戏平台【Argus Labs】获得1000万美元种子轮融资,Haun Ventures领投_微动态
- 【天天快播报】苹果皮,来电闪光贴……被时代抛弃的这些电子产品,你用过吗?
- 守住钱袋子 这场活动教你如何防范非法集资
- 全国“安全宣传咨询日”主场活动在武汉举行-速读
- 海马汽车:以电动车为突破口进入印度市场
- 余额宝一万元一天收益多少?余额宝跟零钱通哪个收益高? 环球今热点_每日聚焦
- 全球简讯:2023年一季度银行业消费投诉情况出炉:个人贷款业务占比57%系重灾区!国有大行投诉量大涨2.5万件居榜首
- 互联网保险驶入发展快车道,轻松集团科技创新实现行业领跑
- 每日信息:女子驾车时回头制止后排孩子玩手机 转身时车已冲出路外
- 【新视野】前列腺癌藏得深!体检别忘了这些早筛项目
- 央行“降息”存款利率又下降 债券基金产品配置价值凸显
- 一溪贯山水 连村万亩田——乡村振兴的“惠安模式”
- 天天新资讯:售11.58万元,五菱佳辰混动版正式上市
- 河北“新”场景|沧州:向着高质量发展不断迈进_世界通讯
- 安保迪HID推出技术伙伴项目,致力于共同开发移动解决方案
- compatriot意思_compatriot
- 罕见!莲花池公园一周内发现4株并蒂莲,预计花期3天
- 今日关注:俄罗斯发生一起H5N1型高致病性禽流感疫情
- 黄金投资价值逐步显现
- 快看:希腊附近海域沉船事故死亡人数升至79人
- 两次收到问询函后再收监管工作函 汉马科技被指多次调整去年年报财务数据
- 博雅生物(300294):6月14日北向资金增持11.63万股
- 跳桥救人 彭清林被授予“杭州好人”称号
- 中国旭阳集团(01907.HK):6月14日南向资金增持134.5万股
- Shams:奇才和比尔商讨为后者寻求交易!
- 天天新消息丨成龙最新电影急先锋_成龙最新电影
- 当前速讯:瞿怎么读_rhongomyniad怎么读
- 最新资讯:安心老去
- 如何节约用电10条英语 如何节约用电10条|当前看点
- 全球新消息丨江苏麦收基本结束 机收进度99%以上
- 热文:珍稀野生动物频亮相 我国生态环境持续向好
- 我州再发高森林草原火险预警,6月13日——6月16日,4县为黄色预警区域_世界新动态
- 世界热推荐:连云港景区优待证免门票吗_连云港景区
- 【环球报资讯】厦门国贸地产拟发行10亿元公司债 利率询价区间为3.80%-4.80%
- 天天时讯:苹果iOS 17系统未明确开放侧载 高管回应绝了
- 2023吉林高考成绩查询时间 吉林高考成绩查询几月几号开始
- economic recovery_erecovery
- 世界微资讯!十的因数是什么 十的因数有什么
- 环球观察:基础化工行业简评报告:丁酮、尿素涨幅居前,下游需求未见显著改善
- 广州石化新建水体防控池投用|天天热议
- 安徽将出台《智慧住宅工程建设标准》
- 天天热议:饿肚子反而更扛老?!最新研究表示:女明星可能蒙对了…
- 环球即时:最高人民检察院发布指导性案例助力防范化解金融风险
- 世界今日报丨起诉离婚需要多少费用多少,一般起诉离婚多少费用
- 江苏省宿迁市发布高温黄色预警
- 全球实时:《崩坏星穹铁道》导览员募集娜塔莎任务方法
- 金宇地产挂牌转让天津方金物业25%股权,底价20万元 独家
- 全球速看:众多体育场馆开启“夜场模式” 激活城市“夜消费”
X 关闭
最新资讯
- 蚕宝宝也住“楼房”?探访安徽岳西养蚕家庭工厂 看点
- 世界滚动:【透视】日媒:债务上限协议印证了美国政治的丑恶!
- 龙珠超剧场版:官方公布了弗利萨父亲的实力,真的很同情克鲁德王 全球报资讯
- 帽儿山国家森林公园关于实施无人机施药防治林业有害生物的公告 通讯
- 环球精选!无影灯下㉒丨急!93岁老人下肢动脉多处闭塞
- 毛霉腐乳的制作方法_腐乳的制作方法
- 【天天热闻】出血是多少毫米 出血尺寸是什么意思
- 建设银行企业网上银行登录官网_建行企业网上银行登录官网_快资讯
- 农业农村部:加强科学施肥应用技术集中攻关 分区域、分作物集成推广科学施肥技术模式
- 七档双离合怎么用(七档双离合车怎么开)-天天微头条
- 热点聚焦:【武汉成交日报】06月13日新建商品住房成交297套
- 之梦txt电子书论坛_TXT之梦电子书论坛txt电子书免费下载这个网站为什么打不开
- 【环球时快讯】重庆将建国际火锅村 集聚全球特色火锅资源
- 智联警务,鸿以安远|鼎桥再出征,见证安博盛况
- 环球滚动:人民币对加币汇率今日查询2023年6月13日
- 2023年爱心暑托班来啦~6月20日开启报名!奉贤有这些办班点→_天天看热讯
- 当前滚动:中海博户外区域今晚起向公众免费开放
- 每日关注!复星医药(02196):复星医药产业和复星健康获授的转授信额度分别为等值2亿元
- 环球热资讯!街机老虎水果机游戏_玩老虎水果机赢钱技巧
- 微信视频聊天怎么录制下来_微信视频聊天怎么录制_全球资讯
- 世界热文:手机对中学生的利和弊周记(手机对初中生的危害的六百字作文)
- 夹克衫的英文_短裤的英文 看热讯
- vlookup提示无效引用单元格不能位于256列 EXCEL中用VLOOKUP为什么下拉引用的数值一样
- 毕马威中国:高息环境下净息差扩大将继续利好香港银行业 全球快看
- 卓创资讯:成品油限价压线下调 多数地区95#汽油进入7元时代 当前通讯
- 网传杭州师范大学一女大学生怀疑同校男生尾拍后称认错人,学校:双方已和解_环球快播报
- 简易程序定增“吃香” 再融资“活水”润泽中小企业
- 普兰店区气象局发布雷电黄色预警【III级/较重】【2023-06-13】
- 异动快报:天地在线(002995)6月13日11点4分触及涨停板
- 【全球独家】国家发改委:职业教育产教融合是一个“小切口”
- 如何剥鹌鹑蛋_剥鹌鹑蛋小窍门
- 最新国家级一流本科课程名单公布!广西有这些
- 世界焦点!非遗会客厅、国潮民乐音乐会……第十九届文博会深圳书城龙岗城分会场启幕
- 手机找不到无线网络怎么办(wifi明明开着却找不到)
- 重庆燃气:6月12日融资买入111.04万元,融资融券余额6139.76万元 世界快资讯
- 瑞银宣布完成对瑞信收购-天天播资讯
- 主祷文内容图片_主祷文内容_当前速读
- 山西电机按下高质量发展“快进键”
- 当前快播:热搜!好不容易抢到的“五月天” 被强制退票?平台回应!
- 新城发展(01030.HK):6月12日南向资金增持293.2万股
- 激光打印机打印不清楚了怎么办_激光打印机打印不清楚_新消息
- 新华时评:为惩治网暴进一步织密法网
- 湖湘文化代表人物近代(湖湘文化代表人物)
- 天天头条:在废弃采石场里开咖啡店书店小剧场,浙江山区小县被年轻人称为“小敦煌”
- 新栽的杨树苗什么时间浇水_一仆二主的杨树苗的扮演者是谁
- 环球热文:东莞看脱发哪家医院好[线上预约]东莞治疗脱发哪里好
- 焦点!贵阳经开区2023年模拟求职大赛启动
- 赣锋锂业(01772):2021年股票期权激励计划部分股票期权注销完成 全球观速讯
- 每日速看!中铁文旅健康产业公司开展“迎大运,进社区,送健康”爱心义诊服务活动
- 天天速看:预告:发改委将就推进实施职业教育产教融合赋能提升行动召开新闻发布会
X 关闭





