智能婴儿车.doc_第1页
智能婴儿车.doc_第2页
智能婴儿车.doc_第3页
智能婴儿车.doc_第4页
智能婴儿车.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

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

文档简介

首届电子创新大赛 智能婴儿车的设计 参赛单位:广州大学 设计者: 展兴海 黄如英 梁小妹 指导老师 :吴智量 2011年5月5日中文摘要本设计以婴儿为出发点,以充分实现对婴儿以及周边状态的智能化为目的,来实现简单、方便照顾婴儿,从而为大人节省时间和精力。在本设计中我们以STC89C52单片机为核心MCU,外围电路采用模块化设计,结合程序我们的设计分为测温以及温控模块、报警模块、声控音乐模块、PWM直流电机模块、智能避障模块以及无线传输控制模块等六个模块。实物操作简便,方便实惠,并且性价比高,使用价值强。关键词:婴儿床,智能化,STC89C52,PWM,无线传输,性价比高【原创性声明】本设计是针对婴儿而设计的一种智能型的婴儿车,创新点在于,它能准确的报告婴儿以及周边环境的状态,并对一些情况作出相应的措施,从而减少了大人的工作量,并且能为大人及时报告婴儿的一些特殊情况,使大人能够及时去处理。(另外我们申明此作品为我们组员自行想象设计)前言伴随着科学技术的发展,人类社会的进步,越来越多的电子产品不断涌现,并且电子产品也不断向体积小,功能大,效率高,能耗低的方向发展,我们的设计作品充分体现了这些特点。设计中我们运用了STC89C52单片机,运用DS18B20进行时时监测温度,并在温度过高和过低时报警提醒;编写了可调节的电子钟;并在液晶上准确显示温度和时间;识别小孩的哭声启动音乐芯片来吸引小孩的注意力,从而让其止哭;PWM控制直流电机带动小车运动,并通过智能避障系统实现智能运动,使设计更加人性化;无线传输模块实现了远程通讯,从而摆脱了空间的局限性,使设计更加的完美。一 总体方案设计直流电机、智能避障发音系统1602显 示温度监测蜂鸣器报警声信号识别LED STC89C52无线通讯键盘电子钟系统框图二 方案论证与设计根据系统框图,对单元电路控制进行设计,下面是我们对各部分单元电路的论证与设计。2.1 主控电路的选择与论证本设计采用STC89C52系列单片机作为CPU。5l系列单片机中典型芯片(STC89C52)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时计数器TO和T1,4个8 b的工O端I:IP0,P1,P2,P3,一个全双工串行通信口等组成。特别是该系列单片机片内的Flash可编程、可擦除只读存储器(EPROM)。 本设计就采用STC89C52为主控芯片。5l系列单片机提供以下功能:4 kB存储器;256 BRAM;32条IO线;2个16b定时计数器;5个2级中断源;1个全双向的串行口以及时钟电路。空闲方式:CPU停止工作,而让RAM、定时计数器、串行口和中断系统继续工作。掉电方式:保存RAM的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。2.2 显示设备的选择与论证本设计使用液晶1602进行显示。该液晶显示驱动简单,耗电量小,无辐射危险,平面直角显示以及影响稳定不闪烁灯优势,显示直观、抗干扰能力强等诸多优点。1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:1602LCD主要技术参数:显示容量:162个字符 芯片工作电压:4.55.5V工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V字符尺寸:2.954.35(WH)mm2.3 无线传输模块选型本设计采用NRF905无线传输模块实现收发一体。nRF905是挪威Nordic VLSI公司推出的单片射频收发器,工作电压为1.93.6V, 32引脚QFN封装(55 mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650us。 nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器, Shock Burst TM工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。此外,其功耗非常低,以- 10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。nRF905适用于无线数据通信、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域,因此我们选择了此芯片来实现无线传输。2.4 DS18B20温度传感器1、DS18B20产品的特点(1).只要求一个端口即可实现通信。(2).在DS18B20中的每个器件上都有独一无二的序列号。(3).实际应用中不需要外部任何元器件即可实现测温。(4).测量温度范围在55。C到125。C之间。(5).数字温度计的分辨率用户可以从9位到12位选择。(6).内部有温度上、下限告警设置。2、DS18B20引脚图DS18B20的引脚图2.5 L298N控制直流电机本系统采用集成电路L298来驱动电机。L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。其引脚排列如下图所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。L298N可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。(5、10)、(7、12)脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。在本设计中我们的小车速度大概是0.15m/s,每个电平延时3秒,之后取反,使电机正反转,从而带动小车前后运动。L298N的引脚图三 硬件电路设计3.1 单片机模块单元电路的设计.Sch文件截图如下:本设计采用STC89C52单片机作为主控芯片,其中P2口为1602数据口,P0.0-P0.3为L298N的四个In口,P0.4、P0.5分别为两个使能端,P3.0为DS18B20数据口,P0.6、P0.7为高低温led显示,P1.3-P1.5分别为1602的RS/RW/EN口,P3.2-P3.7为K1-K6六个按键,P3.1为风扇电平触发口,P1.0为蜂鸣器,P1.1为声音放大信号输入,P1.2为音乐芯片触发口。3.2 直流电机模块单元电路的设计在本设计中共有两个直流电机,通过L298N来控制,其中P0.0、P0.1分别为InA1、InA2,P0.2、P0.3分别为InB1、InB2,P0.4- EA,P0.5- EB.引脚功能:第1、15脚:可单独引出连接电流采样电阻器,形成电流传感信号,也可直接接地。第2、3脚:A电机输出端口。第4脚: 接逻辑控制的+5V电源。第6脚: A桥使能端口。第5、7脚:输入标准TTL电点平对A桥的输出OUT1、OUT2进行控制。第8脚: 接电源地。第9脚: 接电机驱动电源,最高可达50V。第11脚: B桥使能端口。第10、12脚: 输入标准TTL电平对B桥的输出OUT3、OUT4进行控制。第13、14脚: B电机输出端口。L298N逻辑关系如图:ENA(B)IN1(IN3)IN2(IN4)电机运行状况HHL正转HLH反转H同IN2(IN4)同IN1(IN3)快速停止LXX停止3.3 1602显示模块电路的设计引脚功能说明:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极3. 4 无线通讯电路的设计除VCC、GND外,CD悬空,其余10个脚分别接单片机10个IO口。3.5电源电路的设计本电路采用9V供电,通过7805三端稳压,滤波后供给单片机。四 软件的设计和实现本设计的软件主要又以下几块组成:首先是主程序,其次就是lcd1602显示子程序,DS18B20读取子程序,NRF发射与接收子程序,PWM驱动子程序,时钟设置子程序以及延时和中断子程序。C语言程序有利于实现较复杂的算法,所以我们采用C语言编程。开始单片机初始化读取温度数值显示温度开始Lcd液晶初始化设置时间显示时间定时器中断入口关闭定时器中断读取输入值分析接收数据作出相应反应abc【智能婴儿车程序流程图】参考文献 1 漆安慎,杜婵英.力学.高等教育出版社,2005.6 2 华兵.MCS-51单片机原理应用.武汉华中科技大学出版社,2002 .53 李华.MCU-51系列单片机实用接口技术.北京航空航天大学出版社, 1993. 64 陈光东.单片机微型计算机原理与接口技术(第二版).华中理工大学出版社,1999.4 5 苏长赞.红外线与超声波遥控.北京:人民邮电出版社,1993.7 6 九州.放大电路实用设计手册.沈阳:辽宁科学技术出版社,2002.57李瀚荪.简明电路分析基础.高等教育出版社,2002.7附录:部分程序#include#include#define uchar unsigned char#define uint unsigned int #define delayNOP() _nop_();_nop_();_nop_();_nop_();typedef unsigned char BYTE;typedef unsigned int WORD;typedef bit BOOL ;#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P1sbit K1=P30;/正常显示温度,越界是报警sbit K2=P31;/显示报警温度sbit K4=P32; /选择调整小时,分钟sbit K5=P34;/增加sbit K6=P36;/减少sbit K7=P37;/确定uchar Current_Temp_Display_Buffer12=Temp= ;/温度字符uchar code Temperature_Char8=0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00;uchar Alarm_HI_L0_STR12=HI: lo: ;uchar temp_data2=0x00,0x00;uchar temp_alarm2=0x00,0x00;uchar display5 =0x00,0x00,0x00,0x00,0x00;/温度值uchar display13 =0x00,0x00,0x00;/温度报警器uchar code df_Table=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;/温度小数位对照表/显示时间字符uchar code Str23=Set;uchar HMS_String12= 12:30:00;bit Settime=0;bit Change_H_or_M=1;uchar MillSecond,Hour=12,Minute=30,Second=0;/-char Alarm_Temp_HL2=33,25;/-uchar CurrenT=0; /当前读取的温度整数部分uchar Temp_Value2=0x00,0x00;/从DS18B20读取的温度值uchar Display_Digit4=0,0,0,0;/带显示的各温度数位bit HI_Alarm=0,LO_Alarm=0; /高低温报警数位 bit DS18B20_IS_OK=1; /传感器正常标志uint Time0_Count=0; /-void DelayUs2x(unsigned char t) while(-t);void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /自定义字符写CGRAM/-void Write_NEW_LCD_Char()uchar i;LCD_Write_Com(0x40);/写GCRAMfor(i=0;i8;i+) LCD_Write_Data(Temperature_Chari);/写入温度符号/-/延时/-void Delay(uint num)while(-num);/-/读取温度值/-void Read_Temperature()if(Init_DS18B20()=1)DS18B20_IS_OK=0;else WriteOneByte(0xCC);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0xBE);Temp_Value0=ReadOneByte();Temp_Value1=ReadOneByte();Alarm_Temp_HL0=ReadOneByte();Alarm_Temp_HL1=ReadOneByte();DS18B20_IS_OK=1;/-/设置DS18B20温度报警器/-void Set_Alarm_Temp_Value()Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0x4E);WriteOneByte(Alarm_Temp_HL0);WriteOneByte(Alarm_Temp_HL1);WriteOneByte(0x7F);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0x48);/-/定时器中断,控制器报声音/-/*void time0 () interrupt 3 TH1=1000/256; TL1=1000%256;BEEP=!BEEP;if(+Time0_Count=400)Time0_Count=0;if(HI_Alarm) HI_LED=HI_LED; fan=0; else HI_LED=1;if(LO_Alarm) LO_LED=LO_LED; else LO_LED=1;TR1=0; */void time1() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(+MillSecond=20)MillSecond=0;if(+Second=60)Second=0;if(+Minute=60)Minute=0;if(+Hour=24)Hour=0;Minute=0;Second=0;if(HI_Alarm) +Time0_Count;if(Time0_Count=400)Time0_Count=0; HI_LED=HI_LED; fan=0;BEEP=!BEEP; else HI_LED=1;if(LO_Alarm) LO_LED=LO_LED; else LO_LED=1;TR1=0; /-/ 显示报警温度/-void Disp_Alarm_Temperature()uchar i,ng;/显示AlarmTemp_HL数组中的报警温度值/由于 AlarmTemp_类型为char,固可以直接进行正负比较/高温报警值 -ng=0;if(Alarm_Temp_HL00) /如果为负数则取反加1Alarm_Temp_HL0=Alarm_Temp_HL0+1;ng=1;/分解高温个数为高待显示串中/Alarm_HI_L0_STR3=Alarm_Temp_HL0/100+0;Alarm_HI_L0_STR3=Alarm_Temp_HL0/10%10+0;Alarm_HI_L0_STR4=Alarm_Temp_HL0%10+0;/屏蔽高位不显示的0/if(Alarm_HI_L0_STR3=0) Alarm_HI_L0_STR3= ;/if(Alarm_HI_L0_STR3= & Alarm_HI_L0_STR4=0)/Alarm_HI_L0_STR4= ;/显示符号- _if(ng) if(Alarm_HI_L0_STR4= ) Alarm_HI_L0_STR5=-;elseif(Alarm_HI_L0_STR3= ) Alarm_HI_L0_STR4=-;/else /Alarm_HI_L0_STR3=-;/低温报警值ng=0;if(Alarm_Temp_HL10)/如果为负数则取反加1Alarm_Temp_HL1=Alarm_Temp_HL1+1;ng=1;/分解低温个数为高待显示串中/Alarm_HI_L0_STR6=Alarm_Temp_HL1/100+0;Alarm_HI_L0_STR9=Alarm_Temp_HL1/10%10+0;Alarm_HI_L0_STR10=Alarm_Temp_HL1%10+0;/屏蔽高位不显示的0/if(Alarm_HI_L0_STR6=0) Alarm_HI_L0_STR6= ;/if(Alarm_HI_L0_STR6= & Alarm_HI_L0_STR7=0)/Alarm_HI_L0_STR13= ;/显示符号- _if(ng) if(Alarm_HI_L0_STR10= ) Alarm_HI_L0_STR10=-;elseif(Alarm_HI_L0_STR9= ) Alarm_HI_L0_STR9=-;/else /Alarm_HI_L0_STR6=-;/显示高低温报警温度值/*Set_LCD_POS(0x00);for(i=0;i16;i+)Write_LCD_Data(Alarm_Tempi); */Set_LCD_POS(0x00);for(i=0;i1

温馨提示

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

评论

0/150

提交评论