传送带产品计数器设计
摘要
本设计采用89C51单片机作为主控制器,用拨码盘设置传送带产品计数目标值,用独立按键控制电机的启动,单片机内部计数器T0的计数值通过3片移位寄存器74HC595
送到3位LED,以实现对产品的计数显示。当计数值达到预置值时,停止计数且电机停止运转。然后可另外设定计数目标值,重新按下启动键后,计数值清零,电机运转,进行新一轮计数。文中详细论述了传送带产品计数器的设计原理,电路原理图和程序设计方案。
关键词:单片机
拨码盘 74HC595
LED
1 前言
1.1 设计任务
本设计主要是对传送带上的产品进行计数,用3位LED数码管显示计数当前值,计数范围为000~255,用拨码盘设置计数目标值,其范围为0~255,用按键控制传送带电机的启动,当计数值等于预置值时,停止计数,电机停止运转,计数脉冲由光电式传感器产生(仿真实验中采用按键代替光电式传感器)。
(1)
开机时3位LED数码管显示000;
(2)
用拨码盘预置计数初值;
(3)
按下计数按键一次则进行一次计数,并把计数值通过移位寄存器74HC595显示在3位LED数码管上。当显示值等于预置计数目标值时,计数停止且传送带电机停止转动。
(4)
可重新设置计数目标值,再按下启动键,计数值清零,电机转动,进行新一轮计数。
1.2 设计的应用意义
传送带产品计数器广泛应用于工业生产中对各种产品的成件计数,确保了计数的准确性,减少了人为计数的误差,从而提高了生产效率。在工业生产中对产品的成批包装,管理具有很强的实用性,特别是对批量产品的计数有着非常重要的意义。
2 总体方案设计
2.1 设计原理
由于传送带上的产品通过光电式传感器时会产生一个计数脉冲,因此在AT89C51中可以用内部T0计数器对此脉冲进行计数(在Proteus仿真中使用按键代替光电式传感器)以达到对产品计数的功能。设计中采用AT89C51单片机作为主控制器,用拨码盘设置计数目标值,以3片移位寄存器74HC595来驱动3个LED进行计数显示,达到3位计数的目的。当显示的计数值达到预置目标值时停止计数且传送带电动机停止转动,此时可以通过拨码盘重新设置计数目标值,当按下重新启动键后,计数值清零,传送带电动机运转,从而对产品进行下一轮计数。
2.2
总体设计框图
传送带产品计数设计框图如下所示:
3 电路原理的设计
3.1
AT89C51的主要特点
AT89C51是一种低功耗,高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM—Flash Programmable
and Erasable Read Only Memory)的8位COMS微控制器。
AT89C51的内部硬件结构及引脚图如下所示:
其性能及主要特点如下:
(1) 与MCS-51微控制器产品系列兼容。
(2)
片内有4KB可在线重复编程的快闪擦写存储器(Flash Memory)。
(3) 存储器可循环写入/擦除1000次。
(4) 存储数据保存时间为10年。
(5) 宽工作电压范围:Vcc可为2.7V~6V。
(6) 全静态工作:可从0HZ到16MHZ。
(7) 程序存储器具有3级加密保护。
(8) 128﹡8位内部RAM。
(9) 32条可编程I/O线。
(10)
两个16位定时器/计数器。
(11)
中断结构具有5个中断源和2个优先级。
(12)
可编程全双工串行通道。
(13)
空闲状态维持低功耗和掉电状态保存存储内容
3.2光电式传感器
光电式传感器由一个把电讯号转变为光讯号的光发射元件和一个把光讯号转变为电讯号的光接受元件组成。这两个元件装在同一个壳体内,使光电传感器实质上成为一种无触电开关。光电传感器采用可见光或红外线光,由物体对它们的遮掩或反射而探测出物体的存在、长度、数目等等。检测距离可达几米至几十米,光电式传感器有一个非常确定的检测区域,不经过该区域的被测物体不会引起光电式传感器产生开关信号。
其工作原理图如下:
3.3 移位寄存器74HC595
74HC595是硅结构的CMOS器件,兼容低电压TTL电路。74HC595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。
数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds)和一个串行输出(Q7’)和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE为低电平时,存储寄存器的数据输出到总线。每当spi_shcp上升沿到来时,spi_ds引脚当前电平值在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位,同时Q7'也会串行输出移位寄存器中高位的值,这样连续进行8次,就可以把数组中每一个数(8位的数)送到移位寄存器;然后当spi_stcp上升沿到来时,移位寄存器的值将会被锁存到锁存器里,并从Q1~7引脚输出。
74HC595各个引脚的功能:
Q1~7
是并行数据输出口,即储寄存器的数据输出口
Q7'
串行输出口,其应该接SPI总线的MISO接口
STcp
存储寄存器的时钟脉冲输入口
SHcp
移位寄存器的时钟脉冲输入口
OE的非
输出使能端
MR的非
芯片复位端
Ds
串行数据输入端
3.4 拨码盘
本设计中采用的是8位的拨码盘,直接与
P0口相接,其内部有8个独立的按键,一端与单片机P0口相连,另一端直接接地。当拨下其中一个键时,相当于单片机的I/O口位被置为低电平。这样就可以实现000-255的预置数范围了。
4.系统软件设计
4.1 主程序设计思路:
首先读取拨码盘预置值,存放到单片机的一个内存单元中,并对单片机内部T0
计数器进行初始化,使其工作在计数方式2,其高8位和低8位内容清零,此时计数器处于非工作状态,调用显示子程序,使单片机上电复位后3位LED显示000。按下启动键后,计数器启动,电机运转,按一次计数键计数值加1,调用显示子程序,LED显示值加1,同时将显示值与预置值进行比较,判断其是否相等,不相等时继续计数显示,相等时计数器停止计数,电机停止运转。重新用拨码盘进行预置数,再按下启动键,计数值清零,电机又开始运转,以进行下一轮计数
主程序流程图:
4.2显示子程序displed( )设计思路:
首先将引脚SHcp置为低电平,引脚STcp置为高电平,引脚Ds置为低电平。个位LED显示段码值在SHcp上升沿到来时,STcp引脚当前电平值在移位寄存器中左移一位,在下一个上升沿到来时移位寄存器中的所有位都会向左移一位,同时Q7'也会串行输出移位寄存器中高位的值,这样连续进行8次,就可以把数组中每一个数(8位的数)送到个位LED移位寄存器中;然后在以相同的方式把十位,百位LED显示段码值送到各自的移位寄存器中,{zh1}把引脚STcp先置低,再置高,即当ST
cp上升沿到来时,移位寄存器的值将会被锁存到锁存器里,并从Q1~7引脚输出,以驱动LED数码管显示
显示子程序displed( )流程图:
5. 总结
本设计是关于传送带产品计数器的设计。在设计中,以AT89C51单片机作为主控制器,可以通过拨码盘进行预置数,方便灵活,并且可以在3位LED上显示当前计数值,通过按键来控制传送带电机的启动,操作灵活,可以xx的对产品进行计数。由于使用了光电耦合器进行弱电与强电的电气隔离,所以控制起来很安全,不会发生意外事故。由于采用的是8位的拨码盘进行预置数,所以只能够进行0-255范围内的计数,这是本设计的一个不足之处,不能够进行大范围计数,但是对于小批量的产品计数具有很好的实用性。
6. 致谢
7. 参考文献
[1] 黄惟公等
单片机原理与应用技术
西安电子科大出版社 2007
[2] 范风强等
单片机语言应用实战集锦
电子工业出版社 2005
[3] 肖玲妮等
Protel 99 SE印刷电路板设计教程
清华大学出版社 2006
[4] 刘守义等
单片机应用技术
西安电子科大出版社 2007
[5] 夏继强等
单片机实验与实践教程
北京航空航天大学出版社
2006
[6]
李亚等
利用74HC595实现多位LED显示的新方法
2005
[7]
张燕等
光电式传感器的应用与发展
2006