出租车计价器程序设计与实现

需积分: 23 1 下载量 160 浏览量 更新于2024-09-09 收藏 9KB TXT 举报
"这是一个基于计算机控制课程的出租车计价器程序示例,主要涉及单片机编程、LCD显示、按键输入以及计时功能。程序使用C语言编写,利用了51系列单片机的中断系统和定时器进行时间计算。" 在出租车计价器程序中,以下是一些重要的知识点: 1. **单片机编程**:程序是基于单片机(如51系列)的,因此需要对单片机的内部结构和指令集有一定的了解。例如,`#include<reg52.h>`导入了51系列单片机的寄存器定义,使得可以直接操作这些寄存器。 2. **头文件**:程序中包含了几个关键的头文件,如`<string.h>`用于字符串处理,`<intrins.h>`包含内联汇编函数,`<absacc.h>`允许访问特殊功能寄存器等。 3. **数据类型定义**:`uchar`、`uint`和`ulong`分别定义了无符号字符型、无符号整型和无符号长整型,这些都是在单片机编程中常用的数据类型。 4. **I/O口定义**:程序通过定义`sbit`来指定单片机的特定引脚作为输入或输出,例如`sbitP1_0=P1^0;`将P1.0引脚设为输出,用于显示信息。 5. **LCD显示**:程序包含了与LCD显示器交互的函数,如`lcd_init()`初始化LCD,`display_string()`和`display_char()`用于在LCD上显示字符串和字符。`LCD_DATAP0`定义了LCD的数据线连接到P0口,`LCD_BUSY0x80`表示检测LCD是否忙的位。 6. **按键输入**:`sbit key_c=P1^1;`和`sbit key_on=P1^2;`定义了按键输入,可以用来触发计费或其他功能。 7. **定时器应用**:`T0count`变量用于存储定时器T0的计数值,这通常用于实现精确的时间间隔,如计时或周期性任务。 8. **计时功能**:程序可能使用定时器来跟踪时间,例如`timecount`变量记录时间,`hour`、`minute`和`second`用于显示小时、分钟和秒。 9. **中断系统**:中断是单片机处理外部事件的关键机制,程序中可能有中断服务例程用于处理定时器中断,从而更新时间或计费。 10. **数据存储**:`WD[6]`、`time[6]`和`zj[6]`数组可能用于存储行驶距离、时间和费用的数字表示。 11. **计费逻辑**:`zjdat`变量用于存储总费用,`Xdat`用于存储行驶的距离,`Xdat_pre`可能是前一次的距离值,用于计算行驶增量。 12. **程序流程**:`key_san()`函数可能是处理按键扫描的函数,用于根据乘客的行程触发计费逻辑。 这个程序结合了单片机硬件控制、中断处理、LCD显示、按键输入以及计费算法,构成了一个基本的出租车计价器系统。在实际应用中,可能还需要考虑更多的因素,如异常处理、电源管理以及用户界面的优化。