单片机课程设计自行车里程显示_第1页
单片机课程设计自行车里程显示_第2页
单片机课程设计自行车里程显示_第3页
单片机课程设计自行车里程显示_第4页
单片机课程设计自行车里程显示_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南机电高等专科学校电气工程系电子课程设计报告设计题目:自行车里程显示 专业: 班级: 学号: 姓名: 指导教师: 设计时间: 2011.6.72011.6.19 题目:自行车里程显示一、设计目的随着居民生活水平的不断提高,自行车不再仅仅是普通的运输、代步的工具,而是成为人们娱乐、休闲、锻炼的首选。因此,人们希望自行车的功用更强大,能给人们带来更多的方便。自行车里程速度表作为自行车的一大辅助工具也正是随着这个要求而迅速发展的,其功能也逐渐从单一的里程显示发展到速度、时间显示,甚至有的还具有测量骑车人的心跳、显示骑车人热量消耗等功能。本设计采用mcs-51系列单片机设计一种体积小、操作简单的便携

2、式自行车的速度里程表,它能自动地显示当前自行车行走的距离及运行的速度。二、设计要求在proteus中画出原理图或使用实物,编制程序,实现以下功能:(1)理解自行车里程器的工作原理。(2)以按键或者pulse脉冲源作为输入。编制驱动程序,使用液晶或者八段发光字符管显示当前自行车里程。(3)有清除按键,按下该按键,从0开始。三、方案设计与论证自行车里程显示的组成方框图:外部信号霍尔传感器外部存储器at89c52单片机里程显示速度显示报警部分图1 系统原理结构图设计方案如下:方案一、使用光敏电阻对里程进行测量。将光敏电阻安装在自行车前叉的一侧,在同等高度的另一侧安上一个高亮度的发光二极管。在同等高度

3、的辐条上贴上一圈黑色材料,并在黑色材料上打上等间距的小孔,这样当小孔经过光敏电阻时,光敏电阻根据光电流的变化发出脉冲,从而测量里程。 方案二、利用编码器对车轮的圈数进行测量。将旋转编码器安装在车轴上,这样每当车轮转过一定的距离编码器就会发出一个脉冲。利用脉冲数对里程进行测量。 方案三、利用霍尔元件对里程进行测量。将霍尔元件安装在车前叉的一侧,在车圈侧面等间隔贴多个磁片。当磁片经过霍尔元件时,霍尔元件输出端的电压发生变化产生脉冲,单片机根据脉冲数来计算里程。本设计采用方案三。四、设计原理和电路图如下本次里程表的设计,硬件电路主要由霍尔传感器电路,里程指示电路,里程数据存储电路,时钟电路,led显

4、示模块及74ls07驱动器构成。(1)霍尔传感器电路霍尔传感器电路图如下图2所示。图2(2)里程指示电路霍尔传感器发出一个低电平脉冲,里程显示时四个数码管点亮后开始计数,表明电动自行车正在行驶中,一盏指示灯一直闪烁着。电路如图3所示。图3(3)里程数据存储电路里程数据的存储电路是本次设计的关键电路,单片机首先向at24c01发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向at24c01的内部地址传送数据。当显示里程时,单片机首先向at24c01发送读信号,然后确认后,单片机从at24c01内部的地址向单片机的读出单元字节读出数据,供显示所用。因此,最终可保证掉电时数据不丢失。 图4

5、 里程数据存储电路(4)时钟电路 图5在图3.4.4-1的电路中,电容器c1和c2对振荡频率有微调作用,通常的范围:30±10pf;石英晶体选择6mhz或12mhz都可以。(5)led显示模块电路及74 ls07驱动器 led显示器采用动态显示,用74ls07驱动共阴极led数码管。led显示模块电路图,如图6-1所示。led数码管结构图,如图6-2(a),(b)为共阴极型,(c)为共阳极型。 图6-1图6-2oc门驱动器用7407,7407 即ttl 集电极开路六正相高压驱动器.当7407输出低电平时,没有电流流过led,当7407输出为开路状态时,电流经100限流电阻流入led显

6、示器,每个七段led的公共端都接一个7407驱动器。7407模型如图6-3: 图6-3 7407引脚如图6-4: 图6-4(6)89c52单片机管脚图 如图为核心单片机at89c52管脚图图7五、元件清单六、硬件制作与调试测速,首先要解决是采样的问题。使用单片机进行测速,可以使用简单的脉冲计数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,将脉冲送入单片机中进行计算,即可获得转速的信息。常用的测速元件有霍尔传感器、光电传感器和光电编码器。里程测量传感器的选择也有以下几种方案:使用光敏电阻对里程进行测量、利用编码器对车轮的圈数进行测量、利用霍尔传感器对里程进行测量、利用干簧管型传感器测量里程。

7、光敏电阻对光特别敏感,当白天行驶时,外界光源将导致光敏电阻发出错误信号;光敏电阻对环境的要求相当高,如果光敏或发光二极管被泥沙或灰尘所覆盖,光敏电阻就不能再进行准确测量;而编码器必须安装在车轴上,安装较为复杂;霍尔元件或干簧管不但不受天气的影响,即使被泥沙或灰尘覆盖也不会有影响,而且安装方便。所以本设计采用霍尔元件对里程与速度进行测量,既简单易行,又经济适用。使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的齿轮盘上粘上一粒磁钢,霍尔元件固定在前叉上,当车子转动时霍尔元件靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。如果在齿轮盘上粘上多粒磁钢,可以实现旋转

8、一周,获得多个脉冲输出。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业现场应用广泛。霍尔传感器是对磁敏感的传感元件,常用于信号采集的有a44e,该传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,工作电压范围宽,使用非常方便。a44e的外形如图7所示。1-vcc 2-gnd 3-out图8 a44e外形图七、设计总结通过仿真证明本次设计符合设计的要求,能实现对里程、速度的显示,功能性较强,具有一定的实践意义,将会在许多场合应用。但也有一些不足存在,当显示速度时,若自行车转动太快

9、,显示器会显示过快,应该将速度定时显示,使人们能够清楚地看出速度。本系统操作简单,易于实现。硬件部分采用的器件应用较广泛,且价格低廉,如at89c52单片机、d触发器74ls74、存储器24c02、驱动器74ls244等。这就意味着所有的器件功能比较强大、稳定。尤其是本次设计的核心元件at89c52单片机,软件技术成熟,并具有种类齐全的支持芯片。这类微处理器既可用作控制器又适合于做数据处理,而且成本也甚是低廉。软件采用模块化设计,可读性强,方便二次开发。本次设计电路简单、低成本,而且能够满足人们对高性能、多功能自行车的要求,可在很多里程/速度测量场合使用,具有广泛的应用前景。八、参考文献1电子

10、技术课程设计指导 彭介华编,高等教育出版社,1997年10月2电子系统设计,何小艇等编,浙江大学出版社,2000年3集成电子基础教程,郑家龙、王小海、章安元编,高教出版社,2002年5月4现代电子学及应用,童诗白、徐振英编,高等教育出版社,1994年5数字电子技术童诗白编著高等教育出版社 2001年6百度网站 7电子芯片质料网 附录1 总体电路附录 2 程序清单(1)键盘扫描部分程序#include<reg52.h>#include<math.h>#include<stdio.h>#include<bin2hex.h>#include<in

11、trins.h>#include<absacc.h>#define uchar unsigned char#define uint  unsigned int sbit k0=p1.0;sbit k1=p1.1;sbit k2=p1.2;keyscan()if (k0=0) uchar a;      for(a=255;a>0;a-)       &#

12、160;       /延时      if(k0=0)                  /有键按下measure(); /处理程序else if (k1=0)uchar a;      for(a=255;a>

13、0;a-)               /延时      if(k1=0)                  /有键按下measure();else if (k2=0)uchar a; &#

14、160;    for(a=255;a>0;a-)               /延时      if(k2=0)                  /有键按下me

15、asure();main()  while(1)  p0=keyscan();   while(1)     (2) 存储器部分程序<absacc.h>#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define _nop() _nop_() /*定义空指令*/sbit scl=p11;sbit sda=p12;

16、sbit dog=p17; sbit led=p07;sbit led_1=p03;sbit led_2=p04;sbit led_3=p05;sbit led_4=p06;uint led1_data,led2_data,led3_data,led4_data,led_data;uchar code led_segment12=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0,0xff;uchar x24c02_read(uchar address);void x24c02_write(uchar address,uchar info

17、); void x24c02_init(); void delay1(uchar x);void flash();void x24c01_init();void start();void stop();#includevoid writex(uchar j);uchar readx();void clock();void clrscr(void);/*延时程序*/void delay1(uchar x) uint i; for(i=0;i<x;i+); dog=dog;/*e2prom工作指示程序*/void flash() uchar u; dog=dog;/*e2prom初始化程序*

18、/void x24c02_init() scl=1; flash(); sda=1; flash();/*e2prom起始信号程序*/void start() sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();/*e2prom结束信号程序*/void stop() sda=0; flash(); scl=1; flash(); sda=1; flash();/*e2prom写控制程序*/void writex(uchar j) uchar i,temp; temp=j; for (i=0;i<8;i+)temp=

19、temp<<1; scl=0; flash(); sda=cy; flash(); scl=1; flash(); scl=0; flash(); sda=1; flash();/*e2prom读控制程序*/uchar readx() uchar i,j,k=0; scl=0; flash(); sda=1; for (i=0;i<8;i+) flash(); scl=1; flash(); if (sda=1) j=1; else j=0; k=(k<<1)|j; scl=0; flash(); return(k);/*e2prom时钟发生程序*/void cl

20、ock() uchar i=0; scl=1; flash(); while (sda=1)&&(i<255)i+; scl=0; flash();/*e2prom读程序*/uchar x24c02_read(uchar address) uchar i; start(); writex(0xa0); clock(); writex(address); clock(); start(); writex(0xa1); clock(); i=readx(); stop(); delay1(10); return(i);/*e2prom写地址和内容程序*/void x24c02

21、_write(uchar address,uchar info) ea=0; start(); writex(0xa0); clock(); writex(address); clock(); writex(info); clock(); stop(); ea=1; delay1(50);/*延时子程序*/void delay(uint v)while(v!=0)v-;void display()led=1;led_1=1;led_2=1;led_3=1;led_4=1;delay(50);p2=led_data;led=0;delay(50);p2=led_segmentled1_data;

22、led=1;led_1=0;delay(50);p2=led_segmentled2_data;led_1=1;led_2=0;delay(50);p2=led_segmentled3_data;led_2=1;led_3=0;delay(50);p2=led_segmentled4_data;led_3=1;led_4=0;delay(50);main()delay(100);x24c02_init(); while(1)x24c02_write(0x1,2);led1_data=x24c02_read(0x1);x24c02_write(0x2,2);led2_data=x24c02_re

23、ad(0x2);x24c02_write(0x3,2);led3_data=x24c02_read(0x3);led4_data=3;led_data=0xff;display();(3)显示部分程序#include<reg51.h>#include<intrins.h>#include<stdio.h>#include<string.h>#define un  unsigned charun read_1byte();void  write_1byte(unsigned char x); void writetochip(u

24、n a,b); void read(un h,l,d); void jiami51();void jiami53();void ck(un x); void csf();un  d104; void del05s();un btl_bz; un icxh;unsigned int allbyte;/需读出的字节数不16位sbit    lsledcs =p37;void delay();un zh_adh8252r(un x); un zh_adh8252w(un x); sfr16 dptr=0x82;sbit    ac

25、c0=acc0; sbit    acc1=acc1; sbit    acc2=acc2; sbit    acc3=acc3; sbit    acc4=acc4;sbit    acc5=acc5; sbit    acc6=acc6; sbit    acc7=acc7;unsigned char bdata bm; sbit  bm0=bm0; sbit 

26、bm1=bm1; sbit  bm2=bm2sbit  bm3=bm3; sbit  bm4=bm4; sbit  bm5=bm5; sbit  bm6=bm6sbit  bm7=bm7; un data rmem6=0xff,0xff,0xff,0xff,0xff,0xff;un code ledcode=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,/0-9          &

27、#160;        0x88,0x83,0xa7,0xa1,0x86,0x8evoid main()   unsigned int i,j; csf()  while(1)                p0=0xff;         lsledcs=1;

28、60;     j=0;      while(j!=30               i=0;         do         p0=ledcode0;     

29、    p1=0xfe;         delay();         p0=ledcode1;         p1=0xfd;         delay();       

30、;  p0=ledcode2;         p1=0xfb         delay();         p0=ledcode3         p1=0xf7;         d

31、elay();          i+;          while(i!=10);        j+;              p1=0xff;       de

32、l05s();         /           j=0;      while(j!=30)               i=0;         do

33、         p0=ledcode4;         p1=0xfe;         delay();         p0=ledcode5;         p1=0xfd &#

34、160;       delay();         p0=ledcode6;         p1=0xfb;         delay();         p0=ledcode7;  

35、60;      p1=0xf7;         delay();          i+;          while(i!=10);         j+;    

36、;          p1=0xff;       del05s();         /       j=0      while(j!=30)           &

37、#160;    i=0;         do         p0=ledcode8;         p1=0xfe;         delay()        

38、; p0=ledcode9;         p1=0xfd;         delay();         p0=ledcode10;         p1=0xfb;         dela

39、y();         p0=ledcode11;         p1=0xf7;         delay();          i+;          while(i

40、!=10);       j+;             p1=0xff;       del05s();强力单片机技术项目交易网         /强力单片机技术项目交易网        j=0;  

41、;    while(j!=30)               i=0;         do         p0=ledcode12;强力单片机技术项目交易网         p1=0xfe;&#

42、160;        delay();         p0=ledcode13;强力单片机技术项目交易网         p1=0xfd;         delay();         p0=ledco

43、de14;         p1=0xfb;         delay();         p0=ledcode15;强力单片机技术项目交易网         p1=0xf7;         d

44、elay();          i+;          while(i!=10);       j+;              p1=0xff;强力单片机技术项目交易网del05s();    

45、     p0=0x00;         p1=0xff;lsledcs=0;         del05s();del05s();          lsledcs=1;         del05s();  

46、60;     void csf()         tmod=0x20;th1=0xfd;tl1=0xfd;scon=0x50;pcon|=0x80;tr1=1;         ea=1;         delay();        

47、; es=0;    sbuf=0xf0;while(ti=0);ti=0;    sbuf=0x01;while(ti=0);ti=0;    sbuf=0x02;while(ti=0);ti=0;    sbuf=0x03;while(ti=0);ti=0;es=1; /*#串口*/  void surt() interrupt 4   un surti; unsigned int cc1;   

48、60;    surti=0;        ri=0;        d10surti=sbuf;       do        cc1=0xffff;         surti+;         while(ri=0)cc1-;if(cc1=0)goto surtint;       

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论