用单片机实现的脉冲编码传感器

发布者:数字冒险最新更新时间:2006-08-16 来源: 单片机及嵌入式系统应用关键字:单片机  解码  计价器 手机看文章 扫描二维码
随时随地手机看文章

引 言
  随着社会的发展,出租车成为人们生活中非常方便且较普遍的交通工具,但出租车计价器却相对较为落后。在过去,出租车采用机械式计价器,用齿轮比的方式来计算出租车所跑的里程数,并由里程数来换算车费。但是机械齿轮体积较大,计算不是很准确,而且容易磨损。后来又采用了传感器方式,利用传感器接收车的跑动信息,从而计算里程数和车费。但此方法通常使干扰信号也能产生计数脉冲,所以也不完善。笔者引用单片机技术,使用编码和解码信息传递方式来完成计价器计数脉冲的形成。单片机可以很精确的检测到传感器信号,这样计价就会非常准确。完成此装置所需器件简单,成本非常低,技术上也容易实现。

1 系统原理
  系统框图如图1所示,本文主要介绍虚线框内模块的设计。出租车驱动轮转数与转轴转数的传动比是一定的,而转轴转动时带动一小磁体转动,其传动比也是一定的,小磁体每转动一周就和磁感应传感器正对一次,磁感应传感器就会产生一个大约20 ms的低脉冲,可以通过计算磁感应传感器产生的低脉冲数来计算出租车跑的里程数及相应的车费。

  编码器的单片机通过一个I/0口来检测磁感应传感器信号,当确定为传感器产生的信号时,就通过另一个I/O口向解码器的单片机发送一组编码,而解码器的单片机则首先判断当前准备接收的数据是编码器发送的编码还是解码写入器发送的解码。当判断是解码写入器发送的解码时,解码器的单片机接收此解码,并利用12c总线协议将解码保存到E2PROM中去;当判断是编码器发送的编码时,解码器的单片机先接收此编码,然后读出自己E2PROM中的解码,将其与接收到的编码相比较,如果相同则解码器单片机通过一个I/0口向计价装置发出计价脉冲,否则不发出计价脉冲。注意:这里每一辆出租车计价器的编码和解码都是不同的,这样有利于出租车的管理以及防止计价器的盗用,解码器中的解码是使用解码写入器写入其E2PRoM中去的。每辆出租车计价器都具有一个编码器和一个解码器,而所有的出租车计价器都共用一个解码写人器。也就是说,在计价器卖出之前,用同一个解码写入器为所有的计价器的解码器写入不同的初始解码。写入初始解码以后,计价器就不再需要解码写入器了,除非此计价器坏掉需要重新更换解码器,此时需再用解码写入器给新的解码器写入初始解码。硬件电路设计图如图2和图3所示。


2 系统功能的实现
2.1 传感器

  本系统的编码器部分利用传感器来接收出租车的跑动信号,这里采用的传感器为磁感应传感器,当其与车辆转轴带动的小磁体正对时,传感器的输出引脚便会产生一个约20ms的低脉冲。

2.2编码器

  编码器部分使用的单片机为PIC12C508A,利用PIC12C508A芯片的第4个引脚GP3来检测传感器的输出信号。当检测到确定的传感器信号后,单片机将按一定的时序在其第7个引脚GP0连续发送5个十进制数据(即编码形式为5位十进制数)给解码器,每个数据都是按脉冲方式发送出去的。十进制数是多少,就发送几个低脉冲,发送一个十进制数据所用的时间要保证在255μs以内。其程序流程图如图4所示。

2.3 解码写入器
  解码写入器部分使用的单片机为AT89C51,解码写入器的功能与编码器的功能类似。由于发送的解码要能随时改变,这里可以外接5个小数字键盘,解码写入器要发送的解码可以从5个小数字键盘上获得。为了和编码器发送的编码区别开来,解码写入器需要先发送一个区别字符,使解码器能够识别出当前接收的是编码器还是解码写入器发出的数据。区别字符后面紧跟着的是解码,所有这些数据的发送方式与编码器编码的发送方式完全相同,由AT89C51单片机的P3.4口输出,其程序流程图如图5所示。

2.4 解码器
  
这部分采用的单片机是PIC12CE5C18,其内部有E2PROM。可以利用I2c协议随时从E2PROM中读出解码或者向E2PROM中写入新的编码。下面介绍工作过程。首先解码器读出内部E2PRoM中00h~04h中的5个十进制数据,分别保存到5个内部数据存储单元中。然后调用接收数据子程序,接收1个数据,并先保存到1个内部数据存储单元中,判断这个数据是否为区别字符10。若不是区别字符,说明现在接收的数据可能是编码器发送的编码,则继续接收后面的4个数据,并保存到4个内部数据存储单元中,将接收到的这5个十进制数据与前面解码器读出的内部E2PROM中00h~04h中的5个十进制数据进行比较,相等则在GP0引脚上发送一个2 ms的低脉冲作为计价脉冲,不相等则重新接收数据。若是区别字符10,说明现在解码写入器要修改解码器的解码,必须马上接收跟在区别字符后面的5个数据,并将这5个十进制数据保存到E2PROM的00h~04h中,覆盖以前的解码。其程序流程图如图6所示,其调用的子程序如图7和图8所示。

结论
  本系统解决了以往计价器计价不准确、使用寿命短等缺点,现在采用以单片机为主控制单元的编码解码技术,使每个出租车的计价器拥有不同的编码,从而防止出租车之间计价器的相互盗用,便于出租车公司对出租车的管理。同时,可以随时对单片机的外围电路进行扩展,并通过软件编程实现本系统的不断升级。

关键字:单片机  解码  计价器 引用地址:用单片机实现的脉冲编码传感器

上一篇:用单片机实现的脉冲编码传感器
下一篇:基于MSP430单片机的微功耗中文人机界面设计

推荐阅读最新更新时间:2024-03-16 12:17

以STM32F407ZGT6单片机来讲解一下扩展外部SRAM
现在的电子系统应用,对SRAM要求越来越高,单片机或ARM内部的RAM越来越不够用。当电脑运行比较卡的时候,我们可以通过给电脑加装内存条来改善电脑的性能。我们可以给单片机外加和内存条效果一样的SRAM来提升单片机的性能。下面以STM32F407ZGT6单片机来讲解一下来扩展外部SRAM。 给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即SRAM芯片)组成的通用标准模块,而STM32直接与SRAM芯片连接。下面就是我们今天的主角SRAM,具体型号为EMI7064的国产EMI SRAM,那么就来看一看EMI7064的管脚图吧。 8pin SOIC 150m
[单片机]
以STM32F407ZGT6<font color='red'>单片机</font>来讲解一下扩展外部SRAM
基于MAX1069的单片机数据采集系统的设计
1 概述 在MCS-51系列不具备I2C总线接口的单片机组成的智能仪器和工业测控系统中,当数据传输速度要求不太高时通过模拟I2C总线可以增加应用系统的接口器件的种类,提高应用系统的性能。 I2C总线,即IC与IC之间沟通的总线,是一种双向二进制总线,即串行时钟线SCL和串行数据线SDA两条线路组成,提高了硬件的效率和简化电路设计。I2C总线接口已经集成在片上,不需要单独设计总线接口和译码电路,电路的互连减少。MAX1069采用单电源供电,利用内部4MHz时钟对其单端模拟输入进行单极性转换。具有自动关断、内部+4.096V基准和兼容于I2C、提供快速及高速模式的2线串行接口。对于不带I2C串行总线接口的MCS-51系列单
[单片机]
基于MAX1069的<font color='red'>单片机</font>数据采集系统的设计
单片机复位程序
今天在网上看到这么一个单片机复位的程序,这个程序据说是一个大三的学生写出来的,不错,写的很有一定的道理,其C编程也达到了一定程度了【小盒子我还是很佩服这个人的】。下面我们来看看这个代码: void main(void) { unsigned char code rst ={0xe4,0xc0,0xe0,0xc0,0xe0,0x32}; // 复位代码 (*((void (*)())(rst)))(); // 执行上一行代码,将rst数组当函数调用 } 第一句定义一个数组rst ,数组内数据就是完成复位功能的汇编机器码,具体对应关系为: clr a == 0xe4、push acc == 0xc0,0xe0、reti
[单片机]
[keil][python][单片机] keil 集成bin文件生成 boot+app合并 dfu生成
一、 首先配置keil执行工具 .file_handling.bat @L !L $K 输出文件名根据自身定义 二、 编写bat脚本(此处需要根据工具存放路径进行更改 xBin2Dfu/merge_file) @echo off set bin=%1 set axf=%2 set keilpath=%3 echo current file:%bin%.bin echo current axf:%axf% echo current keilpath:%keilpath% :: 生成bin %keilpath%ARMARMCCbinfromelf.exe --bin --output=.outbin%bin%.b
[单片机]
[keil][python][<font color='red'>单片机</font>] keil 集成bin文件生成 boot+app合并 dfu生成
ROM与RAM 单片机上电后是如何一步步执行的
ROM:(Read Only Memory)程序存储器 在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、 const 限定符定义的常量数据、startup.asm文件中的代码(类似ARM中的bootloader或者X86中的BIOS,一些低端的单片机是没有这个的)通通都存储在ROM中。 RAM:(Random Access Memory)随机访问存储器 用来存储程序中用到的变量。凡是整个程序中,所用到的需要被改写的量,都存储在RAM中, 被改变的量 包括全局变量、局部变量、堆栈段。 程序经过编译、汇编、链接后,生成hex文件。用专用的烧录软件,通过烧录器将hex文件烧录到ROM中(究
[单片机]
单片机AT89C2051控制的充电器电路设计
用单片机AT89C2051控制的充电器电路
[单片机]
用<font color='red'>单片机</font>AT89C2051控制的充电器电路设计
基于单片机的具有通讯口的智能温控表
1 引言 温控表已广泛应用于工业控制等诸多领域,本文介绍的具有计算机通讯功能的智能温控表是一种新颖的自动化仪表,它以单片机AT89C52为核心,采用电压/频率转换技术和RS-485通信接口芯片MAX487,具有测量精度高、可靠性好、抗干扰性能强、可实现计算机网络控制等优点,可广泛应用于冶金、纺织、化工、医疗等行业。它具有-200~+500%26;#176;C范围的温度测量和自动控制,是老式温控表的替代产品,市场前景广阔。 2 系统硬件设计 系统硬件框图如图1所示。   系统接通220V交流电源后,通过稳压电路(7805、7905)产生%26;#177;5V直流工作电源,以满足本系统中集成电路工作需要,系统的遥测电路开始工
[单片机]
单片机8051F的数字音频信号源的幅度控制及系统结构图
音频模拟信号电路常需要在很大范围内调节电平,而高精度电路的调节范同达100 dB以上.相当于二进制线性数字18位,同时也要求具有较高的调节步进值。使用数字信号源直接改变幅值,一般只有几dB的分辨率。市面上很多音频衰减器的衰减量、衰减量步进值、特性阻抗都是特定的。但在实际应用中,需要音频衰减器具有不同的参数;而且在一些应用中还希望衰减量能够按照需要随意设计,并且可以随时调整。针对这些需求,介绍了一种基于单片机由电阻衰减器和模拟开关组成的音频控制系统。该系统可通过单片机及上位PC机设置音频信号的衰减量,控制衰减量的增减。该系统具有适用广泛,使用方便,移植性高等特点。 系统总体设计 基于805lF330的音频控制系统结构如图l所
[单片机]
<font color='red'>单片机</font>8051F的数字音频信号源的幅度控制及系统结构图
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved