基于51单片机电子秤Proteus仿真+源程序+原理图+论文

设计任务:

完成一个简单数字电子秤的硬件电路部分和软件部分的设计

    求:

1. 利用单片机对数字电子秤的各种功能进行控制。

2. 数字电子秤能够显示商品的名称,价格,总重,总价。

3. 数字电子秤能够自动完成商品的价格计算。

4. 数字电子秤具有储存几种简单商品价格的功能。   

5. 数字电子秤具有超重提醒功能,一旦重量超出了自身测量重量的范围,即发出警报。

6. 数字电子秤的测量范围要求达到5KG,测量精度要求达到0.001。

232-基于51单片机电子秤(程序+仿真+原理图+论文)

 

程序部分展示,有中文注释,新手容易看懂

uchar Adc0832(unsigned char channel)     //AD转换,返回结果
{
     uchar i=0;
    uchar j;
    uint dat=0;
    uchar ndat=0;

    if(channel==0)channel=2;
    if(channel==1)channel=3;
    ADDI=1;
    _nop_();
    _nop_();
    ADCS=0;//拉低CS端
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端,形成下降沿1
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    ADDI=channel&0x1;
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端,形成下降沿2
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    ADDI=(channel>>1)&0x1;
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端,形成下降沿3
    ADDI=1;//控制命令结束 
    _nop_();
    _nop_();
    dat=0;
    for(i=0;i<8;i++)
    {
        dat|=ADDO;//收数据
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        _nop_();
        _nop_();
        dat<<=1;
        if(i==7)dat|=ADDO;
    }  
    for(i=0;i<8;i++)
    {
        j=0;
        j=j|ADDO;//收数据
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        _nop_();
        _nop_();
        j=j<<7;
        ndat=ndat|j;
        if(i<7)ndat>>=1;
    }
    ADCS=1;//拉搞CS端
    ADCLK=0;//拉低CLK端
    ADDO=1;//拉高数据端,回到初始状态
    dat<<=8;
    dat|=ndat;
    return(dat);            //return ad k         
}


void data_pro(void)
{
      unsigned int;	   		  
	  if(0<ad_data<256)			              
	 	{			    
		    int vary=ad_data;									
			press=(0.019531*vary);			
														  
			temp1=(int)(press*1000);	                //放大1000倍,便于后面的计算
	   		abc[0]=temp1/1000+48;			     	//取压力值百位
			abc[1]=46;
			abc[2]=(temp1%1000)/100+48;		    	//取压力值十位
			abc[3]=((temp1%1000)%100)/10+48;	    	//取压力值个位
			abc[4]=((temp1%1000)%100)%10+48;			//取压力值十分位

	   	   }	    
			 
}
/*****************报警子函数*******************/

void alarm(void)
{
	 if(ad_data>=256)                        

           beep=0;          //则启动报警
        
	  else
	       beep=1; 		  
}

百度云盘资料下载链接 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值