C51单片机基础计算器程序设计与实现
需积分: 9 201 浏览量
更新于2024-09-14
收藏 38KB DOC 举报
本篇文档介绍了一个基于C51编写的单片机计算器程序,它主要利用了8051系列单片机的特性来实现基本的加减乘除功能。该程序的核心组成部分包括数据结构定义、中断服务函数以及按键处理和结果显示。
首先,程序引入了必要的头文件,如`<reg52.h>`、`<intrins.h>`、`<stdio.h>`、`<1602.h>`和`<math.h>`,它们分别为硬件寄存器定义、C语言内联函数库、标准输入输出库、1602液晶显示驱动以及数学函数库。这些库文件为程序提供了硬件操作和数学计算的基础支持。
定义了一些字符数组,如`codeshow1[]`用于存储数字和运算符的显示字符,`codekey1[]`则对应按键的物理位置,以及`codeKey[]`用于存储按键的映射代码。`mode[]`和`show[]`数组可能用于存储模式和临时显示结果,`ch1[]`可能是用于处理数字和运算的结果。
程序中定义了几个重要的函数:
1. `T0Server()`:此函数设置定时器0为中断服务,可能是为了在50毫秒或1秒后执行特定操作。
2. `delay_50ms()` 和 `delay_1s()`:这两个延时函数分别用于实现50毫秒和1秒的定时,通过调整定时器的值实现。
3. `delay(uchari)`:这是一个通用的延时函数,接受一个整数参数表示需要的延长时间,通过循环计数器实现延时。
4. `up()`:这个函数用于读取P0口的状态,以便获取按键输入,返回按键的实际代码。
`jilu()` 函数是关键部分,它负责处理用户按键输入。通过`KeyV`变量获取当前按键,然后与`codekey1[]`数组中的键位进行比较。如果匹配,则根据键位类型执行相应的操作。当遇到等号(=)或者连续输入超过15位数字时,设置结束标志`S`,同时更新显示结果。
在处理完用户输入后,可能会调用其他函数来更新显示或进行计算。例如,如果`S`标志被置位,可能意味着计算已结束,此时需要将结果显示在液晶屏上,或者根据计算结果进行下一步操作。
这个单片机计算器程序利用C51语言编写,通过按键输入实现基本的数学运算,并能显示结果。通过定时器实现延迟处理,提高了程序的响应性和准确性。整个程序结构紧凑,体现了单片机编程的基本原理和实践应用。
2013-09-20 上传
2019-05-25 上传
2021-06-18 上传
2013-09-06 上传
146 浏览量
2010-01-06 上传
2011-05-06 上传
点击了解资源详情
点击了解资源详情
wgm_wgm
- 粉丝: 1
- 资源: 2
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍