毕业论文 跳绳仪设计
资源目录里展示的全都有,所见即所得。下载后全都有,请放心下载。原稿可自行编辑修改=【QQ:401339828 或11970985 有疑问可加】
目 录
1 引言 2
2 方案论证 2
3 总体设计框图 2
4 部分电路元件的介绍 3
4.1 单片机STC89C58RD+ 3
4.1.1反射式红外传感器E18-D80NK-N 3
4.1.2 对射式红外传感器3MNK 4
4.1.3 液晶显示器 LCD1602 4
5 整体电路介绍 13
5.1 总的工作原理分析 14
5.2 原理图 15
5.1 PCB图 16
6 程序软件 17
7 总结 18
谢辞 19
参考文献 21
1 引言
跳绳是一种以四肢肌肉活动为主的全身运动,它花样繁多,可简可繁,随时可做,一学就会,运动量可以根据动作繁简和速度快慢来调节,特别适宜在气温较低的季节作为健身运动是一项男女老少皆宜的运动项目。
跳绳不仅有利于发展腿部、上肢、腰部的肌肉力量,提高灵敏性、协调性、耐力等身体素质,尤其可以促进少年儿童的身体发育,还有利于加强血液循环,促进体内新陈代谢,提高神经系统的协调配合能力。同时,研究证实,跳绳可以预防诸如糖尿病、关节炎、肥胖症、骨质疏松、高血压、肌肉萎缩、高血脂、失眠症、抑郁症、更年期综合征等多种症病。对哺乳期和绝经期妇女来说,跳绳还兼有放松情绪的积极作用,因而也有利于女性的心理健康。
在跳绳时身体以两腿的弹跳和双上肢的摇动为主,手握绳把不停的摇动会刺激拇指上的穴位,增加脑神经细胞的活力。跳绳时的各种复杂的动作能够使大脑皮层的分析与综合机能得到提高。从运动量来说,持续跳绳10分钟,与慢跑30分钟或跳健身舞20分钟相差无几,可谓耗时少、耗能大的需氧运动。
“模拟跳绳仪”与手摆式跳绳不同,它是用红外线的发射与接收来检测手的移动以及脚的跳动,代替了绳子的摆动,从而实现了模拟跳绳的功能。当红外传感器检测到物体遮挡时,将输出一个低电平,当正常状态下没有物体遮挡时,输出一个高电平,当物体在不停的移动时,通过检测红外传感器的输出电平的不断变化来统计计数,从而实现电子自动计数的功能;
“模拟跳绳仪”设计时,采用红外感器,无触点、无损伤、寿命长。设计制作成小型的可适合家庭使用,设计制作成人型的可用于学校、机关、厂矿、小区等集体跳绳使用。如果该项目设计的好,一定会推动群众性跳绳健身运动的发展。
2 方案论证
“模拟跳绳仪”是采用红外传感器的原理进行一定规律的扫描,代替传统的手动摆绳,人进入跳绳区域(即红外检测区域)后,跳绳机开始计数,如果犯规,即该跳起来时没有跳起来,红外传感器没有检测到脚的移动,模拟跳绳仪将不计数,即显示器上的计数值不会增加。
3 总体设计框图
模拟跳绳仪的设计主控MCU采用STC89C58RD+单片机,用对射式红外传感器3MNK检测脚的起跳动作,用反射式红外线传感器E18-d80nk-N检测手的不停移动,用LCD1602来显示计数跳绳的次数。其中对射式红外传感器接收器的输出信号连接STC89C58RD+的一个外部中断引脚INT1,反射式红外传感器的输出信号连接STC89C58RD+的另外一个外部中断引脚INT0。在跳绳的过程中如果脚阻挡了光线,则是犯规,犯规计数器将会记下犯规的次数。图1为本设计的总体设计框图。
电 源
反射式红外传感器
单
片
机
手
对射式红外传感器发送端
对射式红外传感器接收端
脚
LCD显示器
图1 总体设计框图
4 部分电路元件的介绍
4.1单片机STC89C58RD+
图2
STC89C58RD+引出端的功能图如上图2,STC89C58RD+单片机是STC推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统的8051单片机,12时钟/机器周期和6时钟机器周期可以任意选择。
1、 增强型8051单片机,12时钟/机器周期和6时钟机器周期可以任意选择,指令代码完全兼容传统的8051
2、 工作电压在5.5V-3.3V
3、 工作频率范围:0-40MHz,相当于普通8051的0-80MHz实际工作频率可达到48MHz
4、 用户应用程序空间为32K,数据存储空间为1280字节,内部EEPROM为29K
5、 32个通用IO口,P0口是开漏输出,作为总线扩展用时,不用上拉电阻;用作普通IO口用时,必须外接上拉电阻
6、 ISP(在系统可编程)/IAP(在应用可编程),无需专用的编程器和仿真器,可通过串口(RXD/P3.0,TXD/P3.1)直接下载用户程序,数秒即可完成
7、 具有内部看门狗
8、 共有2个16位定时器/计数器,还可以当成两个8位定时器使用
9、 具有两个外部中断
10、 具有通用异步串口(UART),还可以用定时器软件实现多个UART
11、 工作温度范围:-40-80摄氏度(工业级)/0-75摄氏度(商业级)
12、 封装:PDIP-40
4.1.1 反射式红外传感器E18-d80nk-N
E18-D80NK-N这是一种集发射与接收于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测80厘米距离的问题(由于红外光的特性,不同颜色的物体,能探测的最大距离也有不同;白色物体最远,黑色物体最近)。
检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节。
该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场合。
电气特性:
红色:VCC;黑色:GND;黄色:OUT。
U:5VDC
I:100mA
Sn:3-80CM
尺寸:
直径:17MM
传感器长度:45MM
引线长度:45CM
4.1.1 对射式红外传感器3MNK
3MNK是一种对射式光电传感器,其物体不局限于金属,该传感器探测距离远范围为10CM-3M,由于该传感器不是精密产品,所以其测量有误差。
技术参数:
1、 电压:5VDC
2、 电流10 mA
3、 测量范围:10CM-3M
4、 NPN常开
5、 尺寸:32*25*14MM
6、 引线长度:45CM
7、 种类:对射式
8、 材料:聚合物
9、 材料物理性质:电感式
10、 制作工艺:集成
11、 输出信号:开关型
4.2液晶显示屏LCD1602
LCD1602是一种专门用于显示字母、数字、符号等点阵式LCD字符型液晶显示模块
主要技术参数:
显示容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
4`引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
表1 引脚接口说明表
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
5`其与单片机的连接如下图所示
1602液晶模块内部的控制器共有11条控制指令,如下表所示
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
表一
1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明1为高电平,0为低电平)
指令1:清显示,指令码01H,光标复位到地址00H位置
指令2:光标复位,光标返回到地址00H
指令3:光标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。
指令4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位 S/C :高电平时显示移动的文字,低电平时移动光标
指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符。
指令7:字符发生器RAM地址设置。
指令8:DDRAM地址设置。
指令9:读忙信号和光标地址 BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。
表二:基本操作时序表
读写操作时序如图所示
图三:读操作时序
图四:写操作时序
5 整体电路介绍
5.1 总的工作原理分析
当红外传感器检测到有物体时,其输出端口将输出高电平,当没有检测到物体的正常状态时,其输出端口输出低电平;因此,利用这一特性可以检测到脚的起跳和手的移动。当人站在对射式红外传感器(发送与接收端的中间时),对射式红外传感器的接收器会检测到脚,使其输出信号为低电平,当起跳后,红外传感器将不会检测到脚,输出高电平,当脚落地后,又输出低电平,于是,我们可以通过单片机检测到外部中断脚出现下降沿时,产生中断的方式来计数一次,起跳到落地,单片机将会产生一次中断,同理,检测手的反射式传感器也可以这样做。当单片机同时检测到两个外部中断(即人起跳,同时手有晃动动作,即可模拟一次跳绳的动作)计数跳绳一次,同时,单片机驱动LCD1602显示一次跳绳结果,并依次累计。
5.2 原理图
5.3 PCB图
6. 软件
Main.c
/************************头文件及说明*************************/
#include"stc.h"
#include
#include
#include
#include"uart.h"
#include"timer.h"
#include"misc.h"
#include"lcd1602.h"
unsigned char name[] = "IR JUMP TEST";
unsigned char name1[] = "--by Tan Tianyu";
unsigned char table1[12]={'j','u','m','p','c','o','u','n','t',':','0','0'};
unsigned char decade = 0;
unsigned char SkipCnt = 0;
void main(void)
{
LED_ON;
Timer0_Init();
UART_Init();
exit_Init();
lcd1602_init();
clearScreen();
DisplayChar (0,2,name,sizeof(name)-1);
DisplayChar (1,0,name1,sizeof(name1)-1);
delay_ms(4000);
clearScreen();
DisplayChar (0,2,name,sizeof(name)-1);
DisplayChar (1,2,table1,sizeof(table1));
while(1)
{
if(StartDetectFlag)
{
if(DetectHandFlag == 1 && DetectFootFlag == 1)
{
DetectHandFlag = 0;
DetectFootFlag = 0;
if(SkipCnt <= 9)
{
table1[11] = SkipCnt + 0x30;
}
else if(SkipCnt<=99)
{
table1[10] = SkipCnt/10 + 0x30;
table1[11] = SkipCnt%10 + 0x30;
}
else if(SkipCnt >= 100)
{
SkipCnt = 0;
table1[10] = SkipCnt + 0x30;
table1[11] = SkipCnt + 0x30;
}
SkipCnt++;
DisplayChar(1,2,table1,sizeof(table1));
}
}
}
}
Uart.c
/************************头文件及说明*************************/
#include "stc.h"
#include
#include "uart.h"
void UART_Init(void)
{
TMOD |= 0x20;//配置定时器1工作在模式2
TH1 = 0xFA; //T1的溢出率 = 11.0592MHz/12/(256-TH1) = 153600
TL1 = TH1;
SCON = 0x50;//串口工作在方式1,8位UART,波特率=(2^SMOD/32)*(T1的溢出率) = 9600
PCON = 0x80;// SMOD位置1
EA = 1; //使能总中断
ES = 1; //使能串口中断
TR1 = 1; //开启定时器1
}
void UartSendChar(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
#if 1
void UartSendChars(unsigned char *dat, unsigned int length)
{
while(length--)
{
UartSendChar(*dat++);
}
}
#endif
void UART_Routine(void) interrupt 4 using 2
{
if(RI)
{
RI=0;
}
}
Timer.c
/************************头文件及说明*************************/
#include "stc.h"
#include "timer.h"
#include"uart.h"
#include"misc.h"
#define SYSCLK 11059200
#define TIMER_10MS (65536-SYSCLK/12/100)
volatile int timeout = 200;
void Timer0_Init(void)
{
TMOD |= 0x01;//定时器0工作在模式1
TH0 = TIMER_10MS/256;
TL0 = TIMER_10MS%256; //定时时间10ms
ET0 = 1; //使能T0中断
TR0 = 1; //开启定时器0计时
}
void Timer0_Routine(void) interrupt 1 //10ms定时中断服务子程序
{
TH0 = TIMER_10MS/256;
TL0 = TIMER_10MS%256;
if(StartDetectFlag)
{
timeout--;
if(timeout == 0)
{
StartDetectFlag = 0;
}
}
}
Misc.c
#include"stc.h"
#include"misc.h"
#include"uart.h"
#include"timer.h"
volatile unsigned char StartDetectFlag = 0;
volatile unsigned char DetectHandFlag = 0;
volatile unsigned char DetectFootFlag = 0;
void delay_us(unsigned int i)
{
while(i--);
}
void delay_ms(unsigned int cnt)
{
unsigned int i;
while(cnt--)
{
for(i=0;i<75;i++);
}
}
void exit_Init(void)
{
IT0 = 1; //下降沿触发中断
EX0 = 1; //使能中断
IT1 = 1;
EX1 = 1;
}
void Int0_Routine(void) interrupt 0
{
//UartSendChar(0x22);
DetectFootFlag = 1;
}
void Int1_Routine(void) interrupt 2
{
//UartSendChar(0x33);
StartDetectFlag = 1;
timeout = 200;//2S定时开启
DetectHandFlag = 1;
}
LCD.c
#include"stc.h"
#include"lcd1602.h"
#include"misc.h"
const unsigned char address[]=
{0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF};
void write_com(unsigned char com)
{
E = 0;
RS = 0;
W_R = 0;
P2 = com;
delay_us(10);
E = 1;
delay_us(20);
E = 0;
}
void write_date(unsigned char date)
{
E = 0;
RS = 1;
W_R = 0;
P2 = date;
delay_us(10);
E = 1;
delay_us(20);
E = 0;
}
void lcd1602_init(void)
{
write_com(0x38); //设置显示模式,8位数据总线,双行显示,显示5X10的字符
delay_us(20);
write_com(0x0c);//设置光标打开并闪烁显示
delay_us(20);
write_com(0x06);//设置光标右移
delay_us(20);
write_com(0x01); //清除屏幕
delay_us(20);
}
void clearScreen(void)
{
delay_us(200);
write_com(0x01);
delay_us(200);
}
void DisplayChar(unsigned char x,unsigned char y,unsigned char *buf,unsigned char size)
{
write_com(address[16*x+y]);
delay_us(20);
while(size--)//空格的地址是0
{
if(y>=16) //判断换行
{ //若不判断,则自动从第一行到第三行
y=0;
x++;
}
if(x>=2)
{
x=0;//一屏显示完,回到屏左上角
}
write_com(address[16*x+y]);//更新地址 一个地址要写完一个字,则要与两次数据写完
write_date(*buf);//写数据
buf++;
y++;//写完一个字地址要往前走一位
delay_us(20);
}
}
7 结论
毕业论文是我们本科生在学习阶段的一次非常难得的理论与实际相结合的机会,通过这次比较完整的模拟跳绳仪的设计,我摆脱了单纯的理论知识学习状态。和实际设计的结合锻炼了我的综合运用所学专业基础知识的能力,同时也增强我查阅文献资料、设计手册、设计规范以及专业软件制图等非专业能力,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志力、抗压能力及耐力水平也都得到了不同程度的提升。这是我们都希望看到的,也正是我们进行毕业设计的目的所在。
虽然毕业设计内容繁多,过程繁琐,但我的收获却更加丰富。通过查找资料,设计电路以及制作电路,能够让人详细对跳绳仪的工作原理、操作过程以及使用方法有一个深刻的理解。各种芯片的适用条件,各种元件设备的选用标准,我都是随着设计的不断深入而不断熟悉并学会应用的。
在设计过程中,和老师的沟通交流更使我从经济实用的角度对设计有了新的认识,也对自己提出了新的要求。要想更完美的进行,与其他专业人才及老师的交流沟通也是很有必要的。这期间我请教了关于单片机、PLC、家电等多方面的各位老师,更加理清了模拟跳绳仪各部分电路的原理知识。提高是有限的,但提高也是全面的,正是这一次设计让我积累了无数实际经验,让我的头脑更好的被知识武装了起来,也必然会让我在未来的工作学习中表现出更高的应变能力,更强的沟通力和理解力。
顺利如期的完成本次毕业设计给了我很大的信心,让我了解专业知识的同时也对本专业的发展前景充满信心。虽然有些地方还有不足,但正是因为这些不足在一定程度上给了我们无限的创造力,也是我们更好的去研究、更好的去创造的最大动力,只有发现问题、面对问题,才有可能解决问题,不足和遗憾不会给我打击,只会更好的鞭策我前行,今后我更会关注新技术新设备的出现,并争取尽快的掌握这些先进的知识,更好的为大众服务。
谢辞
在毕业设计中,在老师指导和帮助下设计模拟跳绳仪,使我在理论和实践方面都受益匪浅,不仅进一步丰富了理论知识,而且还提高了动手操作的能力。由于我要参加考研复试,因此我做毕业的时间很少,学校复试完回来时,剩下的时间已经很少了,因此为了让我更好的完成毕业设计,老师不惜牺牲假日和平时的休息时间,为我辅导和及时的解决出现的各种问题。他们求学的严谨态度、孜孜不倦的探索精神,令我受益终生。他们对知识地渴求,对生活的乐观,还有他们永远洋溢着笑容的脸庞,让我们由衷的感激,也由衷的敬佩!也将永远铭刻在我的心中,并激励我奋发向前!
此外,在毕业设计的过程中,我的每一点进步和收获,也离不开同学们的支持和帮助,在我遇到困难时,他们总是热情、认真的帮助我分析问题,最终和我一起找到解决方案。
大学四年的学习阶段伴随着论文的完成就要结束了,在即将毕业的时刻,难以割舍的心情用千言万语都无法形容,但是在这里我要向所有关心、帮助我的老师致以衷心的感谢!是您们将自己宝贵的财富无私地奉献给了我们,让我们能在学业上有所成就;是您们让我们倍感教师职业的伟大,教给我们知识,又不忘教育我们如何做人!我真诚对老师们说声:您们辛苦了,感谢您们这一路来的指导和无微不致的关怀。同时也要向我的同学朋友说声,感谢你们对我的支持和帮助,衷心的祝愿你们事业有成,一生幸福
参考文献
[1] 黄继昌.传感器工作原理及应用实例[M].北京:人民邮电出版社,1998
[2] 卿太全.热释电人体红外传感器原理及应用[J].电子世界1996(10):25 ~ 26
[3] 冯克成.红外线光学系统[M].北京:兵器工业出版社,2005
[4] 顾文郁.光电测技术[M].上海:上海科学技术出版社,2004
[5] 虞光楣.功率放大器的应用[M].北京:北京工业出版社,2004
[6] 守车生.移位寄存器[J].无线电,2000(11):522~523
[7] 荀殿栋.数字电路设计实用手册[M].电子工业出版社,2005
[8] 福安.电子电路设计与实践[M].山东科学技术出版社,2004
[9] 刘守义.数字电子技术[M].西安电子科技大学出版,2001
[10] 电子电路手则,第二册数电集成部分的由石英晶体震荡器获得脉冲信号,2000
[11] 李学芝.LED数码管的使用方法[J].无线电,1999(10):23~24
[12] 洪亚阔.电子检测仪准确率的研究.用电器科技.2006(3):37~39
[13] David Ethetidge.Information Networks [M]. Prentice halInternational Ltd ,2005
[14] Head JR.The use of micron aver vehicle detectors with traffic signals [J].Traffic Engineering Control,2006(1):23~25
[15] 吴金戌,郭庭吉等.音乐的应用.8051单片机实践与应用[M].124-130
[16]李朝青.89C2051单片机.单片机原理及接口技术[M].北京航空航天大学出版社, 278
[17] 宋东生.音乐集成电路.无线电[J].2002,(1):59
19
收藏