室内全自动环保攀岩机案例.docx
- 文档编号:17712333
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:28
- 大小:63.13KB
室内全自动环保攀岩机案例.docx
《室内全自动环保攀岩机案例.docx》由会员分享,可在线阅读,更多相关《室内全自动环保攀岩机案例.docx(28页珍藏版)》请在冰点文库上搜索。
室内全自动环保攀岩机案例
案例:
室内全自动环保攀岩机
1.系统功能描述
随着我国经济、科技实力的逐步增强以及人们的生活条件的快速提高,健康,易趣的高质量生活日益成为人们的追求目标,同时,受外部环境的限制,某些看似不可能在室内进行的运动也逐渐搬到了室内,室内攀岩就是其中之一。
攀岩是从登山运动中衍生出来的竞技运动项目。
从80年代以来,攀岩运动逐渐成为广大喜欢刺激的年轻人的首选,也因此曾掀起一场场攀岩热。
但是攀岩运动有其自身的致命的缺点,传统攀岩受空间影响比较大,必须在开阔的室外,而且,大部分攀岩的地点都是悬崖峭壁之类的非常的危险。
世界各地也频频传出因此类原因的事故报道。
所以,一个即具有安全性又不乏刺激的室内攀岩应运而生。
2.工作原理
工作过程及技术要求:
1打开电源开关,液晶屏上显示“模式”、“速度”、“时间”。
2共有四种模式可供切换,包括“初级”、“中级”、“高级”、“自由”,按“模式切换”键切换模式的同时,相应的切换模式对应的“速度”、“时间”。
3初级对应速度0.1m/s,时间3min;中级对应速度0.3m/s,时间5min;高级对应速度0.5m/s,时间10min。
4需要强调的是自由模式,自由模式中速度,时间都是可调,速度和时间根据需要可在0.1~1.0m/s,1~30min之间通过按键“速度+”、“速度-”、“时间+”、“时间-”来调整。
5攀岩机的攀岩履带分上:
倾斜部分,和下:
垂直部分。
上方倾斜部分的角度是可以调节的,按“角度+”、“角度-”可以实现。
6当一切都调整好后,点击“开始”键攀岩机就会按照设定的速度,开始倒计时。
7为保证攀岩过程中的安全,以上模式,速度,时间,角度值只可以在按开始键之前调整。
8为应对某些特殊情况的发生,攀岩机的左侧,在攀岩者可以触及的范围内安装了一个急停按钮。
在攀爬时,攀爬者可自己随时轻松停止整个系统,保证人身安全。
9当攀爬时间倒计到0时,语音系统会发出语音提示,同时液晶屏幕上也会提示攀爬者挑战成功。
3.系统方案及电路设计
3.1系统方案
红外检测模块
语音模块
液晶显示器
电机驱动
按键输入
单片机控制
图1
室内全自动环保攀岩机的系统组成框图如图1所示。
它由单片机控制系统,按键输入模块,红外检测模块,语音输出模块,液晶显示模块,L298电机驱动模块组成。
3.1.1按键输入检测模块
按键输入模块通过单片机检测P2口相应位电压是否有下降沿来控制模式,时间等数据的转换。
作用:
选择,输入所需要的模式,速度,时间等指令。
3.1.2液晶显示模块
液晶显示模块利用12864大液晶的实时显示原理,即单片机在不同时间,不同速度时会及时的将相应数据通过P0口发送给液晶,并在液晶上显示。
作用:
实时显示攀岩机的运行状态。
3.1.3L298电机驱动模块
L298电机驱动模块利用L298电路及电机驱动器实现,通过单片机的信号指令调节速度快慢。
电机驱动电路采用专用芯片L298N作为电机驱动芯片。
作用:
用该芯片作为电机驱动,不仅稳定性好,大大地简化驱电路,而且驱动能力大,有利于电机转速的稳定。
3.1.4红外检测模块
红外检测模块利用红外对管之间有格挡时与没有格挡时电压不同,即有格挡时为高电平,无格挡时为低电平。
作用:
来检测相应位置上是否存在攀岩者,从而精确确定攀岩者的实时位置。
3.1.5语音输出模块
语音输出模块作为智能信号交换的主要部分在运行中自动获取攀岩者的语音信息,并输出相应的智能语音提示。
作用:
实现智能化信息的交互。
3.2电路设计
3.2.1案例目的
(1)掌握按键控制原理及程序应用;
(2)掌握12864大液晶的使用方法;
3.2.2案例器材
室内全自动环保攀岩机电路原理如图3。
共设有多个输入按键,1个语音交互芯片。
多个用于检测人体位置的红外系统,1个控制电机的298芯片,1个用于显示模式、时间、速度的液晶,电阻、电容多个。
图3
3.2.3控制要求
通过按键,STC98C52来控制液晶显示,电机转动及语音信息的交互。
3.2.4电路工作原理
如图3,通过P2^3到P2^7按键模块控制来选择模式、时间、速度,相应的会在液晶上显示,确定好模式后,按P2^2口连接的开始键,此时,按照已设定好的模式、时间、速度,单片机通过P1^4至P1^7四个位向L298电机驱动模块输出信号,L298电机驱动模块接收到信号就开始驱动电机转动,液晶实时接收P0口发来的信号并显示电机的速度及运行剩余时间。
与此同时,红外检测模块不断检测攀岩者所在位置,并向P3^5,P3^6,P3^7口发送电平信号,高电平为没有检测到攀岩者,低电平为检测到攀岩者,根据攀岩者所攀爬的位置不同,不是的对电机的运转速度进行微调;语音模块通过单片机的P3^0,P3^1的串口,将复杂的语音信号发总到单片机,单片机接收后又将相应的指令通过串口发回语音芯片,实现语音信号的实时交互,保证语音信息的输入和相应的输出。
各个模块不停运行,检测,直至设定时间倒计为零。
3.3控制流程图
4.智能语音系统原理
语音信息交互主要靠专业的语音芯片实现的。
在程序编写时在语音芯片中预先设定好所有在攀岩中会出现的语音要求或提示,借助语音软件将文字与声音联系起来,同时给相应的命令编写特定的程序编号,并录入单片机程序中。
当攀岩机运行时,单片机控制系统就会不停检测语音模块的指令信号,与程序中的编号进行匹配。
当语音芯片识别到外界的语音信息时,就将其相应的程序编号发送到单片机,此时单片机匹配到正确的编号对应的回复语音,单片机会将此回复语音的命令代码反发送会语音芯片。
语音芯片接收到单片机发送来的语音命令,就将该命令相应的语音信息通过外放发出。
5.AT89C52单片机的功能特点
图2
AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
兼容MCS51指令系统·8k可反复擦写(>1000次)FlashROM
·32个双向I/O口·256x8bit内部RAM
·3个16位可编程定时/计数器中断·时钟频率0-24MHz
·2个串行中断·可编程UART串行通道
·2个外部中断源·共6个中断源
·2个读写中断口线·3级加密位
6.程序设计
#include
#defineucharunsignedchar
#defineuintunsignedint
/******************端口定义*********************/
#defineLCD_DATAP0//液晶信号输出
sbitLCD_RS=P2^7;//定义液晶RS位
sbitLCD_RW=P2^6;//定义液晶RW位
sbitLCD_EN=P2^5;//定义液晶EN位
sbitmode_change=P2^0;//模式转换
sbitspeed_up=P2^1;//速度+
sbitspeed_down=P2^2;//速度-
sbittime_up=P2^3;//时间+
sbittime_down=P2^4;//时间-
sbitturn_on=P1^7;//开始
sbitturn_off=P1^1;//停止
sbitdianji=P1^2;//电机信号
sbitdianji_ting=P1^3;//电机停止
sbitGD_up=P3^5;//光电上
sbitGD_mid=P3^6;//光电中
sbitGD_down=P3^7;//光电下
ucharFLAG;//模式标志位
ucharspeed;//定义速度变量
ucharss;//速度转化中间变量
uchartime;//定义时间变量
ucharfen;//变量分
ucharmiao;//变量秒
ucharm;//时间+标志位
ucharn;//时间-标志位
uchark;//速度+标志位
ucharl;//速度-标志位
uchart;//中断标志位
uchartt;//中断标志位
ucharx;//液晶显示起始位
/*********************显示内容**********************/
ucharcodetitle1[]={"模式:
"};
ucharcodetitle2[]={"时间:
"};
ucharcodetitle3[]={"速度:
"};
ucharcodetitle4[]={"高度:
"};
ucharcodetitle00[]={"时间到!
"};
ucharcodetitle01[]={"恭喜您"};
ucharcodetitle02[]={"挑战成功!
"};
ucharcodetitle03[]={"请输入时间和速度"};
ucharcodemode1[]={"初级"};
ucharcodemode2[]={"中级"};
ucharcodemode3[]={"高级"};
ucharcodemode4[]={"自由1"};
ucharcodenum[]={"0123456789"};
ucharcodesymbol1[]={"/."};
ucharcodesymbol2[]={":
"};
/*********************延时程序********************/
voiddelay_1ms(uintx)
{uinti,j;
for(j=0;j for(i=0;i<110;i++); } /*******************写指令数据到LCD*********************/ /*****************RS=L,RW=L,EN=H,D0-D7指令码************/ voidwrite_cmd(ucharcmd) {LCD_RS=0; LCD_RW=0; LCD_EN=0; P0=cmd; delay_1ms(5); LCD_EN=1; delay_1ms(5); LCD_EN=0; } /*************************写数据到LCD**********************/ /*****************RS=H,RW=L,EN=H,D0-D7数据码**************/ voidwrite_data(uchardat) {LCD_RS=1; LCD_RW=0; LCD_EN=0; P0=dat; delay_1ms(5); LCD_EN=1; delay_1ms(5); LCD_EN=0; } /*************************设定显示位置***********************/ voidlcd_pos(ucharx,uchary) {ucharpos; if(x==0){x=0x80;} elseif(x==1){x=0x90;} elseif(x==2){x=0x88;} elseif(x==3){x=0x98;} pos=x+y; write_cmd(pos); } /*****************************倒计时************************/ voidshan_show1() {lcd_pos(1,4); x=0; while(symbol2[x]! ='\0') {write_data(symbol2[x]); x++; } } voidshan_show2() {lcd_pos(1,4); write_data(num[11]); write_data(num[11]); } /**************************倒计时——分**************************/ voidfen_show() {lcd_pos(1,3); write_data(num[fen/10]); write_data(num[fen%10]); } /*************************倒计时——秒********************************/ voidmiao_show() {lcd_pos(1,5); write_data(num[miao/10]); write_data(num[miao%10]); } /*******************************LCD初始化操作*************************/ voidlcd_init() {write_cmd(0x30);//基本指令操作 delay_1ms(5); write_cmd(0x0c);//显示开,关光标 delay_1ms(5); write_cmd(0x01);//清除LCD显示内容 delay_1ms(5); } /*************************停止检测****************************/ voidstop_test() {uchari; if(fen==0&&miao==0) {turn_off=0; ET1=0; TR1=0; lcd_init(); lcd_pos(0,0); i=0; while(title00[i]! ='\0') {write_data(title00[i]); i++; } lcd_pos(1,0); i=0; while(title01[i]! ='\0') {write_data(title01[i]); i++; } lcd_pos(2,0); i=0; while(title02[i]! ='\0') {write_data(title02[i]); i++; } while (1); } } /***********************时间检测***********************/ voidtime_test() {if(fen==0&&miao==0) {if(point==0) {uchari; lcd_init(); lcd_pos(1,0); i=0; while(title03[i]! ='\0') {write_data(title03[i]); i++; } while (1); } } } /***********************语音的串口中断初始化****************************/ voidyuyin_init() {TMOD=0x20;//定时器1使用初值自动重装方式,方式2 TH1=0xfd; TL1=0xfd;//9600波特率初值 TR1=1;//允许定时器计数 SM0=0;//方式1设置 SM1=1; REN=1;//允许串口接收 EA=1;//开总中断 ES=1;//开串口中断 } /***********************中断初始化***********************************/ voidinterrupt_init() {EA=1; ET0=1; TR0=1; TMOD=0x11; } /**************************速度显示*************************************/ voidspeed_show() {if(speed_up==0&&k==1)//调节速度 {delay_1ms(5); if(speed_up==0) {k=k-1; speed++; if(speed==11) {speed=1; } } } if(speed_down==0&&l==1) {delay_1ms(5); if(speed_down==0) {l=l-1; speed--; if(speed==0) {speed=10; } } } if(speed_up==1&&k==0) {k=k+1; delay_1ms(5); if(speed_up==1) {lcd_pos(2,3); write_data(num[speed/10]); write_data(symbol1[1]); write_data(num[speed%10]); } } if(speed_down==1&&l==0) {l=l+1; delay_1ms(5); if(speed_down==1) {lcd_pos(2,3); write_data(num[speed/10]); write_data(symbol1[1]); write_data(num[speed%10]); } } } /**************************时间显示***********************************/ voidtime_show() {if(time_up==0&&m==1)//调节时间 {delay_1ms(5); if(time_up==0) {m--; time++; point++; if(time==31) {time=1; } } } if(time_down==0&&n==1) {delay_1ms(5); if(time_down==0) {n--; time--; point++; if(time==0) {time=30; } } } if(time_up==1&&m==0) {m++; delay_1ms(5); if(time_up==1) {lcd_pos(1,3); write_data(num[time/10]); write_data(num[time%10]); } } if(time_down==1&&n==0) {n++; delay_1ms(5); if(time_down==1) {lcd_pos(1,3); write_data(num[time/10]); write_data(num[time%10]); } } } /****************************按键检测*****************************/ voiddetectkeys()//模式按键检测使能 {ucharx=0,y; delay_1ms(5);//按键消抖 if(mode_change==0) {if(y==0)//一次按键中级 {lcd_pos(0,3); x=0; FLAG=2; while(mode2[x]! ='\0') {write_data(mode2[x]); x++; } lcd_pos(1,0); x=0; while(title2[x]! ='\0') {write_data(title2[x]); x++; } write_data(num[0]); write_data(num[5]); shan_show1(); write_data(num[0]); write_data(num[0]); lcd_pos(2,0); x=0; while(title3[x]! ='\0') {write_data(title3[x]); x++; } write_data(num[0]); write_data(symbol1[1]); write_data(num[3]); } elseif(y==1)//两次按键高级 {lcd_pos(0,3); x=0; FLAG=3; while(mode3[x]! ='\0') {write_data(mode3[x]); x++; } lcd_pos(1,0); x=0; while(title2[x]! ='\0') {write_data(title2[x]); x++; } write_data(num[1]); write_data(num[0]); shan_show1(); write_data(num[0]); write_data(num[0]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 室内 全自动 环保 攀岩 案例
![提示](https://static.bingdoc.com/images/bang_tan.gif)