资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,自动计数报警器,天时人事日相催,冬至阳生春又来,1,用学过的传感器与检测技术和单片机原理及应用等课程的知识,设计一个工业产品的自动计数报警器的硬软件系统。,功能要求:,(,1,)通过广电传感器(或其他传感器)检测流水线上通过的产品个数。,(,2,)数码管可以显示产品个数(,0-99,),自由设定产品报警个数(比如,8,个),当产品数量到,8,时,发出声音报警(蜂鸣器)。,2,设计框图:,3,2.STC89C52RC,STC89C52RC是一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位,CPU 和在系统可编程Flash,使得STC89C52,为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。其主要特性有:8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载。,4,单片机最小系统:,5,1.,光电传感器,光电传感器主要由,WYCH2010,和,LM393,组成。,(,1,),WYCH2010,WYCH2010 槽型光耦也称透射式光电传感器,它是将砷化镓红外发射管和硅光敏三极管以相对的方向装在中间带槽的支架上。当槽内无物体时,砷化镓发射管发出的光直接照在硅光敏三极管的窗口上,从而产生一定大的电流输出,当有物体经过槽内时则挡住光线,光敏管无输出,以此可识别物体的有和无。,6,(,2,),LM393,LM393 是双电压比较器集成电路。输出负载电阻能衔接在可允许电源电压范围内的任何电源电压上,不受 Vcc端电压值的限制.此输出能作为一个简单的对地SPS开路(当不用负载电阻没被运用),输出部分的陷电流被可能得到的驱动和器件的值所限制.当达到极限电流(16mA)时,输出晶体管将退出而且输出电压将很快上升。,7,计数模块:,8,4.,蜂鸣器,蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。,1.,压电式蜂鸣器:压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。,2.电磁式蜂鸣器,:,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。,9,蜂鸣器报警电路:,10,3.,数码管,数码管是一种半导体发光器件,其基本单元是发光二极管。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。,11,数码管显示系统:,12,总电路图:,13,软件流程图:,14,软件程序:,#include,#define uchar unsigned char,sbit key2=P31;,sbit bee=P37;,uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;,void delay(uchar num),/,延时程序,uchar i,j;,for(i=num;i0;i-),for(j=100;j0;j-);,15,void display(uchar num),/,数码管显示程序,uchar shi,ge;,shi=num/10;,ge=num%10;,P1=tableshi;,P2=tablege;,void main(),/,主函数,uchar j;,TMOD=0X05;,/,定于,T0,工作在方式,1,TH0=0;,TL0=0;,TR0=1;,/,启动计数,bee=0;,/,蜂鸣器初始化,上电鸣笛一声,可到达检验效果,16,while(1),if(TL0=99),/,判断最大计数为,99,TL0=0;,display(TL0);,if(TL0=8),/,计数到,8,鸣叫,bee=1;,delay(50);,bee=0;,if(key2=0)/键盘,/,扫描键盘,delay(10);,if(key2=0),TR0=TR0;,/,执行暂停,/,继续,while(!key2);,/,判断按键是否松开,以防程序重复运行,17,18,谢谢!,19,
展开阅读全文