51单片机实现计算器程序设计
需积分: 36 157 浏览量
更新于2024-09-13
1
收藏 46KB DOC 举报
"51计算器程序的源代码"
在给定的51计算器程序中,主要涉及以下几个关键知识点:
1. **头文件的包含**:程序开头包含了几个重要的头文件,如`<reg52.h>`,它是针对51系列单片机的寄存器定义头文件,提供了对I/O端口、定时器等硬件资源的操作;`<intrins.h>`包含了51单片机的内联汇编函数;`<string.h>`、`<math.h>`和`<stdio.h>`则分别提供了字符串处理、数学运算和标准输入输出等功能。
2. **数据类型定义**:`uchar`和`uint`是用户自定义的数据类型别名,分别代表无符号字符型和无符号整型。在51单片机中,这些数据类型有助于节省存储空间和提高代码可读性。
3. **变量声明**:程序中定义了多个变量,如`key`用于存储按键状态,`sym`用于表示符号(加、减、乘、除),`sumsz`用来存储计算结果的字符串形式,`adders`作为计数器,`sum`、`number1`和`number2`则是用于计算的浮点数变量,`flag`作为标志位,`lcdrs`、`lcdwr`和`lcden`是液晶显示的控制IO口。
4. **液晶显示相关的定义**:`lcd_s[]`定义了一个字符数组,包含了0-9数字、运算符和点、等号等字符,用于在液晶屏上显示。`sbit`关键字定义了三个特殊功能位,分别对应液晶的读、写和使能IO口,用于与液晶显示器进行通信。
5. **函数声明**:`keyscan()`用于扫描按键,`delayms()`是毫秒级延时函数,`write_com()`和`write_data()`分别用于向液晶发送命令和数据,`init()`初始化液晶,`delay(int z)`是更精确的延时函数,`buzz()`可能是蜂鸣器控制函数,`yuans()`和`clear()`可能分别用于处理运算和清屏。
6. **主函数`main()`**:程序的入口点,首先调用`init()`初始化液晶,然后进入无限循环,不断地调用`keyscan()`来检测并处理按键输入。
7. **键盘扫描函数`keyscan()`**:通过不断检测P1口的值变化来识别按键是否被按下,并根据按键的不同状态执行相应的操作,如读取按键值、执行运算等。
8. **其他辅助函数**:虽然没有给出具体实现,但可以推测`delayms()`和`delay()`是用于实现延时的函数,`buzz()`可能控制蜂鸣器发出声音以提供用户反馈,`yuans()`和`clear()`可能用于处理计算过程和清空显示。
这个计算器程序通过51单片机实现了基本的算术运算功能,并通过液晶屏幕显示输入和结果,具有一定的实用价值。通过学习和理解这个程序,可以加深对51单片机硬件控制、中断系统、液晶显示以及简单人机交互的理解。
2018-07-18 上传
2019-04-12 上传
2011-12-07 上传
2018-01-23 上传
2009-10-23 上传
2013-10-27 上传
130 浏览量
canithinka
- 粉丝: 0
- 资源: 8
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码