单片机实现电子转速里程计程序设计

需积分: 47 4 下载量 165 浏览量 更新于2024-09-10 1 收藏 5KB TXT 举报
"该资源是基于单片机的电子转速里程表的程序代码,主要使用了8051系列单片机(如AT89C51),并涉及到与25045芯片和LCM1010显示器的通信。程序包括了对单片机的初始化设置、定时器配置、中断服务函数以及与外部设备的数据交换功能。" 这篇代码主要用于设计一个基于单片机的电子转速里程表。以下是对主要知识点的详细说明: 1. **单片机编程**:程序使用C语言编写,兼容8051系列单片机,这是嵌入式系统中最常见的微控制器之一。`#include<reg51.h>`和`#include<absacc.h>`头文件提供了对单片机寄存器的访问。 2. **硬件接口**:P1口的某些引脚被定义为与外部设备(如25045芯片)通信的接口,如串行时钟输入(SCK)、串行输出(SO)、串行输入(SI)和片选(CS)。 3. **25045芯片**:这是一个可能的EEPROM或存储器芯片,用于存储数据。程序中包含了一系列函数,如`Write25045State`和`Read25045State`,用于向该芯片写入和读取状态信息。 4. **定时器配置**:`init`函数中,TMOD寄存器被设置为模式1,使T0和T1分别工作在16位定时中断和6位定时中断模式。TL0和TH0的初始值配置了定时器0的溢出时间,用于产生周期性中断。 5. **中断系统**:TR0被设置为1,开启定时器0中断,而外部中断1(INT1)的相关设置允许边沿触发中断。中断服务函数`Int1`处理脉冲计数和里程计算,`Timer0`则用于更新LCD显示。 6. **计数器和里程计算**:`pulsdate`变量用于记录脉冲数,`lengthsdate1`和`lengthsdate2`用于存储当前里程的整数和小数部分,`totallength`记录总里程。 7. **LCM1010显示器**:`Writelcm1010`函数负责将数据写入LCM1010液晶显示屏,但实际实现部分未给出。根据上下文,这个函数可能用于显示速度或里程信息。 8. **初始化函数**:`init`函数负责设置单片机的工作模式、定时器参数和中断状态。 9. **中断服务函数**:`Int1`中断服务函数在接收到外部中断1时执行,对脉冲进行计数,并更新里程信息。`Timer0`中断服务函数在定时器0溢出时执行,更新LCD显示屏上的数值。 通过这些知识点,我们可以理解到这个程序如何利用单片机处理来自传感器的脉冲信号,计算转速和里程,并通过LCD显示器显示相关信息。