微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于AVR单片机的自行车行车记录仪,包括软硬件具体方案

基于AVR单片机的自行车行车记录仪,包括软硬件具体方案

时间:06-03 来源:互联网 点击:

个单片机,第二是在成本上也会大幅上升,所以在选择单片机时必须对所需要的功能进行合理的分析。

分析情况:

  1. 在显示方面使用的是12864液晶的带字库液晶,该液晶操作简单,只需普通的IO端口操作便可以解决控制,所以它对单片机没有特殊的要求。

  2. 在存储方面,使用的是ATMEL公司的AT24LC64 EEPROM存储器,该存储器走的是IIC(ATMEL公司开发的两线串行总线)总线模式,虽然可以用一般的单片机模拟IIC总线,但是为了提高效率则必须选择具有IIC总线接口的单片机,这个一般的51单片机已经不能满足,所以需考虑其它单片机。

  3. 时钟模块,用的是达拉斯的DS1302芯片,只需普通的端口操作就能完成。

  4. 打印机模块,有下面的打印机实现原理(图4.5)可知,我们必须选择具有双边沿触发的单片机,有这个功能的单片机ATMEL的AVR系列的中高端单片机能满足,比如Atmega64及以上的单片机都具有这一功能。

  5. 霍尔传感器,霍尔传感器测速必须具有两个内置外设,一个是外部下降沿中断,一个是内部定时器。

  6. 内存空间要求:在做用户界面以及制作贪吃蛇等游戏时都必须开很大的缓存,所以必须具备一定的内存容量,初步估计需要2K内存以上。

由以上6点分析,这里我选择了ATMEL公司的AVR系列单片机Atmega64,该款单片机价格便宜,功能强大,能满足上面7点的全部要求。其资源如下:

  1. 工作于16M时性能高达16MIPS,速度快

  2. 64K flash程序代码空间

  3. 4K 的内部SRAM,足够满足UI界面以及其他的缓存

  4. 内置IIC和SPI总线接口

  5. 8路外部中断,有4路能实现双边沿中断

  6. 3路定时急速器(2路8位,1路16位)

  7. 两个串行USART口

  8. 53个普通IO端口(大部分复用)

由以上八点可以看出,该款单片机完全能够满足这个产品需要的功能,并且Atmega64为基于RSIC结构的8位低功耗CMOS微处理器,降低功耗,是做行车记录仪的首选单片机。

结论:最终选择的单片机为ATMEL公司的Atmega64八位高性能单片机。

4.3.2 用户UI界面原理

在这个嵌入式软件中,最关键也是最富有挑战的便是用户界面,即菜单系统,如果只是用简单的switch,case语句,那在三层菜单的基础上,那将会是一个非常庞大的代码,并且可读性差,维护十分困难,当需要增加或则删减菜单时都是一件非常痛苦的事情。

通过各种资料的搜索与整理,并且通过自己的改良,用了一种基于节点编号的方法实现了这个菜单系统。

首先、菜单是有层次的,并且每一层菜单都有不同的不同的条数,比如第一层菜单有四条,第一层菜单第一条的子菜单都3条,而第一层菜单第二条的子菜单有2条。

加入以个十百来标识菜单所在的层次,以每一位的大小来标识当前菜单再当前层次的条数,则可以推断出每条菜单都有一个唯一的ID,我们称之为节点。

基于节点编号的菜单系统的结构如下图4.3所示

图4.3 基于节点编号的菜单系统结构

结构分析:菜单系统结构图如上图4.3所示,可见很明显,菜单为3层菜单结构,第一层总共有两条菜单,其编号分别是1和2,在例如在第三层中节点编号为133的菜单,由该节点知,该条菜单再当前层次的第三条,并且位于上层菜单的第三条,位于上上层菜单(即一级菜单)的第一条。其它菜单的结构和这个一样。

由以上分析可知,菜单的结构很明显的构成了一个标准的二叉树,并且其父子节点有很明显的算术关系,其关系如下。

父节点 = 当前节点%10;(%操作为求余操作)

子节点 = 当前节点*10 + 1;

如果没有父节点或者子节点,则分别把这两个节点设置成空节点。

有了这个方法,要实现一个菜单系统便是一个很简单的事情了,这套菜单系统还能实现翻页等复杂操作,并且增加或删除节点十分方便I,只需修改相应节点的编号就可以实现。

菜单与实时显示界面的分离:在这套菜单系统中,用户可以通过按返回键激活菜单或者通过返回键返回实时界面,其实现原理也非常简单,只需设置一个标志位来标识是否激活菜单,从而达到实时界面与菜单的分离。

4.3.3 测速实现原理

测速的核心部件是霍尔元件,利用霍尔元件,再进行一些改良,如上硬件设计中提到的图3.4所示。从而使传感器在周期性的磁场作用下产生一个固定周期的方波。

那么,如何利用输出的一个方波来实现测速的目的呢?这里利用了单片机的两个内置外设:

  • 外部IO中断

  • 8位定时器T2

当出现方波的下降沿时,单片机可以利用外部中断采集到这个下降沿,并跳转到中断服务入口,在中断服务中可以通过打开定时器来实现记录每个方波或者一定方波个数n的时间t。

这里假设轮胎的圆周长是len厘米。则由以上数据可知如下公式。

速度 V = n*len/t (cm/s),其中len的单位为厘米,t的单位为秒。

4.3.4 微型打印机原理

在这里使用的打印机是

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top