基于AVR单片机的机动车尾号限行提示器系统设计
[摘要] 本文介绍了一种基于AVR单片机实现的机动车尾号限行提示系统。本系统使用Atmega16L作为主控制器,DS1302作为系统实时时钟芯片,采用图形液晶完成各种显示,通过按键完成对系统时间、限行方式、限行尾号、限行时段的设置,实现了3种机动车尾号限行方式的功能。本设计操作方便,结构简单,可靠性高,可以应用在机动车上或小区门口,具有一定的研究价值和实用价值。
[关键词] 单片机 限行 SPI通信 DS1302
0.引言
随着人们生活水平的提高,越来越多的机动车成为了普通家庭的交通工具,给家庭带来便利的同时,也给城市交通带来了很大的压力。为缓解交通压力,部分大城市纷纷推出机动车尾号限行措施来改善交通。但现在人们的快节奏生活以及限行规则的多样性,记忆尾号限行规则无疑给车主带来了不少的麻烦。鉴于这一情况,本文利用了单片机体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等的优点,设计了一款机动车尾号限行提示器,方便车主的使用。
1.系统的总体结构及原理
从图1 可以看出,本系统主要由AVR单片机控制模块、时钟模块、LCD显示模块、键盘输入模块、输出控制模块及电源模块组成。
图1 机动车尾号限行提示器总体结构图
系统的工作原理:通过“输入调整模块”中的4x4矩阵键盘的按键组合调用相关函数设置各种限行规则参数,将限行规则参数保存到AVR单片机的EEPROM中;在程序开始运行或系统复位时,将各种参数从EEPROM中读出并赋给相应的变量,实现数据的完整性,同时也提高了系统的稳定性;利用实时时钟芯片的计时功能实现对时间的精确计算,在外部掉电情况下,依靠其后备电源仍能实现时钟数据的实时更新;AVR单片机从时钟芯片中读取所需的时钟数据,然后与保存在EEPROM中的限行规则参数进行比较,当满足规则时将在LCD液晶上显示限行提示,并切断启动电机开关线阻止机动车启动[1]。
2.硬件电路设计
机动车尾号限行提示器整体电路如图2所示[1]。
2.1 单片机控制电路
ATmega16L单片机具有体积小,功耗低,抗干扰性好,可靠性高等特点。它内部包含有中央处理器、16K程序存储器(ROM)、1K数据存储器(RAM)、512
字节EEPROM、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线。本系统采用的是内部1M的晶振,内部Flash熔丝位CKSEL3~CKSEL0=0001。外部晶振引脚XTAL2、XTAL1空接。
在Atmega16L中,与SPI通信有关的内部寄存器分别是SPI控制寄存器SPCR、SPI数据寄存器SPDR、SPI状态寄存器SPSR, SCK引脚是主机模式的时钟输出和从机模式的时钟输入,当数据写入主CPU的SPI数据寄存器时启动SPI的时钟发生器,数据从MOSI引脚移出,MISO引脚移入,在一个字节移出后SPI时钟停止,传送停止标志位SPIF置位。若SPCR 寄存器中的中断触发位SPIE被设置则生成一个中断请求,则从机选择输入SS*被设置为低时使能从机的SPI 接口。SPCR寄存器的Bit6为SPI使能位、Bit5为数据次序选择位、Bit4为主从模式选择位、Bit3为时钟极性选择位、Bit2为时钟相位选择[2]。由于实时时钟芯片DS1302的SPI通信时是时钟沿上升采样,下降沿设置,且数据的LSB位首先发送,所以SPCR=0x70,即使能AVR单片机SPI主机模式,时钟速率设置为fck/4,数据的LSB首先发送,时钟沿上升采样,下降沿设置。
2.2 DS1302时钟电路
DS1302是美国DALLAS公司推出的一种低功耗、高性能、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V[3]。DS1302的引脚排列如图3所示。
DS1302引脚图采用的是三线SPI接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。同时还增加了主电源/后备电源双电源引脚,并提供了对后备电源进行涓细电流充电的能力。其中VCC1接3V后备电源,VCC2接5V主电源。X1和X2是振荡源,外接32.768kHz晶振。
DS1302与ATmega16L单片机之间采用SPI通信。AVR单片机是四线SPI,支持全双工模式,DS1302采用的是三线的SPI。PB5设置为输出,PB6设置为输入。当从DS1302中读数据时,DS1302的数据I/O口为输出,数据由PB6输入单片机。写DS1302时,数据由PB5写入DS1302。DS1302与单片机的接口实现部分见图2。
2.3 LCD显示电路
12864A-1汉字图形点阵液晶显示模块采用ST7920控制器,可显示汉字及图形,内置有8192个中文汉字(16 X 16点阵)、128个字符(8 X 16点阵)及64 X 256点阵显示RAM(GDRAM)[4]。模块有并行和串行两种连接方法,本文采用并行接法,其接口实现电路如图2所示。
2.4 输入调整电路
输入部分采用4 X 4矩阵键盘,通过单片机的控制可以实现数据的调整。
2.5 输出控制电路
控制电路使用继电器控制LED灯的亮灭对机动车的电机开关线进行模拟。即单片机的PB3口控制继电器的工作,若当天是限行日,则在液晶屏幕上显示提示信息,同时PB3口输出高电平,切断启动电机开关线,使汽车不能启动;若当天不是限行日,则汽车即可正常使用。
2.6 电源电路
AVR单片机和DS1302都采用5V的工作电压,电压的稳定性对电路的稳定至关重要。采用7805稳压芯片组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜[5]。
3.软件设计
软件设计采用C语言实现,其程序结构包括输入模块、显示模块和控制输出模块。输入模块的按键编码如表1所示。
程序设计时采用循环检测按键,当相应的按键按下时,通过判断键值可以进入对应的功能设置,直到按下退出键(代码为0x0f)时退出设置并保存。软件主程序流程图如图4所示。
4. 结束语
本设计结构比较简单,显示人性化,控制直观明了,可按星期、按日期单双号及按尾号三种限行方式进行选择设置。测试结果表明,机动车尾号限行提示器运行稳定,可在系统突然断电后重新加电的情况下自动恢复原来的设置状态。同时应注意的是在设置各种限行规则参数时应保证电源的稳定,否则可能导致参数设置的失败。该提示器可应用于实行尾号限行措施的城市内的机动车辆上,也可用于各生活小区的门口,具有很好的应用前景。
参考文献:
[1]无线电2009年合订本上[M].北京: 人民邮电出版社,2010.1: 403-404.
[2]刘海成.AVR单片机原理及测控工程应用[M].北京: 北京航空航天大学出版社,2008: 54-58.
[3]Dallas公司.DS1302芯片手册[S].1998.7.
[4]矽創電子.ST7920驱动器[S].2001.10.
[5]华成英,童诗白.模拟电子技术基础[M].北京: 高等教育出版社,2006.12: 350-355.
因篇幅问题不能全部显示,请点此查看更多更全内容