1、不仅如此系统的大小还得考虑,合理的安排元件的位置,以减少板子的大小。第2章 设计方案与论证2.1 超声波测距模块方案一:按照电路图手工焊接相关电路。优点:可以合理安排零件的位置,减少系统的大小。缺点:调试难度大,并且精度没有保证。最后不予考虑。方案二:使用超声波模块KS103。测距最大距离8米,盲区为最小1cm之内。测量精度平均3mm,最高达1mm.而且相当灵敏。具有目前其他同类超声波模块产品所无法达到的性能优势和质量保障。测量距离,温度,光强,三合一功能 。但是缺点是价格太高,不予考虑。方案三:使用超声波模块HC-SR04模块。模块特点:HC-SR04超声波测距模块可提供2cm-400cm的
2、非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。综合价格、大小、精度等各方面因素,系统最后选择此模块座位测距模块。2.2 供电模块 方案一:使用若干节五号干电池供电。由于直流升压芯片相比降压来说要少,并且在稳压过程中的损耗比降压要大,所以需要5v以上的电压供电。干电池每节1.5v,也就是说需要4节干电池。体积较大,并且不能充电,所以不采用此方案。使用手机电池供电。手机电池为锂电池,电量大,体积小。要达到5v以上电压只需两块电池串联。并且还可以充电,便于循环使用。两块手机电池串联之后实际电压为8.4v,1117稳压芯片也很便宜。经过两级降压分别输出5v和3.
3、3v的电压。本系统就是采用这个方案。2.3 显示模块1602液晶显示屏,可以显示两排数字以及字符。但是它所占用的引脚太多,除去供电引脚外还需12个引脚。MSP430G2只有组8位I/O口,所以1602不予考虑。方案二:5110液晶显示屏可以显示15*6个数字或字符,并且还能显示汉字。除去电源引脚外只需占用5个I/O口即可工作,所以本系统采用此液晶显示。2.4测温模块使用热电阻组成电桥电路,将温度转换成电压值,经过单片机内部的AD转换电路变成数字量。但是电桥电路的平衡由于存在各种漂移不容易调整,并且电桥持续工作浪费电量,不符合便携式的设计要求,综上不予考虑此方案。数字化芯片DS18B20温度传感
4、器,控制较为简单,并且只需占用一个引脚。集成程度高,休眠时的功率也很小。精度为0.5摄氏度。满足本系统的设计要求。第3章 硬件设计3.1 系统原理方框图图3-1 系统原理方框图3.2 主电路图图3-2 主电路图3.3 I/O口分配P1.0接DS18B20,P1.1和P1.2分别接HC-RS04的Trig和Echo引脚。P1.3 P1.4接两个按钮。P1.7 P1.6 P2.5 P2.4 P2.3接5110液晶显示屏图3-3 单片机I/O口分配图3.4 元器件选型3.4.1 主控制芯片MSP430G2553MSP430G2 系列是德州仪器推出的一款产品, 在秉承 MSP430 超低功耗, 高集成
5、度的优点的同时,具有高性价比的特点 MSP430 单片机片上外围模块:? 16MHz 主频 16 位 CPU 片上程序存储器 FLASH(512B/1KB/2KB/4KB/8KB/16KB)及 FLASH 控制器 片上随机存储器 SRAM(128B/256B/512B) 通用并行输入输出端口 GPIO(4 位/16 位/20 位/24 位) 支持电容触摸式 I/O 看门狗定时器 WDT 上电复位模块 BOR 多功能通信模块 USI(I2C/SPI)USIC_A(UART/LIN/IrDA/SPI) USIC_B(I2C&SPI) 比较器模块 Comparator A+ 片内温度传感器 Temp
6、 Sensor 十位逐次逼近型 ADC10 斜率型 slope ADC3.4.2 HC-SR04超声波模块HC-SR04可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;使用方法:控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了基本工作原理:(1)采用IO口TRIG触发测距,给至少10us的高电平信号;(2)模块自动发送8个40khz的方波,自动检测是否有信号返回; (3)有信号返回,通过IO口ECHO输出一个
7、高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S)/2。图3-4 HC-SR04模块原理图3.4.3 温度传感器DS18B20 独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 C至+125 。 -10 C至+85 C范围内精度为0.5 C。温度传感器可编程的分辨率为912位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置。由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一
8、个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于 图3-5 DS18B20接线图1条总线。这使得温度传感器放置在许多不同的2条地方。3.4.4 稳压芯片LM1117AMS1117是一个正向低压降稳压器,在1A电流下压降为1.2V。AMS1117有两个版本:固定输出版本和可调版本,固定输出电压为1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V,具有1的精度;固定输出电压为1.2V的精度为2%。AMS1117内部集成过热保护和限流电路,是电池供电和便携式计算机的最佳选
9、择。图3-6 1117稳压模块原理模块3.4.5 5110液晶显示该模块具有以下特点:1、84x48 的点阵LCD,可以显示4 行汉字,2、采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。支持多种串行通信协议(如AVR 单片机的I、MCS51 的串口模式等),传输速率高达4Mbps,可全速写入显示数据。3、可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。4、LCD 控制器驱动器芯片已绑定到LCD 晶片上,模块的体积很小。5、采用低电压供电,正常显示时的工作电流在200A 以下,且具有掉电
10、模式图3-7 5110原理图第4章 软件设计4.1 主流程图及介绍图4-1 系统软件流程图程序初始化之后,首先由DS18B20为温度赋初值。之后HC-SR04模块开始测距,测距时使用的定时器T0为模块返回的高脉冲计时,按模块的设计要求,计算出脉冲宽度即可得到声波反射所需时间。得出时间后代入公式测试:距离=(高电平时间*声速(340M/S)/2。并且此时的声速已经经过了温度矫正,以减少误差。与此同时定时器T1一直在定时,每隔50ms就会产生一次中断,在中断程序中标志位每次加1,当标志位加到600时,即一共30s时,程序就会刷新温度值。在5110液晶上显示的为距离值,单位cm,以及温度值。当按键1
11、按下时,触发中断改变标志位,使得液晶锁屏。按键2按下时触发中断解锁屏幕。由于超声波计数和温度测量时的程序不允许打断,在这两项进行的时候全局中断关闭,防止打断程序影响结果。 第五章 系统调试5.1 测距调试首先将HC-SR04模块固定,前方放置一个长直尺,单片机中烧入测距程序并循环此程序。在循环开始处设置断点,通过CCS软件自带的单步执行功能在电脑上显示出测距值,并于直尺上的数值进行对照。在3cm之内时测量实际值/cm0.511.52.02.53.03.5测量值/cm无结果2.4左右2.22.43.13.7表5-1 近距离系统测试结果(在3cm之内的程序略有不同,对于数值的显示精确度进行了修改)
12、在3cm之外的测量51015203040506049142959表5-2 远距离系统测试结果通过结果可得在2cm之内时,测距值精确度不高,因为盲区的影响不能实现近距测量。但是3cm之后的测量比较准确,基本可以实现设计要求。第6章 设计心得通过此次课程设计首先我学习HC-SR04超声波测距模块的使用方法,也了解了很多超声波的应用以及测距的发展历史。另外DS18B20的使用是我对于串行口的数据输出、输入的常用格式有了一定的了解。其次对于5110液晶的学习使得以后再显示应用中有了更多的选择,不需要再进行繁琐的数码管焊接,并且显示的效果也更好。当然对于其他电路,比如稳压电路也是一种复习。但是5110的
13、显示功能很强,这一次只用到了很少的一部分功能,以后还要继续研究学习。在这次设计工程中,查阅了许多关于便携式设备的资料,了解到当前便携式设备最主要考虑的一个问题就是功耗问题。由于不能随时充电,对于低功耗的设计就显得很重要。这方面的研究还有很大的前景等着我们去探索。本系统的芯片选型就考虑到了这方面的要求,芯片选型就是采用TI公司专门为这方面设计的单片机。不过这款单片机的真正功能在这个系统中并未很好的体现出来,对于它复杂的时钟系统以及各种休眠模式的应用并不多,以后可以继续改进程序。在制作、编程过程中我学习到细节的重要性。焊接电路版的时候任何小的接线都会影响整个系统的正常运行。特别是在软件上,有时候一
14、个符号的错误都会导致整个程序的混乱,所以下次制作一定要细心,减少这种事情的发生。总之,通过此次课程设计,不仅学习到了一些实际应用,也将我们的理论和实践相结合,取得了不少了收获。参考文献【1】郭天祥. 51单片机C语言教程入门、提高、开发、拓展全攻略. 电子工业出版社 2009【2】沈建华 杨艳琴 MSP430系列16位低功耗原理与应用 清华大学出版社,2004【3】谭浩强. C程序设计(第二版) 清华大学出版社,2000【4】阎石. 数字电子技术基础(第五版) 高等教育出版社 2005【5】夏路易 石宗义.电路原理图与电路板设计教程Protel 99SE 北京希望电子出版社 2002【6】张迎
15、新. 单片机微型计算机 原理、应用及接口技术(第二版) 国防工业出版社 2009【7】康华光. 电子技术基础 模拟部分(第五版) 高等教育出版社 2005【8】电子发烧网电子论坛附录1:源程序/*主程序函数*/#include #include Display.h Distance.hTemperature.h#define uint unsigned int #define uchar unsigned char int T;uint distance_main,count;uchar style;void init() WDTCTL=WDTPW+WDTHOLD; if (CALBC1_1M
16、HZ =0xFF | CALDCO_1MHZ = 0xFF) while(1); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; TA1CTL |= TASSEL_0+ MC_1 + TACLR; TA1CCR0 = 1637; TA1CCTL0 = CCIE; P1DIR|=BIT2; P1DIR&=BIT1; TACTL|=TASSEL_1;=(BIT3+BIT4); P1REN|=BIT3+BIT4; P1OUT|=BIT3+BIT4; P1IES|=BIT3+BIT4; P1DIR |= BIT6+BIT7; P2DIR |= BIT3+BIT
17、4+BIT5;void main(void) init(); LCD_init(); T = Temperature(); _EINT(); while(1) distance_main = Distance(); if(style) Display(distance_main,T); _delay_cycles(50000);#pragma vector=PORT1_VECTOR _interrupt void Port(void) _delay_cycles(10000); if(P1IN&BIT3) style=0;BIT4) style=1; P1IFGpragma vector
18、= TIMER1_A0_VECTOR _interrupt void Timer_A(void) count+; if(count600) T = Temperature(); count = 0;/*超声波测距函数*/#ifndef DISTANCE_H_ #define DISTANCE_H_int Distance();#endif /* DISTANCE_H_ */#define uint unsigned int#define uchar unsigned charuint distance,times;int Distance() P1OUT|=BIT2; _delay_cycle
19、s(10); P1OUT&=BIT2; while(!(P1IN&BIT1); TACTL|=MC_2+TACLR; while(P1IN&BIT1); TACTL&=MC_2; times=TAR; distance=times*(332 + 0.607*T/10)/655.36; times=0; return distance;/*温度测量程序*/ #ifndef TEMPERATURE_H_ #define TEMPERATURE_H_#define POUT P1DIR|=BIT0;#define PIN P1DIR&=BIT0;#define P_1 P1OUT|=BIT0;#de
20、fine P_0 P1OUT&uchar Temperature_init(void);void Temperature_write(uchar data);uchar Temperature_read(void);int Temperature_main(void);int Temperature(void);#endif /* TEMPERATURE_H_ */extern uint T;uchar Temperature_init(void) uchar i; POUT; P_0; _delay_cycles(600); P_1; _delay_cycles(60);BIT0) i=0;
21、 else i=1; _delay_cycles(480); return i;void Temperature_write(uchar data) for(i=0;i=1uchar Temperature_read(void) uchar tem=0,i; tem=1; PIN; if(P1IN& tem|=0x80; return tem;int Temperature_main(void) uchar T_L,T_H; int num=0;Temperature_init(); Temperature_write(0xcc); Temperature_write(0x44); _dela
22、y_cycles(400); Temperature_write(0xbe); T_L=Temperature_read(); T_H=Temperature_read(); if(T_H&0XF8) T_H=T_H num=T_H|T_L; num=-(num+1)*0.625; else num=(T_H0;n-) T+=Temperature_main(); T=T/3;/*5110液晶显示程序*/#define uint unsigned int #define DC_1 P2OUT|=BIT5;#define DC_0 P2OUT&=BIT5;#define CE_1 P1OUT|=
23、BIT6;#define CE_0 P1OUT&=BIT6;#define RST_1 P1OUT|=BIT7;#define RST_0 P1OUT&=BIT7;#define SDIN_1 P2OUT|=BIT4;#define SDIN_0 P2OUT&=BIT4;#define SCLK_1 P2OUT|=BIT3;#define SCLK_0 P2OUT&=BIT3;void LCD_write_byte(uchar data,uchar command);void LCD_set_XY(uchar X,uchar Y);void LCD_clear();void LCD_init();void LCD_write_char(uchar c);void LCD_write_Char(uchar X,uchar Y,uchar asc);void LCD_write_English_string(uchar X,uchar Y,char *s) ;void LC
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1