基于单片机自行车测速系统设设计报告.docx
- 文档编号:29084942
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:177.85KB
基于单片机自行车测速系统设设计报告.docx
《基于单片机自行车测速系统设设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机自行车测速系统设设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
基于单片机自行车测速系统设设计报告
单片机原理及系统课程设计
评语:
考勤10分
守纪10分
过程30分
设计报告30分
辩论20分
总成绩〔100分〕
基于单片机自行车测速系统设计
1设计目的
实现自行车运行过程中对行驶里程、平均速度、运行时间、当前瞬时速度进展测量和显示,通过对速度的测量来控制自行车的运行,当速度超过限定值时发出报警提醒减速,以确保自行车平安的运行。
2设计方案及原理
2.1系统总体设计思路和原理
本系统实现自行车运行过程中对行驶里程、平均速度、运行时间、当前瞬时速度进展测量和显示,系统包括控制器模块、信号检测采集模块、显示模块、电源模块四局部组成。
系统工作时,传感器采集到信号〔用按键代表脉冲信号输入〕传输给单片机,单片机计数器统计脉冲个数,定时器记录相应时间长度,经过运算,将行驶里程、全程平均速度、运行总时间送给液晶显示器显示,当前〔瞬时〕速度送给数码管显示。
通过以下计算公式算出里程、平均速度、瞬时速度。
通过相应的显示机构显示出来。
里程=脉冲总数×车轮周长
平均速度=里程÷运行总时间
瞬时速度=每五秒的行程÷5
2.2自行车测速系统方案设计
系统包括控制器模块、信号检测采集模块、显示模块、电源模块四局部,控制器模块由AT89C51组成,它运用于数据储存和外部设备管理,信号采集模块用的是模拟霍尔传感器,通过外部脉冲来控制圈数,显示模块用1602和数码管,1602显示里程、全程平均速度以及运行时间,数码管LED显示五秒的平均速度即当前瞬时速度,电源模块给整个系统提供电压,使系统可以正常工作。
系统框图如图1所示。
图1自行车测速系统设计原理图
3硬件设计
3.1系统原理电路图
系统中里程、速度等都是由霍尔元器件测量。
通过按钮输出脉冲,脉冲数目代表车轮转动圈数,自行车轮胎的周长为2.15m,输入一个脉冲,轮子转动一圈,里程为一个周长的距离,通过脉冲数可以算出总里程,通过单片机T0定时器和T1计数器记录时间,用5秒的前进距离除以时间5秒,得到5秒的平均速度即当前速度。
而总里程L除以总时间t得到平均速度。
在车轮辐条上的磁钢接近霍尔传感器一次,传感器送一个脉冲信号给单片机的外部中断计数器T1,产生一次中断,圈数加一,圈数乘以2.15即为车前进距离。
处理速度数据时同时刷新平均速度、当前速度、运行里程。
假设速度大于〔25km/h即6.95m/s〕那么P3.7输出高电平,蜂鸣器发出报警,提示速度过大。
单片机定时器0定时时间为50ms,每20次刷新系统时钟及计算累计行驶时间。
系统原理电路图如图2所示。
图2系统原理电路图
3.2霍尔传感器开关模块设计
使用开关代替霍尔传感器,通过连续按压开关,使开关对单片机连续输入脉冲来模拟辐条经过的次数,单位时间按压次数越多,相当于辐条经过传感器的频率越高,从而反映车速越快,电路原理如图3所示。
图3霍尔传感器模拟原理图
4软件设计
4.1程序流程图
图4系统流程图
5系统仿真
5.1仿真结果
按压模拟霍尔传感器的开关,模拟出辐条发生频率,通过脉冲数和时间计算出当前速度,当前模拟速度小于给定限定值6.95m/s即25km/h时,没有发生超速现象,通过单片机处理后给出报警指示低电平,蜂鸣器不响,故而速度没有超过限定值,可以正常行驶。
数码管显示屏显示自行车每五秒的平均速度,即当前的瞬时速度,而液晶显示器分别显示自行车行驶的总里程,全程的平均速度,以及当前运行的总时间,仿真结果如图5所示。
图5未超速系统仿真结果图
按压模拟霍尔传感器的开关,模拟出辐条发生频率,通过程序计算出当前速度,当模拟速度大于给定限定值6.95m/s即25km/h时,说明自行车发生了超速现象,通过单片机处理后给出报警指示高电平,故而报警蜂鸣器响,说明速度超出了限定值,提醒车主应减速行驶,同时数码管显示屏显示自行车每五秒的平均速度即当前的瞬时速度,而液晶显示器同时分别显示出自行车行驶的总里程,全程的平均速度,以及当前运行的总时间,仿真结果如图6所示。
图6超速系统仿真结果
6总结
这次课程设计的题目是设计一个以AT89C51单片机为核心的自行车速度里程表。
本设计主要分为硬件局部和软件局部。
在硬件电路的设计局部,主要考虑硬件电路的简单性,故使用开关代替霍尔传感器,通过连续按压开关,使开关对单片机连续输入脉冲来模拟辐条经过的次数,从而计算运行里程。
在软件局部采用用C语言编写,采用模块化设计思想,程序可读性强。
在这次课程设计中,我也遇到了许多问题。
在设计过程中,我发现自己平时对单片机知识的学习还不够深入,不能把所学的理论知识与实践相结合起来,因此在以后的学习中,我要争取做到理论与实践相结合,做到学以致用。
同时,我也学到了许多东西,我了解到要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的部构造有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路。
这次课程设计让我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义。
7参考文献
[1]阎焕忠,王长涛,马斌.单片机控制里程转速表的设计[M].建筑工程学院学报〔自然科学版〕,2002,4:
145-148.
[2]友德,志英,涂时亮.单片机微机原理,应用与实验[M].:
复旦大学,2003:
122-136.
[3]王思明,鑫,苟军年,单片机原理及应用系统设计[M].科学,2021:
6-8.
8附录
#include
#include
voidtimer0_int();
sbitbaojing=P3^7;
sbitE=P3^2;//1602使能引脚(位寻址,下同)
sbitRW=P3^1;//1602读写引脚
sbitRS=P3^0;//1602数据/命令选择引脚
unsignedcharhour,minute,second;
unsignedcharn,count;
unsignedlonglengthbuf,lengthvalue;
unsignedcharcode
Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9的共阴极七段管代码
unsignedcharcode
Table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//0~9的共阴极七段管代码,带小数点
voidDelay0(intTimes);
voidDisplay(unsinedint);
voiddelay()//延时5US
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
bitBusy(void)//读状态函数,判断液晶模块的忙碌状态
{
bitbusy_flag=0;
RS=0;
RW=1;
E=1;
delay();
busy_flag=(bit)(P0&0x80);
E=0;
returnbusy_flag;
}
voidwcmd(unsignedchardel)//将模式设置指令或显示地址写入液晶模块
{
while(Busy());
RS=0;
RW=0;
E=0;
delay();
P0=del;
delay();
E=1;
delay();
E=0;
}
voidwdata(unsignedchardel)//将数据〔字符ASCII码〕写入液晶模块
{
while(Busy());
RS=1;
RW=0;
E=0;
delay();
P0=del;
delay();
E=1;
delay();
E=0;
}
voidL1602_init(void)//初始化液晶模块
{
wcmd(0x38);//功能设置,8位字长,2行,5*7点阵
wcmd(0x0c);//显示设置,显示屏右移
wcmd(0x06);//显示设置,光标右移,字符不移
wcmd(0x01);//清屏命令
}
voidL1602_string(unsignedcharhang,unsignedcharlie,unsignedcharp)//将数据写入液晶模块
{
unsignedchara;
if(hang==1)a=0x80;//显示在第一行
if(hang==2)a=0xc0;//显示在第一行
a=a+lie-1;
wcmd(a);
wdata(p);
}
voidtimer0_int()interrupt1using3//中断,用于构成时钟
{
n++;
if(n==100)
{
n=0;
count++;
second++;
if(second>=60)
{
second=0;
minute++;
if(minute>=60)
{
minute=0;
hour++;
if(hour>=24)hour=0;
}
}
}
if(count==5)
{
count=0;
lengthvalue=(TL1+TH1*256)*215-lengthbuf;
lengthbuf=(TL1+TH1*256)*215;
}
TH0=0xd8;
TL0=0xf0;
}
inttimer()//以秒为单位计算运行总时间
{
unsignedchara=100;
unsignedcharb;
b=second+minute*60+hour*60*60;
returnb;
}
voidDelay0(intTime)//延时子程序
{
inti;
unsignedcharj;
for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 自行车 测速 系统 设计 报告