基于51单片机的产品数量自动计量系统protues仿真

硬件设计

链接:https://pan.baidu.com/s/1aGwRBnZnbbwHAE15vE7l5g
提取码:yi1q
在这里插入图片描述

代码设计

///*************************************************************************
///*************************************************************************
#include<reg52.h>  ///包含头文件
#include<MAIN.h> 
#include<lcd1602.h>

//#define uint unsigned int 
//#define uchar unsigned char
//#define ulong unsigned long

sbit zheng = P1^0;
sbit fan = P1^1;
sbit ting = P1^2;
sbit jia = P1^3;
sbit jian = P1^4;
sbit clear = P1^5;
sbit bee = P1^6;
sbit pingzi = P1^7;
sbit PWM1 = P2^0;
sbit PWM2 = P2^1;
sbit ena = P2^2;
sbit max = P2^3;


uint bottle=0;
uint box=0;
uint zhuansu[4]={0,0,0,0};
uint PZ[4]={0,0,0,0};
uchar str1[16]="bottle:00 box:00";
uchar str2[16]="speed:0000      ";
uchar time;
uchar count;
ulong zhuan;
flag=1;

///*************************************************************************
/// MAIN函数
///功能:
///*************************************************************************
void main()
{
	timer_init();
	LCD_Init();
	ena=0;
	bee=0;
	max=1;
	while(1)
	{
		cleardate();
		zhengz();
		fanz();
		tingz();
		jias();
		jians();
		LCD();
		pingshu();
				
	}	
}
///*************************************************************************
/// 延时函数
///功能:
///*************************************************************************
void delay1(uint z)// 延时程序,zms.
{
	uint x,y;
	for(y=z;x>0;x--)
	for(y=110;y>0;y--);
}


///*************************************************************************
/// 数据计算函数
///功能:
///*************************************************************************
void chuli()
{  

	zhuan=count*500/20;
	zhuansu[0]=(count*10/1000);    //转换转速的千位 
	zhuansu[1]=(zhuan/100%10);    //转换转速的百位  
	zhuansu[2]=(zhuan/10%10);    //转换转速的十位
	zhuansu[3]=(zhuan%10);    //转换转速的个位
	PZ[0]= (bottle/10%10);	//瓶数十位
	PZ[1]= (bottle%10);//瓶数个位
	PZ[2]= (box/10%10);// 箱数十位
	PZ[3]= (box%10);  // 箱数个位
 
}

///*************************************************************************
/// 清除数据函数
///功能:
///*************************************************************************
void cleardate()
{
	if(clear==0)
	{
		delay1(2);
		if(clear==0)
		{
			LCD_Clear();
			LCD_Init();
			bottle=0;
			box=0;
			chuli();
		}
	}
}



///*************************************************************************
/// LCD显示函数
///功能:
///*************************************************************************void
void LCD()
{	
	LCD_Manifest(1,7,PZ[0]);
	LCD_Manifest(1,8,PZ[1]);
	LCD_Manifest(1,14,PZ[2]);
	LCD_Manifest(1,15,PZ[3]);

	LCD_Manifest(2,6,zhuansu[0]);
	LCD_Manifest(2,7,zhuansu[1]);
	LCD_Manifest(2,8,zhuansu[2]);
	LCD_Manifest(2,9,zhuansu[3]);
		
}

///*************************************************************************
/// 蜂鸣器控制函数
///功能:
///*************************************************************************
void beebee()
{
	bee=0;
	delay(100);
	bee=1;
	delay(100);
	bee=0;

}

//*************************************************************************
/// rs485发送
///功能:
///*************************************************************************
void rs485send(uchar date) //rs485发送
{
	SBUF=date;
	while(!TI);
	TI=0;
}

void rs485open()   //包装机rs485开启指令
{
	rs485send((uchar)0xAA);
	delay1(100);
	rs485send((uchar)0x33);
	delay1(100);
	rs485send((uchar)0xDD);
	delay1(100);
}			   

void rs485stop()   //包装机rs485停止指令
{
	rs485send((uchar)0xAA);
	delay1(100);
	rs485send((uchar)0x55);
 	delay1(100);
	rs485send((uchar)0xFF);
	delay1(100);
}




///*************************************************************************
///流水线控制
///功能:流水线瓶子数量测量,箱数测量及包装机控制
///*************************************************************************

void pingshu()
{
	if(pingzi==1)
	{
		delay1(2);
		if(pingzi==1)
		{
			bottle+=1;
			if(bottle>51)
			{
				ulong i;
				beebee();
				bottle=1;
				if(box<=99)	{box+=1;}
				else box=0;
				delay1(100);
			   	rs485open();
				for(i=0;i<1000;i++)
				{delay1(200);}
				rs485stop();	
			}
			chuli();
		}
		while(!pingzi);
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值