89C51单片机计算器C语言程序源代码

需积分: 11 4 下载量 57 浏览量 更新于2024-09-15 收藏 4KB TXT 举报
"这篇资源是关于使用C语言编写的一个基于89C51单片机的计算器程序。程序中没有包含仿真部分,但提供了核心计算逻辑和显示功能的实现。" 在C语言编程中,89C51单片机是一种常见的微控制器,常用于嵌入式系统开发。该计算器程序的实现主要涉及以下几个关键知识点: 1. **头文件#include<reg51.h>**:这是89C51单片机专用的头文件,包含了该芯片寄存器的相关定义,如端口、定时器等,使得程序员可以直接操作这些硬件资源。 2. **变量声明**:程序中声明了各种变量,如`longint sum`用于存储计算结果,`unsigned char`类型的数组`show_temp`用于显示数字,以及`key[]`用于接收按键输入等。变量的数据类型选择要考虑存储需求和运算效率。 3. **主函数main()**:程序的入口点,无限循环结构`while(1)`确保计算器持续运行,内部调用了`keys()`处理按键输入和`show()`进行数据显示。 4. **子函数keys()**:虽然代码未给出此函数的详细内容,但根据描述,这个函数应该是用来读取并处理按键输入的,可能涉及到键盘扫描和中断处理。 5. **子函数show()**:用于驱动LED显示器显示计算结果。`depart()`可能是分离或转换数字到显示格式的函数。`count_w`用于跟踪显示的位数,`dx[]`和`wx[]`数组分别存储了7段LED显示器的段码。通过改变`P1`和`P3`端口的值来控制LED显示器的亮灭,模拟出数字和符号的显示。 6. **延迟函数delay()**:在单片机程序中,往往需要延时函数来控制显示的闪烁频率或者等待某些操作完成。这个函数通常用循环结构实现,具体延时时间与CPU频率有关。 7. **状态标志变量**:如`error`、`negedge`等,用于标记程序状态,如错误发生、负数表示等。这些标志变量在程序中起到条件判断的作用,影响着程序流程。 8. **二进制位操作**:如`sbitsound=P2^0;`,这行代码将P2口的第0位设置为一个名为`sound`的可位寻址位,常用于控制单片机上的某个特定功能,如蜂鸣器发声。 9. **显示处理**:通过`P1`和`P3`端口的值,配合`dx[]`和`wx[]`段码表,程序实现了数字和符号的7段LED显示。根据`count_w`的值决定显示几位数,`else P3=wx[8]`部分是为了在无数字显示时显示空位。 10. **异常处理**:当`error`标志为1时,程序会显示特定的错误状态,而`negedge`则用于判断和显示负数的符号。 这个C语言程序展示了如何在89C51单片机上实现一个基本的计算器功能,包括输入处理、计算逻辑、结果显示等,同时体现了对硬件资源的直接操作和控制。对于学习单片机编程和C语言应用的人来说,这是一个很好的实践案例。