找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2164|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

網(wǎng)上看的單片機(jī)電子秤程序,有幾點(diǎn)疑問請(qǐng)教各位大神

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:686513 發(fā)表于 2022-4-27 19:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這段就是電子秤的標(biāo)定程序,原理我是懂了,主要是保存兩個(gè)坐標(biāo)值到EEPROM,這段程序他是做到主程序里了,并加兩個(gè)獨(dú)立按鍵用于校準(zhǔn)但有兩個(gè)問題沒弄明白:問題1:這段程序我能不能獨(dú)立出來,放進(jìn)24C02里, 要校準(zhǔn)時(shí)我外接24CO2校準(zhǔn)?  問題2:這兩個(gè)獨(dú)立按鍵能不能省掉,用開機(jī)鍵和去皮鍵共用?另外關(guān)于壓力傳感器的標(biāo)定程序網(wǎng)上資料很少,哪位大神對(duì)這方面有研究或有這方面的資料能分享一下嗎?在這里先謝謝了!

單片機(jī)源程序如下:
while(1)
        {
                if(Key_1)//去皮后的值保存到EEPROM里面,必須在5V環(huán)境下 校準(zhǔn)專用
                {
                        Key_1 = 0;
                        LED2 = 0;//燈亮
                        Main_Loop = 10;
                        while(Main_Loop--)
                                Tare = Read_18Bit_AD();//讀取出CS1237的數(shù)據(jù),5V情況下
                        Main_Loop = 10;
                        while(Main_Loop--)
                                BGA_EEPROM = Get_BGA();//在5V供電情況下,保存BGA參數(shù)
                        Wr_20_Long(0XD3B8,EEROM_20Long);//保存數(shù)據(jù)到EEPROM
                        LED2 = 1;//關(guān)燈
                }
               
                if(Key_2)//放上一個(gè)500g砝碼,用于校準(zhǔn)誤差,必須在5V供電環(huán)境下
                {
                        Key_2 = 0;
                        LED2 = 0;//燈亮
                        Main_Loop = 10;
                        while(Main_Loop--)
                                Weight_500g = Read_18Bit_AD();//讀取出500G的數(shù)據(jù)
                        Weight_Coe = Weight_500g -  Tare;//除去皮重的ADC數(shù)值
                        Weight_Coe = 500000 / Weight_Coe;//放大1000倍的斜率
                        Tare_Coe = Weight_Coe * Tare;//皮重的重量,放大1000倍之后的
                        Wr_20_Long(0XD3B8,EEROM_20Long);//保存數(shù)據(jù)到EEPROM
                        LED2 = 1;
                }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2022-4-27 19:50 | 只看該作者
按鍵當(dāng)然可以省,但是你要如何操作才能把去皮、開機(jī)和校準(zhǔn)功能都給實(shí)現(xiàn)呢?我感覺硬件去掉兩個(gè)鍵,軟件復(fù)雜度要增加10倍。
回復(fù)

使用道具 舉報(bào)

板凳
ID:686513 發(fā)表于 2022-4-27 21:35 | 只看該作者
Hephaestus 發(fā)表于 2022-4-27 19:50
按鍵當(dāng)然可以省,但是你要如何操作才能把去皮、開機(jī)和校準(zhǔn)功能都給實(shí)現(xiàn)呢?我感覺硬件去掉兩個(gè)鍵,軟件復(fù)雜 ...

這個(gè)例程中的key1 和key2鍵就是標(biāo)定使用,其它時(shí)間不用!我想用開機(jī)和去皮鍵代替這兩個(gè)鍵標(biāo)定。
回復(fù)

使用道具 舉報(bào)

地板
ID:123289 發(fā)表于 2022-4-28 12:42 | 只看該作者
CPU讀到的是電壓值V,輸出的是重量W,就必須有一個(gè)V-W的表或公式。
程序只要根據(jù)讀的的V,經(jīng)公式計(jì)算或查表就可以得到對(duì)應(yīng)的W值。
通常用表比較方便。
你當(dāng)然可以將這個(gè)V-W轉(zhuǎn)換表放進(jìn)24C02里,屆時(shí)你只要會(huì)從24C02取表查尋就可以了。
如果是公式,直接計(jì)算出結(jié)果就可以了。其它就不必了。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2022-4-28 12:47 來自觸屏版 | 只看該作者
加長短按檢測(cè)就可以了~
回復(fù)

使用道具 舉報(bào)

6#
ID:514901 發(fā)表于 2022-4-28 17:42 | 只看該作者
用不同重量砝碼多次測(cè)量記錄AD值,用MATLAB算出曲線公式
回復(fù)

使用道具 舉報(bào)

7#
ID:686513 發(fā)表于 2022-4-29 09:22 | 只看該作者
yzwzfyz 發(fā)表于 2022-4-28 12:42
CPU讀到的是電壓值V,輸出的是重量W,就必須有一個(gè)V-W的表或公式。
程序只要根據(jù)讀的的V,經(jīng)公式計(jì)算或查 ...

可能我表達(dá)的不清楚,我現(xiàn)在是用公式y(tǒng)=kx+b計(jì)算的,這個(gè)傳感器是線性的,只要我用兩個(gè)按鍵按下,在這條斜線上取兩點(diǎn)求斜率就行了,上面例程是取兩點(diǎn)的數(shù)據(jù)保存在EEPROM里,主程序的功能我都寫好了,按鍵按下顯示按鍵的值,不按閃三秒就返回顯示實(shí)時(shí)壓力值。如果在不動(dòng)或不影響主程序的情況下實(shí)現(xiàn)標(biāo)定,兩個(gè)方案:A.直接外接一個(gè)24c02加組合按鍵來實(shí)現(xiàn),并實(shí)時(shí)顯示標(biāo)定的兩個(gè)點(diǎn)的AD值。B.如例程一樣,直接把這個(gè)標(biāo)定程序放進(jìn)main函數(shù)里,但這種方式我嘗試過,會(huì)出現(xiàn)兩個(gè)問題:1.不能顯示兩個(gè)點(diǎn)的AD值,顯示時(shí)會(huì)和主程序要顯示的內(nèi)容沖突(例程序是用兩個(gè)小燈指示解決)。2.組合鍵或單按鍵都不能把這兩點(diǎn)值保存到EEPROM(其它按鍵如加減可以把加減的數(shù)字保存到EEPROM)不是很明白!
回復(fù)

使用道具 舉報(bào)

8#
ID:686513 發(fā)表于 2022-4-29 09:24 | 只看該作者
鄭漢松 發(fā)表于 2022-4-28 17:42
用不同重量砝碼多次測(cè)量記錄AD值,用MATLAB算出曲線公式

可能我表達(dá)的不清楚,我現(xiàn)在是用公式y(tǒng)=kx+b計(jì)算的,這個(gè)傳感器是線性的,只要我用兩個(gè)按鍵按下,在這條斜線上取兩點(diǎn)求斜率就行了,上面例程是取兩點(diǎn)的數(shù)據(jù)保存在EEPROM里,主程序的功能我都寫好了,按鍵按下顯示按鍵的值,不按閃三秒就返回顯示實(shí)時(shí)壓力值。如果在不動(dòng)或不影響主程序的情況下實(shí)現(xiàn)標(biāo)定,兩個(gè)方案:A.直接外接一個(gè)24c02加組合按鍵來實(shí)現(xiàn),并實(shí)時(shí)顯示標(biāo)定的兩個(gè)點(diǎn)的AD值。B.如例程一樣,直接把這個(gè)標(biāo)定程序放進(jìn)main函數(shù)里,但這種方式我嘗試過,會(huì)出現(xiàn)兩個(gè)問題:1.不能顯示兩個(gè)點(diǎn)的AD值,顯示時(shí)會(huì)和主程序要顯示的內(nèi)容沖突(例程序是用兩個(gè)小燈指示解決)。2.組合鍵或單按鍵都不能把這兩點(diǎn)值保存到EEPROM(其它按鍵如加減可以把加減的數(shù)字保存到EEPROM)不是很明白!
回復(fù)

使用道具 舉報(bào)

9#
ID:686513 發(fā)表于 2022-4-29 09:27 | 只看該作者
Hephaestus 發(fā)表于 2022-4-27 19:50
按鍵當(dāng)然可以省,但是你要如何操作才能把去皮、開機(jī)和校準(zhǔn)功能都給實(shí)現(xiàn)呢?我感覺硬件去掉兩個(gè)鍵,軟件復(fù)雜 ...

是的,我現(xiàn)在打算不省這兩個(gè)按鍵或用組合鍵(如up+unit和down=unit)來取這兩點(diǎn),不知道可行不?
回復(fù)

使用道具 舉報(bào)

10#
ID:686513 發(fā)表于 2022-4-29 09:32 | 只看該作者
lkc8210 發(fā)表于 2022-4-28 12:47
加長短按檢測(cè)就可以了~

一開始我也是這樣處理的,但這種會(huì)出現(xiàn)誤操作把斜率系數(shù)改變掉!還有就是我按上面的例程總是保存和顯示這兩個(gè)AD值,(按下按鍵1顯示0點(diǎn)的AD值并保存,按下按鍵2顯示500g的AD值并保存)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表