51单片机实现计算器程序设计

需积分: 36 4 下载量 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单片机硬件控制、中断系统、液晶显示以及简单人机交互的理解。