51单片机光电计数器设计——大学毕设论文

1 下载量 125 浏览量 更新于2024-06-23 收藏 1.94MB DOC 举报
"这篇文档是关于基于51单片机的流水线产品计数器设计的大学毕业论文,作者为唐树春,指导教师为周晓红,专业为应用电子技术。该计数器利用STC89c52单片机进行核心控制,通过外部中断0进行计数,采用反射式光电传感器采集数据,LED数码管显示结果,旨在将传统计数方式转变为电子计数,适应现代生产和生活需求。" 本文主要探讨了基于51系列单片机(STC89c52)的流水线产品计数器的设计与实现,其中包含了以下几个重要的知识点: 1. **51单片机**:51单片机是一种广泛应用的微控制器,基于Intel的8051架构,以其易于学习、功能强大、性价比高的特点,常被用于嵌入式系统设计。STC89c52是51单片机的一种改进型号,具有更高的存储空间和更丰富的外设接口。 2. **光电传感器**:光电式传感器是传感器的一种,它利用光电效应将光信号转换为电信号。在本设计中,反射式光电传感器由红外发光管和光电接收管组成,当物体通过时,反射的红外光被接收,产生电信号变化,进而实现物体计数。 3. **外部中断**:单片机中的外部中断是其接收外部事件的重要方式。在这个计数器系统中,外部中断0被用来捕捉每次物体通过时传感器产生的信号,触发计数操作。 4. **数据采集**:数据采集部分由反射式光电传感器完成,传感器的输出电压变化经过放大和处理,转化为计数脉冲,提供给单片机。 5. **单片机控制**:STC89c52单片机通过P3.2口接收这些计数脉冲,通过软件编程和硬件控制,实现计数逻辑,并驱动LED数码管进行数据显示。 6. **LED数码管显示**:LED数码管是一种常见的数字显示设备,可以直观地显示计数值,便于实时监控生产线上的产品数量。 7. **非接触式检测**:光电传感器的非接触特性使得计数过程不会对流水线上的产品造成影响,提高了系统的稳定性和可靠性。 8. **应用领域**:这种计数器适用于各种行业的流水线生产,如制造业、物流、包装等行业,能够提高生产效率,减少人为误差。 关键词涉及到的方面包括计数器的硬件设计、光电传感器的原理与应用、单片机的控制策略以及LED显示技术。论文深入讨论了这些技术如何协同工作,以实现精确、高效的流水线产品计数。
2023-02-27 上传
单片机课程设计 目 录 1 课程设计的目的 1 2 设计思路 1 3 设计过程 2 3.1 方案论证 2 3.2 电路的设计 5 4 应用程序 6 5 系统调试与焊接 8 5.1电路的安装与焊接 8 5.2 系统试调 9 6 结论 10 7 心得体会 10 参考文献 13 附录1:总体电路原理图 14 附录2:实物图 15 附录3:元器件清单 16 1 课程设计的目的 1.利用单片机定时器/计数器中断设计计数器,0到99的累加。 2.综合运用所学的《单片机原理与应用》理论知识,通过实践加强对所学知识的理解 ,具备设计单片机应用系统的能力。 3.通过本次课程设计加深对单片机掌握定时器、外部中断的设置和编程原理的全面认识 复习和掌握,对单片机实际的应用作进一步的了解。 4.通过本次试验,增强自己的动手能力。认识单片机在日常生活中的应用的广泛性 ,实用性。 明确学习目的,端正学习态度,提高对课程设计重要性的认识,以积极认真的态度参加 课程设计工作,按要求完成规定的设计任务。 2 设计思路 本实验利用单片机的定时器/计数器定时和计数的原理,通过采用仿真软件来模拟实 现。模拟利用AT89C2052单片机、LED数码管以及各种控制器件来控制表的计数以及计数 的开启/计数与复位等。利用单片机AT89S51单片机来制作一个手动计数器,在AT89S51单 片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0- P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0- P0.7接一个共阴数码管,作为00-99计数的十位数显示,用单片机P1.0- P1.6接一个并排的7个LED灯,作为00-99计数的二进制显示。设计总图如图2-1所示 图2-1 设计总图 3 设计过程 3.1 方案论证 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的 单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易 失存储器制造技术制造,与工业标准的MCS- 51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,AT MEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为 很多嵌入式控制系统提供了一种灵活性高并且价廉的方案。 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所 有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公 共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时 ,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片 机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位 就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端, 就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点 亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数 码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据, 不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功 耗更低。 用单片机技术来实现双显计数器的控制。多功能定时计数器控制系统的原理。它主要 由单片机、发光二极管、晶振和双位数码管等部分组成。 A.单片机采用STC89C51型。 B.数据显示电路:七段四位共阴极数码管,P1口接7个LED二极管,用二进制显示数 据;P0和P2口分别接两个数码管,用十进制显示数据。 C.数据输入电路:有触发按键完成输入,一次按键LED显示和数码管显示分别加1, LED满二进位,数码显示满十进位。 D.电源指示电路:电路接通电源后电源指示灯亮起,表示电源接通。 设计总体框架图如图3-1所示 图3-1总体框架图 最小控制系统的设计,STC89C51单片机最小系统包括晶体振荡电路、复位开关和电源 部分。STC89C51单片机的最小系统图如图3-2所示 图3-2 单片机最小控制系统 当RST引脚有一个高电平并维持两个机器周期,则 CPU就可以响应并将系统复位。需要100欧,10k电阻各一个,22pf电容一个,按键一个。 时钟电路需要在XTAL1,2,两个端口跨接石英晶体及两个电容,电容一般取10uF左右。 3.2 电路的设计 1.指示电路如图3-3所示 图3-3
2023-02-27 上传
51-单片机流水线计数器设计全文共3页,当前为第1页。51-单片机流水线计数器设计全文共3页,当前为第1页。#include<reg51.h> 51-单片机流水线计数器设计全文共3页,当前为第1页。 51-单片机流水线计数器设计全文共3页,当前为第1页。 void xianshi(); //显示数码函数 void delay();//延时函数 sbit p0_0=P0^0; sbit p0_4=P0^4; sbit p0_5=P0^5; sbit p0_6=P0^6; sbit p0_7=P0^7; //单独端口定义 unsigned char code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //字模数组 unsigned int count=0,f=0,z=0,j=10; int0_led () interrupt 3 //中断计数函数 { count++; if(count==10000) count=0; if(count==j) { p0_0=0; } } imt1()interrupt 0 //中断计数复位 { count=0; p0_0=1; } int2() interrupt 2 //中断定 计数数量设计函数 { if( p0_5==0) z=!z; //进入可调模式或退出可调模式 if( p0_6==0) j++; if( p0_7==0) j--; if(p0_4==0) j=0; } main () 51-单片机流水线计数器设计全文共3页,当前为第2页。51-单片机流水线计数器设计全文共3页,当前为第2页。{ 51-单片机流水线计数器设计全文共3页,当前为第2页。 51-单片机流水线计数器设计全文共3页,当前为第2页。 TMOD=0x60; TH1=TL1=0xff; ET1=1; TR1=1; EA=1; IT0=1; EX0=1; IT1=1; EX1=1; xianshi(); } void xianshi() { int q,x; while(1) { if(z==0)//显示计数量 { P2=0xf7; P1=led[count%10]; delay(); x=(count%100)/10; P2=0xfb; P1=led[x]; delay(); q=(count%1000)/100; P2=0xfd; P1=led[q]; delay(); P2=0xfe; P1=led[(count/1000)]; delay(); } else //显示设定数量 51-单片机流水线计数器设计全文共3页,当前为第3页。51-单片机流水线计数器设计全文共3页,当前为第3页。 { 51-单片机流水线计数器设计全文共3页,当前为第3页。 51-单片机流水线计数器设计全文共3页,当前为第3页。 P2=0xf7; P1=led[j%10]; delay(); x=(j%100)/10; P2=0xfb; P1=led[x]; delay(); q=(j%1000)/100; P2=0xfd; P1=led[q]; delay(); P2=0xfe; P1=led[(j/1000)]; delay(); } } } void delay()//延时函数 { char r; int time; for(time=30;time>0;time--) for(r=0 ;r<125;r++); } 51-单片机流水线计数器设计