大连将30个中风险地区调整为低风...
大连将30个中风险地区调整为低风险地区 ...
计算器是一种常见的电子产品,广泛应用于各个领域。而基于单片机的计算器设计则是学习单片机的一个重要环节。本项目基于STC89C52单片机设计了一款基本的四则运算计算器。
(资料图片仅供参考)
项目里采用了单片机的IO口、定时器和LCD1602显示屏等技术原理。其中,IO口用于控制矩阵键盘、蜂鸣器和LCD1602显示屏等外设;定时器用于进行键盘扫描,确保能够准确地捕捉到按键的输入;LCD1602显示屏用于显示输入的数字和计算结果。
设计思路主要分为三个部分:键盘扫描、计算器运算和LCD1602显示。在键盘扫描部分,通过定时器中断的方式进行键盘扫描,判断是否有按键按下,并将按键对应的数字保存到缓存区中。在计算器运算部分,采用栈的数据结构进行计算器运算,当按下运算符号时,将之前输入的数字压入栈中,等待下一次输入。当按下“=”时,从栈中取出数字进行计算,并将结果保存到栈中。最后将结果从栈中取出,显示在LCD1602显示屏上。在LCD1602显示部分,通过设置LCD1602的命令和数据,可以实现在LCD1602上显示数字和运算符号等内容。
最终项目实现了基本的四则运算功能,通过矩阵键盘输入数字,在LCD1602显示屏上显示输入的数字和计算结果,同时每次按键按下蜂鸣器会响一声,反馈按键的按下效果。
本设计利用STC89C52单片机,设计一款能够进行基本四则运算的计算器,通过矩阵键盘输入数字,在LCD1602显示屏上显示输入的数字和计算结果,同时每次按键按下蜂鸣器会响一声,反馈按键的按下效果。
本设计所需的硬件包括STC89C52单片机、LCD1602显示屏、矩阵键盘、蜂鸣器、电源等。其中,矩阵键盘采用4行4列的设计,通过4个IO口进行控制。LCD1602显示屏采用8位并行方式,通过6个IO口进行控制。蜂鸣器通过一个IO口进行控制。
本设计的软件主要分为三部分:键盘扫描、计算器运算和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显示屏上显示输入的数字和计算结果,同时每次按键按下蜂鸣器会响一声,反馈按键的按下效果。
审核编辑:汤梓红
关键词:
6月15日,5月国民经济多项指标出炉。数据显示,5月份受疫情影响,消费业态承压明显,但同时,城镇调查失业率出现小幅下降,工业生产由降转
北京商报 2022-06-20中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金
2021-11-24新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。
2021-11-2411月23日晚,朝阳区来广营地区清苑路第五社区华贸城7号院6号楼正式解除管控。 11月23日,华贸城7号院6号楼583户管控居民进行了第四
2021-11-2411月23日大连市新冠肺炎疫情防控总指挥部发布,大连市严格落实新冠肺炎疫情防控各项措施,至2021年11月23日24时,大连市庄河市城关街道
2021-11-24根据云南省普洱市哀牢山 "11·15 "联合指挥部通报,2021年11月23日21时50分,4名遇难人员遗体已移交其所在单位。 【编辑:叶攀】
2021-11-24中新网银川11月23日电 (李佩珊 姚舒玲)“在宁夏,每6个农村妇女中就有1个接受过创业担保贷款项目的资金支持。”11月23日,宁夏妇联党
2021-11-246月15日,5月国民经济多项指标出炉。数据显示,5月份受疫情影响,消费业态承压明显,但同时,城镇调查失业率出现小幅下降,工业生产由降转
北京商报 2022-06-20中新经纬11月24日电 (张澍楠)虽说三百六十行,行行出状元,但行业之间的差距,仍然很大。究竟什么行业“最香”?被视为“高富帅”的金
2021-11-24新华社郑州11月23日电(记者冯大鹏)在“狗咬人”舆情发酵后,23日晚,河南安阳通报了对涉“狗咬人”事件责任单位和责任人的处理决定。
2021-11-24根据云南省普洱市哀牢山 "11·15 "联合指挥部通报,2021年11月23日21时50分,4名遇难人员遗体已移交其所在单位。 【编辑:叶攀】
2021-11-24中新网银川11月23日电 (李佩珊 姚舒玲)“在宁夏,每6个农村妇女中就有1个接受过创业担保贷款项目的资金支持。”11月23日,宁夏妇联党
2021-11-24中新网拉萨11月23日电 (记者 冉文娟)第三届拉萨市旅游行业服务技能大赛决赛11月23日精彩举行。百余名选手经过层层选拔,经历初赛、网
2021-11-24中新网长春11月23日电 (郭佳 吴林锡)东北虎豹国家公园23日全面启动2021-2022年今冬明春清山清套·打击乱捕滥猎专项行动。该行动旨在
2021-11-24大连将30个中风险地区调整为低风险地区 ...
中新网成都11月22日电 (记者 刘忠俊)四...
(北京冬奥会)北京规划超270公里冬奥道路网...
中新网杭州11月22日电(郭其钰 张益聪)“...
中新网北京11月22日电 (记者 杜燕)今天...
山西长子“羊倌”养羊20余年 带动700余户养殖户发“羊财”
上海首个“两山”实践创新基地成功创建
广西医科大一附院向越南捐赠医疗防疫物资
黄埔海关破获案值5.5亿元走私进口二手挖掘机案
黄河内蒙古段今年首次出现流凌
Copyright 2015-2022 全球仓储网版权所有 备案号:豫ICP备20009784号-11 联系邮箱:85 18 07 48 3@qq.com