樓主啊,這個項目可是個大工程啊,放到大學,可以算是畢業設計了,我在此簡單地說說吧.
首先,秤盤先把重量轉成電壓(這個步驟是感測器的活)電壓經過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顯示器或其他顯示器等