首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

基于51单片机的智能电子秤系统设计(含代码仿真及论文)

硬件开发 18.73MB 16 需要积分: 1
立即下载

资源介绍:

论文见主页文章http://t.csdn.cn/IurRu!!!! 本设计以STC89C52RC单片机为主控单元,使用8 位AD转换芯片 ADC0832对采集到的模拟量进行A/D转换,转换后的数据送到单片机进行处理显示,数据显示由 LCD12864 液晶实现。具有以下特点:称重范围为0~5Kg,误差不大于±0.005Kg;具备测量物体质量并通过显示模块显示的功能;能够通过物体的单价计算出物体数量的总价格;具备去皮功能,方便计算物体的实际重力;当测量重量超出报警阈值时,蜂鸣进行过载报警。 通过实验验证,本文设计的基于51单片机的智能电子秤系统具有较高的精度和稳定,满足了商业、家庭和实验室等领域的需求,具有较强的实用价值和广阔的应用前景。 关键词:51单片机;智能电子秤;称重传感器;误差分析
#include #include #include #define LCD P0 #define GPIO_KEY P1 sbit price_add1=P1^0; sbit price_reduce1=P1^1; sbit price_add2=P1^2; sbit price_reduce2=P1^3; sbit weight_reduce=P1^4; sbit weigth_clear=P1^5; sbit warning_add=P1^6; sbit warning_reduce=P1^7; sbit EN=P2^0; sbit RW=P2^1; sbit RS=P2^2; sbit CS1=P2^3; sbit CS2=P2^4; sbit BUSY=P0^0; sbit beep=P2^7; sbit ADCS =P3^5; sbit ADDI =P3^7; sbit ADDO =P3^7; sbit ADCLK =P3^6; unsigned char a,i,j,k,ad_data; float press=0.0,press_r=0.0; float warning=2.5; int b; int num=1,num_t=0; float sum=0; float price1=10; float weight_temp=0; void delay(unsigned char a) { unsigned char i,j; for(i=0;iwarning) { beep=0; //则启动报警 } else beep=1; } //采集并返回 unsigned char Adc0832(unsigned char channel) //AD转换,返回结果 { unsigned char j,i=0,ndat=0; unsigned int dat=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) { if(0=0X80) { CS1=0; CS2=1; lineaddress=lineaddress-0X40; } b=table[j]-0X20; for(k=0;k<16;k++) { temp[k]=ch2[b][k]; } writecode(page); writecode(lineaddress); for(i=0;i<8;i++) { writedata(temp[i]); } writecode(page+1); writecode(lineaddress); for(i=8;i<16;i++) { writedata(temp[i]); } lineaddress+=8; } } void clear(unsigned char page,unsigned char lineaddress,int n, unsigned char table[]) { unsigned char temp[16]; if(lineaddress<0X80) {CS1=1; CS2=0;} for(j=0;j=0X80) { CS1=0; CS2=1; lineaddress=lineaddress-0X40; } b=table[j]-0X20; for(k=0;k<16;k++) {temp[k]=ch2[b][k];} writecode(page); writecode(lineaddress); for(i=0;i<8;i++) { writedata(temp[i]);} writecode(page+1); writecode(lineaddress); for(i=8;i<16;i++) { writedata(temp[i]);} lineaddress+=8; } } void displayhanzi(unsigned char page,unsigned char lineaddress,int n, unsigned char table[][16]) { unsigned char temp[32]; if(lineaddress<0X80) { CS1=1; //left CS2=0; } for(j=0;j=0X80) { CS1=0; //right CS2=1; lineaddress=lineaddress-0X40; } for(k=0;k<16;k++) { temp[k]=table[j][k]; } j+=1; for(k=0;k<16;k++) { temp[16+k]=table[j][k]; } writecode(page); writecode(lineaddress); for(i=0;i<16;i++) { writedata(temp[i]); } writecode(page+1); writecode(lineaddress); for(i=16;i<32;i++) { writedata(temp[i]); } lineaddress+=16; } } void lcdinti() { writecode(0X3f);//显示开关关 writecode(0XC0);//修改显示起始行 writecode(0XB8);//修改页地址,x地址 writecode(0X40);//修改列地址,y地址 } void main() { unsigned char t[3]={'/','K','G'}; char m=':'; EA=1; EX1=1; lcdinti();//LCD初始化 /*LCD清屏*/ clear(0XB8,0X40,16,&table2); clear(0XBa,0X40,16,&table2); clear(0XBc,0X40,16,&table2); clear(0XBe,0X40,16,&table2); displayhanzi(0XB8,0X40,8,&TITLE); /*显示报警值*/ turn(warning); displayzifu(0XB8,0X78,5,&t1[1]); displayzifu(0XB8,0xB0,2,&t[1]); displayhanzi(0XBa,0X40,4,&WEIGHT); displayzifu(0XBa,0X60,1,&m); displayhanzi(0XBc,0X40,4,&PRICE); displayzifu(0XBc,0X60,1,&m); displayhanzi(0XBE,0X40,4,&TOTAL); displayzifu(0XBe,0X60,1,&m); while(1) { /*读取ADC,并显示*/ ad_data =Adc0832(0); //采样值存储单元初始化为0 data_pro(); press_r=press-weight_temp; /*根据ADC数据,判断是否报警*/ weight_alarm(); turn(warning); displayzifu(0XB8,0X78,5,&t1[1]); delay(100); turn(press_r); displayzifu(0XBa,0X68,5,&t1[1]); displayzifu(0xba,0xB0,2,&t[1]); delay(100); /*显示单价*/ turn(price1); displayzifu(0XBc,0X68,6,&t1[0]); displayhanzi(0xbc,0x98,2,&YUAN); displayzifu(0XBc,0XA8,3,&t); delay(100); /*计算总价,并显示*/ total(press_r,price1); turn(sum); displayzifu(0XBe,0X68,6,&t1); displayhanzi(0xbe,0xB0,2,&YUAN); delay(100); } }

资源文件列表:

GP2智能电子称设计.zip 大约有4个文件
  1. DZC.C 7.38KB
  2. DZC.hex 15.23KB
  3. DZC.pdsprj 23.75KB
  4. 调试视频.mp4 18.96MB
0评论
提交 加载更多评论
其他资源 计算机网络自顶向下方法第八版答案
自顶向下方法第八版答案,包括复习题以及课后习题和实验的内容。
计算机网络自顶向下方法第八版答案 计算机网络自顶向下方法第八版答案 计算机网络自顶向下方法第八版答案
DSM群晖系统小白上手指南.zip
DSM群晖系统小白上手指南.zip
DSM群晖系统小白上手指南.zip DSM群晖系统小白上手指南.zip DSM群晖系统小白上手指南.zip
vue-devtools-5.1.1.zip
在github链接上面直接下载的vue-devtools 不可用,我这里在分支里面下载的,5.1.1版本可用的。 使用方法 切换到根目录 cnpm install,然后 npm run build,再 修改shells\chrome 目录下的manifest.json 里面的 "persistent": true 。然后在扩展程序添加就Ok了
微信小程序实现婚礼代码,免费!
微信小程序实现婚礼代码,免费!
GigaDevice_MCU_ISP_Programmer_V3.0.2.5782.zip
GD产品通过串口进行程序下载
wordpress主题 仿Hao123 网址导航主题
说明: 可直接安装主题,作为单页导航使用,暂无文章页面模板。 还可以用daohang.php当作页面模板使用,集成到现在WP主题中 。 使用方法:(安装前请先备份) 1.直接安装 在后台直接安装主题即可。 2.集成到现在主题。(推荐) 仅需上传daohang.php文件和css文件夹到现在主题目录下。 然后取functions.php中添加挂件和菜单函数,添加到现有主题functions.php中即可。 然后在后台新建页面,使用[网址导航]模板,新建页面仅需填写标题即可。 再设置>阅读>首页显示>一个静态页面(在下方选择)>主页:选择上面建立的页面即可。 3.主题安装或集成后 在后台添加菜单或链接即可,链接请看小工具页面说明。 主题优点: 纯净绿色,仅调用菜单和链接,对网站无任何影响。 无需插件。
Qt 图片交互-鼠标滚轮放缩、拖拽、选点
Qt 图片交互——鼠标滚轮放缩、拖拽、选点(工程源代码,编写的库方便使用,包含demo)演示视频:https://www.bilibili.com/video/BV1yv411P7hJ/
自己写的stm32f103的ov7670摄像头程序
stm32103vet6+ov7670+fifo 摄像头程序,基于3.5库,移植于红牛开发板(2.0库)屏幕代码采用奋斗mini代码(注意:屏幕程序用的是奋斗老板子的屏幕驱动,新板子要自己修改), 修改了mini的屏幕画线代码(原代码有问题)。 程序预留出触摸屏程序接口和串口程序接口,可以试着修改。 程序未集成sdcard程序,有待改进。