C语言实现出租车计价器程序设计
需积分: 0 112 浏览量
更新于2024-09-13
收藏 55KB DOC 举报
"该资源主要涉及C语言程序设计,具体是出租车计价器的实现。程序中包含了一些基本的硬件操作,如外部中断、数码管显示、IIC通信等,用于与硬件交互实现计价功能。"
在C语言程序设计中,这个示例代码用于创建一个出租车计价器的模拟系统。以下是相关知识点的详细说明:
1. **头文件的包含**:
- `#include<reg52.h>`:这是51系列单片机的寄存器定义头文件,包含了对P0、P1、P2、P3等端口的操作。
- `#include<intrins.h>`:提供了51单片机的一些内联函数,如 `_nop_()` 用于插入空操作。
2. **宏定义**:
- `#define uchar unsigned char` 和 `#define uint unsigned int` 分别定义了无符号字符型和无符号整型的别名,简化代码中的类型声明。
- `#define delayNOP() {...}`:定义了一个延迟函数,用于在单片机中插入几个空操作,实现简单的延时效果。
3. **变量和常量定义**:
- `ucharcodetable[]`:这是一个字符显示表,用于将数字转换为7段数码管显示的编码。
- `sbit exter=P3^3;`:定义了一个外部中断引脚,用于响应外部事件。
- 其他`sbit`变量定义了P1和P3口的不同位,用于控制数码管和按键输入。
4. **按键处理**:
- `sbit key0`, `key1`, `key2`, `key3` 分别对应清零、切换/加、减和功能键,通过P1口的相应位进行读取。
5. **数码管控制**:
- `sbit p30` 至 `sbit p37` 用于控制数码管的各位显示,通过P3口的不同位驱动数码管的7个段。
6. **IIC通信**:
- `sbit SDA` 和 `sbit SCL` 定义了IIC总线的两条数据线,用于与EEPROM等外设通信。
- `start()`, `stop()`, `respons()` 函数分别实现了IIC协议的开始、停止和应答信号。
7. **延时函数**:
- `void delay(uint x)` 使用嵌套循环实现延时,时基为1ms,通过调整参数可以控制不同时间长度的延时。
8. **EEPROM读取**:
- `uchar read_byte()` 函数用于从EEPROM读取一个字节的数据,通过IIC协议进行通信。
9. **变量声明**:
- `uint zongjine, licheng, dengdai, danjia1, danjia2, danjia3, danjia, qibu;` 等变量用于存储计价器的相关数据,如总金额、里程、等待时间等。
10. **程序流程**:
- 这个程序可能会包含初始化、按键检测、计算计费、数码管显示等多个模块,根据按键操作更新计费信息,并通过数码管实时显示。
这个出租车计价器的C语言程序设计涵盖了单片机编程的基本元素,包括硬件接口、中断处理、通信协议以及数据处理。通过对这些知识点的理解和应用,可以实现一个简易的硬件控制和数据处理系统。
2021-08-02 上传
2022-07-09 上传
545 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
u010797145
- 粉丝: 0
- 资源: 1
最新资源
- 多传感器数据融合手册:国外原版技术指南
- MyEclipse快捷键大全,提升编程效率
- 从零开始的编程学习:Linux汇编语言入门
- EJB3.0实例教程:从入门到精通
- 深入理解jQuery源码:解析与分析
- MMC-1电机控制ASSP芯片用户手册
- HS1101相对湿度传感器技术规格与应用
- Shell基础入门:权限管理与常用命令详解
- 2003年全国大学生电子设计竞赛:电压控制LC振荡器与宽带放大器
- Android手机用户代理(User Agent)详解与示例
- Java代码规范:提升软件质量和团队协作的关键
- 浙江电信移动业务接入与ISAG接口实战指南
- 电子密码锁设计:安全便捷的新型锁具
- NavTech SDAL格式规范1.7版:车辆导航数据标准
- Surfer8中文入门手册:绘制等高线与克服语言障碍
- 排序算法全解析:冒泡、选择、插入、Shell、快速排序