基于单片机的红外计数器设计方案.docx
《基于单片机的红外计数器设计方案.docx》由会员分享,可在线阅读,更多相关《基于单片机的红外计数器设计方案.docx(25页珍藏版)》请在冰豆网上搜索。
基于单片机的红外计数器设计方案
基于单片机的红外计数器设计方案
摘要
在今天飞速发展的社会上,越来越多的流水线上的产品和各种公共场所
需要进行自动计数。
基于单片机构成的产品自动计数器有直观和计数精确的优点,目前已在各种行业中得到广泛应用。
数字计数器有多种形式,总体来说有接触式和非接触式两种,在科技发展的今天,非接触式红外计数器得到了广泛的应用。
本设计采用一对红外发射接收管作为红外计数器的信号检测头,具有价格低廉,抗干扰性好,结构简单,操作方便等特点。
本项目中的红外计数器,是当物品经过时,会挡住红外线,接收管收不到信号就变为低电频,此时由单片机控制,计数器加一。
当按下停止键时,停止计数,电机停止运行。
由单片机输出电频来控制继电器,进而控制电机的运行。
按开始键可读取上次停止时的数量,并开始累加。
按复位键可以清零,重新开始计数。
关键词:
单片机;数码管;红外计数,三极管放大;稳压
一、引言
由于传统的机械式或电子式计数器(主要是用数字电路集成组件组成)电路比较复杂,元器件数量较多,故障率较高,维修比较困难,而设置预定数值不太方便,功能不易更改且功能过于单一,适用范围较窄。
而基于单片机为核心控制的计数器有着能够实时、精确、可靠、稳定等计数优点已成为广大厂家的首先自动计数装置。
二、正文
研究背景
电子计数器到目前为止已有30多年的发展史。
早期,设计师们追求的目标主要是扩展计数范围,再加上提高计数精度、稳定度等,这些也是人们衡量电子计数器的技术水平,决定电子计数器价格高低的主要依据.目前这些基本技术日臻完善,成熟.应用现代技术可以轻松地将电子计数器的计数上限扩展到无限大。
当今,单片微型计算机技术迅速发展,基于单片机技术开发的计数设备和产品广泛应用到各个领域,单片机技术产品和设备促进了生产技术水平的提高.企业迫切需要大量熟练掌握单片机技术并能开发、应用和维护管理这些智能化产品的高级工程技术人才.单片机以体积小、功能强、可靠性高、性能价格比高等特点,已成为实现工业生产技术进步和开发机电一体化和智能化测控产品的重要手段。
1.设计要求:
整个系统用MCS-51系列单片机作为控制器,具有较强的抗干扰能力,并且能将计数值准确显示出来还有清0功能,人工控制开始停止功能。
采用4位LED进行计数显示,计数范围:
00~9999;采用红外传感器计数;并用按键来人工控制传送带电机的起停。
AT89C51为控制单元、辅以多种外围硬件搭配而成的计数装置已成为现在自动计数应用领域的潮流。
基于单片的红外计数器的设计
原理:
电路的指导思想是红外发射管发射红外线,红外接收管接收红外线,电路包括:
AT89C单片机计数控制、LED显示驱动模块的、按键控制模块。
在这个设计中主要需要解决的问题是如何提高AT89C单片机的抗干扰能力以及稳定性。
重要元件介绍
1、单片机stc89rc
单片机的最小系统是由电源、复位、晶振、/EA=1组成,下面介绍一下每一个组成部分。
图1单片机最小系统
1.电源引脚
Vcc 40 电源端
GND 20 接地端
工作电压为5V,另有AT89LV51工作电压则是2.7-6V,引脚功能一样。
2.外接晶体引脚
图2晶振连接的内部、外部方式图
XTAL1 XTAL2
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
晶振的频率可以在1MHz-24MHz内选择。
电容取30PF左右。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
AT89单片机内部有一个用于构成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
3.复位 RST
在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。
复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。
当时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。
复位操作不会对内部RAM有所影响。
常用的复位电路如下图所示:
图3常用复位电路图
4.输入输出引脚
(1)P0端口[P0.0-P0.7]P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。
作为输出口时能驱动8个TTL。
对内部Flash程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上拉电阻。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。
(2)P1端口[P1.0-P1.7]P1是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收低8位地址信息。
(3)P2端口[P2.0-P2.7]P2是一个带有内部上拉电阻的8位双向I/0端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接收高8位地址和控制信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。
(4)P3端口[P3.0-P3.7]P2是一个带有内部上拉电阻的8位双向端口。
输出时可驱动4个TTL。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
系统核心硬件AT89C51单片机
单片机的发展趋势将向大容量、高性能化、外围电路内装化等方向发展。
为满足不同用户的要求,各公司竞相推出满足不同需要的产品。
5、单片机引脚的功能
AT89系列低电压、高性能的8位单片机与MCS-51完全兼容,也是40个引脚,主要是采用40引脚的DIP(双列直插)封装方式,有时候也采用PLCC和TQFP的方形封装方式。
其中在PLCC封装方式中会有44个引脚。
标有NC的四个引脚一般不连线。
Vss或GND(20脚):
接地脚。
Vcc(40脚):
电源供电,正常电压为+5V。
XTAL1(19脚)XTAL2(18脚):
当外接晶体振荡器时,两引脚分别接在外接晶体振荡器的两端。
片内振荡器由一个单级反相器组成,19脚为反相器的输入端,18脚为反相器的输出端。
当采用外部振荡器提供的时钟信号时,19脚端作为输入,而另一端则为悬浮。
RST(9脚):
复位信号输入/备用电源输入。
当振荡器正常工作时,在此引脚上出现两个机器周期以上的高电平时单片机复位。
而在定时监视器(看门狗)定时输出后,引脚置成高电平并持续96个振荡周期。
在Vcc掉电期间,此引脚还外接外加的备用电源,以保持内部的RAM的数据;当Vcc下降到低于规定的水平,该引脚在规定的电压范围内,向内部RAM提供备用电源。
特殊功能寄存器中的DISRT0位可以使复位无效,默认状态下,RST引脚上的高电平有效。
ALE(30脚):
地址锁存允许控制信号/编程脉冲输入。
当访问外部存储器时,
由单片机的P2口送出地址的高8位,P0口送出地址的低8位,数据也是由P0口来传送。
P0口某时送出的信息到底是低8位的地址还是数据需要一个信号同步进行分别。
当ALE(允许地址锁存时)位高电平有效时,P0口送出低8位地址,通过ALE信号锁存低地址。
对于AT89系列单片机特有的Flash存储器,在进行Flash编程时输入编程脉冲信号非PROG。
而在不访问外部器件时,ALE端仍以1/6振荡频率的常量脉冲信号输出,因此这信号可用作对外输出的时钟信号和计数信号,在执行外部程序时,应该设定禁止ALE无效。
(29脚):
程序存储器读选通信号,低电平有效。
在有外接扩展程序存储器和数据存储器时,它们的地址是可以重合的,AT89系列单片机就是通过相应的控制信号来区别P2口和P0口送出的到底是程序存储器的地址还是数据存储器的地址。
在访问外部存储器读取指令或者常数时,每个机器周期产生两个有效信号,即输出两个
有效信号,此时地址总线上送出的就是程序存储器的地址,而如果访问外部数据存储器时,不产生两个
信号。
同时,在单片机在执行访问内部程序存储器时也不产生两个这样的信号。
/Vpp(31脚):
是访问内部或外部程序存储器的选择信号。
当
保持高电平时,访问内部程序存储器。
而这时如果还有外部扩展程序存储器时,CPU在执行完内部存储的程序后自动跳转到执行外部存储的程序。
而当
保持低电平时,不管内部有无存储器都只从起始地址开始访问外部程序存储器。
Vpp位Flash编程电压,就是编程者在对片内的Flash编程时,此引脚施加Flash编程允许的编程电压,此电压一般为12V。
P0.0~P0.7(39脚-32脚):
P0口试一个8位漏极并行准双向I/O口。
在访问外部扩展存储器时,它被定义的是低8位的地址/数据线,地址和数据总线分时复用,此时需外接上拉电阻,置“1”激活上拉电阻成高阻抗输入口。
在编程者对片内Flash编程时,P0口接收指令字节,在验证程序时则输出指令字节,而验证期间也要外接上拉电阻。
P1.0~P1.7(1脚-8脚):
P1口自己内部已有上拉电阻,也是8位准双向I/O口。
在进行Flash编程和验证程序时,它接收低8位的地址。
P2.0~P2.7(21脚-28脚):
P2口内部也有上拉电阻,是一个8位准双向I/O口。
在访问外部程序存储器和数据存储器时送出高8位地址。
用MOVX@DPTR类指令访问外部数据存储器时,P2口为高8位地址(即PCH);但用MOV@R0和MOV@R1类指令访问外部数据存储器时,P2口上的内容是SFRP2的内容。
P3.0~P3.7(10脚-17脚):
P3口也是一个带内部上拉电阻的8位准双向I/O口,能接4个TTL负载。
当做输入时,首先要将P3口各位置“1”,若外部负载将P3口拉低,则经过上拉电阻向外流出电流。
在编程和校验时,P3口接收一些控制信号。
同时,P3口也有第二变异功能,如表3-1所列[8]:
表4P3口第二功能对照表
引脚
第二功能
信号名称
P3.0(10脚)
RXD
串行输入数据接收
P3.1(11脚)
TXD
串行输出数据发送
P3.2(12脚)
外部中断0申请
P3.3(13脚)
外部中断1申请
P3.4(14脚)
T0
定时器/计数器0的外部输入
P3.5(15脚)
T1
定时器/计数器1的外部输入
P3.6(16脚)
外部RAM写选通
P3.7(17脚)
外部RAM读选通
2、数码管的介绍
在本任务中用3位数码管显示当前数值的百,十,个,由于数码管个数多,如采用静态显示方式,则占用单片机的I/O口线太多,如果用定时器/计数器的串行移位寄存器工作方式及外接串入并出移位寄存器74LS164的方式,则电路复杂。
所以,在数码管个数较多时,常采用动态显示方式。
3位数码管的相同段并联在一起,由一个6位I/O(P1口)输出字形码控制显示某一字形,每个数码管的公共端由另外一个I/O口(P0口)输出的字位码控制,即数码管显示的字形是由单片机I/O口输出的字形码确定,而哪个数码管点亮是由单片机I/O口输出的字位码确定的。
3个数码管分时轮流循环点亮,在同一时刻只有1个数码管点亮,但由于数码管具有余辉特性及人眼具有视觉暂留特性,所以适当地选取循环扫描频率,看上去所有数码管是同时点亮的,察觉不出闪烁现象。
动态显示方式所接数码管不能太多,否则会因每个数码管所分配的实际导通时间太少,使得数码管的亮度不足。
在本任务中,为了简便,字形码和字位码都没由加驱动电路,在实际应用中应加驱动电路。
数码管有共阴极和共阳极两种,对于共阳数码管,字形驱动输出0有效,字位驱动输出1有效;而对于共阴数码管则相反,即:
字形驱动输出1有效,字位驱动输出0有效
显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:
发光二极管LED显示器、液晶LCD显示器、CRT显示器等。
LED显示器是现在最常用的显示器之一,发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。
分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。
外加正向电压时二极管导通,发出清晰的光。
只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
图是共阳式、共阴式LED数码管的原理图和符号。
图5共阳式、共阴式LED数码管的原理图和数码管的符号图
显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。
采用动态显示方式显示时间,硬件连接如下图所示,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。
LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。
对于多位LED显示器,通常都是采用动态扫描的方法进行显示。
3、继电器
4B;f1X4o,q(T9l;s*G.n继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用。
1、电磁继电器的工作原理和特性
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。
这样吸合、释放,从而达到了在电路中的导通、切断的目的。
对于继电器的“常开、常闭”触点,可以这样来区分:
继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。
-U b/~*R.Z'`4e1Q$T2、热敏干簧继电器的工作原理和特性
2y;Y:
~/`%u1r0`热敏干簧继电器是一种利用热敏磁性材料检测和控制温度的新型热敏开关。
它由感温磁环、恒磁环、干簧管、导热安装片、塑料衬底及其他一些附件组成。
热敏干簧继电器不用线圈励磁,而由恒磁环产生的磁力驱动开关动作。
恒磁环能否向干簧管提供磁力是由感温磁环的温控特性决定的。
$l1u6w6B(|"[4L"D2V3、固态继电器(ssr)的工作原理和特性
9r5Q1Y;h+p;Z5M固态继电器是一种两个接线端为输入端,另两个接线端为输出端的四端器件,中间采用隔离器件实现输入输出的电隔离。
固态继电器按负载电源类型可分为交流型和直流型。
按开关型式可分为常开型和常闭型。
按隔离型式可分为混合型、变压器隔离型和光电隔离型,以光电隔离型为最多.
二、继电器主要产品技术参数
(y&b;v8J"?
1、额定工作电压
*j8l$N.a:
Y4W$J0q 是指继电器正常工作时线圈所需要的电压。
根据继电器的型号不同,可以是交流电压,也可以是直流电压。
6s7z"r3b,w2、直流电阻
:
C7C6N:
j+_2v$]*@ 是指继电器中线圈的直流电阻,可以通过万能表测量。
3、吸合电流
%v-T'^%E6^5z2k 是指继电器能够产生吸合动作的最小电流。
在正常使用时,给定的电流必须略大于吸合电流,这样继电器才能稳定地工作。
而对于线圈所加的工作电压,一般不要超过额定工作电压的1.5倍,否则会产生较大的电流而把线圈烧毁。
4、释放电流
5Z!
f#a$g2]0f)R是指继电器产生释放动作的最大电流。
当继电器吸合状态的电流减小到一定程度时,继电器就会恢复到未通电的释放状态。
这时的电流远远小于吸合电流。
5、触点切换电压和电流
是指继电器允许加载的电压和电流。
它决定了继电器能控制电压和电流的大小,使用时不能超过此值,否则很容易损坏继电器的触点
4、红外线
红外发射管:
是由红外发光二级管矩组成发光体,用红外辐射效率高的材料(常用砷化镓)制成PN结,正向偏压向PN结注入电流激发红外光,其光谱功率分布为中心波长830~950nm。
LED是英文LightEmittingDiode的简称,表现是正温度系数,电流越大温度越高,温度越高电流越大,LED红外灯的功率和电流大小有关,但正向电流超过最大额定值时,红外灯发射功率反而下降。
红外接收头:
红外信号收发系统的典型电路如图1所示,红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。
内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。
红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。
交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。
注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。
它们广泛用于各种家用电器的遥控接收器中,如音响、彩色电视机、空调器、VCD视盘机、DVD视盘机以及录像机等。
红外接收二极管能很好地接收红外发光二极管发射的波长为940nm的红外光信号,而对于其他波长的光线则不能接收。
因而保证了接收的准确性和灵敏度。
红外接收二极管的结构如图所示。
最常用的型号为RPM-301B。
5、通信方式
在实际应用中,尽管AT89系列单片机都具有全双工功能串行通信接口电路,但一般情况只工作于半双工制式下,这种用法简单、实用。
图4-2单片机与PC机的连接图
AT89C51与PC机通信设计,由于单片机的RXD和TXD引脚为TTL电平,为了能衔接232接口,必须实行电平转换,RS232电平转换利用了MAX232芯片把TTL电平转换成RS-232电平格式,可以用于单片机与微机通信,以及单片机与单片机之间的通信,单片机接收到参数数据后通过MAX232将送至上位机。
下位机利用定时器作为波特率发生器,本设计采用定时器T1工作方式1,TH1与TL1的初值为E6H,即波特率9600b/s。
上位机应用Proteus仿真软件中的串行虚拟器来实现与下位机间进行数据的收发,设置串行口为COM1口,波特率为9600b/s、Inputlen=0,在缓存区中有数据时,上位机就会将数据读出。
此设计是用于实验的软件,通信的距离特别短,这样通信双方可以直接连接,这种情况下,在通信中只需要RS232的三根线便可实现全双工异步串行通信。
串行口通信的硬件电路如图,如果将其运用到工业现场,采用RS-485就可以实现远距离的对工业现场的监测[15]。
计数器电路原理图
数码管显示部分:
人工控制按键部分:
1.软件部分设计
系统软件设计流程图
主程序先是开始,然后赋初值,本设计采用的是动态显示,所以在赋玩初值后显示程序不断被调用。
主程序流程图4keil软件调试
1、软件介绍
Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具可以让我们用起来更加方便。
2、系统代码
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitSTAR_KEY=P3^6;//定义键与单片机的连接引脚
sbitBELL=P1^0;//
sbitLED=P1^1;//
sbitSTOP_KEY=P3^7;
sbitL0=P1^0;//定义SFR中引脚的位
sbitL1=P1^1;
sbitL2=P1^2;
sbitL3=P1^3;
sbitL4=P1^4;
sbitL5=P1^5;
sbitL6=P1^6;
sbitL7=P1^7;
sbitL8=P2^0;
sbitL9=P2^1;
sbitL10=P2^2;
sbitL11=P2^3;
sbitL12=P2^4;
sbitLED4=P2^5;//定义四位数码管的千位
sbitLED3=P2^6;
sbitLED2=P2^7;
sbitLED1=P3^0;
sbitMOTOR=P3^5;
ucharn[2]={1,0};
ucharcode
dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
voiddelayms(uintx)//延时子程序
{
uchary;
while(x--)
{
for(y=0;y<123;y++){;}
}
}
ucharKeynum()//按键子程序1
{
ucharkey=0;
STAR_KEY=1;
STOP_KEY=1;//置初值
if(STAR_KEY==0)
{
delayms(100);
if(STAR_KEY==0)
n[0]=0;
n[1]=1;
LED=1;
}//按下STAR键则n[0]=0;n[1]=1
if(STOP_KEY==0)
{
delayms(50);
if(STOP_KEY==0)
n[0]=1;
n[1]=0