单片机与传感器应用实例教学课件(全)_第1页
单片机与传感器应用实例教学课件(全)_第2页
单片机与传感器应用实例教学课件(全)_第3页
单片机与传感器应用实例教学课件(全)_第4页
单片机与传感器应用实例教学课件(全)_第5页
已阅读5页,还剩222页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

单片机与传感器应用实例项目一声音检测控制系统

任务一:广告灯控制系统一、任务目的:(1)掌握单片机的硬件结构(2)理解单片机系统是由硬件和软件组成(3)学习流水灯的基本原理二、任务要求:程序运行后,每隔0.5s接在P1口的8个发光二极管依次点亮0,1,2,3,4,5,6,7完成此任务步骤:(1)分析任务(2)确定I/O口(3)硬件设计(4)程序编写(5)调试硬件设计如图:

单片机控制流水灯参考硬件图软件设计

1、流水灯控制参考程序

#include<reg51.h>//库文件sbitVD0=P1^0;//位定义sbitVD1=P1^1;sbitVD2=P1^2;sbitVD3=P1^3;sbitVD4=P1^4;sbitVD5=P1^5;sbitVD6=P1^6;sbitVD7=P1^7;说明:1、程序运行后,每隔0.5s接在P1口的8个发光二极管依次点亮0,1,2,3,4,5,6,7延时函数voiddelay(){unsignedchari,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}主函数voidmain(){while(1){VD0=1;VD1=0;delay();VD1=1;VD2=0;delay(); VD2=1;VD3=0;delay();VD3=1;VD4=0;delay(); VD4=1;VD5=0;delay();VD5=1;VD6=0;delay();VD6=1;VD7=0;delay(); VD7=1;VD0=0;delay(); } }任务总结通过广告灯的学习,学生了解单片机的I/O口,单片机如何使LED灯点亮,基本程序编写的方法。六、拓展理论学习P1端口的结构及工作原理P1口的结构最简单,用途也单一,仅作为数据输入/输出端口使用。输出的信息有锁存,输入有读引脚和读锁存器之分。P1端口的一位结构见下图.由图可见,P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替了P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出的数据经锁存器反相和场效应管反相后,锁存在端口线上,所以,P1端口是具有输出锁存的静态口。由上图可见,要正确地从引脚上读入外部信息,必须先使场效应管关断,以便由外部输入的信息确定引脚的状态。为此,在作引脚读入前,必须先对该端口写入l。具有这种操作特点的输入/输出端口,称为准双向I/O口。89C51单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能,输入前,端口线已处于高阻态,无需先写入l后再作读操作。P1口的结构相对简单,前面我们已详细的分析了P0口,只要大家认真的分析了P0口的工作原理,P1口我想大家都有能力去分析,这里我就不多论述了。单片机复位后,各个端口已自动地被写入了1,此时,可直接作输入操作。如果在应用端口的过程中,已向P1一P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到正确的信息。此外,随输入指令的不同,H端口也有读锁存器与读引脚之分。七、任务拓展训练利用单片机设计一个交通灯,十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时。1、东西绿灯亮,南北红灯亮2、黄灯亮3、东西红灯亮,南北绿灯亮。任务二:声音检测系统一、任务目的:1、掌握单片机的硬件结构2、理解单片机系统是由硬件和软件组成3、学习声音传感器的基本原理二、任务要求:当周围有声音响时,LED亮三、任务完成课时:4课时四、任务情景描述声音传感器通过检测有无声音,发出报警,并应用到防盗报警中,让我们对声音传感器有更多的认识。(一)硬件设计单片控制声音传感器参考硬件图(二)软件设计声音传感器参考程序说明:当周围有声音响时,LED亮

#include<reg51.h>//库文件I/O定义sbitled1=P1^7;sbitvoice=P1^0;主函数voidmain(){P1=0xff;while(1){led1=voice;}}五、任务总结通过最简单的声音传感器,使我们学习到了如何把传感器同单片机相连,并用到我们的生活实际中。六、拓展理论学习(一)接口说明1、VCC外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)2、GND外接GND3、DO小板数字量输出接口(0和1)(二)使用说明1、声音模块对环境声音强度最敏感,一般用来检测周围环境的声音强度。2、模块在环境声音强度达不到设定阈值时,DO口输出高电平,当外界环境声音强度超过设定阈值时,模块D0输出低电平;3、小板数字量输出D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的声音;七、任务拓展训练利用声音传感器,当检测有声音时4个LED灯循环闪烁项目二光电检测控制系统任务1红外距离检测仪一、任务目的(一)理解数码管的结构(二)理解红外传感器GP2D12的工作特性(三)掌握静、动态显示方法(四)理解A/D转换原理二、任务要求设计一个红外距离传感器、二位数码管与单片机接口电路和程序,模拟实现障碍物与汽车的距离——在数码管上显示红外测距传感器测量的距离值。三、任务完成课时18课时四、任务情景描述红外技术在科技、国防、工农业生产和监控消防等领域已有广泛的应用。红外线测距广泛用于地形测量,战场测量,坦克,飞机,舰艇和火炮对目标的测距;测量云层、飞机、导弹以及人造卫星的高度等。红外线距离测量是针对当前公路、街道、停车场、车库等空间有限,加上存在视觉盲区,车后的障碍物无法看见,司机在倒车时很容易使汽车发生擦刮,甚至发生事故,由于这些情况,需一种旨在倒车防护的汽车防撞系统。该系统能够在汽车以较低的速度进行倒车的过程中,识别出车后部的障碍物,并能够测量及显示车与障碍物之间的距离,提醒司机刹车。(一)硬件设计(二)软件设计1.静态显示程序#include<AT89C52.H>unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管“0-9”字符代码unsignedcharSecond;voiddelay1s(void)//延时子函数{unsignedchari,j,k;for(k=100;k>0;k--)for(i=20;i>0;i--)for(j=248;j>0;j--);}voidmain(void)//主函数{Second=0;P0=table[Second/10];P2=table[Second%10];while(1){delay1s();Second++;if(Second==60){Second=0;}

P0=table[Second/10];P2=table[Second%10];}}2.动态显示程序#include<AT89C52.H>unsignedcharcodetable1[]={0x06,0x5b,0x4f,0x66,0x6d};//“1-5”字符代码unsignedcharcodetable2[]={0x76,0x79,0x38,0x38,0x3f};//“HELLO”字符代码unsignedchari,j;unsignedchara,b;unsignedchartemp;voidmain(void){while(1){temp=0xfe;for(i=0;i<5;i++){if(P1_7==1)//判断P1.7是否为为高电平{P0=table2[i];}else{

P0=table1[i];//P1.7为低电平时}P2=temp;a=temp<<(1);//左移b=temp>>(7);//右移temp=a|b; for(a=4;a>0;a--)for(b=248;b>0;b--){}P2=0xff;//消影}}}3.光电检测控制部份参考程序/************************读MCP3001函数*************************/uintread_MCP(void) { uchari; uinttemp=0; MCP_CS=1; L_delay(); MCP_CS=0; //CS置低,开始采样数据 for(i=0;i<13;i++)

//读转换的10位数据 { MCP_CLK=0; L_delay(); MCP_CLK=1; temp<<=1; if(MCP_DO==1)temp|=0x01; } MCP_CS=1; temp&=0x03ff; //获取有效转换值 return(temp);}/***********************距离计算函数***************************/ uintdistance(void){ uinttemp1;temp1=average(); if((temp1>60)&(temp1<960)) { temp1=13569/(temp1+7)-4; //转换测量数据 } else {

temp1=0x00ff; //超出测量范围,返回错误标志 } return(temp1);}/************************显示数据调整函数************************/uchardat_adj(uintdat1) {uchari=0; uintdate; date=average()/2; dis_buf[0]=(uchar)(dat1/10); //十位 dis_buf[1]=(uchar)(dat1%10); //个位 if(dis_buf[0]==0)i=1; return(i);}五、任务总结红外距离检测仪的设计包含了数码管的识别、传感器型号的选择、模数转换、传感器与单片机两者共同完成的一个较大的项目。在接下来的理论学习中,将深入介绍这些理论知识。六、拓展理论学习(一)LED数码管概述1.数码管的结构将8个发光二极管排列成一个“8.”的形状,如图2.1所示,就组成了8段LED数码管。数码管可以按要求显示0~9等数字,也可以显示一些字母和字符。2.数码管的分类

分为共阴极和共阳极两类。(1)共阴极LED数码管:a~dp各段接单片机I/O口,公共端并联接地。当I/O口输出高电平“1”时,对应段点亮.(2)共阳极LED数码管:a~dp各段接单片机I/O口,公共端并联接电源电压+5V,当I/O口输出低电平“0”时,对应段点亮。3.字型码为了显示数字或符号,需为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,那么共阴极和共阳极字形显示的代码则不同。共阴极LED字形代码字型共阴极字形代码字型共阴极字形代码字型共阴极字形代码03FH67DHC39H106H707Hd5EH25BH87FHE79H34FH96FHF71H66HA77H灭00H56DHb7CH共阳极LED字形代码字型共阳极字形代码字型共阳极字形代码字型共阳极字形代码0C0H682HCC6H1F9H7F8HdA1H2A4H880HE86H3B0H990HF8EH99HA88H灭FFH592Hb83H(二)LED的显示方法LED数码管的显示方法可以分为静态显示和动态显示两类。1.静态显示LED工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起接地或电源,每位的段码线分别各I/O口相连,如图2.4所示。之所以称为静态显示,是因为各个LED的显示字符一经确定,静态显示数码管相应段一直处于点亮状态。因此功耗大,而且占用硬件资源多,几乎只能用在显示位数极少的场合。2.动态显示在多位LED显示时,为了简化硬件电路,通常将所有位的段码线相应段并联在一起,由1个8位I/O口(段驱动口)控制,形成段码线的多路复用,而各位的共阳极或共阴极分别由相应的I/O线(位驱动口)控制,如图2.5所示,形成各位的分时选通其优点是占用硬件资源少,功耗小。例如:一个六位共阳极LED数码管硬件电路显示原理:动态显示采用个数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象。这种显示需要一个段驱动接口完成字型码的输出(字符的显示),位驱动接口完成个数码管的轮流点亮(数位的选择)。数码管的显示,取决于两个条件:一个是段驱动接口有无字型码输出,另一个是位驱动接口是否输出高电平(共阳极数码管)或低电平(共阴极数码管)例如:共阳极数码管在第一位上显示5当P0口输出“5”的字型码时,虽然每个数码管都收到了字型码信号,但要哪个管子显示,就是看哪个管子的公共端为高电平。当P2口输出011111时,第一个数码管公共端(com端)的驱动三极管导通,使第一个数码管变为高电平,所以当P0口输出“5”的字型码只在第一个数码管显示。同理,当P2口输出101111时,P0口送出的字型码又会在第二号管显示。如果,数码管的不同数位被快速轮流选通,利用人眼的暂留效应,就会觉得多位数码管同时在显示。(三)红外测距传感器1.红外测距传感器原理红外测距传感器利用红外信号遇到障碍物距离的不同、反射的强度也不同的原理,进行障碍物远近的检测。红外测距传感器具有一对红外信号发射与接收二极管,发射管发射特定频率的红外信号,接收管接收这种频率的红外信号,当红外的检测方向遇到障碍物时,红外信号反射回来被接收管接收,经过处理之后,通过数字传感器接口返回到机器人主机,机器人即可利用红外的返回信号来识别周围环境的变化。利用的是红外线传播时的不扩散原理,因为红外线在穿越其它物质时折射率很小,所以长距离的测距仪都会考虑红外线,而红外线的传播是需要时间的,当红外线从测距仪发出碰到反射物被反射回来被接受到,再根据红外线从发出到被接受到的时间及红外线的传播速度就可以算出距离,红外线的工作原理:利用高频调制的红外线在待测距离上往返产生的相位移推算出光束度越时间△t,从而根据D=C△t/2得到距离D。红外传感器的的测距基本原理为发光管发出红外光,光敏接收管接收前方物体反射光,据此判断前方是否有障碍物。根据发射光的强弱可以判断物体的距离,它的原理是接收管接收的光强随反射物体的距离而变化的,距离近则反射光强,距离远则反射光弱。2.GP2D12型红外测距传感器(1)GP2D12红外测距传感器(2)GP2D12红外测距传感器特性①距离测量范围:10-80cm;②模拟量输出;③从左至右依次为:VO、GND、VCC。(3)GP2D12输出曲线图2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系。GP2D12电压与距离的对应关系如图2.3所示。(四)模数(A/D)转换A/D转换器按照转换的原理可分为直接A/D转换器和间接A/D转换器两种类型。直接A/D转换器,就是把模拟信号直接转换成数字信号,比如逐次逼近型。间接A/D转换器是先把模拟量转换成中间量,然后再转换成数字量,如电压/时间转换型,电压/频率转换型,电压/脉宽转换型等。其中积分型A/D转换器的电路简单,抗干扰的能力强,而且能做到高分辨率,但是转换速度较慢。有些转换器还将多路开关、基准电压源、时钟电路、译码器和转换电路集成在一个芯片内,已经远超出了单纯A/D转换功能,使用十分方便。A/D转换器转换原理:一个完整的A/D转换过程中,必须包括取样、保持、量化与编码等路。取样与保持:由于取样的时间极短,取样输出为一串断断续续的窄脉冲。要把每个取样的窄脉冲信号数字化,需要一定的时间。因此在两次取样之间,应将取样的模拟信号暂时储存直到下个取样脉冲到来,我们把这个动作称之为保持。在模拟电路设计中,需要增加一个取样-保持电路。为了保证正确转换,模拟电路要保留着还未转换的数据。量化与编码:量化与编码电路是A/D转换器的核心组成部分,量化方法:先取最小量化单位Δ=U/2n,当输入模拟电压U在0~Δ之间时,则归入0Δ,当U在Δ~2Δ之间时,则归入1Δ。如果量化单位Δ=2U/(2n+1–1),当输入电压U在0~Δ/2之间时,归入0Δ,当U在Δ/2~3/2Δ之间时,就要归入1Δ。分辨率:分辨率(Resolution)指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2n的比值。分辨率又称精度,通常以数字信号的位数来表示。位数越高,分辨率就越高。若小于最小变化量的输入模拟电压的任何变化,将不会引起输出数字值的变化。不需要分辨率高的场合,所得到到的就大多是噪声。分辨率太低,就会有无法取样到所需的信号。转换速率:转换速率(ConversionRate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。为了保证转换的正确完成,采样速率(SampleRate)必须小于或等于转换速率。转换时间转换时间是指A/D转换器完成一次A/D转换所需的时间。从启动信号开始到转换结束并得到稳定的数字输出值为止的时间间隔。转换时间越短,转换速度就越快。精准度:对于A/D转换器来说,精准度指的是在输出端产生所设定的数字数值,相对精准度指的是满刻度值校准以后,任意数字输出所对应的实际模拟输入值与理论值之差。对于线性A/D转换器,其相对精准度就是它的线性程度。由于电路制作上的影响,会产生像是非线性误差,或是量化误差等减低相对精准度的因素。

MCP3001特性:10位分辨率1LSBDNL(最大值)1LSBINL(最大值)片上采样和保持电路SPI串行接口单电源供电的电压范围:2.7V至5.5V5V时的采样速率为200ksps2.7V时的采样速率为75ksps低功耗CMOS技术一5nA典型待机电流,2A(最大值)一5V时,工作电流的最大值为500A8引脚PDIP,SOIL,MSOP和TSSOP封装说明:Microchip的MCP3001,是一款具有片上采样和保持电路的10位逐次逼近型A/D转换器(ADC)。该器件提供一个伪差分输入通道:指定差分非线性(DNL)和积分非线性(INL)的最大值为1LSB。它使用符合SPI协议的简单串行接口与器件通信。当时钟速率为2.8MHz时,该器件的采样速率最大数值可为200ksps。MCP3001器件的工作电压范围很宽,为2.7V-5.5V。低电流设计允许器件在典型待机电流为5nA和典型工作电流为400A条件下工作。该器件以8引脚PDIP,MSOP,TSSOP和150milSOIL封装形式提供。MCP3001引脚图

protues中MCP3001接线图MCP3001引脚名称功能2.7至5.5V电源地线IN+正模拟输入IN-负模拟输入CLK串行时钟串行数据输入CS/SHDN片选输入/关闭基准电压输入MCP3001的VREF接vcc,IN+接GP2D12红外测距传感器的Vo,CLK接单片机上的P2.2,DO接单片机上的P2.1,CS接单片机上的P2.0。MCP3001具有片上采样和保持电路的10位逐次逼近型A/D转换器(ADC),逐次逼近型A/D转换器的工作原理是将待换的模拟输入信号与一个推测信号进行比较,根据二者大小决定增大还是减小输入信号,以便向模拟输入信号逼近。推测信号由D/A转换器输入的数字信号就对应的时模拟输入量的数字量。这种A/D转换器一般速度很快,但精度不高。A/D转换器的主要性能指标中以分辨率和转换速率最为重要,分辨率越高,就能把满量程里的电平分出更多份数,得到的转换结果就越精确,得到的数字信号再用DAC转换回去就越接近原输入的模拟值(10位ADC能分辨2的10次方)。MCP3001分辨率:10位ADC能分辨出满刻度的1/1024.MCP3001转换速率:速度很快。由上可知,MCP3001的性能相比其他ADC要好很多。七、任务拓展训练用定时器中断产生1S延时,要求单片机的P1口让数码管显示“0-9”10个数字。任务2红外防盗报警器一、任务目的(1)掌握蜂鸣器的工作原理(2)掌握人体红外感应模块的工作原理三、任务完成课时二、任务要求当有人经过人体红外感应模块时,阻断红外接收时,蜂鸣器发出报警声音。12课时四、任务情景描述随着电子技术的日新月异,人民的生活水平的提高和对私有财产安防意识的不断增强,家庭安全防盗系统的应用日益广泛。本课题模拟当晚上休息中,开启红外防盗报警器,当有人进入室内,蜂鸣器发生响声。(一)硬件设计(二)参考程序1.蜂鸣器程序#include"reg52.h" #include<intrins.h> typedefunsignedintu16; typedefunsignedcharu8;sbitbeep=P1^5; voiddelay(u16i){ while(i--); }voidmain(){ while(1) { beep=~beep; delay(10); }}2.红外防盗报警器参考程序#include<reg52.h>sbithongwai=P1^0; sbitBuzzer=P2^0; voidmain(){while(1){if(hongwai==1); //如果红外被触发{while (1){P2=0X00; //蜂鸣器响(低电平有效)

}}}}五、任务总结红外防盗报警器的设计包含了蜂鸣器、人体红外感应模块,在接下来的理论学习中,将对蜂鸣器的工作原理、选择以及人体红外感应模块进行介绍。六、拓展理论学习(一)蜂鸣器1.蜂鸣器的介绍(1)蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。(2)蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。(3)蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

2.蜂鸣器的结构原理(1)压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。(2)电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。(3)有源蜂鸣器和无源蜂鸣器的区别这个“源”字是不是指电源,而是指震荡源,即有源蜂鸣器内有振荡源而无源蜂鸣器内部没有振荡源。有振荡源的通电就可以发声,没有振荡源的需要脉冲信号驱动才能发声。这次项目中我们以有源蜂鸣器来进行设计。(二)HC-SR501人体红外感应模块能自动快速开启各类白炽灯、荧光灯、蜂鸣器、自动门、电风扇、烘干机和自动洗衣机等装置,是一种高技术产品。特别适用于企业,宾馆、商场、库房及家庭的过道、走廊等敏感区域,或用于安全区域的自动灯光、照明和报警系统。人体红外感应模块参数表产品型号HC-SR501人体红外感应模块工作电压范围直流电压4.5-20V静态电流<50uA电平输出高3.3V/低0V触发方式L不可重复触发/H重复触发(默认重复触发)延时时间5-200S(可调)可制作范围零点几秒-几十分钟封锁时间2.5S(默认)可制作范围零点几秒-几十秒电路板外形尺寸32mm*24mm感应角度<100度锥角工作温度-15-+70度感应透镜尺寸直径:23mm(默认)2.功能特点(1)全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。(2)光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。(3)温度补偿(可选择,出厂时未设):在夏天当环境温度升高至30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿。(4)触发方式:(可跳线选择)①不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;②可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。(5)具有感应封锁时间(默认设置:2.5S封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。(6)工作电压范围宽:默认工作电压DC4.5V-20V。(7)微功耗:静态电流<50微安,特别适合干电池供电的自动控制产品。(8)输出高电平信号:可方便与各类电路实现对接。备注:1.感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出0-3次,一分钟后进入待机状态。2.应尽量避免灯光等干扰源近距离直射模块表面的透镜,以免引进干扰信号产生误动作;使用环境尽量避免流动的风,风也会对感应器造成干扰。3.感应模块采用双元探头,探头的窗口为长方形,双元(A元B元)位于较长方向的两端,当人体从左到右或从右到左走过时,红外光谱到达双元的时间、距离有差值,差值越大,感应越灵敏,当人体从正面走向探头或从上到下或从下到上方向走过时,双元检测不到红外光谱距离的变化,无差值,因此感应不灵敏或不工作;所以安装感应器时应使探头双元的方向与人体活动最多的方向尽量相平行,保证人体经过时先后被探头双元所感应。为了增加感应角度范围,本模块采用圆形透镜,也使得探头四面都感应,但左右两侧仍然比上下两个方向感应范围大、灵敏度强,安装时仍须尽量按以上要求。七、任务拓展训练把有源蜂鸣器替换为无源蜂鸣器,应如何设计?任务3光电式烟雾报警器

一、任务目的(一)了解烟雾传感器的作用及其基本原理(二)掌握烟雾传感器的使用方法(三)理解51单片机定时器/计数器的工作原理(四)掌握51单片机定时器/计数器的应用编程(五)掌握扬声器的工作原理及控制方式二、任务要求设计一个烟雾传感器和扬声器与单片机接口电路和程序,实现烟雾报警功能——当环境中有烟雾时,扬声器以音调1和音调2交替发声进行报警。三、任务完成课时12四、任务情景描述

随着时代的进步,高科技行业的带动,在人们智能化的生活和工业生产中出现了越来越来多的隐患,比如火灾。那么及时的发现和报警火灾对减少财产损失和保护人身安全显得尤为重要。烟雾报警器刚刚具有实时监测报警,灵敏度高,稳定性强的特点,并且结构简单的它方便适用于人们日常生活和工业生产的监控中。烟雾报警器主要由两个核心部件:烟雾温度传感器和单片机。传感器可以将实时监测到的温度和烟雾浓度经过单片机控制系统传递到报警系统,系统会及时做出应答声光和电话报警。

目前房地产开发商都会选择安装烟雾报警系统,它能够实时监测室内温度烟雾浓度,如发现异常能立即应答,实现声光报警,更高级的会短信电话报警消防队智能发送火灾地点,给了屋主强烈的安全感,人们也可以镇定秩序的撤退,更加有利于消防官员的工作,减少不必要的损失。(一)硬件设计(二)软件设计1.MQ-2烟雾传感器参考程序/********************************************************************说明:1、

当测量浓度大于设定浓度时,单片机IO口输出低电平*********************************************************************/#include<AT89X51.H>//库文件#defineucharunsignedchar//宏定义无符号字符型#defineuintunsignedint//宏定义无符号整型

/******************I/O定义****************************/sbitLED=P1^0; //定义单片机P1口的第1位(即P1.0)为指示端sbitDOUT=P2^0; //定义单片机P2口的第1位(即P2.0)为传感器的输入端/************************************延时函数********************************/voiddelay()//延时程序{ucharm,n,s;for(m=20;m>0;m--)for(n=20;n>0;n--)for(s=248;s>0;s--);}/*****************主函数*************************/voidmain(){ while(1)//无限循环 { LED=1; //熄灭P1.0口灯 if(DOUT==0)//当浓度高于设定值时,执行条件函数 { delay();//延时抗干扰

if(DOUT==0)//确定浓度高于设定值时,执行条件函数 { LED=0; //点亮P1.0口灯 } } }} /********************************************************************

结束*********************************************************************/六、拓展理论学习

(一)烟雾传感器

烟雾传感器能够检测到室内气体的类别和浓度,并这种模拟信号通过放大电路和AD转换电路转路可以变成单片机能够识别的电信号,然后单片机进过软件运算得出信号的强弱从而得知气体在室内的具体情况,报警装置作出相应的应答,达到了检测、报警的自动控制要求,所以说烟雾传感器采集信息是整个报警器的第一步骤也是重中之重。那么传感器的精确性、稳定性、灵敏性显得尤为重要,换句话说传感器也是必不可少的核心器件,决定着整个产品的各个重要指标。

随着现代技术的不断提高,制造传感器的技术逐渐简单、密集度不断提高,烟雾传感器的体积也日益减小,为传感器的日常携带提供了方便。但是烟雾传感器通常工作得地方比较复杂,比如引起火灾的烟雾种类众多,有时候可能是多种气体燃烧,火灾时工作环境的温度不断升高也会影响监测性能。所以作为日常使用的家用烟雾报警器必须要具备以下几个特点:

1.能够单一检测一种烟雾具体参数,不收其它烟雾的影响;2.对监测的烟雾的具有极广的测量浓度范围和极高的灵敏性;3.监测信息的反映速度快,稳定性高;4.使用寿命较长,结构简单成本较低,易于量产和普及;5.检测出二氧化碳、一氧化碳和一些易燃气体。

常见的烟雾传感器种类:电解质、半导体、接触式、高分子、热传导、电化学。本设计选择了MQ-2半导体气体传感器,它具有探测范围广、极好灵敏度、极快应答速度、高于一般的半导体传感器长寿命和稳定性、外接简单的驱动电路就能安全工作,操作简单,并且适用于液化气、丙烷、氢气、酒精和烟雾等易燃易爆气体,这些性能决定它对于工厂、车间、家庭烟雾渗漏监测非常适用。(二)MQ-2烟雾传感器模块介绍(四)单片机定时器/计数器1.定时器/计数器的结构

定时器/计数器T0、T1的逻辑结构如图所示。2.定时器/计数器的工作原理

定时器/计数器是一个二进制的加1寄存器,当启动后就开始从所设定的计数初始值开始加1计数,寄存器计满回零时能自动产生溢出中断请求。但定时与计数两种模式下的计数方式却不相同,定时器模式时,每个机器周期寄存器增1,即寄存器对机器周期计数。3.定时器/计数器的控制方式(1)工作方式寄存器TMOD

特殊功能寄存器TMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1,8位格式如图5-2所示。TMOD的地址为89H,其各位状态只能通过CPU的字节传送指令来设定而不能用位寻址指令改变,复位时各位状态为0。TMOD各位的控制功能说明如下:① M0、M1:工作方式控制位。②C/T:模式控制选择位。③T0、T1工作方式选择。(2)定时器控制寄存器TCONTCON是一个8位寄存器,用于控制定时器的启动/停止以及标志定时器溢出中断申请。TCON的地址为88H,既可进行字节寻址又可进行位寻址。复位时所有位被清零。各位定义如图5-3所示。图中TR0和TR1分别用于控制T0和T1的启动与停止,TF0和TF1用于标志T0和T1是否产生了溢出中断请求。4.工作方式

(1)工作方式0

方式0时,定时器/计数器被设置为一个13位的计数器,这13位由TH的高8位和TL中的低5位组成,其中TL中的高3位不用。(2)工作方式1

方式1时,定时器/计数器被设置为一个16位加1的计数器,该计数器由高8位TH和低8位TL组成。定时器/计数器在方式1下的工作情况与在方式0下时的基本相同,差别只是计数器的位数不同。(3)工作方式2

方式2时,定时器/计数器被设置成一个8位计数器TL0(或TL1)和一个具有计数初值重装功能的8位寄存器TH0(或TH1)。

(4)工作方式3

定时器/计数器T0和T1在前三种工作方式下,其功能是完全相同的,但在方式3下,T0与T1的功能相差很大。当T1设置为方式3时,它将保持初始值不变,并停止计数,其状态相当于将启/停控制位设置成TR1=0,因而T1不能工作在方式3下。当将T0设置为方式3时,T0的两个寄存器TH0和TL0被分成两个互相独立的8位计数器。5.定时器/计数器的应用(1)初始化初始化的内容如下:①根据设计需要先确定定时器/计数器的工作模式及工作方式,然后将相应的控制字送入TMOD寄存器中。②计算出计数初始值并写入TH0、TL0、TH1、TL1中。③通过对中断优先级寄存器IP和中断允许寄存器IE的设置,确定计数器的中断优先级和是否开放中断。④给定时器控制寄存器TCON送命令字,控制定时器/计数器的启动和停止。(2)初值的计算定时器/计数器T0、T1不论是工作在计数器模式还是定时器模式下,都是加1计数器,因而写入计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=M-C。其中计数最大值在不同工作方式下的值不同,具体如下:(1)工作方式0:M=213=8192。(2)工作方式1:M=216=65536。(3)工作方式2:M=28=256。(4)工作方式3:M=28=256。这样,在计数器模式和定时器模式下,计数初值都是X=M-C(十六进制数)。定时器模式下对应的定时时间为T=C·T机=(M-X)T机

式中,T机为单片机的机器周期(T机为晶振时钟周期的12倍)。七、任务拓展训练

使用51单片机的定时/计数器,设计一个电子时钟,在6位数码管上进行时间显示。任务4生产线产品计数器

一、任务目的

(一)了解光电对射传感器的工作原理(二)理解单片机中断系统(三)掌握单片机外部中断编程方法(四)掌握单片机定时器中断编程方法二、任务要求设计一个光电传感器、四位数码管与单片机接口电路和程序,模拟实现生产线产品计数器——数码管显示出生产线上生产出来的产品数量三、任务完成课时12四、任务情景描述

随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。

现计数器的种类以增加到:电磁计数器、电子计数器、机械计数器(拉动机械计数器、转动机械计数器、按动机械计数器、测长机械计数器)、液晶计数器等。计数器的应用范围也遍布印刷、纺织、印染、针织、电缆、电讯、军工、轻工、机械、开关、断路器、矿山、实行多班制的纺织行业的织布机、织带机、制线、制带、造纸、制革、薄膜、高压开关电器产品、试验设备,印刷设备、短路器、医疗、纺织、机械、仓库和码头的货运、行人及车辆过往的数量计数、冶金、食品、国防、包装、配料、石油、化工、发电、机床、仪表、自动化控制等行业。(一)硬件设计(二)软件设计1.单片机计数显示部分参考程序/********************************************************************说明:用两位数码管记录轻触开关按下的次数*******************************************************************/#include<AT89X51.H>unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharCount;voiddelay10ms(void){unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}voidmain(void){Count=0;P0=table[Count/10];P2=table[Count%10];while(1){if(P3_7==0){delay10ms();if(P3_7==0){Count++;if(Count==100){Count=0;}

P0=table[Count/10];P2=table[Count%10];while(P3_7==0);}}}}/********************************************************************

结束*******************************************************************/五、任务总结

通过本次任务,学习实践了定时器中断、外部中断的设置和对应中断函数的编写方法。中断的发生具有随机性,中断的响应要求具有实时性。中断系统也是独立于CPU运行的,因此,CPU不需要花大量时间去查询具有中断能力的外设,只需要再外设申请了中断后去响应即可,因此能使程序具有较高的效率。六、拓展理论学习

(一)单片机中断单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。

AT89C51具有五个中断源,分为内部中断源和外部中断源。外部中断源有两个,通常指由外部设备发出中断请求信号,从P3.2和P3.3引脚输入单片机,用电平或边沿触发两种方式申请中断。

内部中断源有三个,两个定时器/计数器(T0,T1)中断源和一个串行口中断源,T0和T1的中断申请是在它们计数从全“1”变为全“0”溢出时自动向中断系统提出的,串行口中断源的中断申请是在串行口每发送或接收完一个8位二进制数后自动向中断系统提出的。1.中断标志

(1)定时器控制寄存器TCON下图给出了定时器控制寄存器TCON各位的定义各位的作用如下:

TF1(TCON.7):定时器T1溢出中断标志位,位地址为8FH。

TR1(TCON.6):定时器T1的启停控制位,位地址为8EH,TR1状态靠软件置位或清除。TF0(TCON.5):定时器T0溢出中断标志位,位地址为8DH。

TR0(TCON.4):定时器T0的启停控制位,位地址为8CH,其他操作与TR1类同。

IE1(TCON.3):外部中断

边沿触发中断请求标志位,位地址为8BH。

IT1(TCON.2):外部中断

触发类型选择位,位地址为8AH。

IE0(TCON.1):外部中断

边沿触发中断请求标志位,位地址为89H。其功能与IE1类同。IT0(TCON.0):外部中断

触发类型选择位,位地址为88H。其功能与IT1类同。(2)串行口控制寄存器SCON图6-4给出了串行口控制寄存器SCON各位的定义。其中只有TI和RI两位用来表示串行口中断标志位,其余各位用于串行口其他控制TI:为串行口发送中断标志位,位地址为99H。在串行口发送完一组数据时,TI由硬件自动置位(TI=1),请求中断,当CPU响应中断进入中断服务程序后,TI状态不能被硬件自动清除,而必须在中断程序中由软件来清除。

RI:为串行口接收中断标志位,位地址为98H。在串行口接收完一组串行数据时,RI由硬件自动置位(RI=1),请求中断,当CPU响应中断进入中断服务程序后,也必须由软件来清除RI标志。2.中断控制

各中断源的中断标志被置位后,CPU能否响应还要受到控制寄存器的控制,这种控制寄存器在AT89C51中有两个,即中断允许控制寄存器IE和中断优先级控制寄存器IP。下面分别详细介绍。(1)中断允许控制寄存器IEAT89C51设有专门的开中断和关中断指令,中断的开放和关闭是通过中断允许寄存器IE各位的状态进行两级控制的。所谓两级控制是指所有中断允许的总控制位和各中断源允许的单独控制位,每位状态靠软件来设定。图6-5给出了中断允许控制寄存器IE各位的定义。EA(IE.7):总允许控制位,位地址为AFH。EA状态可由软件设定,若EA=0,禁止AT89C51所有中断源的中断请求;若EA=1,则总控制被开放,但每个中断源是允许还是被禁止CPU响应,还受控于中断源的各自中断允许控制位的状态。ET2(IE.5):定时器T2溢出中断允许控制位,位地址是ADH。

ES(IE.4):串行口中断允许控制位,位地址是ACH。

ET1(IE.3):定时器T1的溢出中断允许控制位,位地址为ABH。

EX1(IE.2):外部中断的中断请求允许控制位,位地址是AAH。

ET0(IE.1):定时器T0的溢出中断允许控制位,位地址是A9H。

EX0(IE.0):外部中断的中断请求允许控制位,位地址是A8H。

(二)对射型光电传感器工作原理

光电传感器是通过把光强度的变化转换成电信号的变化来实现控制的。

光电传感器在一般情况下,有三部分构成,它们分为:发送器、接收器和检测电路。

发送器对准目标发射光束,发射的光束一般来源于半导体光源,发光二极管(LED)、激光二极管及红外发射二极管。光束不间断地发射,或者改变脉冲宽度。接收器有光电二极管、光电三极管、光电池组成。在接收器的前面,装有光学元件如透镜和光圈等。在其后面是检测电路,它能滤出有效信号和应用该信号。此外,光电开关的结构元件中还有发射板和光导纤维。

若把发光器和收光器分离开,就可使检测距离加大。由一个发光器和一个收光器组成的光电开关就称为对射分离式光电开关,简称对射式光电传感器。它的检测距离可达几米乃至几十米。使用时把发光器和收光器分别装在检测物通过路径的两侧,检测物通过时阻挡光路,收光器就动作输出一个开关控制信号。本次任务中选用的对射型光电传感器如下图所示七、任务拓展训练

使用51单片机的定时中断完成任务3。项目三按键识别技术任务1独立按键识别技术一、任务目的(一)会独立按键的连接方式(二)会独立按键的程序编写(三)会编写防按键干扰程序二、任务要求每按下一次开关SP1,计数值加1,通过单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。三、任务完成课时6课时四、任务情景描述(一)硬件设计电路原理图系统板上硬件连线(1)把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;(2)把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。五、任务总结按键稳定闭合时间长短是由操作人员决定的,通常都会在100ms以上,刻意快速按的话能达到40-50ms左右,很难再低了。抖动时间是由按键的机械特性决定的,一般是都会在10ms以下,为了确保程序对按键的一次闭合或者一次断开只响应一次,必须进行按键的消抖处理。当检测到按键状态变化时,不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理。六、拓展理论学习实际工程开发的时候,我们的程序量很大,各种状态值也很多,个主循环要不停的扫描各种状态值是否有发生变化的,如果程序中间加了这种delay延时操作后,很可能某一事件发生了,但是我们程序还在进行delay延时操作中,当这个事件发生完了,我们还在delay操作中,当我们delay完事再去检查的时候,已经晚了检测不到那个事件了。为了避免这种情况的发生,我们要尽量缩短while循环一次所用的事件,而需要进行长时间延时的操作,必须想其它的办法来处理。七、任务拓展训练请参考图3-1-3,编写程序实现上电发光二极管D1闪烁,当按下一次开关SP1,发光二极管D2闪烁,再按下开关SP1,发光二极管D3闪烁,再按下开关SP1,发光二极管D4闪烁,再按下开关SP1,又回到L1闪烁了,如此循环。

任务24X4矩阵键盘识别技术一、任务目的(一)掌握矩阵键盘的内部连接方式(二)会矩阵键盘的外部硬件连线(三)会矩阵键盘的程序编写二、任务要求用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线,在数码管上显示每个按键的“0-F”序号。对应的按键的序号排列如图3-2-1所示。三、任务完成课时6课时四、任务情景描述(一)硬件设计电路原理图(二)软件设计(1).每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。程序流程图:五、任务总结这个程序是一个比较简单的按键程序,但是大家要把按键消抖和矩阵按键检测机制充分理解透彻,这块内容今后就是你的一个技术积累了。六、拓展理论学习矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。六、任务拓展训练使用矩阵按键实现计算器中简单的整数加法运算。任务3LCD显示技术一、任务目的(一)了解LCD1602液晶的显示原理(二)掌握LCD1602液晶工作过程(三)会LCD1602液晶的外部硬件连线(四)会LCD1602液晶的程序编写二、任务要求利用89C51驱动液晶显示器LCD1602工作,并分两排显示,第一排为“The1602LCDTest”,第二排显示“GO+秒表值”。三、任务完成课时6课时四、任务情景描述(一)硬件设计电路原理图五、任务总结LCD1602液晶显示技术,硬件搭建比较简单,但是软件编程涉及多个子函数,驱动程序,比较复杂,需要同学们学去实践,多参考现有程序进行程序编写、调试、仿真。六、拓展理论学习(1)LCD1602基本参数和引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3-3-3所示:七、任务拓展训练利用89C51驱动液晶显示器LCD1602工作,并分两排显示,第一排为“The1602LCDTest”,第二排显示按键次数。任务4温度实时监测仪一、任务目的(一)了解DS18B20温度传感器工作原理(二)会DS18B20温度传感器的外部硬件连线(三)会DS18B20温度传感器的程序编写二、任务要求DS18B20温度传感器实现温度监测,并通过LCD1602液晶显示监测数据,并能够设定温度上下阀值,超过或低于该阀值均亮灯报警。三、任务完成课时6课时四、任务情景描述(一)硬件设计电路原理图五、任务总结这里需要说明的是,DS18B20芯片通过达拉斯公司的单总线协议依靠一个单线端口通讯,当全部器件经由一个三态端口或者漏极开路端口与总线连接时,控制线需要连接一个弱上拉电阻。在多只DS18B20连接时,每个DS18B20都拥有一个全球唯一的64位序列号,在这个总线系统中,微处理器依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址,从而允许多只DS18B20同时连接在一条单线总线上,因此,可以很轻松地利用一个微处理器去控制很多分布在不同区域的DS18B20,这一特性在环境控制、探测建筑物、仪器等温度以及过程监测和控制等方面都非常有用。五、拓展理论学习(1)DS18B20温度传感器概述.DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化,低功耗,高性能,抗干扰能力强,易配微处理器等优点,可直接将温度转化成数字信号处理器处理。测量的温度范围是—55~125℃,测温误差0.5℃。可编程分辨率9~12位,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.0625℃。相较热电偶传感器而言可实现高精度测温。六、任务拓展训练设计DS18B20温度传感器实现温度监测,并通过LCD1602液晶显示监测数据,并能够设定温度上下阀值,超过或低于该阀值均亮灯报警,同时蜂鸣器报警。项目四:超声波检测控制系统

任务1:带温度补偿的超声波测距仪一、任务目的:(1)单片机外围硬件的设计(2)掌握传感器的使用(3)了解实际工程项目的做法二、任务要求:通过超声波的发送与接收来实现一定距离的探测,并显示出来。同时要求带有温度补偿功能,即根据当前温度值显示不同进行声速的调整,然后计算,要求随时进行当前温度的显示,实现测距测温两用。四、任务情景描述利用超声波测量一定的实际距离,并通过数码管显示实测的距离,同时根据实测的温度值,调整声速,并显示距离和温度。(一)硬件设计单片机控制带温度补偿的超声波测距仪参考硬件图(二)软件设计1、带温度补偿超声波参考程序说明:1、:通过超声波的发送与接收来实现一定距离的探测,并显示出来。同时要求带有温度补偿功能,即根据当前温度值显示不同进行声速的调整,然后计算,要求随时进行当前温度的显示,实现测距测温两用。#include<reg51.h>#defineuintunsignedint#defineucharunsignedchar#defineulongunsignedlong

I/O定义sbitwe0=P2^0;sbitwe1=P2^1;sbitwe2=P2^2;sbitwe3=P2^3;sbitfasong=P1^0; sbitjieshou=P3^2; sbitk1=P3^6; sbitk2=P3^7; sbitds=P1^4;

uchartimers,mi,fenmi,limi,num2,num1,shi,ge,shifen,shengsu;bitflag,kaiflag,temflag; ulongt,s; uinttemp,num;floatn; ucharcodetable[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};voidinit();延时voiddelay100us() { uchari,j; for(i=40;i>0;i--) for(j=248;j>0;j--); }voiddelay(uchara) { while(a>0) a--;}voidshijian(uintx) { uinti,j; for(i=x;i>0;i--)for(j=110;j>0;j--);}voidreset() { ds=0; delay(103); ds=1; delay(4); }写数据voidwrite(uchardate) { uchartemp,i; uintj; temp=date; for(i=0;i<8;i++) { temp=temp>>1; if(CY) { ds=0; j++;j++; ds=1; delay(8); } else { ds=0; delay(8); ds=1; j++;j++; }发送数据voidsend() { uchari; while(TF0==0) { we0=0; timers++; fasong=~fasong; for(i=12;i>0;i--); if(timers==4) break; } we0=1; timers=0; TH0=0X00; TL0=0X32; TR0=1; EX0=1; delay100us(); delay100us(); delay100us();} 按键检测voidkeyscan() { if(k1==0) { shijian(10); if(k1==0) kaiflag=~kaiflag; while(k1==0); } if(k2==0) { shijian(10); if(k2==0) temflag=~temflag; while(k2==0); }}voidtemdisplay() {初始化voidinit() { TMOD=0x21; TH0=0X00; TL0=0X32; TH1=0x00; TL1=0x00; TR1=0; TR0=0; EA=1; ET0=1; ET1=1; EX0=1; IT0=1; P2=0xff; P0=0xff; kaiflag=0; temflag=0; }主函数voidmain() { init(); while(1) { keyscan(); if((kaiflag==1)&&(temflag==1)) { temdisplay(); TR1=0; TR0=0; EX0=0; }if((kaiflag==1)&&(temflag==0)) { send(); num=get(); TR1=1; } if(kaiflag==0) { TR1=0; TR0=0; init(); }}}中断voidIN0()interrupt0 { TR0=0; EX0=0; if(num<=50) { shengsu=165; } elseif(num<=100) { shengsu=169; } elseif(num<=200) { shengsu=172; } elseif(num<=300) { shengsu=175; } elseif(num<=500) { shengsu=180; }五、任务总结通过学习超声波的学习,学习到超声波测量距离的算法,能够根据实际需要完成程序的设计。六、拓展理论学习HC-SR04超声波模块(一)产品特点:1、典型工作用电压:5V。2、超小静态工作电流:小于2mA。3、感应角度:不大于15度。4、探测距离:2cm-400cm5、高精度:可达0.3cm。6、盲区(2cm)超近。(二)HC-SR04接口定义:

Vcc、Trig(控制端)、Echo(接收端)、Gnd控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。(三)超声波模块电气参数:(四)测距原理:超声波是一种频率比较高的声音,指向性强.超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。测距的公式表示为:L=C×T式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。已知超声波速度C=344m/s(20℃室温)超声波传播速度误差超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快,而空气的密度又与温度有着密切的关系,近似公式为:C=C0+0.607×T℃式中:C0为零度时的声波速度332m/s;T为实际温度(℃)。对于超声波测距精度要求达到1mm时,就必须把超声波传播的环境温度考虑

温馨提示

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

评论

0/150

提交评论