楼主啊,这个项目可是个大工程啊,放到大学,可以算是毕业设计了,我在此简单地说说吧.
首先,秤盘先把重量转成电压(这个步骤是传感器的活)电压经过AD转换,得到具体的数字量(AD有8位,10位,12位,等)单片机把数字量犊到mcu里面,经过计算,就得到了对应的物体重量
至于汇编的代码,其实可以先用keil写,只有把bin或者hex文件由2进制转换成汇编,你可以找hex破解的软件,关键字就是hex破解,反正汇编的有用也是转换成2进制,所以可以完成你的任务啊
⑵ 基于单片机的电子秤怎么调试
第1步:确定电子秤电池电量是否充足,电池没电应及时更换,电量不足会导致电子秤显示不准确。
第2步:将电子秤水平放置在地板,如果电子秤一边高一边低,或者与水平面存在仰角,都会导致秤重不准。
第3步:两脚竖直站立在电子秤上,身体不要左右晃动。不可用单脚或蹲立等姿势秤重,这样会导致秤重不准确。
第4步:按照步骤三的方法各秤重五次,取平均值。这样秤出来的重量就比较准确了。注意秤重的时候,重量不可超过电子秤最大秤重量。
第5步:找另外一块准确的电子秤进行秤重,取平均值进行对比,如果误差较大,则说明电子秤内部存在问题。
⑶ 毕设做体脂秤适合用什么单片机做主控可以用52或STM32吗需要用什么模块或器件
从你的项目来看,涉及人体阻抗测量及数学模型换算,最好选STM32系列32位MCU来做主控单片机,这种任务对52单片机有点勉为其难,该项目可能还需要模拟电路来配合测量,需要用到运放等IC,当然电源模块也是必不可少的。
⑷ 求讲解51单片机电子秤的程序,分模块详细点
如果想知道更多的东西,建议看一本书:吴鉴鹰单片机实战精讲,网上能找到,代码我给你了。
/******************************************************
*程序:吴鉴鹰基于单片机的电子秤的设计程序
**这一讲的主要内容:电子称是什么,讲的专业点就是:
利用物体的重力作用来确定物体质量的测量仪器,也可用来确定与物体质量相关的其他量的大小,
参数,或特性用我们自己话讲就是测重量的。
**功能描述:
**输入:
**内容:
**输出:
**
**全局变量:
**调用模块:
**
**作者:吴鉴鹰
**日期:14.02.22
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
*******************************************************/
#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#include<math.h>
#defineucharunsignedchar//宏的定义变量类型uchar代替unsignedchar
#defineuintunsignedint//宏的定义变量类型uint代替unsignedint
#definedelay_time_max50//按键去抖动延时阀值
sbitRS=P2^0;
sbitRW=P2^1;
sbitSCLK=P2^2;
sbitLCDRST=P2^3;
sbitST=P3^6;//启动信号
sbitEOC=P3^3;//转换结束信号,连到外部中断1口,转换结束后进入外部中断
sbitOE=P3^7;//输出使能
ucharKEY_VALUE;
ucharkey_data;
uchardis_buf;//显示缓存
uchartemp;
ucharkey;//键顺序码
ucharresult;
uintf;
voiddelay(ucharx);//x*0.14MS
//此表为LED的字模0123456789abcdef
unsignedcharcodeLED7Code[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
unsignedcharADC0809[],KONGBVAI[],DANJIA[];
voidADC0809_change();
/*************************************************************************************
**函数名称:delayms
**功能描述:译码功能,将需要显示的数字转成相应的七段译码表
如要显示的字符为“0”,则为7e---01111111,就中间的一个LED不亮
**输入:ms:需要延时的长度
**
**
**输出:
**
**全局变量:
**调用模块:
**
**作者:吴鉴鹰
**日期:14.02.22
**-----------------------------------------------------------------------------------
**修改人:吴鉴鹰
**日期:
**----------------------------------------------------------------------------------
****************************************************************************************/
voiddelayms(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
/*********************************************************************************
**函数名称:SendByte
**功能描述:串口给液晶发送数据
**输入:Dbyte
**
**
**输出:
**全局变量:
**调用模块:
**
**作者:吴鉴鹰
**日期:14.02.28
************************************************************************************/
voidSendByte(ucharDbyte)
{
uchari;
for(i=0;i<8;i++)
{
SCLK=0;
Dbyte=Dbyte<<1;//左移一位
RW=CY;//移出的位给RW
SCLK=1;
SCLK=0;
}
}
/***********************************************************************************
**函数名称:TransferCom
**功能描述:串口给液晶发送命令
**输入:data0
**
**
**输出:
**全局变量:
**调用模块:
**
**作者:吴鉴鹰
**日期:14.02.28
**********************************************************************************/
voidTransferCom(uchardata0)
{
RS=1;
SendByte(0xf8);//11111ABC,RW(0),RS(1),0
SendByte(0xf0&data0);//高四位
SendByte(0xf0&data0<<4);//低四位(先执行<<)
RS=0;
}
/*******************************************************************************
**函数名称:lcd_mesg
**功能描述:写数据,
**输入:data1
**
**
**输出:
**全局变量:
**调用模块:
**
**作者:吴鉴鹰
**日期:14.02.28
*****************************************************************************/
voidTransferData(uchardata1)
{
RS=1;
SendByte(0xfa);//11111ABC,RW(0),RS(1),0
SendByte(0xf0&data1);//高四位
SendByte(0xf0&data1<<4);//低四位(先执行<<)
RS=0;
}
⑸ 电子秤和计算器有单片机吗
电子秤和计算器可以用单片机实现,但目前广泛使用的方案一般是专用IC,性价比更高。
⑹ 谁能教教我怎么学做电子秤的程序啊 最好给我一个电子秤的程序看着学习
一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以就需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。
二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:
1�6�1地址(如MOV DPTR,#1000H),即地址1000H送入DPTR。
2�6�1方式字或控制字(如MOV TMOD,#3),3即是控制字。
3�6�1常数(如MOV TH0,#10H)10H即定时常数。
4�6�1实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。 理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。
三、P0口、P2口和P3的第二功能用法:初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微片理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常这会导致系统的崩溃。
四、程序的执行过程: 单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。
五、堆栈: 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的浑乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
六、单片机的开发过程: 这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明: ORG 0000H LJMP START ORG 040H START: MOV SP,#5FH ;设堆栈 LOOP: NOP LJMP LOOP ;循环 END ;结束 最后祝你学的愉快!字难打,望能采纳!!O(∩_∩)O谢谢!
⑺ 基于单片机的电子秤可以用哪些芯片作为主控芯片
基于单片机的电子秤主控芯片可以用51单片机、PIC单片机,AVR单片机,现在学51单片机的人是最多的,所以你可以选择51系列单片机,比如STC宏晶单片机就比较适合,当然Atmel的单片机也可以,比如AT89S51,AT89S52等,都具有ISP功能,不用借助编程器来烧录软件了,只用串口或USB口就可以下在线下载程序到单片机,十分方便。选用STC系列的单片机的话,可以选这11系列,也可以选择12系列,当然,从接触到的很多学生使用的开发板上,一般选择的是STC89XXX单片机,也是可以的。
⑻ 单片机自带AD读取电子秤
你需要有一个标准的砝码作为参照,例如50克的,放50克砝码到传感器上,用单片机读取AD值,然后作为50g的参考值,去计算其它的重量。
⑼ 请问谁有用过合泰的BH66F2650芯片,请问有参考电路吗
BH66F2650/BH66F2660 体脂秤 Flash单片机
BH66F2650/BH66F2660供应商:拍明芯城
该系列单片机专为八电极AC 体脂秤应用设计。体脂测量是通过使用一个八电极AC
电流流经所测人体,并依据此电流计算出体脂数值的技术实现的,其专用电路包含一个体重测量电路及一个脂肪测量电路。体重测量电路通过外部负载电池输出一个信号,经运算放大器放大后进入A/D
转换器进行转换,所读得的相应值即为计算后得到的体重值。脂肪测量电路使用一个AC 电流通过电极片流过人体,由内部运算放大器对其放大后进入A/D
转换器进行转换,所得到的值代表人体的阻抗,该数值用于计算相应的体脂值。
该系列单片机是一款 I/O 型具有 8-bit 高性能精简指令集且内置一个多通道24-bit Delta Sigma A/D 转换器的 Flash
单片机,专门为需直接连接至模拟信号且要求低噪声,高精度的模拟 / 数字转换器的应用而设计。该系列单片机具有一系列功能和特性,其Flash
存储器可多次编程的特性给用户提供了极大的方便。存储器方面,还包含了一个 RAM 数据存储器和一个可用于存储序号、校准数据等非易失性数据的 True EEPROM
存储器。
在模拟特性方面,这款单片机包含一个多通道 24-bit Delta Sigma A/D 转换器、PGA、LDO
以及其它专为体脂秤应用所设计的电路。其具有多个使用灵活的定时器模块,可提供定时功能、脉冲产生功能及 PWM 产生功能。内建完整的 SPI、I2C 和 UART
接口功能,为设计者提供了一个易与外部硬件通信的接口。内部看门狗定时器、低电压复位和低电压检测等内部保护特性,外加优秀的抗干扰和 ESD
保护性能,确保单片机在恶劣的电磁干扰环境下可靠地运行。
该系列单片机提供了丰富的内外和高低振荡器功能选项,两个内部振荡器无需外围元器件。其在不同工作模式之间动态切换的能力,为用户提供了一个优化单片机操作和减少功耗的手段。
该系列单片机还包含一个乘除法单元。外加 I/O
使用灵活、定时器模块和其它特性使得单片机能在外接少量元器件的情况下即可实现应用,从而减少费用及电路板大小。
CPU 特性
工作电压
fSYS= 4MHz: 2.2V~5.5V
fSYS= 8MHz: 2.2V~5.5V
fSYS=12MHz: 2.7V~5.5V
fSYS=16MHz: 3.3V~5.5V
VDD=5V,系统时钟为 16MHz 时,指令周期为 0.25μs
提供暂停和唤醒功能,以降低功耗
4 种振荡模式:
- 内部高频 RC – HIRC
- 外部 32.768kHz晶振 – LXT
- 外部高频晶振 – HXT
- 内部 32kHz RC – LIRC
多种工作模式:快速、低速、空闲和休眠
内建 4MHz、8MHz 和 12MHz 振荡器,无需外部元件
所有指令都可在 1~3 个指令周期内完成
查表指令
115 条功能强大的指令系统
8 层堆栈
位操作指令
周边特性
Flash程序存储器:8K×16~16K×16
RAM数据存储器:256×8~1024×8
True EEPROM 存储器:64×8~256×8
看门狗定时器功能
在应用编程功能 – IAP
多达 28 个双向 I/O 口
具有两组差分输入或 4 个单端通道的 24-bit Delta Sigma A/D转换器
两个引脚与外部中断口共用
多个定时器模块用于时间测量、捕捉输入、比较匹配输出、PWM 输出及单脉冲输出
串行接口模块 – SIM,用于 SPI 或 I2C通信
SPIA 串行接口
UART 模块,可用于全双工异步通信
双时基功能,可提供固定时间的中断信号
低电压复位功能 – LVR
低电压检测功能 – LVD
体脂秤电路
内建 16 位乘除法单元
封装类型:48-pin LQFP
⑽ 单片机的智能电子秤设计
需要 传感器,AD转换芯片或带AD功能的单片机,LCD显示器或其他显示器等