当前位置: 首页 > news >正文

基于单片机商用电子计价秤电子秤系统Proteus仿真(含全部资料)

 全套资料包含:Proteus仿真源文件+keil C语言源程序+AD原理图+流程图+元器件清单+说明书等

资料下载:

通过网盘分享的文件:资料分享
链接: 百度网盘 请输入提取码 提取码: tgnu


目录

资料下载:

Proteus仿真功能

项目文件资料:

一、Proteus仿真源文件

二、AD原理图文件

二、报告说明书

三、系统流程图

四、Keil c语言程序源代码


项目功能:

基于51单片机的商用电子计价秤设计
具体功能:
(1)通电源时,数字电子秤进入欢迎界面“欢迎使用电子秤 设计••••••”;
(2)当载物台上放有物体时,ADC0832立即将数据转换发送给单片机处理,并由LCD液晶显示屏显示;
(3)当用按键输入对应商品的代码编号,在LCD上可以看到相应商品的名称,单价,总重,总价格等信息。
(4)在称量的过程中,一旦物体自身的重量超出电子秤的称量范围,蜂鸣器立即会发出“滴滴••••”警报声告诉工作人员,所称量物品超重(测量范围0—9.99KG)。


项目文件:

一、Proteus仿真源文件

​​

二、AD原理图文件

二、报告说明书

三、系统流程图

​​

四、器件清单

DescriptionDesignatorFootprintLibRef
CapacitorC1, C2RAD-0.3Cap
Polarized Capacitor (Surface Mount)C3CC2012-0805Cap Pol3
蜂鸣器LS1BELL
Header, 20-PinP1HDR1X20Header 20
Header, 3-PinP2HDR1X3Header 3
NPN General Purpose AmplifierQ1BCY-W3/E42N3904
Isolated Resistor NetworkR1SO-G16/Z8.5Res Pack3
ResistorR2, R3AXIAL-0.4Res2
Switch

S1, S2, S3, S4, S5,

S6, S7, S8, S9, S10,

S11, S12, S13, S14,

S15, S16, S17

SPST-2SW-PB
U187C51
A/D Peripheral with Serial ControlU2P008ADC0832AP
Crystal OscillatorY1BCY-W2/D3.1XTAL

五、Keil c语言程序源代码(部分)

#include<reg51.h>
#include<intrins.h>
#include <absacc.h>
#include <math.h>
#include<lm4229.h>
#define uchar unsigned char
#define uint   unsigned int
sbit ADCS =P3^5; 
sbit ADDI =P3^7;  
sbit ADDO =P3^7;  
sbit ADCLK =P3^6;  
uint x1,y1,z1=0,w1;
uchar ad_data,k,n,m,e,num,s;                              //采样值存储
uint temp1;
sbit beep =P3^0;                                           
char press_data;                                  //标度变换存储单元
float  press;
unsigned char ad_alarm,temp;                           //报警值存储单元
unsigned char abc[5]={48,46,48,48,48};
unsigned char price_all[6]={48,48,46,48,48,48};
float price_unit[10]={5.5,2.8,3.6,4.5,5.8,6.8,7.9,8.0,9.5,0};       //商品初始单价
uchar price_danjia[5]={48,46,48,48,48};
float price;
uint price_temp1,price_temp2;                             //商品总价       
uchar Adc0832(unsigned char channel);															
void alarm(void);
void data_pro(void);
void delay(uint k);
void keyscan();
void disp_init();
void  price_jisuan();
/************
主函数
************/
void main(void)
{ delay(500);                        //系统延时500ms启动//ad_data=0;                       //采样值存储单元初始化为0lcd_init();                        //显示初始化disp_init();        				  //开始进入欢迎界面delay(1000);						  //延时进入称量画面clear_lcd(0,4,40);clear_lcd(16,0,100);clear_lcd(28,0,40);clear_lcd(44,0,100);clear_lcd(56,0,40);clear_lcd(72,0,100);clear_lcd(84,0,40);clear_lcd(100,0,100);clear_lcd(112,0,40);write_lcd(0,8,"实用电子秤");              while(1){ad_data =Adc0832(0);	   //采样值存储单元初始化为0alarm();data_pro(); //读取重量keyscan();  //查询商品种类write_lcd(40,0,"------------------------------");write_lcd(56,0,"单  价:");write_lcd(56,11,price_danjia);write_lcd(56,20,"元/千克");write_lcd(72,0,"总重量:");write_lcd(72,11,abc);write_lcd(72,20,"千克");write_lcd(88,0,"总  价:");price_jisuan();           //计算出价格write_lcd(88,10,price_all);write_lcd(88,20,"元");write_lcd(112,0,"设计学生: XXX");}
}
/************
读ADC0832函数
************/
//采集并返回
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_();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_();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;          //则启动报警elsebeep=1; 		  
}void delay(uint k)
{uint i,j;for(i=0;i<k;i++)for(j=0;j<100;j++);
} 
//开机欢迎界面
void disp_init()
{write_lcd(0,8,"欢迎使用电子秤");write_lcd(16,0,"------------------------------");write_lcd(28,0,"设计学生:XXX");write_lcd(44,0,"------------------------------");write_lcd(56,0,"班级学号:xxx");write_lcd(72,0,"------------------------------");write_lcd(84,0,"指导老师: xxx");write_lcd(100,0,"------------------------------");write_lcd(112,0,"设计日期: 2020年04月11日");}//键盘服务程序
void keyscan()
{P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){																		 case 0xee:num=1,price=price_unit[0], write_lcd(24,0,"名  称:   杏    仁");break;case 0xde:num=2,price=price_unit[1],write_lcd(24,0,"名  称:   李     子");break;case 0xbe:num=3,price=price_unit[2],write_lcd(24,0,"名  称:   草     莓");break;case 0x7e:num=4,price=price_unit[3],write_lcd(24,0,"名  称:   葡     萄");break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xed:num=5,price=price_unit[4],write_lcd(24,0,"名  称:   西     瓜");break;case 0xdd:num=6,price=price_unit[5],write_lcd(24,0,"名  称:   苹     果");break;case 0xbd:num=7,price=price_unit[6],write_lcd(24,0,"名  称:   雪     梨");break;case 0x7d:num=8,price=price_unit[7],write_lcd(24,0,"名  称:   核     桃");break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xeb:num=9,price=price_unit[8],write_lcd(24,0,"名  称:   香     蕉");break;case 0xdb:num=10,price=price_unit[9],write_lcd(24,0,"名  称:    商品代码");break;case 0xbb:num=11,price=price_unit[1];break;case 0x7b:num=12,price=price_unit[2];break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xe7:num=13,price=price_unit[3];break;case 0xd7:num=14,price=price_unit[4];break;case 0xb7:num=15,price=price_unit[5];break;case 0x77:num=16,price=price_unit[6];break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}price_temp1=(int)(price*1000);price_danjia[0]=price_temp1/1000+48;			     	//取单价个位price_danjia[1]=46;price_danjia[2]=(price_temp1%1000)/100+48;		    	//取单价十分位price_danjia[3]=((price_temp1%1000)%100)/10+48;	    	//取单价百分位price_danjia[4]=((price_temp1%1000)%100)%10+48;			//取单价千分位
}

六、全套资料包含

​​

七:项目资源获取

需要完整的资料可以点击下面的名片关注,回复“资料”!

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

http://www.dtcms.com/a/357863.html

相关文章:

  • 从零开始学习单片机18
  • 谷歌NotebookLM升级视频概述功能:为AI音频播客注入视觉元素,重塑教学与学习体验
  • 基于单片机温控风扇ds18b20系统Proteus仿真(含全部资料)
  • GD32入门到实战21--输入捕获
  • FOC开环控制代码解读
  • Python Requests 爬虫案例
  • 【软考架构】SOA与微服务解疑
  • Python中的匿名函数详解(lambda)
  • Acrobat Pro DC 2025安装包下载及详细安装教程,PDF编辑器永久免费中文版(稳定版安装包)
  • whisper-large-v3 模型
  • 参数模板优化配置指南:从基础到进阶的完整解决方案
  • PCIe 6.0 TLP深度解析:从结构设计到错误处理的全链路机制
  • rapid_table v3.0.0发布了
  • 《P2863 [USACO06JAN] The Cow Prom S》
  • opencv基础学习与实战之轮廓分析与模板匹配(4)
  • DP1.4 8K验证平台
  • 吴恩达机器学习作业六:反向传播
  • 三一重工AI预测性维护破局:非计划停机减少60%,技师转型与数字孪生技术搅动制造业
  • 单点登录(SSO)
  • 2.ImGui-搭建一个外部绘制的窗口环境(使用ImGui绘制一个空白窗口)
  • 从零开始学Shell编程:从基础到实战案例
  • 再来,一次内存溢出
  • 【人工智能99问】参数调整技术(31/99)
  • 【Spring Cloud Alibaba】前置知识(一)
  • RAG教程6:cohere rerank重排
  • 物理AI:连接数字智能与物理世界的下一代人工智能范式
  • 函数的逆与原象
  • 【完整源码+数据集+部署教程】传送带建筑材料识别系统源码和数据集:改进yolo11-AFPN-P345
  • vue3 表单项不对齐的解决方案
  • gpu与cpu各厂商的优劣