单片机课设 基于C51单片机的电子秤设计
- 格式:doc
- 大小:485.50 KB
- 文档页数:15
基于51单片机的电子秤程序#include#include//#include "LCD1602.h"//#include "HX711.h"#define uint unsigned int#define uchar unsigned charsbit LCD1602_RS = P2^5;sbit LCD1602_RW = P2^6;sbit LCD1602_EN = P2^7;sbit HX711_DOUT=P2^0;sbit HX711_SCK=P2^1;unsigned long HX711_Buffer = 0;unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;char Price_Count = 0;uchar KEY_NUM = 0;uchar Price_Buffer[3] = {0x00,0x00,0x00};unsigned long Money = 0;bit Flag_OK = 0;uchar com;//延时函数//**************************************************** void Delay__hx711_us(void){_nop_();_nop_();}void LCD1602_delay_ms(unsigned int n){unsigned int i,j;for(i=0;i<n;i++)< p="">for(j=0;j<123;j++);}void Delay_ms(unsigned int n){unsigned int i,j;for(i=0;i<n;i++)< p="">for(j=0;j<123;j++);}//**************************************************** //写指令//**************************************************** void LCD1602_write_com( uchar com){LCD1602_RS = 0;LCD1602_delay_ms(1);LCD1602_EN = 1;P0 = com;LCD1602_delay_ms(1);LCD1602_EN = 0;}//****************************************************//写数据//****************************************************void LCD1602_write_data( uchar dat){LCD1602_RS = 1;LCD1602_delay_ms(1);P0 = dat;LCD1602_EN = 1;LCD1602_delay_ms(1);LCD1602_EN = 0;}//****************************************************//连续写字符//****************************************************void LCD1602_write_word(unsigned char *s){while(*s>0){LCD1602_write_data(*s);s++;}}void Init_LCD1602(){LCD1602_EN = 0;LCD1602_RW = 0; //设置为写状态LCD1602_write_com(0x38); //显示模式设定LCD1602_write_com(0x0c); //开关显示、光标有无设置、光标闪烁设置LCD1602_write_com(0x06); //写一个字符后指针加一LCD1602_write_com(0x01); //清屏指令}//**************************************************** //矩阵键盘扫描//**************************************************** unsigned char KEY_Scan(){unsigned char temp = 0;unsigned char com = 0x55 , com1 = 0 , com2 = 0;P3=0xf0;if(P3!=0xf0){com1=P3;P3=0x0f;com2=P3;}P3=0xf0;while(P3!=0xf0);temp=com1|com2;if(temp==0xee)com=1;//数字1if(temp==0xed)com=4;//数字4if(temp==0xeb)com=7;//数字7if(temp==0xe7)com=11;//备用键*号键if(temp==0xd7)com=0;//数字0if(temp==0xb7)com=14;//备用键*号键if(temp==0xde)com=2; //数字2if(temp==0xdd)com=5; //数字5if(temp==0xdb)com=8;//数字8if(temp==0xbe)com=3;//数字3if(temp==0xbd)com=6; //数字6if(temp==0xbb)com=9;//数字9if(temp==0x7e)com=16;//数字A键,去皮功能if(temp==0x7d)com=15;//数字B键清除键,二次测量if(temp==0x7b)com=12;//数字C输入单价错误时返回上一步if(temp==0x77)com=13;//数字D键,计算总价return(com);}unsigned long HX711_Read(void) //增益128{unsigned long count;unsigned char 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_Weight(){HX711_Buffer = HX711_Read();HX711_Buffer = HX711_Buffer/100;if(HX711_Buffer > Weight_Maopi){Weight_Shiwu = HX711_Buffer;Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取实物的AD采样数值。
基于单片机的智能电子秤设计随着科技的不断发展,智能化和自动化已经成为我们生活中不可或缺的一部分。
在众多领域中,智能电子秤的设计与应用也越来越受到。
本文将介绍一种基于单片机的智能电子秤设计方案,该设计具有高精度、低成本、易于实现等优点,具有一定的实用价值。
一、概述智能电子秤是一种能够自动测量物体重量的设备,广泛应用于超市、菜市场等场所。
与传统的机械秤相比,智能电子秤具有测量精度高、使用方便、易于维护等优点。
而基于单片机的智能电子秤设计,更是将智能化和自动化技术融入到电子秤中,提高了设备的性能和可靠性。
二、设计原理基于单片机的智能电子秤设计主要是利用单片机的控制和数据处理能力,实现对物体重量的准确测量。
其核心部件为压力传感器和单片机。
压力传感器负责采集物体的重量信号,并将信号传输给单片机;单片机则对信号进行处理、分析和存储,同时控制显示屏显示物体的重量。
三、硬件设计1、单片机选择单片机是智能电子秤的核心部件,负责控制整个系统的运行。
本设计选用AT89C51单片机,该单片机具有低功耗、高性能、易于编程等优点,能够满足智能电子秤的设计要求。
2、压力传感器选择压力传感器是智能电子秤的重要组成部件,负责采集物体的重量信号。
本设计选用电阻应变式压力传感器,该传感器具有测量精度高、稳定性好、抗干扰能力强等优点。
3、显示模块选择显示模块负责将物体的重量信息呈现给用户。
本设计选用LED显示屏,该显示屏具有亮度高、视角广、寿命长等优点。
4、电源模块选择电源模块为整个系统提供稳定的电源,保证系统的正常运行。
本设计选用线性稳压电源,该电源具有输出电压稳定、纹波小、安全性高等优点。
四、软件设计软件设计是智能电子秤的关键部分之一,直接影响设备的性能和可靠性。
本设计的软件部分采用C语言编写,主要包括数据采集、数据处理、数据显示等模块。
具体流程如下:1、开机后,系统进行初始化操作;2、压力传感器采集物体的重量信号;3、单片机对采集到的信号进行处理和分析;4、单片机将处理后的数据存储到存储器中;5、单片机控制LED显示屏显示物体的重量信息;6、系统继续等待下一次测量。
基于51单片机的智能电子秤研究方案:基于51单片机的智能电子秤一、研究背景与意义随着人们生活质量的提高,对电子秤的精确度和智能化程度提出了更高的要求。
研发一种基于51单片机的智能电子秤具有重要的现实意义和市场前景。
本研究旨在利用51单片机技术,结合传感器原理以及数据采集和分析技术,设计和开发一种新型的智能电子秤,以满足人们对于健康和便捷生活的需求。
二、研究目标1. 设计一种基于51单片机的智能电子秤原型;2. 实现电子秤的重量测量、数据存储和数据展示功能;3. 评估该智能电子秤的测量精度和稳定性;4. 提出改进方法并进一步优化设计。
三、方案实施情况1. 硬件设计:a) 选择合适的传感器:选用高精度传感器进行重量测量;b) 电路设计:根据传感器的特点设计合适的电路板,用于放大、滤波、采样和通信等功能;c) 硬件连接:将传感器、显示屏、按键等硬件进行连接。
2. 软件设计:a) 采用51单片机作为核心,进行编程;b) 实现重量测量:通过合适的采样方法和算法,实时获取物体的重量;c) 数据存储与展示:将采集到的数据存储在内部存储器或外部存储器中,并通过显示屏展示给用户;d) 用户交互:设计一套用户友好的界面,使用户可以方便地和智能电子秤进行交互。
四、数据采集和分析1. 采集数据:在实验过程中,选择不同质量的物体进行重量测量,将采集到的数据以合适的格式存储起来。
2. 数据分析:a) 对采集到的数据进行基本统计分析,包括平均值、方差、偏差等;b) 评估智能电子秤的精确度和稳定性;c) 通过数据分析,找出可能的误差来源和改进方向。
五、实验结果分析与结论在以上实验和数据分析的基础上,得出以下结论:1. 通过对数据的统计和分析,验证了智能电子秤的测量精度和稳定性。
2. 针对可能存在的误差来源,提出了改进和优化的方法,如增加重量校准功能、改进传感器的精度等。
3. 通过用户体验和满意度调查,发现智能电子秤在用户中受到了广泛认可和好评,并能满足用户的需求。
基于单片机的电子秤设计一、【设计题目】基于单片机的电子秤设计二、【设计要求】设计要求如下:(1)设计一款电子秤,用LCD液晶显示器显示被称物体的质量(2)可以设定该秤所称的上限(3)当物体超重时,能自动报警。
三、【设计过程】1.【方案设计】微控制器技术、传感器技术的发展和计算机技术的广泛应用,电子产品的更新速度达到了日新月异的地步。
本系统在设计过程中,除了能实现系统的基本功能外,还增加了打印和通讯功能,可以实现和其他机器或设备(包括上位PC机和数据存储设备)交换数据.除此之外,系统的微控制器部分选择了兼容性比较好的AT89系列单片机,在系统更新换代的时候,只需要增加很少的硬件电路,甚至仅仅删改系统控制程序就能够实现。
另外由于实际应用当中,称可以有一定量的过载,但不能超出要求的范围,为此本设计提供了过载提示和声光报警功能。
综上所述,本课题的主要设计方案是:利用压力传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。
单片机经过相应的处理后,得出当前所称物品的重量及总额,然后再显示出来。
此外,还可通过键盘设定所称物品的价格。
主要技术指标为:称量范围0~5kg;分度值0.01kg;精度等级Ⅲ级;电源DC1.5V(一节5号电池供电)。
其设计框图如图3.1所示。
这种高精度智能电子秤体积小、计量准确、携带方便,集质量称量功能与价格计算功能于一体,能够满足商业贸易和居民家庭的使用需求。
图3.1 系统设计框图2.【器件选择】2.1单片机选择本设计由于要求必须使用单片机作为系统的主控制器,而且以单片机为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起,组成新型的只需要改变软件程序就可以更新换代的“智能化测量控制系统”。
考虑到本设计中程序部分比较大,根据总体方案设计的分析,设计这样一个简单的的系统,可以选用带EPROM 的单片机,由于应用程序不大,应用程序直接存储在片内,不用在外部扩展存储器,这样电路也可简化。
51单片机电子秤程序设计概述本文档介绍了如何使用51单片机(AT89C51)设计一个简单的电子秤程序。
通过该程序,电子秤能够测量物体的重量并实时显示在液晶显示屏上。
硬件准备在开始编写程序之前,我们需要准备以下硬件设备:- AT89C51单片机开发板- 电子秤传感器模块- 16x2液晶显示屏- 连接线程序设计以下是该电子秤的主要程序设计步骤:1. 引入必要的头文件include <reg51.h>include <lcd.h>2. 定义端口和变量sbit DOUT = P3^7; // 电子秤传感器数据接口float weight = 0; // 测量到的重量3. 初始化液晶显示屏void lcd_init(){// 在这里初始化液晶显示屏的相关设置}4. 启动AD转换void start_conversion(){// 在这里启动AD转换,将传感器的模拟数据转换为数字数据}5. 读取AD转换结果float read_conversion(){// 在这里读取AD转换结果并返回}6. 主程序void main(){lcd_init(); // 初始化液晶显示屏while (1){start_conversion(); // 启动AD转换weight = read_conversion(); // 读取AD转换结果// 将重量显示在液晶显示屏上lcd_gotoxy(1, 1); // 设置光标位置lcd_print("Weight: %.2f kg", weight); // 显示重量delay(500); // 延时一段时间,以控制刷新速度}}总结通过以上步骤,我们可以设计一个简单的51单片机电子秤程序。
该程序可以实时获取电子秤传感器的数据,并将测量到的重量显示在液晶显示屏上。
我们可以根据实际需求进行进一步的功能扩展和优化。
请注意,本文档仅提供了程序设计的概述,并未包含具体的代码实现。
摘要电子秤是日常生活中常用的称重设备,广泛应用于超市、大中型商场、物流配送中心。
电子秤在结构和原理上取代了以杠杆平衡为原理的传统机械式称量工具。
相比传统的机械式称量工具,电子秤具有称量精度高、装机体积小、应用范围广、易于操作使用等优点,在外形布局、工作原理、结构和材料上都是全新的计量衡器。
微电子技术的发展为电子秤提出了改进的空间。
电子秤向着简单、便宜发展,智能化、精确的电子秤成为了人们的追求。
本简易电子秤以常见的AT89C51为核心,以电阻应变片采集应变数据,通过HX711放大并进行AD转换供单片机处理,用LCD1602显示所测量的重量,同时本电子秤系统还提供单价设置进行求价格的计算以及去皮功能,通过一些简单低成本的元器件就完成了一个功能齐全的电子秤的制作,将传统电子秤的成本进行了缩减。
关键词:电阻应变片 AT89C51 HX711 电子秤第一章方案与论证一、方案类型(一)方案一通过单片机为主控芯片,用应变片采集应变数据,通过专用仪表放大器INA128对采集到的信号进行放大,在配上模数转换芯片对放大了的模拟信号转化为数字信号,传入单片机中进行数据处理,找出函数关系并转化关系。
通过数字信号转化为重量值显示在LDC1602上,同时通过键盘进行数据输入,输入单价、去皮等功能。
通过蜂鸣器和二极管实现超额报警功能。
(二)方案二以单片机为主控芯片,应变片采集应变数据,将放大和模数转换用HX711芯片来同时进行实现,将模拟量传入主控芯片单片机中进行数据转换,通过函数关系转换为重量显示到LED 上或者LCD1602上,同时通过键盘按键进行数据输入,输入单价、去皮等功能,并通过蜂鸣器进行数据处理。
(三)方案三运用PLC作为主控制器,PLC运用广泛,它具有接线简单,通用性好,编程简单,使用方便,可连接为控制网络系统,易于安装,便于维护等优点。
二、方案论证与选定运用51单片机作为主控芯片,AT89C51是一种高效微控制器。
毕业设计(论文)(2015届)题目:基于51单片机的电子秤设计专业名称:应用电子技术******学号:**********班级:2012级应用电子技术指导教师:***2014年 12 月 30 日摘要称重技术是人类生活中不可缺少的部分,自古以来就被人们所重视。
作为一种计量手段,被广泛应用于工业、农业、贸易等各个领域。
随着现代文明和科学技术的不断进步,人们对称重技术的准确度要求也越来越高,电子秤产品技术水平的高低,直接影响各行各业的现代化水平和社会经济效益的提高。
近年来,电子称重技术取得了突飞猛进的发展,电子秤在称重计量领域中也占有越来越重要的地位,其应用领域也在不断地扩大。
尤其是商用电子秤,由于其具有准确度高、反应灵敏、结构简单等优点,被广泛应用于工商贸易、轻工食品、医药卫生等领域。
目前,机械秤正在逐步被电子秤取代,这就促使电子秤的研究需要进一步的深入。
本设计是以AT89S51为核心的一种高精度电子秤,系统采用模块化设计法,其硬件结构主要包括:数据采集模块、最小系统模块、电源模块、键盘和显示模块。
其中,数据采集模块包括称重传感器和A/D转换电路;最小系统部分主要包括AT89S51和扩展的外部数据存储器;键盘由4×4位矩阵键盘组成;显示部分LM4229液晶显示。
软件部分由C语言编程,实现对各部分的控制。
该电子秤可以能够显示商品的名称、价格、总量、总价等;能够自动完成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能。
其称重范围为0~5Kg,分度值为0.001g。
整个系统结构简单,使用方便。
关键词:电子秤;AT89S51单片机;称重传感器;A/D转换电路;液晶显示目录1绪论 (1)1.1选题的背景与意义 (1)1.1.1选题的背景 (1)1.1.2选题的意义 (2)1.2电子秤的研究现状及发展趋势 (2)1.2.1电子秤的研究现状 (2)1.2.2电子秤的发展趋势 (3)1.3本文的结构 (4)2系统总体方案设计 (5)2.1电子秤的基本知识介绍 (5)2.1.1电子秤的基本结构 (5)2.1.2电子秤的工作原理 (5)2.1.3电子秤的计量参数 (6)2.2总体方案设计 (7)2.3系统各部分设计方案论证 (8)2.3.1电子秤分度数的设定 (8)2.3.2称重传感器的选定 (8)2.3.3A/D转换器的选定 (14)2.3.4单片机型号的选定 (16)3硬件设计 (18)3.1系统硬件结构图 (18)3.2单片机主控单元的设计 (18)3.2.1单片机引脚说明 (18)3.2.2AT89S51最小系统设计 (20)3.3数据采集模块设计 (22)3.3.1传感器单元设计 (22)3.3.2A/D转换单元设计 (22)3.4键盘和显示电路单元设计 (24)3.4.1键盘电路设计 (24)3.4.2显示电路设计 (25)3.5系统总体原理图 (25)3.6硬件抗干扰设计 (26)4系统软件设计 (29)4.1主程序设计 (29)4.2LM4229液晶显示驱动程序 (30)4.3ADC0832采样程序 (31)4.4键盘程序 (31)5系统仿真 (33)5.1欢迎界面的仿真 (33)5.2无重物情况仿真 (34)5.3称量物体仿真 (35)5.4最大量程仿真 (36)5.5仿真总结与问题补充 (37)5.5.1仿真总结 (37)5.5.2问题补充 (37)6总结与展望 (39)附录程序 (40)参考文献 (49)1 绪论1.1选题的背景与意义1.1.1选题的背景(1)电子技术渗入衡器制造业随着第二次世界大战后的经济繁荣,为了把称重技术引入生产工艺过程中去,对称重技术提出了新的要求,希望称重过程自动化,为此电子技术不断渗入衡器制造业。
摘要本设计是基于单片机的称重仪,它的硬件电路设计包括单片机最小系统、A/D 转换器、称重传感器、语音电路、LED显示电路、±5V稳压电源电路等几部分设计内容。
其中压力传感器输出响应的模拟电压信号,经过模/数转换(A/D变换)后就得到数字量D。
但是,数字量D并不是重物的实际重量值W,W 需要由数字量D 在控制器内部经过一系列的运算——即数据处理才能得到。
整个设计系统由Atmel 公司生产51系列89S51单片机进行控制;软件实现功能开机检测,主要是开机后自动逐个扫描LED数码管,以防止某段数码管损坏造成视觉误差;出于人性化考虑我们还可以增加语音电路,实现自动语音播报重量。
关键词:称重仪;单片机;LED目录摘要 IAbstract II目录 III第1章绪论 11.1 课题背景 11.2课题目的与意义 11.3课题设计要求 21.4称重仪的国内外现状 2本章小结 2第2章称重仪的总系统设计与各模块方案选型 3 2.1 称重仪的总系统框图 32.2称重仪的主控制系统设计 42.2.1 称重仪的主控制系统结构 42.2.2 称重仪的主控制系统工作原理 42.3 称重仪各模块的方案选型 52.3.1 电源模块方案选型 52.3.2 数据采集模块方案选型 52.3.3 主控制器模块方案选型 62.3.4 数据显示模块方案选型 62.3.5 报警模块方案选型 6本章小结 6第3章称重仪的各单元电路设计 73.1 所用单片机的简介 73.1.1单片机的最小系统设计 73.2 电源电路设计 83.3 称重传感器电路设计 93.3.1传感器的工作原理 93.4前级放大器电路设计 113.5 A/D转换器电路设计 123.5.1A/D转换器原理 123.5.2 A/D转换器外围电路 153.6 显示电路设计 163.6.1 LED 结构与原理 183.6.2 动态显示 LED 显示器接口 19 本章小结 21第4章称重仪的系统程序设计 22 4.1 主程序设计 224.2 MAX187转换程序设计 23 4.3显示程序设计 24本章小结 25第五章称重仪的安装与调试 26本章小结 26结论 27致谢 28参考文献 29第1章绪论1.1 课题背景称重技术自古以来就被人们所重视,作为一种计量手段,广泛应用于工农业、科研、交通、内外贸易等各个领域,与人民的生活紧密相连。
摘要本设计是基于单片机的称重仪,它的硬件电路设计包括单片机最小系统、A/D转换器、称重传感器、语音电路、LED显示电路、±5V稳压电源电路等几部分设计内容。
其中压力传感器输出响应的模拟电压信号,经过模/数转换(A/D变换)后就得到数字量D。
但是,数字量D并不是重物的实际重量值W,W 需要由数字量D在控制器内部经过一系列的运算——即数据处理才能得到。
整个设计系统由Atmel公司生产51系列89S51单片机进行控制;软件实现功能开机检测,主要是开机后自动逐个扫描LED数码管,以防止某段数码管损坏造成视觉误差;出于人性化考虑我们还可以增加语音电路,实现自动语音播报重量。
关键词:称重仪;单片机;LED目录摘要 (1)Abstract....................错误!未定义书签。
目录. (1)第1章绪论 (3)1.1 课题背景 (3)1.2课题目的与意义 (4)1.3课题设计要求 (6)1.4称重仪的国内外现状 (4)本章小结 (7)第2章称重仪的总系统设计与各模块方案选型 (7)12.1 称重仪的总系统框图 (7)2.2称重仪的主控制系统设计 (8)2.2.1 称重仪的主控制系统结构 (8)2.2.2 称重仪的主控制系统工作原理 (8)2.3 称重仪各模块的方案选型 (9)2.3.1 电源模块方案选型 (9)2.3.2 数据采集模块方案选型 (9)2.3.3 主控制器模块方案选型 (10)2.3.4 数据显示模块方案选型 (10)2.3.5 报警模块方案选型 (11)本章小结 (11)第3章称重仪的各单元电路设计 (11)3.1 所用单片机的简介 (11)3.1.1单片机的最小系统设计 (12)3.2 电源电路设计 (12)3.3 称重传感器电路设计 (13)3.3.1传感器的工作原理···········错误!未定义书签。
SCM Technology •单片机技术Electronic Technology & Software Engineering 电子技术与软件工程• 245【关键词】电子秤 A/D 转换器 单片机上个世纪五十年代,电子技术得以产生并被用于多个领域,部分研究人员将电子技术应用到称重器械中,进一步促进了称重器械的发展。
此后,电子秤的发展得到加速。
我国的电子秤发展较快,并在较短时间内达到国际先进水平。
需要注意的是,我国的电子秤与西方先进设备相比,依然存在一定局限性和差距,具体表现为工艺水平较低、电子秤技术开发发展不足等,电子秤功能相对匮乏等。
1 设计需求对物品的称重计量是社会生活和工业生产等活动过程中非常关键的一个环节,为了达到良好的称重计量效果,需要使用科学有效准确的称重设备或者装置。
随着社会生产的进一步发展,以及商品流通的进一步扩大,需要使用称重计量的场合和环节越来越多,而且对各种称重器具的要求也越来越多样化。
这种情况下,为了适应市场需要,各种新的称重计量器具得到设计和生产,并发挥出积极作用。
传统的称重计量器具一般是机械杠杆秤,这种机械杠杆秤操作不便,而且功能单一,已经难以满足实际称重需要。
近年来,基于传感技术和电子技术的发展和应用,一种新的称重设备电子秤得到设计和制造,并在社会社会和生产活动中得到有效应用。
电子秤应用简单,功能多样,而且操作简单,具有良好的实践应用效果,因此得到广泛应用,逐渐取得传统的机械电子秤。
随着微处理机的发展以及应用,这也促进电子称重技术得到进一步发展,促使电子秤的应用效果更上一层楼。
在使用过程中,电子秤具有称重快速准确的特点,而且操作很简单,同时称重过程中一般不会出现较大误差,具有良好准确性。
51单片机下的数字电子秤设计文/杨社鼎不仅如此,电子秤还具有多种功能,能够满足多种实际称重需求。
当前电子秤已经在社会生活的各个领域得到广泛应用,并为人们带来良好的社会效益和经济效益。
毕业设计(论文)设计(论文)题目:基于C51单片机的智能电子称设计班级:计算机1021学生学号:学生姓名:同组成员:指导教师:常州工程职业技术学院二〇一三年一月目录目录 (2)摘要 (6)ABSTRACT (8)第一章绪论 (10)1.1电子称的简介 (10)1.2电子称的发展趋势 (10)1.3设计总体思路 (12)第二章系统方案论证与选型 (14)2.1设计要求 (14)2.2整体功能 (14)2.3电子秤的工作原理 (15)2.4控制器部分的选择 (16)2.5数据采集部分的选择 (18)2.5.1 传感器的选择 (18)2.5.2放大电路选择 (21)2.6A/D转换器的选择 (25)2.7键盘处理部分方案论证 (27)2.8显示电路部分的选择 (28)第三章系统硬件设计 (29)3.1单片机STC89C52及其电路 (29)3.2称重传感器 (30)3.3电子秤专用24位AD转换芯片HX711及其电路 (31)3.4液晶屏电路 (31)3.5矩阵键盘电路 (32)3.6声光报警电路 (32)3.7电源电路 (32)3.8硬件的调试 (32)第四章系统软件设计 (34)4.1系统的主程序设计 (34)4.2A/D转换启动及数据读取程序设计 (34)4.3键盘模块的设计 (35)4.3、声光报警模块 (36)4.4、显示模块的设计 (36)第五章系统集成 (38)5.1编译与链接 (38)5.2软件运行与调试 (38)5.2.1USB转串口驱动安装 (38)5.2.2程序下载运行 (39)5.2.4、程序上电运行 (42)5.3、软件操作说明 (42)5.3.1 键盘定义说明 (42)5.3.2软件常用使用步骤 (43)5.4调试故障及原因分析 (44)结束语 (45)致谢 (46)参考文献 (47)附录一:系统仿真效果图 (48)摘要电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。
基于51单片机的电子秤的设计一、设计要求和总体方案(一)设计要求设计一款基于 51 单片机的电子秤,能够实现以下功能:1、测量范围:0 5kg。
2、测量精度:01g。
3、具备数码管显示功能,能够实时显示测量的重量值。
4、具有去皮功能,方便测量容器的重量。
(二)总体方案本电子秤主要由传感器、信号调理电路、A/D 转换电路、51 单片机、数码管显示电路和按键电路等组成。
传感器将物体的重量转换为电信号,经过信号调理电路进行放大和滤波处理后,送入 A/D 转换电路转换为数字信号。
51 单片机对数字信号进行处理和计算,得到物体的重量值,并通过数码管显示电路进行显示。
按键电路用于实现去皮等功能。
二、硬件设计(一)传感器选择选用电阻应变式传感器,它具有精度高、稳定性好、测量范围广等优点。
当物体放在传感器上时,传感器的电阻值会发生变化,通过测量电阻值的变化可以得到物体的重量。
(二)信号调理电路由于传感器输出的信号比较微弱,需要经过信号调理电路进行放大和滤波处理。
放大电路采用仪表放大器,它具有高共模抑制比、低噪声等优点。
滤波电路采用无源 RC 滤波器,去除信号中的高频噪声。
(三)A/D 转换电路选用 ADC0809 作为 A/D 转换芯片,它是 8 位逐次逼近型 A/D 转换器,具有转换速度快、精度高等优点。
(四)51 单片机选择AT89C51 单片机作为控制核心,它具有性能稳定、价格低廉、编程简单等优点。
(五)数码管显示电路采用共阳数码管进行显示,通过 74HC573 锁存器驱动数码管。
(六)按键电路使用独立按键实现去皮、清零等功能。
三、软件设计(一)主程序流程主程序首先进行系统初始化,包括初始化单片机的 I/O 口、A/D 转换芯片等。
然后进入循环,不断读取 A/D 转换的结果,并进行数据处理和计算,得到物体的重量值,最后将重量值发送到数码管显示。
(二)数据处理算法采用线性拟合的方法对 A/D 转换的结果进行处理,得到与重量值对应的数字量。
基于51单片机的电子秤设计实施计划下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!电子称在我们日常生活中扮演着非常重要的角色,它的出现为我们的计量工作提供了便利。
摘要本文介绍了一种基于微处理器与传感器等技术基础上设计的智能健康称重的电子秤。
现代信息技术的三大基础是信息的采集、传输和处理技术,即传感技术、通信技术和计算机技术,它们分别构成了信息技术系统的“感官”、“神经”和“大脑”。
信息采集系统的首要部件是传感器,且置于系统的最前端。
在一个现代自动检测系统中,如果没有传感器.就无法监测与控制表征生产过程中各个环节的各种参量,也就无法实现自动控制。
在现代技术中,传感器实际上是现代测试技术和自动化技术的基础科学技术的飞速发展,由称重传感器制作的电子衡器也已广泛地应用到各行各业。
特别是随着微处理机的出现,工业生产过程自动化程度化的不断提高,称重传感器已成为过程控制中的一种必需的装置。
为了提高我们对数据采集及数据处理方面知识的处理能力,并且考虑到作品的实用性和个人兴趣等因数,我们设计了一台基于51单片机的智能电子秤。
本系统通过称重传感器采样,A/D转换后输入单片机,通过按键设置单价后,经过单片机主控制器件的处理后,液晶上就会显示:体重和距离健康的标准。
关键词:智能称重;传感器;微处理器;测试技术摘要 (III)第1章引言 (1)第2章系统方案设计 (1)2.1 设计任务及要求 (1)2.1.1 任务 (1)2.1.2 设计说明 (2)2.1.3 智能秤的工作原理 (2)2.2 智能秤设计的要求及思路 (2)2.2.1 智能秤设计的基本要求 (2)2.2.2 智能秤设计的基本思路 (2)第3章智能秤的设计与制作 (4)3.1 智能秤的各个模块 (4)3.1.1 传感器 (4)3.1.2 测身高部分 (6)3.1.3 A/D转换模块——ADC0808 (8)3.1.4 微处理器模块——AT89C51 (9)3.1.5 输出显示模块——LCD (10)3.1.6 电源模块 (11)第4章智能秤的软件设计 (12)4.1 总体方案设计 (12)4.2 称重部分软件设计 (13)4.3 测量身高部分软件设计 (14)4.4 A/D转换部分程序流图 (16)4.5 LCD显示部分程序 (16)第五章总结 (18)第1章引言目前,随着社会的发展、生活水平不断提高,人们越来越关注自己的身体健康。
单片机原理及系统课程设计专业:自动化班级:动1101*名:***学号:*******##指导教师:郑兰州交通大学自动化与电气工程学院2014年1月13日基于单片机的智能电子秤设计1设计任务1.1 设计目的(1) 综合运用所学单片机的知识实现单片机系统的设计;(2) 学会将单片机运用于实际生活或生产中;(3) 培养科学良好的设计方法和作风;(4) 掌握用Keil C51编写和调试程序;(5) 掌握用Proteus实现应用系统的仿真;(6) 学会单片机应用系统设计的各种步骤和技巧。
1.2 设计要求(1) 给出具体可行的设计方案;(2) 设计合理的电路原理及可靠的系统硬件;(3) 在合理硬件基础上用Keil C51编写和调试程序;(4) 给出所设计系统在Proteus软件中的仿真结果;(5) 给出最后的设计结果集分析。
1.3 设计方案和原理(1)设计原理基于单片机的智能电子秤,即用单片机制作一个智能电子秤,其工作原理是通过应变式传感器桥式电路采集到被测物体的重量并将其转换成电压信号,再通过A/D转换成数字量送入到主控电路的单片机中,处理成物体重量值;通过单片机不断扫描键盘和各功能开关,根据键盘输入的内容和各功能状态进行必要的判断、分析、由仪表的软件来控制各种运算,运算结果送入到存储器;需要显示时,CPU发出命令,从存储器中读数据并送到显示器显示。
(2)设计方案电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。
很显然用软、硬件相结合,实现电子秤对物体的自动称量、单价输入、自动计算总价并显示的功能,给人们生活带来很大的方便。
其中硬件部分由七个部件组成,分别为压力传感器、模数转换器、C51单片机、矩阵键盘、矩阵键盘译码器、蜂鸣器语音提示装置和LCD1602液晶显示器。
其中C51单片机起中控作用,用于控制各部件正常工作,存储处理数据并输出;应变式传感器产生电压信号,经过模数转换器得到数据送入单片机;矩阵键盘输入,经MM74C922译码器译码将数据送入单片机。
其组成部件方框图如图1.1所示。
图1.1 电子秤系统硬件部件组成图将应变式传感器输出连入模数转换器,将模数转换器与单片机连接,实现物体重量的自动测量;用矩阵键盘和矩阵键盘译码器连接单片机可实现单价的输入;蜂鸣器语音提示即可提醒用户输入,还可以对物体超重进行报警;再给单片机连接一个LCD 液晶显示器,对其重量、单价、总价数据输出显示。
电子秤的软件部分是连接各硬件工作和实现单片机智能化的灵魂。
软件即主要是对C51单片机进行编程实现各种功能,主要以单片机为控制中心,让各个模块分工实现其功能,单片机进行数据的采集、处理存储和输出显示。
程序主要包括主函数、通用显示函数、初始化LCD 函数、向LCD 发送数据函数和向LCD 发送命令函数、计算总额函数、按键处理函数等子程序。
程序必须用Keil C51对.C 文件或.ASM 文件进行编写和调试程序,编译无误且调试完成后生成.HEX 文件装入单片机即可实现智能电子秤硬件的正常工作。
2 系统硬件设计2.1 应变式传感器电路及原理传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
此压力传感器即应变式传感器,其工作原理为电阻应变片的应变效应,金属电阻丝受外力作用时,其金属丝电阻的相对变化与金属丝的应变成正比关系,放了重物后应变片后弯曲变形,导致里面的金属丝改变,即引起其电阻发生变化。
电阻应变式传感器的结构主要是由四部分组成:电阻丝、基片、覆盖层和引出线。
电阻应变式传感器的测量一般要用专门的转换电路将微小的电阻相对变化△R/R 转换为电压或电流的变化,通常采用直流全桥电桥电路实现输出,该电桥电路采用差动电桥,即四个应变片,两个受拉应变,两个受压应变。
如图2.1所示,其输出电压为:RRU U E ∆⨯=0。
图2.1 电阻应变片的转换电路2.2ADC0832模数转换器ADC0832是一个8引脚的A/D转换芯片,其中DO和DI分别是数据输出和输入端,可以和计算机进行数据传输,CH1和CH0模拟信号的两个输入通道,由单片机编程选择,CS是选通信号端,CLK脉冲信号输入端,VCC和GND即电源。
模数转换电路如图2.2所示,加了三个上拉电阻控制单片机输入输出信号。
2.3这里选用的是3×4的矩阵键盘和4×4的矩阵键盘译码器MM74C922。
其电路连接图如图2.3所示。
图2.3 矩阵键盘及矩阵键盘译码器电路水平线。
2.4图2.4 语音提示电路图2.5LCD液晶显示电路这里采用LCD1602液晶显示器来显示物体重量、单价和计算总价。
LCD1602液晶显示器共14个引脚,其中D0~D7为8为数据输入端,E为选通端,RW为写命令选通端,RS为读命令选通端。
其硬件电路连接图如图2.5所示。
图2.5 LCD1602液晶显示器硬件电路图3 软件设计软件程序是连接各硬件工作和实现单片机智能化的灵魂。
主要作用是实现以单片机为控制中心,让各个模块分工实现其功能,单片机进行数据的采集、处理存储和输出显示的功能。
模块化是C语言的一大特点,对单片机的编程而言,用C语言模块化编程也是必须,故可以用一个主函数和ADC0832转换函数、按键处理函数、计算总额函数和1602相关函数4个子程序即可实现相关功能,另外加按键音函数、延时函数2个子程序。
以下是各函数功能实现的流程图。
主程序功能的流程图如图3.1所示。
图3.1 程序主函数流程图按键子程序流程图如图3.2所示,A/D 转换子程序流程图如图3.3所示。
图3.2 按键程序流程图 图3.3 A/D 转换程序流程图4 系统仿真与调试用Proteus实现应用系统的仿真,用模拟的C51芯片和外围电路搭建电子秤仿真系统电路图,运用Keil C51软件下编写和调试程序,调试完成后生成的.HEX文件,装入仿真系统单片机中,让仿真系统工作。
经过调试,能显示正确的结果,即实现了基于单片机的智能电子秤设计。
仿真图见附录1中图4.1所示。
5 总结通过此次课程设计,我对单片机相关知识有了系统的认识和理解。
利用单片机进行控制系统的设计与开发有了初步了解和技巧,以及对控制系统的分析和问题的解决有了深刻的认识。
控制系统的开发设计是一项复杂的系统工程,必须严格按照系统分析、系统设计、系统实施、系统运行与调试的过程来进行,才能得到正确实用且可靠的系统。
在设计过程中,要边学习,边实践,遇到新问题就要不断探索和努力,亲自理解和掌握知识和技巧,方可使问题得到解决。
在设计中理论和实际必须紧密结合,要针对不同的系统根据理论给与不同的方案,综合考虑各方面的因素和需要,选择出最佳的方案与结论。
要大量广泛的收集资料,然后认真地研究其思路,和指导老师保持联系,和同学共同研究遇到的问题,认真对待自己的不足和缺点,努力实现自我的超越。
附录附录1 电子秤系统仿真图Y1Y2Y3Y4Y 4Y 3Y 2Y 1X 3X 2X 1DC B AD AA B C D DADB0EDB1DB2DB3DB4DB5DB6DB7RW RS ER W R S D B 7D B 6D B 5D B 4D B 3D B 2D B 1D B 0X 1X 2X 3XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C510123456789.CO S C5K B M 6D A 12A 17B 16C 15D14X 111X 210X 38X 47Y 11Y 22Y 33Y 44O E13U3MM74C922C10.1uC20.68uCS1CH02CH13GND 4VCC 8CLK 7DI 5DO 6U2ADC0832X1CRYSTALC322pFC422pFC522uR110kR2220RR310kR410kR510kLS1SOUNDERR6510RD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LVolts+3.00RV11k图4.1 在Proteus 下的系统仿真图附录2 电子秤软件程序如下 #include<reg51.h> #include<intrins.h> #include <absacc.h> #include <math.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h>#define uchar unsigned char#define uint unsigned int//按键引脚定义sbit DA=P1^4;#define Key_Pressed (DA==1) //有键按下#define Key_no (P1&0x0f) //获取键值code char KEY_CHAR_TABLE[]="012 345 678 9.C"; //键盘字符表#define PLEN 7 //价格最大长度#define WLEN 4 //重量最大长度#define SUMLEN 10 //金额最大长度char disp_buffer_P[PLEN];uchar disp_buffer_Pz[PLEN];char disp_buffer_W[WLEN];char disp_buffer_SUM[SUMLEN];uchar NumberPtr=0;//蜂鸣器引脚定义sbit Beep=P1^5;//ADC0832引脚定义sbit ADCS =P0^2; //片选线sbit ADDI =P0^0; //数据线sbit ADDO =P0^0; //数据线sbit ADCLK =P0^1; //时钟线volatile int AD_Result,Pre_Result=0,Pressure_Value=0;//数模转换结果,上次转换结果,压力换算结果//LCD1602引脚、宏定义#define LCD_DB_PORT P2 //1602D0~D7sbit RS=P3^0; //数据/命令线选择sbit RW=P3^1; //读写控制线sbit EN=P3^2 ; //使能端void ShowString(unsigned char x,unsigned char y,unsigned char *str);void show_sum();/*********延时函数us***********/void delay_us(uchar x){while (--x)_nop_();}/***********按键音函数************/void Sounder(){uchar i;Beep=1;for (i=0;i<20;i++){delay_us(70);Beep=0;}Beep=1;}/***********按键处理函数*************/void keyB_dow(){uchar keychar;static uchar havdot=0; //按下小数点标志位,按下为1static uchar dtnum=PLEN; //未输入小数点时可以继续输入的字符个数P1|=0X0F;if(Key_Pressed){Sounder();keychar=KEY_CHAR_TABLE[Key_no];//获取键值if(isdigit(keychar)||(keychar=='.'&&!havdot)){if(strlen(disp_buffer_P)==3&&(keychar!='.'&&!havdot))return; //在当前未输入小数点,而已超过串长3时返回if(NumberPtr<dtnum){if(NumberPtr==0&&(keychar=='0'||keychar=='.')){disp_buffer_P[NumberPtr++]='0';keychar='.';disp_buffer_P[NumberPtr++]='.';}else{disp_buffer_P[NumberPtr++]=keychar;}disp_buffer_P[NumberPtr]='\0';ShowString(2,0,disp_buffer_P);}if(keychar=='.'&&!havdot){dtnum=NumberPtr+2;havdot=1;}}else if(keychar=='C'){NumberPtr=0;havdot=0;dtnum=PLEN-2;disp_buffer_P[0]='\0';disp_buffer_SUM[0]='\0';ShowString(2,0,(char*)" ");ShowString(5,1,(char*)" ");}if(Key_Pressed)show_sum();while(Key_Pressed) ;}}/*********计算总额函数***********/void show_sum(){float p,w;if(strlen(disp_buffer_P)==0)//价格未输入时将p置为0,否则转换为float型p=0;elsep=strtod(disp_buffer_P,'\0');w=strtod(disp_buffer_W,'\0'); //将重量字符串转换成float型sprintf(disp_buffer_SUM,"%.2f",p*w); //计算金额并转化成字符串ShowString(5,1,(char*)" "); //清除原金额ShowString(5,1,disp_buffer_SUM);//显示当前金额}/*********延时函数us***********/void delay_ms(uchar x){uchar t;while (--x)for(t=0;t<120;t++);}/***********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_();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}/***********1602相关函数*************//***********忙检查函数*************/ unsigned char Busy_Check(){unsigned char LCD_Status;RS = 0;RW = 1;EN = 1;delay_us(1000);LCD_Status = LCD_DB_PORT;EN = 0;return LCD_Status;}/***********向LCD发送命令函数*************/ void Write_LCD_Command(unsigned char cmd){while((Busy_Check()&0x80)==0x80);RS = 0;RW = 0;EN = 0;LCD_DB_PORT = cmd;EN = 1;delay_us(1000);EN = 0;}/***********向LCD发送数据函数*************/ void Write_LCD_Data(unsigned char dat){while((Busy_Check()&0x80)==0x80);RS = 1;RW = 0;EN = 0;LCD_DB_PORT = dat;EN = 1;delay_us(1000);EN = 0;}/***********初始化LCD函数*************/void Initialize_LCD(){Write_LCD_Command(0x38);delay_us(1000);Write_LCD_Command(0x01);delay_us(1000);Write_LCD_Command(0x06);delay_us(1000);Write_LCD_Command(0x0c);delay_us(1000);}/***********通用显示函数*************/void ShowString(unsigned char x,unsigned char y,unsigned char *str) {unsigned char i = 0;if(y == 0)Write_LCD_Command(0x80 | x);if(y == 1)Write_LCD_Command(0xc0 | x);//for(i=0;i<16;i++)for(i=0;i<strlen(str);i++){Write_LCD_Data(str[i]);}}/***********主函数*************/void main(){Initialize_LCD();ShowString(0,0,(char*)"P: W:");ShowString(0,1,(char*)"SUM: ");while(1){AD_Result=Adc0832();// AD_Result=Get_ad_D();//获得AD转换结果Pressure_Value=AD_Result*10/255;//质量转换结果sprintf(disp_buffer_W,"%-3d",Pressure_Value);ShowString(13,0,disp_buffer_W);keyB_dow();if(Pre_Result!=AD_Result){show_sum();Pre_Result=AD_Result;Sounder();}delay_ms(50);}}参考文献[1]王思明,张金敏,苟军年等. 单片机原理及应用系统设计[M]. 北京:科学出版社,2012.[2] 杜树春. 基于Proteus和Keil C51的单片机设计与仿真[M]. 北京:电子工业出版社,2012.。