单片机程序设计实践教程-第12章-光电传感器和蜂鸣器控制_第1页
单片机程序设计实践教程-第12章-光电传感器和蜂鸣器控制_第2页
单片机程序设计实践教程-第12章-光电传感器和蜂鸣器控制_第3页
单片机程序设计实践教程-第12章-光电传感器和蜂鸣器控制_第4页
单片机程序设计实践教程-第12章-光电传感器和蜂鸣器控制_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

二讲光电传感器和蜂鸣器控制单片机程序设计实践教程2021/5/9112.0项目演示效果图XP_12_01步骤1-打开开发板电源2021/5/92图XP_12_02步骤2-遮挡传感器12021/5/93图XP_12_03步骤3-遮挡传感器32021/5/94图XP_12_04步骤4-同时遮挡传感器1和22021/5/95图XP_12_05步骤5-同时遮挡全部传感器2021/5/9612.1项目目标设计了解光电传感器的基本工作原理;了解蜂鸣器的基本工作原理;掌握对多个光电传感器输入信号进行识别的软件处理方法;掌握对蜂鸣器的控制方法;继续加深理解ZLG7290键盘与显示控制芯片相关函数的控制和使用方法;理解给出的光电传感器和蜂鸣器C语言源程序的结构和各语句所起作用;在达到上述六点目标之后,根据本章“项目扩展任务”中提出的问题,以组或个人为单位,在规定时间里完成扩展项目任务。2021/5/9712.2项目任务

光电传感器和蜂鸣器控制项目的电路原理图如图12-1所示,PMY单片机开发板包括4个光电传感器TCST1030(L)【22】,器件编号分别为U20~U23,传感器的引出脚为Sensor1~Sensor4,分别与STC89C52RC单片机的P12~P15口用连接插线(见图4-8)相连。由电路原理图可知,在任意一个光电传感器凹形槽间无遮挡物进行遮挡时,Sensor1~Sensor4输出信号都为高电平;反之则为低电平。本次项目借助第9章项目的结果,通过编写相应程序,实现当任意光电传感器被遮挡而产生触发时,都会引起蜂鸣器的鸣响,同时点亮相应的七段数码管及LED发光二极管,显示被遮挡传感器的编号。2021/5/98图12-1光电传感器和蜂鸣器控制项目的电路原理图2021/5/9912.3系统板上硬件连线光电传感器和蜂鸣器控制项目的连接插线设置如图12-2所示,此处应使用4根连接插线将STC89C52RC单片机P12~P15(J9、J6、J8和J10)分别与传感器输入端Sensor01~Sensor04(在芯片82C55的PC口接线排子4、5、6、7的下方)相连。图12-2光电传感器和蜂鸣器控制项目的连接插线设置2021/5/91012.4程序流程图图12-3光电传感器和蜂鸣器控制项目的C语言程序流程图2021/5/91112.5C语言源程序(略)12.6系统构成和程序分析12.6.1光电传感器的介绍

光电传感器(光电开关)是光电接近开关的简称,是能够将可见光转换成某种电量的传感器【23】。光敏二极管是最常见的光传感器,光敏二极管的外型与一般二极管一样,只是它的管壳上开有一个嵌着玻璃的窗口,以便于光线射入。为增加受光面积,PN结的面积做得较大,光敏二极管工作在反向偏置的工作状态下,并与负载电阻相串联,当无光照时,它与普通二极管一样,反向电流很小(<μA),称为光敏二极管的暗电流;当有光照时,载流子被激发,产生电子-空穴对,称为光电载流子。在外电场的作用下,光电载流子参与导电,形成比暗电流大得多的反向电流,该反向电流称为光电流。光电流的大小与光照强度成正比,于是在负载电阻上就能得到随光照强度变化而变化的电信号。2021/5/912

光敏三极管除了具有光敏二极管能将光信号转换成电信号的功能外,还有对电信号放大的功能。光敏三级管的外型与一般三极管相差不大,一般光敏三极管只引出两个极——发射极(E)和集电极(C),如图12-4所示,基极(B)不引出,管壳同样开窗口,以便光线射入。为增大光照,基区面积做得很大,发射区较小,入射光主要被基区吸收。工作时集电结(C)反偏,发射结(E)正偏。在无光照时,管子流过的电流为暗电流Iceo=(1+β)Icbo(很小),比一般三极管的穿透电流还小;当有光照时,激发大量的电子-空穴对,使得基极产生的电流Ib增大,此刻流过管子的电流称为光电流,集电极电流Ic=(1+β)Ib,可见,光电三极管要比光电二极管具有更高的灵敏度。2021/5/913

图12-4是光电传感器的工作原理图,图中由振荡回路产生的调制信号由发射管GL(光敏二极管)辐射出光脉冲【24】。光脉冲进入光敏三极管DU,并在接收电路中将光脉冲解调为电脉冲信号,再经放大器放大和同步选通整形、解调,触发驱动器输出光电开关控制信号。当有检测物对光束进行遮挡时,无光脉冲进入光敏三极管DU,光敏三极管随即断开,接收电路中无电脉冲信号流过负载。因此,光电传感器是将输入电流在发射器上转换为光信号射出,接收器再根据接收到的光线强弱或有无对目标物体进行探测。多数光电开关选用的是波长接近可见光的红外线光波型。2021/5/914图12-4光电传感器内部工作原理图2021/5/915

图12-5是美国Vishay公司生产的TCST1030(L)光电传感器外型和引脚图。该器件结构紧凑,发射光源和接收检测器被正对置于同一光轴上,发射光波长是950nm,接收检测器由光敏三极管构成。

TCST1030(L)主要用于轴状编码器的位置感应器和机械运动限制开关等,可实现对不透明物质(如卡片、纸等)的检测。2021/5/916图12-5TCST1030(L)光电传感器外型和引脚图2021/5/91712.6.2蜂鸣器简介

蜂鸣器是一种一体化结构的电子讯响器,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。本开发板采用的是有源式电磁蜂鸣器,这种蜂鸣器是由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声,具体的介绍可参阅参考文献【25】。2021/5/918

由图12-1所示的电路原理图可知,蜂鸣器的正极接到VCC(+5V)电源,蜂鸣器的负极接到三极管Q2的集电极C,三极管的发射极E接地,基级B经过限流电阻R6后由82C55的PC1引脚控制,当PC1输出高电平时,三极管Q2导通,蜂鸣器电流形成回路,发出声音;当PC1输出低电平时,三极管Q2截止,没有电流流过线圈,蜂鸣器不发声。因此,可以通过程序控制82C55的PC1脚电平实现对蜂鸣器的发声控制。2021/5/91912.6.3项目程序分析图12-6光电传感器和蜂鸣器控制的系统功能图2021/5/920

根据12.2小节所述项目任务,参照图12-1并将其化简为图12-6的光电传感器和蜂鸣器控制的系统功能图。开发板中4个光电传感器U20~U23的引出脚为Sensor1~Sensor4,分别与STC89C52RC单片机的P15~P12用连接插线相连。程序在主函数前就应用sbit语句设定这4个端口的引脚。sbitSensor01=P1^2;//传感器1的输入端口sbitSensor02=P1^3;//传感器2的输入端口sbitSensor03=P1^4;//传感器3的输入端口sbitSensor04=P1^5;//传感器4的输入端口2021/5/921

源程序中含有将引脚Sensor1~Sensor4位信息转换为uchar变量的过程,如下:Sflag1=(uchar)Sensor01;

//将传感器1的输入端口状态储存在指定变量中Sflag2=(uchar)Sensor02;

//将传感器2的输入端口状态储存在指定变量中Sflag3=(uchar)Sensor03;

//将传感器3的输入端口状态储存在指定变量中Sflag4=(uchar)Sensor04;

//将传感器4的输入端口状态储存在指定变量中执行上述语句后,各个光电传感器的输入状态被强制转换为uchar数据类型,并存储在变量Sflag1~Sflag4中,以便于后面的switch语句调用,C语言中的switch语句不能直接对端口的引脚状态进行判断,所以这里需要处理一下。2021/5/922

对蜂鸣器的控制由以下代码体现:if(!(Sflag1&Sflag2&Sflag3&Sflag4))PC8255|=0x01;

//有变量为0的情况出现,允许蜂鸣器发声elsePC8255&=0;

//禁止蜂鸣器发声由12.2小节项目任务可知,当Sflag1&Sflag2&Sflag3&Sflag4相与后结果为高电平,说明在任意一个光电传感器凹形槽间无遮挡物遮挡,所有Sensor输出信号都为高电平;反之,当有遮挡物在其中一个光电传感器凹形槽间进行遮挡时,Sflag1&Sflag2&Sflag3&Sflag4相与后的结果将为0,这时控制蜂鸣器发声,指示有传感器信号被触发。2021/5/923

程序中又是如何辨别哪个传感器的信号被触发了呢?前面提到的主程序中4个switch语句实现了上述功能,以第一个传感器信号的处理过程为例来分析,列写源程序如下:switch(Sflag1)//判断传感器1的输入状态{ case0:PA8255&=0x3f;//光电信号被遮挡,点亮D17和D16灯

DispValue(0,11);//在数码管1、2位显示11 break; case1:PA8255|=0xc0;//光电信号无遮挡,熄灭D17和D16灯

ZLG7290_Download(0,0,0,31);//强制熄灭数码管1 ZLG7290_Download(1,0,0,31);//强制熄灭数码管2 break; default:break;}2021/5/924Sflag1为1,光电信号无遮挡,用PA8255|=0xc0控制单独熄灭D17和D16灯,保持其它PA口信号的状态,接下来的熄灭数码管功能引用了第9章介绍的ZLG7290_Download函数来实现,函数中各个参数的含义及选取,请参阅第9章所提及的参考文献。

Sflag1为0,光电信号被遮挡,用PA8255&=0x3f控制点亮D17和D16灯,保持其它PA口信号的状态,还是引用第9章介绍的DispValue函数实现数码管1、2位显示11的功能。2021/5/925

程序是如何通过设置PA7、PA6脚为低电平而不影响82C55的PA口其它控制信号状态呢?如图12-7所示,用PA82C55端口与0x3f按位相与即可实现。图12-7中,y为PA82C55端口将要改变的值,与0相与,则该位被清0;x为PA82C55端口不需改变的值,与1相与,则该位被保留。这种方法既能够将PA7、PA6脚设置为低电平也会保持PA端口的其它控制信号状态。同理,用PA82C55端口与0xC0按位相或可以实现既能够将PA7、PA6脚设置为高电平,也会保持PA端口的其它控制信号状态。2021/5/926图12-7程序中82C55的PA7、PA6脚高低电平设置原理图2021/5/92712.7项目扩展任务

理解本章、第9章七段数码管和4×4键盘控制和第10章继电器和直流小电机正反转控制的原理,以组或个人为单位,通过编写相应程序,实现以下控制流程:·传感器U20~U22分别作为继电器和直流电机的控制开关。

温馨提示

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

评论

0/150

提交评论