单片机饮料装瓶系统
2016-05-23马巍
马巍
【摘 要】本系统利用单片机实现饮料自动装瓶和加盖,特殊情况下可按下紧急停止按钮关闭整个系统。该装置结构简单,操作方便,可靠性高,实用性强。
【关键词】单片机;装瓶;加盖
1 工作原理
单片机饮料装瓶系统工作时,由单片机P1.1口输出低电平信号,打开饮料罐下方的一个阀门,饮料罐10s后把一个空瓶子装满,压瓶盖机向下冲压,完成一个饮料瓶的加盖,然后通过“压盖完成信号”向单片机的T0(P3.4口)输出一个完成计数信号,表明一瓶饮料已经灌装完成,单片机控制两位共阳数码管显示装瓶数。接着单片机P1.0口输出低电平信号使传送带运送下一个空瓶子到饮料罐下方,准备下一个空瓶子的装瓶和压盖。如果有紧急情况发生,可以按下“紧急停止”按钮关闭整个系统。
2 硬件电路
本设计要用的元器件有:芯片AT89S51、芯片7447、按键及两个共阳极七段数码管,其它硬件设备有压瓶盖机、传送带、饮料罐、阀门等。
图1
单片机P1.1口是饮料罐阀门控制信号,低电平时饮料罐阀门打开,开始灌装饮料,高电平时阀门关闭停止工作。当压盖完成后向单片机内部计数器T0输出一个信号表明一瓶饮料瓶已经灌装完成,单片机驱动用于显示装瓶数的七段数码管的显示数字加1。同时向P1.0输出低电平信号,使传送带转动。当出现意外情况时,通过按下“紧急停止”按钮向单片机的外部中断1申请中断请求,使系统停止。
饮料瓶个数显示方式采用静态显示,其各位相互独立,各自的亮段控制端由一个独立的译码器7447控制,只要单片机的I/O口输出不变,则受其控制的七段数码管显示数值也不变。7447是一块BCD码转换成7段LED数码管的译码驱动芯片,7447的主要功能是输出低电平驱动的显示码,用以推动共阳极7段LED数码管显示相应的数字。由于只使用了两位七段数码管,所以显示的最大十进制值为99。两位共阳极七段数码管通过译码器7447与单片机的P0口相连,P0口的每一位对七段数码管的显示有直接的作用。例如,当(P0)=00H,两位七段数码管显示00,如果此时压盖完成信号线输入一个计数信号表明,一个饮料瓶压盖完成,显示数据加加1,P0.0的状态由0变1,即(P0)=01H,显示变为01。在这种静态显示方式中,其优点是控制直观,程序实现比较容易,各位七段数码管可独立显示,互不影响。在每一个数字的显示过程中,每一位七段数码管从单片机的I/O口经过译码器7447得到一个恒定的亮段控制信号,这是一个恒定的电平信号,所以亮段控制端的电流恒定,七段数码管的亮段较高。
3 软件设计
饮料罐的下方有一个阀门,用于控制饮料的流量,这个阀门由单片机的P1.1口控制,低电平使能, 假设阀门打开10s就能把一个空瓶子装满,则每一次P1.1口输出一个持续10s的低电平。与此同时,压瓶盖机向下冲压,完成一个饮料瓶盖的安装,然后通过“压盖完成信号”向单片机的T0口输出一个完成计数信号,表明一瓶饮料已经灌装完成。此时,单片机用于显示装瓶数的七段数码管的显示数字加1,同时,P1.0口输出一个低电平触发信号,让传送带带动下一个空瓶子准备装瓶和压盖。如果有紧急情况发生,可以按下“紧急停止”按钮关闭整个系统。
在程序中首先定义了外部中断服务子程序的入口为EXT1段程序,并由指令“MOV IE,#84H”打开外部 中断1。当紧急开关按下后,单片机转向EXT1段程序执行七段数码管显示00,停止传送带和关闭阀门等操作。
在该系统中,使用单片机定时器/计数器0的计数器的功能,每当压盖完成信号线输入一个计数信号时,表明已经装完一个饮料瓶,单片机使能传送带带动瓶子移动,并打开阀门口开始装的空瓶子。一旦出现意外,使系统中断。
通过指令“MOV TMOD,#05H”设置定时器/计数器0工作在计数器模式1下,并装载计数初始值FFFFH,即只需要计一个数,定时器/计数器0就溢出(通过指令“CHECK: JNB TF0,CHECK”检查)。随后通过指令将显示数据更新,并驱动传送带和阀门工作。
阀门打开10s的时间装满一瓶饮料,在该系统中,使用单片机时器/计数器1的定时器的功能,把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得到时钟计时最小单位—1s,那么1s循环10次即得到10s定时。本次设计中单片机的晶振为12MHz,则机器周期T为1μs,选择工作方式1,利用公式(216-X)T=定时时间(X为TH1,TL1的定时初值),计算得出TH1=3CH,TL1=0B0H。
程序通过指令“CLR P1.1” 给P1.1口输出一个低电平触发信号,让传送带带动下一个空瓶子准备装瓶和压盖。低电平触发时间1s可利用延时子程序完成。延时1s后,P1.1口置1。
[责任编辑:杨玉洁]