基于单片机的智能电子称重系统设计
1.设计任务
基于单片机的智能电子称重系统设计
基本要求:能称量物体重量,在输入单价的情况下能够显示商品价格。
创新:物体超过称量范围时自动报警。
任务区分:B——通过灯光闪烁报警。
2. 设计要求
2.1系统方案论证
根据设计任务,分析设计系统的组成,给出实现设计任务的几种方案,分析比较几种设计方案的优略,本着尽量以软件代替硬件,同时力求电路简单,工作可靠的原则,确定总体设计方案。
2.2系统硬件电路设计
根据系统设计方案进行软、硬件的分配,软、硬件设计分别进行。硬件设计包括单片机最小系统和扩展接口及配置,硬件结构在设计时要选择合适的元器件,硬件电路要简洁、工作可靠,需用Proteus绘制整个系统的电路仿真原理图。
主函数
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char //ÎÞ·ûºÅ×Ö·ûÐÍ ºê¶¨Òå ±äÁ¿·¶Î§0~255
#define uint unsigned int //ÎÞ·ûºÅÕûÐÍ ºê¶¨Òå ±äÁ¿·¶Î§0~65535
#define ulong unsigned longuchar code table_num[]="0123456789abcdefg";sbit rs = P2^7; //
sbit rw = P2^6;
sbit e = P2^5; //sbit hx711_dout = P1^0;
sbit hx711_sck = P1^1;
sbit led = P1^2;
sbit beep = P1^3;long weight;
uint temp,qi_weight;
ulong price,z_price;
uchar flag_p;
uchar key_can;bit chaozhong_flag;
bit leiji_flag;
bit flag_300ms ;void delay_1ms(uint q)
{uint i,j;for(i=0;i<q;i++)for(j=0;j<120;j++);
}void delay_uint(uint q)
{while(q--);
}void write_com(uchar com)
{e=0;rs=0;rw=0;P0=com;delay_uint(3);e=1;delay_uint(25);e=0;
}void write_data(uchar dat)
{e=0;rs=1;rw=0;P0=dat;delay_uint(3);e=1;delay_uint(25);e=0;
}void write_string(uchar hang,uchar add,uchar *p)
{if(hang==1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);while(1) {if(*p == '\0') break;write_data(*p);p++;}
}//lcd1602
void init_1602()
{write_com(0x38);write_com(0x0c);write_com(0x06);delay_uint(1000);
}void write_zifu(uchar hang,uchar add,uchar dat)
{if(hang==1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(dat);
}void write_sfm4_price(uchar hang,uchar add,uint date)
{if(hang==1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/1000%10);write_data(0x30+date/100%10);write_data('.');write_data(0x30+date/10%10);write_data(0x30+date%10);
}void init_1602_dis_csf() //³õʼ»¯Òº¾§
{ write_string(1,0,"WEIGHT: 0.000 KG");write_string(2,0,"UP:00.00 :00.00");write_zifu(2,9,0x5c); //£¤
}void write_1602_yl(uchar hang,uchar add,uint date)
{if(hang==1) write_com(0x80+add);elsewrite_com(0x80+0x40+add);write_data(0x30+date/1000%10);write_data('.');write_data(0x30+date/100%10);write_data(0x30+date/10%10);write_data(0x30+date%10);
}void Delay__hx711_us(void)
{_nop_();_nop_();
}ulong ReadCount(void)
{ulong count,value = 0; uchar i; hx711_dout=1; Delay__hx711_us();hx711_sck=0; count=0; while(hx711_dout);for(i=0;i<24;i++){ hx711_sck=1; count=count<<1; hx711_sck=0; if(hx711_dout)count++; } hx711_sck=1; count=count^0x800000; //µÚ25¸öÂö³åϽµÑØÀ´Ê±£¬×ª»»Êý¾ÝDelay__hx711_us();hx711_sck=0; return(count);
} void get_pizhong()
{ulong hx711_dat;hx711_dat=ReadCount();temp=(uint)(hx711_dat/100);
}void get_weight()
{ulong hx711_data,a;uint get,aa;hx711_data=ReadCount(); get=(uint)(hx711_data/100);if(get>temp){a=ReadCount(); aa=(uint)(a/100)-temp;weight=(uint)((float)aa*0.65703+0.05);}
}//¶¨Ê±Æ÷0³õʼ»¯³ÌÐò---------------------------------------------
void time_init()
{EA = 1; TMOD = 0X01; ET0 = 1; TR0 = 1;
}void key()
{static uchar key_new = 0, key_l;key_can = 20; P3 = 0x0f;if((P3 & 0x0f) != 0x0f) {delay_1ms(1);if(((P3 & 0x0f) != 0x0f) && (key_new == 1)){ key_new = 0;key_l = P3 | 0xf0; P3 = key_l;switch(P3){case 0xee: key_can = 1; break; case 0xde: key_can = 2; break; case 0xbe: key_can = 3; break;case 0x7e: key_can = 12; break;case 0xed: key_can = 4; break;case 0xdd: key_can = 5; break;case 0xbd: key_can = 6; break;case 0x7d: key_can = 13; break;case 0xeb: key_can = 7; break;case 0xdb: key_can = 8; break;case 0xbb: key_can = 9; break;case 0x7b: key_can = 14; break;case 0xe7: key_can = 10; break;case 0xd7: key_can = 0; break;case 0xb7: key_can = 11; break;case 0x77: key_can = 15; break;} beep = 0; //·äÃùÆ÷½ÐÒ»Éùled = 0;delay_1ms(100);led = 1;beep = 1; } }else key_new = 1;
}//
void key_with()
{if(key_can <= 9) //{if(flag_p >= 4)flag_p = 0;if(flag_p == 0)price = key_can;else price = price * 10 + key_can; write_sfm4_price(2,3,price);flag_p++;}if(key_can == 13) //{ if(price != 0){flag_p--;price /= 10; write_sfm4_price(2,3,price);}}if(key_can == 12) //{get_pizhong(); }if(key_can == 14) //{flag_p = 0;price = 0;write_sfm4_price(2,3,price); }
}//Ö÷º¯Êý--------------------------------------------------------
void main()
{ delay_1ms(300);beep = 0; //led = 0;delay_1ms(100);P0 = P1 = P2 = P3 = 0xff; //time_init(); //init_1602(); //init_1602_dis_csf(); //get_pizhong(); //while(1){key(); if(key_can < 20)key_with(); if(flag_300ms == 1){flag_300ms = 0;get_weight(); weight /= 2; //if(weight >= 0 )write_1602_yl(1,8,weight); z_price = weight * price / 1000; write_sfm4_price(2,11,z_price); if(weight >= 5000) {beep = ~beep;led = ~led;}else{ beep = 1;led = 1;}}delay_1ms(1);}
}//¶¨Ê±Æ÷0ÖжϷþÎñ³ÌÐò-----------------------------------------------
void time0_int() interrupt 1
{ static uchar value; TH0 = 0xf8;TL0 = 0x30; //2msvalue++; if(value >= 150){value = 0; flag_300ms = 1;}
}
仿真图纸:
基于单片机的智能电子称重系统设计相关推荐
- 智能窗帘传感器c语言程序,基于单片机的智能窗帘控制系统设计(附程序代码)
基于单片机的智能窗帘控制系统设计(附程序代码)(论文18000字,程序代码) 摘要:二十一世纪初以来,科学技术不断发展,智能家居涌现于各家各户,人们越来越重视生活质量的提高.但是传统的手动开合窗帘耗时 ...
- 基于51单片机的公交车安全智能检测系统、基于51单片机的金属探测仪控制设计、基于单片机的智能电子密码锁系统设计、基于51单片机酒精浓度检测仪设计【资料转发分享】
630基于51单片机的公交车安全智能检测系统-设计资料 本资料是基于单片机的公交车安全监测系统 具有如下功能: 1.监测环境的温度,超标报警.可以设置上下限 2.监测是否有火灾以及有毒气体,超标报警, ...
- 基于单片机的智能电子密码锁系统设计-基于51单片机酒精浓度检测仪设计-基于单片机的水缸加热温控控制系统设计-基于单片机蓝牙技术的温室监测系统设计-基于单片机智能PWM调光灯系统设计【毕设方案】
600基于单片机的智能电子密码锁系统设计-电路程序资料 本设计采用的是AT89C51单片机作为控制核心,控制外围电路工作的装置.在本次基于单片机的电子密码锁设计中,将采用AT89C51单片机作为控制核 ...
- 基于单片机热电偶智能体温检测系统设计-基于单片机一氧化碳CO有毒气体采集报警系统设计-基于单片机热电偶智能体温检测系统设计(仿真,原理图,报告)【资料转发分享】
1626基于单片机小型家用燃气锅炉控制系统设计(仿真,程序,论文) 1. 设计任务 结合实际情况,基于AT89C51单片机设计一个小型家用燃气锅炉单片机控制系统. 该系统应满足的功能要求为: (1) ...
- 【单片机毕业设计】【mcuclub-109】基于单片机的智能抽油烟机控制系统设计-标准版【实物设计】
设计简介: 项目编号:mcuclub-109 项目名:基于单片机的智能抽油烟机控制系统设计 单片机:STC89C52 功能: 1.通过MQ-2烟雾传感器检测厨房内烟雾浓度,若烟雾浓度小于设定最小阈值, ...
- 【单片机毕业设计】【mcuclub-109】基于单片机的智能抽油烟机控制系统设计-标准版【仿真设计】
设计简介: 项目编号:mcuclub-109 项目名:基于单片机的智能抽油烟机控制系统设计-标准版 单片机:STC89C52 功能: 1.通过MQ-2烟雾传感器检测厨房内烟雾浓度,若烟雾浓度小于设定最 ...
- 基于单片机c语言的豆浆机,基于单片机的智能豆浆机控制系统设计(附实物图,电路原理图,程序)...
基于单片机的智能豆浆机控制系统设计(附实物图,电路原理图,程序)(任务书,开题报告,中期检查表,毕业论文11800字) 摘要 由于市面上的豆浆机不具有长时间保温的功能,打浆完成后残渣很多,而且打浆用时 ...
- 单片机蜂鸣器编程音乐_基于单片机的智能鱼缸温控系统设计
曹益豪 聊城大学东昌学院机电工程系 山东 聊城 252000 摘 要:为满足热带鱼的饲养要求,设计了一种基于AT89C52单片机的小型智能温控鱼缸系统.该系统利用DS18B20传感器检测水温,并通过 ...
- 【毕业设计】基于单片机的智能路灯控制系统设计_32开发实例
一.系统设计 整个智能路灯系统采用STM32F103C8T6单片机进行主控,使用红外光电开关进行人体检测,通过光敏电阻模块进行光照检测,利用声音传感器进行路灯周围声音的检测.还通过DS1302时钟模块 ...
最新文章
- 力扣算法题—073矩阵置零
- python 统计分析apache日志_python分析apache访问日志脚本分享
- LA3266田忌赛马
- python爬虫基础(一)~爬虫概念和架构
- dotNet 5 中执行 Node.js
- 将一个数组拼接成一个指定字符串返回
- 如何从0-1制作数据大屏,我用大白话给你解释清楚了
- 完全不相关的结果集,拼成一个sql
- 被中国人误传了数千年的七句话
- HTML5离线存储 初探
- 10. Document getElementsByTagName() 方法
- 哈利波特:哈迷们集合啦
- 2021-08-21Verilog三段式状态机的写法,标准示例和仿真。
- win11官网的预览版系统如何下载安装
- 【IT之路】Docker系列-CentOS 7 64位镜像下载
- signature=8df1e41f626c2f25b2dd4e97b89cc127,来用百度密语吧!!!
- Unity Shader - Rendering Mode 渲染模式
- 复制粘贴,快速将Python程序打包成exe
- SN74LVC2G04DRLR 德州仪器TI 反相器
- 简单爬虫——京东网图书爬取