自行车测速报警系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统设计
题目:自行车测速报警系统设计
专业:
学号:
姓名:
自行车测速报警系统设计
本设计以AT89C2051为核心,通过霍尔传感器来检测自行车的运转情况进而实现电动自
行车的速度,最后用2位的LED能直观的将速度与里程显示给用户,并且在速度高于一定的值时可自动向用户报警,从而达到智能化。
主要研究内容:
1.传感器电路模块设计
光敏电阻对光特别敏感,当白天行驶时,外界光敏电阻对光特别敏感,当黑天行驶时,外界光源导致光敏电阻发出错误信号;光敏电阻对环境的要求相当高,如果光敏电阻或发光二极管被泥沙或灰尘所覆盖,光敏电阻就不能再进行测量;在雾天和雨天光敏电阻的测量的效果也不好。而编码器必须安装在车轴上,这样安装就会给用户带来很多不便。霍尔传感器是对磁敏感的传感元件,是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,由霍尔元件加整形电路构成的霍尔开关系统,具有输出响应快,数字脉冲性能好,安装方便,性能可靠,不受光线、泥水等因素影响。所以本设计采用霍尔传感器。
2.电源电路设计
本系统采用的是MC34063制作的降压变换电源。由于电动车电瓶的电源电压大多是24V,36V,48V等,所以把电瓶电源24V转换为单片机所需要的电压5V。MC34063是一单片双极型线性集成电路,专用于直流-直流变换器控制部分.片内包含有温度补偿带隙基准源、一个占空比周期控制振荡器、驱动器和大电流输出开关,能输出1.5A的开关电流.它能使用最少的外接元件构成开关式升压变换器、降压式变换器和电源反向器。特点:能在 3.0-40V 的输入电压下工作;短路电流限制;低静态电流;输出开关电流可达1.5A(无外接三极管);输出电压可调工作振荡频率从100HZ到100KHZ。
MC34063是一种开关型高效DC/DC变换集成电路。它的内部含有具有温度补偿的基准电
压源、比较器、具有限电流电路的占空比可控的振荡器、驱动器和大电流输出开关管。
3.存储器电路模块设计
在本设计中用芯片AT24C02.AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89C2051试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C2051试验开发板上和单片机的P3.5连接。第6脚SCL为串行时钟输入线,在AT89C2051试验开发板上和单片机的P3.6连接。SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚需要接地单片机从AT24C02内部的地址向单片机的读出单元字节读出数据,供显示所用。
4.报警电路设计
语音报警电路的核心是WTV040语音芯片。当电动车的行使速度达到或超过测速器预设速度时,测速器单片机往外发出一个低电平,直接拉低I/O口P01的电平,使WTV040语音芯片被触发,点亮报警指示进行提示并触发语音进行报警。
5.显示电路设计
显示模块用74HC164驱动数码管显示,数码管,驱动电路等组成显示电路,使用共阳数码管。P3.3-P3.4为数码管的动态扫描位驱动。P1.6,P1.7作数码段码输出。
6、程序设计
#ifndef _Max7219_H_
#define _Max7219_H_
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define DECODE_MODE 0x09 //译码方式
#define INTENSITY0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0D
#define delay1us _nop_();
#define delay2us {delay1us;delay1us;}
#define delay4us {delay2us;delay2us;}
#define delay5us {delay4us;delay1us;}
#define delay12us {delay4us;delay4us;delay4us;}
sbit din=P2^0;
sbit load=P2^1;
sbit clk=P2^2;
void Max7219_Wr_byte(uchar wrdat);
void Max7219_Wr_data(uchar addr,uchar dat); void Init_Max7219(void);
void Disp_speed(uint speed);
void Disp_set_speed(uint set_speed);
//初始化MAX7219
void Max7219_Init(void)
{
Max7219_Wr_data(SHUT_DOWN, 0x01);
Max7219_Wr_data(DISPLAY_TEST, 0x00);
Max7219_Wr_data(DECODE_MODE, 0xff);
Max7219_Wr_data(SCAN_LIMIT, 0x07);
Max7219_Wr_data(INTENSITY, 0x0a);
}
void Max7219_Wr_byte(uchar wrdat)
{
bit dat;
uchar i;
for (i=0;i<8;i++)
{
clk=0;
dat=(bit)(wrdat&0x80);
if(dat)
din=1;
else
din=0;
wrdat<<=1;
clk=1;