电子计步器的设计

  • 格式:docx
  • 大小:509.21 KB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息工程学院

传感器与测控技术实训报告

设计课题:电子计步器的设计

专业班级:

学生姓名:

学生学号:

指导教师:

1.设计任务描述

1.1设计题目:电子计步器

(1)系统需求

(2)项目说明

(3)项目综述

1.2前期准备

(1)知识储备

(2)软件使用

(3)关键元件的展示

(4)原件清单

1.2.1设计目的

(1)掌握电子计步器的构成、原理与设计方法;

(2)设计思路

1.2.2基本要求,任务实施

(1)实现计步功能

(2) 计时功能

(3) 暂停显示时间

(4) 重置功能

1.2.3发挥部分

(1)定时功能,定时5秒后闪烁。

(2)二极管原来灯是灭的,5秒后就灭了。

1.2.4 总结

(1)系统需求

计步器是一种颇受欢迎的日常锻炼进度的监控器,可以激励人们挑战自己,增加体质,帮助瘦身。在电子记步器项目学习中,电子计步器随身携带,当人们行走是,利用震动传感器讲姓周的信号转换成开关量信号传送给单片,单片机累积后显示在数码管上。为了携带方便,因此读者课考虑选择3.3V供电的低功耗单片机STC12L5A60S2,其内部资源及使用方法和STC12L5A60S2一样的,只是工作电压不一样。本项目主要介绍了数码管的显示设计、振动传感器及C51指针的内容。

(2)项目说明

根据以上需求,电子计步器系统功能被划分为以下模块,如图2.1所示:

(3)项目综述

1.2前期准备

(1)常用的元件封装:(参考protel学习\protel元件封装)

(2)软件使用

2、原理图库

在原理图的绘制中,要加入一下5个库文件:Miscellaneous Devices.ddb

Protel DOS Schematic Libraries.ddb

Sim.ddb

Intel Databooks.ddb

TI Databooks.ddb

改变mil和mm

在view 中有个一个toggle unit ,或者按q键。

、在元件封装编辑中,如何改变snap的间距

Tools –》layer options 中可以改变。

在PCB布板的时候,要有一个基本库PCB Footprints.lib,如果不小心删掉了,要重新加回去,需要添加generic footprints目录下的Advpcb即可。如下图所示。

(3)关键元件的展示

真实的器件模样:

(2)AT89C51引脚图的展示:

(4)原件清单

1.2.1设计思路

根据项目要求,我将电子计步器设计分为两部分,第一部分是计数部分,将震动由传感器变为的脉冲信号整形后输入计数器通过译码器译码最后经显示器显示出跑(走)的步数。然后在部分通过电路设计一数码管显示时间和步数。

第二部分是计时部分,经过AT89C51单片机的计时功能来实现计时的功能。在此基础上设计出了一个定时提示的功能,当跑步的时间超过多少时间时,指示灯闪烁,以此提示用户运动的时间差不多了。若应用健身器时一般不以秒算的话还可以设计出一毫秒级的计时器来方便更加精准的计时。

1.2.2基本要求,任务实施

1.2.3发挥部分

(1)仿真软件图和代码:基本功能实现

(2)额外功能展示:定时五秒闪烁,LED灯灭

(3)代码部分展示:

#include

void display();

unsigned int buf=0;

unsigned char flag=0;

unsigned int time=0;

unsigned char ms=0;

int ss=0,lyg=0;

void delay(int k);

unsigned char code LED[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};

void timeint(void);

void key();

/*********************************************/

void display()

{

int gw,sw,bw,qw;

if(flag==0)

{

buf=buf%10000;

qw=buf/1000;

bw=buf/100%10;

sw=buf/10%10;

gw=buf%10;

}

else if(flag==1)

{

time=time%10000;

qw=time/1000;

bw=time/100%10;

sw=time/10%10;

gw=time%10;

}

else if(flag==2) //额外功能

{ P1_5=0;

ss++;

if(ss<=10)

{

time=time%10000;

qw=time/1000;

bw=time/100%10;

sw=time/10%10;

gw=time%10;

}

else

{

qw=10;

bw=10;

sw=10;

gw=10;

if(ss==20)

ss=0;

}

}

P2=LED[qw];

P3_0=0;

P3_1=1;

P3_2=1;