自行车简易数字里程表设计毕业设计论文文档格式.docx
- 文档编号:18230468
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:41
- 大小:138.55KB
自行车简易数字里程表设计毕业设计论文文档格式.docx
《自行车简易数字里程表设计毕业设计论文文档格式.docx》由会员分享,可在线阅读,更多相关《自行车简易数字里程表设计毕业设计论文文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
最后针对仿真过程遇到的问题进行了说明与分析,对本次设计进行了系统的总结。
具体的硬件电路包括STC89C52单片机的外围电路以及液晶显示电路等。
软件设计包括:
芯片的初始化程序、定时中断子程序、显示子程序等,软件采用C语言编写。
第一部分设计任务
1.1设计要求
(1)设计一个可以适用各种自行车的数字里程表,可显示里程、速度等信息。
(2)学习、了解自行车数字里程表的基本工作原理。
1.2方案设计
采用单片机实现:
用霍尔传感器将所测转速转变为数字脉冲信号,然后再将数字脉冲信号数据传输于核心单片机处理,单片机将根据设计程序计算在一定时间内数字脉冲的频率,再由计数值最终得到里程数并通过终端显示设备显示出来。
且附加报警功能,在速度超过某一个固定值后,蜂鸣器响,提示需要减速。
第二部分系统硬件平台的设计
2.1总体设计方案说明
本设计的任务是:
以通用MCS-51单片机为处理核心,用传感器将车轮的转数转换为电脉冲,进行处理后送入单片机。
里程及速度的测量,是经过MCS-51的定时/计数器测出总的脉冲数和每转一圈的时间,再经过单片机的计算得出,其结果通过LED显示器显示出来。
本系统总体思路如下:
假定轮圈的周长为L,在轮圈上安装a个永久磁铁,则测得的里程值最大误差为L/a。
经综合分析,本设计中取a=1。
当轮子每转一圈,通过开关型霍尔元件传感器采集到一个脉冲信号,并从引脚P3.2中断0端输入,传感器每获取一个脉冲信号即对系统提供一次计数中断。
每次中断代表车轮转动一圈,中断数n与轮圈的周长L的乘积为里程值。
计数器T1计算每转一圈所用的时间time,就可以计算出即时速度speed。
若自行车超过限定速度,系统发出报警信号,蜂鸣器响。
要求达到的各项指标及实现方法如下:
1.利用霍尔传感器产生里程数的脉冲信号。
2.对脉冲信号进行计数。
实现:
利用单片机自带的计数器T1对霍尔传感器脉冲信号进行计数。
3.对数据进行处理,要求用LED显示里程总数和即时速度。
利用软件编程,对数据进行处理得到需要的数值。
最终实现目标:
自行车的速度里程表具有里程、速度测试与显示功能,采用单片机作控制,显示电路可显示里程及速度。
图1系统框图
2.2单片机最小系统
2.2.1STC89C52单片机
图2STC89C52单片机
2.2.2时钟电路
STC89C52系列是1T的8051单片机,STC89C52系统时钟兼容传统8051。
系列单片机有两个时钟源:
内部R/C振荡时钟和外部晶体时钟。
在单片机内有一个高增益反相放大器,反相放大器的输入端为XTAL,输出端为XTAL2,由该放大器、晶振和两个33PF的电容构成的振荡电路做单片机的时钟电路。
图3时钟电路
2.2.3复位电路
复位电路原理是单片机RST引脚接收到2us以上电平信号,只要保证电容的充放电时间大于2us,即可复位,所以电路中的电容是可改变的,按键按下,电容处于一个短路电路中,电容释放所有的电能,电阻两端电压升高系统复位。
且
振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周
期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有:
手动按钮复位和上电复位。
图4复位电路
2.3显示模块
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背
光的比不带背光的厚,是否带背光在应用中并无差别,1602LCD及两者尺寸差别如下图所示:
图6液晶显示模块图
1602引脚说明表格如下:
编号
符号
引脚说明
1
Vss
电源地
9
D2
数据口
2
VDD
电源正极
10
D3
3
VO
液晶显示对比度调节端
11
D4
4
RS
数据/命令选择端(H/L)
12
D5
5
R/W
读写选择端(H/L)
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光电源正极
8
D1
16
BLK
背光电源负极
液晶引脚与单片机连接:
第1脚:
VSS接地。
第2脚:
VDD接5V正电源。
第3脚:
VO接3K的电位器调整对比度。
第4脚:
RS为寄存器选择。
第5脚:
R/W为读写信号线。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线接单片机P0口。
第15脚:
背光源正极接电源。
第16脚:
背光源负极接地。
2.4霍尔传感器的测量原理
图7霍尔传感器
霍尔传感器是利用霍尔效应制成的一种磁敏传感器。
在置于磁场中的导体或半导体通入电流I,若电流垂直磁场B,则在与磁场和电流都垂直的方向上会出现一个电势差Uh,这种现象称为霍尔效应。
利用霍尔效应制成的元件称为霍尔元件。
因为它具有结构简单、频率响应宽、灵敏度高、测量线性范围大、抗干扰能力强以及体积小、使用寿命长等一系列特点,因此被广泛应用于测量、自动控制及信息处理等领域。
2.5DS1302时钟芯片
图8时钟芯片
本设计时间芯片采用的了DS1302,DS1302是由美国DALLAS公司推出的一种具有涓细电流充电能力的低功耗实时时钟电路,具有可对年、月、周、日、时、分、秒进行计时等的功能,工作电压为2.5V~5.5V。
主要的特点是采用串行数据传输,即使掉电亦不丢失,在DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302与STC89C52的连接线有三条线:
RST引脚、SCLK串行时钟引脚、I/O串行数据引脚,Vcc2作为备用电源,芯片外接晶振X2,为芯片提供计时脉冲。
第三部分系统软件的设计与实现
3.1主程序流程图
图9主程序流程图
3.2显示流程图
该子程序用LCD动态扫描显示方式。
先将单片机的P2.2口连接使能端口E。
接着将单片机的P2.0口连接数据/命令选择端RS,P0口连接数据端D0~D7,然后将要显示的数字的值发送给P0口。
然后调用延时,接着将P2.2口置0,P2.0口置1,写指令,将P2.2口置1,P2.0口置1,写数据,直到要显示的数字全部显示在液晶上。
显示流程图如图10所示。
图10显示流程图
3.3速度处理流程图
图11速度处理流程图
3.4电路仿真
3.4.1仿真软件简介
Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,
它也支持IAR、Keil和MPLAB等多种编译器。
3.4.2仿真结果
仿真结果如图12所示。
图12仿真结果
第四部分安装调试与性能测量
电路实物图如图13所示。
图13电路实物图
第五部分设计总结
通过本次设计,使我对单片机知识和理解更一步加深了,掌握了简易数字里程表的设计,组装和调试方法。
并且使我更加熟练的应用仿真软件,让我学到了如何运用软件测试电路的可行性,并且对电路的调试改进都有一个很大的提高。
这个过程中我遇到了很多困难,比如如何运用仿真软件画图,如何组织一些比较专业的语言,以及上网查阅资料。
虽说费劲,但是乐趣也不少。
通过这次设计,我们了解到平时知识的积累真的很重要,在遇到困难时一定要向认真思考,查阅相关资料,不可盲目退缩,努力后就一定会有收获。
这次毕业设计收获颇丰,不仅是对自己个人能力的提高,也让我认识到了自己的局限,通过这次的毕业设计为以后的学习奠定了一个更好的基础。
参考文献
[1]李朝青.单片机原理及接口技术.北京航空航天大学出版社,1994
[2]张毅刚,刘杰.MCS-51单片机原理及应用.哈尔滨工业大学出版社,2004
[3]楼然苗,李光飞.51系列单片机设计实例.北京航空航天大学出版社,2006
[4]松井邦彦,梁瑞林.传感器应用技术141例.科学出版社,2006
[5]张洪润,张亚凡.传感器技术与应用教程.清华大学出版社,2005
[6]刘灿军.实用传感器.国防工业出版社,2004
[7]何希才.传感器及其应用.国防工业出版社,2001
[8]刁文兴.自行车电子里程表的初步设计.南京工业职业技术学院学报,2004,6:
25-28
[9]安宗权.电动电子车速里程表分频电路设计.自动化与仪器仪表,2001,5:
39-44
[10]阎焕忠,王长涛,马斌.单片机控制里程转速表的设计.沈阳建筑工程学院学报(自然科学版),2002,4:
145-148
[11]谢自美.电子线路设计.实验.测试[M].武汉:
华中科技大学出版社,2000:
212-230
[12]张福学.传感器使用电路150例.中国技术出版社.1992
程序
#include<
reg52.h>
//调用单片机头文件
#defineucharunsignedchar//无符号字符型宏定义变量范围0~255
#defineuintunsignedint//无符号整型宏定义变量范围0~65535
#include"
eeprom52.h"
/******************
ds1302内部RAMRAM01100000R/W1读0写
RAM11100001R/W
.......
RAM301111110R/W
********************/
sbitclk=P1^3;
//ds1302时钟线定义
sbitio=P1^4;
//数据线
sbitrst=P1^5;
//复位线
//秒分时日月年星期
ucharcodewrite_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a};
//写地址
ucharcoderead_add[]={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b};
//读地址
ucharcodeinit_ds[]={0x55,0x17,0x15,0x01,0x01,0x13,0x13};
ucharmiao,fen,shi,ri,yue,week,nian;
uchari;
uchart1_num,t2_num;
//计时间中断的次数
unsignedlongspeed1,juli,time2;
floatf_hz,speed_km,speed_m;
//dlaouttime1,speed_km,speed_m;
ucharTH11,TL11;
ucharflag_en;
//开始计算速度使能
ucharflag_stop_en;
//要确定车子是否停下了
uintjuli_s;
//每秒走的距离
uintjuli_z;
//总路程
floatzhijing=0.55;
//直径0.55M
bitflag_1s=1;
//1s
ucharmenu_1;
//菜单设置变量
ucharmenu_2;
longzong_lc;
//总量程
ucharflag_200ms;
uintshudu;
//定义速度的变量
uintbj_shudu=80;
//报警速度
//这三个引脚参考资料
sbitrs=P1^0;
//寄存器选择信号H:
数据寄存器L:
指令寄存器
sbitrw=P1^1;
sbite=P1^2;
//片选信号下降沿触发
ucharcodetable_num[]="
0123456789abcdefg"
;
sbitbeep=P3^7;
//蜂鸣器IO口定义
/******************1ms延时函数*******************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;
i<
q;
i++)
for(j=0;
j<
120;
j++);
}
/******************把数据保存到单片机内部eepom中******************/
voidwrite_eeprom()
SectorErase(0x2000);
byte_write(0x2000,bj_shudu%256);
byte_write(0x2001,bj_shudu/256);
byte_write(0x2002,zong_lc%256);
byte_write(0x2003,zong_lc/256%256);
byte_write(0x2004,zong_lc/256/256%256);
byte_write(0x2055,a_a);
/******************把数据从单片机内部eepom中读出来*****************/
voidread_eeprom()
uintvalue;
bj_shudu=byte_read(0x2001);
bj_shudu<
<
=8;
bj_shudu|=byte_read(0x2000);
zong_lc=byte_read(0x2004);
zong_lc<
=16;
value=byte_read(0x2003);
zong_lc|=(value<
8);
zong_lc|=byte_read(0x2002);
a_a=byte_read(0x2055);
/**************开机初始化保存的数据*****************/
voidinit_eeprom()//开机初始化保存的数据*
read_eeprom();
//先读
if(a_a!
=1)//新的单片机初始单片机内问eeprom
{
bj_shudu=50;
a_a=1;
write_eeprom();
//保存数据
}
/********************************************************************
*名称:
delay_uint()
*功能:
小延时。
*输入:
无
*输出:
***********************************************************************/
voiddelay_uint(uintq)
while(q--);
write_com(ucharcom)
1602命令函数
输入的命令值
voidwrite_com(ucharcom)
i=0;
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
write_data(uchardat)
1602写数据函数
需要写入1602的数据
voidwrite_data(uchardat)
rs=1;
P0=dat;
write_sfm2(ucharhang,ucharadd,uchardate)
显示2位十进制数,如果要让第一行,第五个字符开始显示"
23"
,调用该函数如下
write_sfm1(1,5,23)
行,列,需要输入1602的数据
voidwrite_sfm2(ucharhang,ucharadd,uintdate)
if(hang==1)
write_com(0x80+add);
else
write_com(0x80+0x40+add);
write_data(0x30+date/10%10);
write_data(0x30+date%10);
write_sf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自行车 简易 数字 里程表 设计 毕业设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)