基于单片机的工业产品自动计数器设计.doc

上传人:土8路 文档编号:10281038 上传时间:2021-05-05 格式:DOC 页数:19 大小:1,008.50KB
返回 下载 相关 举报
基于单片机的工业产品自动计数器设计.doc_第1页
第1页 / 共19页
基于单片机的工业产品自动计数器设计.doc_第2页
第2页 / 共19页
基于单片机的工业产品自动计数器设计.doc_第3页
第3页 / 共19页
基于单片机的工业产品自动计数器设计.doc_第4页
第4页 / 共19页
基于单片机的工业产品自动计数器设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《基于单片机的工业产品自动计数器设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的工业产品自动计数器设计.doc(19页珍藏版)》请在三一文库上搜索。

1、传感器课程设计 专业:机械设计制造及自动化 日期:10年12月25日 目录一设计题目:.2二设计要求:.2三题目分析:.2四整体构思:.2五具体实现:.2 5.1工作原理图.2 5.2工作原理简述.3六各部分定性说明以及定量计算:.3 6.1光电传感器.3 6.1.1 红外线光电传感器原理.3 6.1.2 直接反射式光电开关.4 6.2 单片机最小系统.5 6.3 AT89C51单片机.7 6.3.1主要特性:.7 6.3.2管脚说明:.8 6.3.3 振荡器特性:.9 6.4 数码显示管.9 6.5 蜂鸣器电路.11 6.6 系统程序设计.136.6.1主程序流程图.136.6.2中断计数程

2、序流程图.147 在实验室实现过程中遇到的问题及排除措施:.148 设计心得体会:.149 参考文献.15附录:.15 总电路图.15 程序.16传感器原理课程设计1 设计题目:基于单片机的工业产品自动计数器2 设计要求: 2.1数码管可以显示产品个数(0-99),自由设定产品报警个数(比如8),当产品数目是8的个数时,发出报警(蜂鸣器响)。 2.2独立设计电路,应包括单片机小系统、红外光电开关、数码管显示部分。3 题目分析:该产产品自动计数器是利用单片机实现生产线上产品计数以及当产品数目是一个规定数时,发出报警(蜂鸣器响)。即当生产线传送带上不断有产品单向传送时,使用光电传感器统计一定时间内

3、的产品个数,同时不断将当前统计结果送显示器显示并达到规定数时蜂鸣器响。该系统可以大大提高生产效率,而且成本很低,控制灵活、可靠性强。4 整体构思: 通过利用红外光电传感器产生计数脉冲,驱动单片机计数器开始计数,再通过数码管显示计数,并在通过单片机控制通过规定数产品时蜂鸣器响。5 具体实现:5.1 工作原理图光电传感器计数脉冲 51单片机最小 数码管显 产生电路 系统电路 示电路 蜂鸣器电路5.2 工作原理简述当生产线传送带上不断有产品单向传送时,通过光电传感器产生计数脉冲,由该脉冲控制单片机的计数,并将计数在数码管上予以显示,当达到规定数时蜂鸣器响六、各部分定性说明以及定量计算:6.1光电传感

4、器 6.1.1 红外线光电传感器原理光电传感器是通过把光强度的变化转换成电信号的变化来实现控制的。光电传感器在一般情况下,有三部分构成,它们分为:发送器、接收器和检测电路。 红外线属于一种电磁射线,其特性等同于无线电或X射线。人眼可见的光波是380nm-780nm,发射波长为780nm-1mm的长射线称为红外线,这里销售的红外线光电开关优先使用的是接近可见光波长的近红外线。发送器对准目标发射光束,发射的光束一般来源于半导体光源,发光二极管(LED)、激光二极管及红外发射二极管。光束不间断地发射,或者改变脉冲宽度。接收器有光电二极管、光电三极管、光电池组成。在接收器的前面,装有光学元件如透镜和光

5、圈等。在其后面是检测电路,它能滤出有效信号和应用该信号。此外,光电开关的结构元件中还有发射板和光导纤维。三角反射板是结构牢固的发射装置。它由很小的三角锥体反射材料组成,能够使光束准确地从反射板中返回,具有实用意义。它可以在与光轴0到25的范围改变发射角,使光束几乎是从一根发射线,经过反射后,还是从这根反射线返回。 6.1.2直接反射式光电开关 直接反射光电开关是一种集发射器和接收器于一体的传感器,当有被检测物体经过时,将光电开关发射器发射的足够量的光线反射到接收器,于是光电开关就产生了开关信号。当被检测物体的表面光亮或其反光率较高时,直接反射式的光电开关是首选的检测模式。产品1:M18漫反射距

6、离可调型光电开关(NPN三极管驱动输出)检测距离:30300毫米(可以通过背后的白色电位器调节)被检测物最小直径:5毫米指向角度:小于5度 工作电压:636V直流工作电流:小于8毫安输出驱动电流:300毫安 温度范围:2570度 这是一种应用最为广泛的光电开关,它的直径为18毫米,固定时只要在设备外壳上打一个18毫米的园孔就能轻松固定,长度约75毫米,背后有工作指示灯,当检测到物体时红色LED点亮,平时处于熄灭状态,非常直观,引线长度为100毫米。 检测距离和工作电压有关,当工作电压为7V时,人手在4.5厘米时工作指示灯点亮,当工作电压为12V时,人手在10厘米时工作指示灯点亮。 这种光电开关

7、的输出采用NPN型三极管集电极开漏输出模式,也就是说模块的黑线就是三极管的集电极,如果模块检测到信号,三极管就会导通,将黑线下拉到地电平,黑线和棕线之间就会出现电源电压,如果电源是12V的那么这个电压就是12V,如果电源是24V这个电压就是24V,一般三极管的驱动能力约100毫安左右,所以可以直接驱动继电器等小功率负载。如果客户希望得到的是一个电压信号,可以在黑线和棕线之间接一个1K的电阻,这时模块没有信号时,黑线就是电源电压,模块检测到信号时黑线跳变成电源地(实际是0.2V,三极管的导通压降)。6.2 单片机最小系统 51单片机最小系统电路介绍1.51单片机最小系统复位电路的极性电容C1的大

8、小直接影响单片机的复位时间,一般采用1030uF,51单片机最小系统容值越大需要的复位时间越短。2.51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。3.51单片机最小系统起振电容C2、C3一般采用1533pF,并且电容离晶振越近越好,晶振离单片机越近越好4.P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周

9、期Tcy就是定时时间t。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 ms。标识符号 地址 寄存器名称P3 0B0H I/O口3寄存器PCON 87H 电源控制及波特率选择寄存器SCON 98H 串行口控制寄存器SBUF 99H

10、 串行数据缓冲寄存器TCON 88H 定时控制寄存器TMOD 89H 定时器方式选择寄存器TL0 8AH 定时器0低8位TH0 8CH 定时器0高8位TL1 8BH 定时器1低8位TH1 8DH 定时器1高8位6.3 AT89C51单片机 计数控制部分是将计数脉冲(负脉冲有效)送入单片机AT89C51两个中断入口的INT0入口,经过单片机内部对这个中断信号进行计数编程构成.AT89C51与MCS-51指令系统完全兼容。提供以下标准功能:4K字节FLASH闪烁存储器、128字节内部RAM、32个I/O口线、两个16位定时/计数器 、一个5向量两级中断、 一个全双工串行通信口、片内振荡器及时钟电路

11、。同时AT89C51可降至0HZ的静态逻辑操作,并支持两个软件的节电工作模式。空闲方式停止CPU的工作,但是允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电后保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。AT89C51单片机芯片外型如图 AT89C51单片机外型 AT89C51P3口端口功能 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程

12、可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。6.3.1主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5

13、个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 6.3.2管脚说明: VCC:供电电源 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这

14、是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部

15、上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位

16、输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信

17、号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。6.3.3 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内

18、振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。6.3.4 芯片擦除: 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉

19、电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 6.4 数码显示管型号8字高度图片尺寸极性MT-05022E-F0.5英寸 / 12.70mm 2519E-共阴 F-共阳 6.5 蜂鸣器电路蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性

20、地振动发声。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。下面是电磁式蜂鸣器的外形图片及结构图。电磁式蜂鸣器实物图: 电磁式蜂鸣器结构示意图: 电磁式蜂鸣器内部构成: 1. 防水贴纸 2. 线轴 3. 线圈4. 磁铁 5. 底座6. 引脚7. 外壳8. 铁芯 9. 封胶10 小铁片11. 振动膜12. 电路板 电磁式蜂鸣器驱动原理 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要

21、一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图:S51增强型单片机实验板蜂鸣器驱动原理图:如图所示,蜂鸣器的正极接到VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音

22、和关闭。程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。6.6 系统程序设计 程序流程图6.6.1主程序流程图开始报警显示计数初始化 6.6.2中断计数程序流程图检测外部计数脉冲是 蜂鸣器响否 反回计数是否为10的倍数否 中断返回是否处于低电平计数计 数显 示 七在实验室实现过程中遇到的问题及排除措施: 1、在焊接过程中,由于焊接不当出现空焊、漏焊、连锡等情况,在焊完一部分之后必须对其进行仔细检查,一旦有上述情况应尽快修整以免出现短路、短

23、路以至系统无法正常工作 2、在编写程序的过程中会遇到指令不存在等问题,通过调试和组员之间的讨论之后对错误的地方进行更改 3、两位数码管在没有驱动电路时无法正常动态显示,接上两个三极管之后,数码管正常工作八设计心得体会:两周的传感器课程设计很快的过去了,通过这次的课程设计,使我对传感器、单片机等在工业应用中有了一个更深刻的认识,课本的理论跟实际的应用之间还是存在着很大的差距的。理论上讲的通的、看似简单的东西真正运用到实际设计和应用当中的时候,会暴露出很多细节上的不足。通过对这些问题的一一发现及解决,尤其是在发现和解决这些问题的过程当中,自己学到了很多课本上不能直接学到的知识。其中就有锡焊,看似简

24、单的一个应用操作,当实际做起来的时候却会出现空焊、连锡等情况,通过对这些错误应用的解决从而更好的掌握了锡焊。同时在编程的过程中使我再一次对单片机进行了更加深刻的学习和理解,发现以前学的没用很好的掌握和熟练的运用于实际。在整个设计的过程中,通过不断的查资料,上网搜索,丰富了我的课外知识以及提高了我的在网络检索信息的能力,并使我发现了很多的有用的能学到很多知识的网站,为以后的学习积累了很好的备用资源。同时也感谢赵老师本学期及这两周对我们的细心讲解。九、参考文献 1、倪晓军,章韵 单片机原理与接口技术清华大学出版社,20092、 康华光 电子技术基础数字部分.高等教育出版社,20063、 康华光 电

25、子技术基础模拟部分.高等教育出版社,20064、 郭天祥 51单片机C语言教程 电子工业出版社,20095、 王庆 Protel 99 SE&DXP电路设计教程电子工业出版社,2006附录:总电路图与程序总电路图:程序:#include#define uchar unsigned char#define uint unsigned intsbit buzzer=P30;uchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;uchar num,num1,num2

26、,flag; void delay(unsigned int i) unsigned int j; for(i;i0;i-) for(j = 110; j 0; j-);void display() uchar a,b; a=num%10; b=num/10; if(a=0)&(b!=0)&flag=1) buzzer=1; delay(1000); flag=0; buzzer=0; num1+; if(num1=100) num1=0; P0=taba; P2=0xfe; delay(5); P0=tabb; P2=0xfd; delay(5); /* P0=tabc; P2=0xfe; delay(5); P0=tabd; P2=0xfb; delay(5);*/ main() EA=1; EX1=1; IT1=1; buzzer=0; while(1) display();void int1() interrupt 2 num+; if(num=100) num=0; num1+; flag=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1