基于89C52单片机的红外计数器课程设计报告题目:基于89C52单片机的红外计数器设计组别:第二大组成员:龚利贤乔俊康邵启泓专业:光电信息科学与工程班级:123421004指导老师:王九云邓文武时间:2015年6月电子与信息工程学院基于89C52单片机设计的红外计数器摘要:计数器在人们日常生活中应用越来越多,已成为不可缺少的必需品。本文介绍了红外计数器的发展前景和现状,设计了一种由89C52单片机控制来实现的红外计数器,详细阐述了红外计数器的工作原理和构成,讨论了各模块的实现方法,并对它们进行了严格的理论逻辑推敲和实验测试,以达到设计要求。关键词:自动计数,红外检测,Lcd1602引言:随着人们生活水平的不断提高,人们越来越追求人性化的事物,计数器是不可缺少的必需品。本文所设计的计数器采用红外线激光方式,抗干扰性好。可靠性高,可用于测量宾馆、饭店、商场、超市、博物馆、展览馆、车站、码头、银行等场所的人员数量及人员流通数量。该产品应用光法,也可以测量流水线上的产品数量,以及可检查产品有无缺损。因此,研究计数器及扩大其应用,有着非常现实的意义。1红外技术的介绍红外技术的内容包含四个主要部分:红外辐射的性质,其中有受热物体所发射的辐射在光谱、强度和方向的分布;辐射在媒质中的传播特性—反射、折射、衍射、和散射;热点效应和光电效应等。红外元件、部件的胭脂,包括辐射源、微型制冷器、红外窗口材料和滤光电等。把各种红外元件、部件构成系统的光学、电子学和精密机械的组成部分。红外技术在军事上和国民经济中有着广泛的应用。红外技术有很多应用,例如在夜晚可以用看见物体的红外线来确定物体的位置;用一个红外线发射器和一个红外线接收器在生产商可以计算商品的数量;军事上可以用来防止敌人入侵,当红外线发射器和接收器被挡住,警报就会想;在医学上还可以查看人的病情等等。红外计数器氛围对射式和反射式良好宗地那路。对射式红外线是一个发射头和一个接收头在中间如有物件通过就遮挡一下光线,输出脉冲信号触发计数电路;反射式红外线是把发射头和接收头做在一起成为一个红外探头,当探头前有一个物件出现就把发射头的红外线反射给接收头,探头输出一个脉冲给计数器技术。本文所设计的计数器是采用红外线遮光方式,利用红外对管做计数器传感器,当有物体通过时光被遮住,接收模块输出一个高电平脉冲,对此脉冲进行技术,就可实现对产品的统计,并显示在LCD1602显示屏上,就可以实现对产品的统计。基于这种光电检测原理,配合组成集成电路,就可设计对射式红外计数器。实践证明,该装置抗干扰能力强,工作稳定,技术准确。2设计任务与设计要求2.1设计任务实现数字式光电计数器的功能,当用遮挡物按某一方向挡住红外发射器并移开之后,它就自动计数加一2.2设计要求该计数器可将机械火人工技术方式变为电子技术,并且采用LCD1602显示屏显示,在电源输入5V电压,经过光电输入电路、技术脉冲形成电路、显示屏技术电路玩成电路功能。3红外计数器的工作原理红外计数器电路的工作原理是:该电路由最小系统电路,光电输入电路,光电输出电路,输出比较电路,显示电路组成,利用被检测物体对红外光的遮挡,从而检测物体的有无。物体不限于金属,所有能遮挡红外光的物体均可以被检测。红外对射管将输入电流在发射器上转换为光信号射出,接收管再根据接收到的光线强弱或有无对目标物体进行探测。每当物体通过红外对射关中间一次,红外光被遮挡一次,光电接收管的输出电压发生一次变化,这个变化的电压信号通过放大和处理后,形成技术脉冲,去触发一个十进制计数器,便可实现毒物件的技术统计。红外计数器总体框图如图一所示图一4主体电路的设计4.1核心板电路设计核心电路板我们选用STC89C52单片机,是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。该芯片正常工作需要时钟电路和5V电源,时钟电路我们选用了12M晶振和30pf电容,保证芯片的工作频率为12Mhz。电路图如图二所示图二4.2光电发射装置光电发射装置采用5V电源,阳极接了一个1k欧的限流电阻,防止LED被击穿,负极接在了89C52单片机的一个引脚上。通过单片机控制红外LED的发光。4.3光电接收装置光电接收装置使用普通的红外接收三级管,在使用过程中我们了解到89C52单片机只识别5V和0V数字电压,而红外接收三极管当红外接收的有无变化时并没有较大的电压变化,大概在4V-3V电压之间,这样都会被单片机识别为高电压,无法识别电压的跳变,于是我们采用了LM393电压比较器,它的工作原理是设置一个基准电压,然后设置一个比较电压,当输入电压大于比较电压时,输入基准电压,当输入电压小于比较电压时,输出光检测信号放大计数器加一显示计数数字0V电压。这样可以完美解决了光电三极管接收信号后无法处理成数字信号的问题。基准电压我们设置为单片机可以识别的5V,而比较电压我们接上了一个滑动变阻器,这样可以自由控制比较电压的输入,可以适应不同红外环境下的技术问题。具体电路如图三图三4.4计数器显示装置计数器显示装置我们采用LCD1602显示屏来显示所计产品数量1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。具体驱动电路如图四图四5成品展示焊接方面我们用了普通的洞洞板进行焊接,没有使用PCB加工技术,因为那样会使成本增加。最终成品如下图。正面反面侧面侧面可以看出我们在焊接过程中充分利用了洞洞板的空间,将时钟电路焊在芯片的下方,将显示电路焊接在芯片的上方。这样大大节约了体积,使其变得更美观6程序/*****采用12MHz晶振****/#includereg52.h#includestring.h#defineucharunsignedchar#defineuintunsignedint//***定义使用的IO口***//sbitflag=P3^3;sbitled=P3^2;sbitlcde=P2^5;sbitlcdrs=P2^7;sbitlcdrw=P2^6;sbitreset=P3^4;sbitstop=P3^5;//*****全局字符数据*****//ucharcodetable1[]=Productsnumber:;//输入密码字符-15ucharnumber[6]={0,0,0,0,0,0};/*****延时毫秒函数*****/voiddelayms(uintz){uintx,y;for(x=z;x0;x--)for(y=120;y0;y--);}/*****LCD1602写命令函数*****/voidlcd1602_write_com(ucharcom){lcdrs=0;//lcd1602使能端lcdrw=0;//lcd1602写操作P0=com;delayms(5);lcde=1;delayms(5);lcde=0;}/*****LCD1602写数据函数*****/voidlcd1602_write_dat(uchardat){lcdrs=1;lcdrw=0;P0=dat;delayms(5);lcde=1;delayms(5);lcde=0;}/*****LCD1602初始化程序*****/voidlcd1602_init(){lcde=0;lcd1602_write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口lcd1602_write_com(0x0c);//设置开显示,显示光标,光标闪烁//*(00001DCB,D=1:开显示,C=1:显示光标,B=1:光标闪烁)*/lcd1602_write_com(0x06);//写一个字符后地址指针加1lcd1602_write_com(0x01);//显示清零,数据指针清零}voidenter_number(){ucharj;lcd1602_init();lcd1602_write_com(0x80);for(j=0;j17;j++){lcd1602_write_dat(table1[j]);delayms(5);}lcd1602_write_com(0x80+0x40);}voidprint_number(){inti,j;lcd1602_write_com(0x80+0x40);for(i=0;i6;i++){j=number[i];lcd1602_write_dat(j+48);}}voidmain(){inti,stop_flag=0,reset_flag=0;led=0;stop=1;reset=1;enter_number();while(1){print_number();if(flag!=0){while(flag!=0);number[5]++;if(number[5]9)number[5]=0;if(number[5]==0){number[4]++;if(number[4]9)number[4]=0;if(number[4]==0){number[3]++;if(number[3]9)number[3]=0;if(number[3]==0){number[2]++;if(number[2]9)number[2]=0;if(number[2]==0){number[1]++;if(number[1]9)number[1]=0;if(number[1]==0){number[0]++;if(number[0]=9)number[0]==0;}}}}}}}}7结论本文设计的红外计数器在日常生活及生产科研中有着广泛的用途。该计数器采用红外线遮光方式,其特点是:抗干扰能力强,工作稳定可靠,计数范围1~9999个数,高亮度数字显示。红外计数器是一种很实用的电路,可用于工农业设备或流水线上对产量或流量进行统计技术,在平时生活中也有广泛运用,如商场、游乐场等等。而其电路的实现也是多种多样。希望能在价格、使用灵敏度上,做出更加完美的计数器电路。参考文献【1】谢自美.电子线路设计、实现、测试【M】武汉:华中理工大学出版社,2003【2】康华光.电子技术基础【M】北京:高等教育出版社,2002