C语言实现出租车计价器程序设计

需积分: 0 1 下载量 157 浏览量 更新于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语言程序设计涵盖了单片机编程的基本元素,包括硬件接口、中断处理、通信协议以及数据处理。通过对这些知识点的理解和应用,可以实现一个简易的硬件控制和数据处理系统。