小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于Arduino和24位AD轉換模塊HX711的重量稱量實驗|我愛單片機

 開啟美好每一天 2013-12-24
 以前在X寶上買過一個稱重放大器,180+大洋。原理基本上就是把橋式拉力傳感器輸出的mV級信號放大到5V供單片機讀取。連接實驗電路的時候很完美,能實現重量的轉換,但是實際組裝后卻發(fā)現這種A/A模塊受到的干擾太嚴重了,包括電源的干擾,導線長短的干擾,導線位置變化的干擾,無線電的干擾等等等等……實在是惱人。

后來感覺是思路錯誤了,就不該用模擬信號來傳輸,于是決定使用A/D模塊來把重量轉換成數字信號傳輸,A/D模塊就固定在離傳感器最近的地方,將輸出的數字信號用導線傳輸給單片機,這樣能很大程度減小各種干擾。

在網上搜了一下A/D模塊,基本上有兩種廉價成品:HX711和PCF8591,它們分別是8位轉換模塊和24位轉換模塊。
PCF8591:


功能簡介: 基于I2C接口的AD/DA轉換模塊,8位精度,四通道AD,單通道DA,電壓輸出型
最大特點: 1. 支持兩種接口類型接入目標板:排針或排座
           2. 支持I2C總線級聯(通過排針、排座對接的方法,可同時使用多個I2C模塊)
典型應用: 低速AD/DA轉換
主要資源: PCF8591,I2C接口排針,I2C接口排座,可調電阻,AD輸入口,DA輸出口,地址跳線端口

HX711:


模塊工作電壓:4.8-5.5v
典型電流 1.6mA
體積:長 2.9cm * 寬 1.7cm * 高 0.4cm
● 帶金屬屏蔽,強抗干擾,預留MCU(STC15F104)位置,可自行升級二次開發(fā)。
● 兩路可選擇差分輸入
● 片內低噪聲可編程放大器,可選增益為32、64 和128
● 片內穩(wěn)壓電路可直接向外部傳感器和芯片內A/D 轉換器提供電源
● 片內時鐘振蕩器無需任何外接器件,必要時也可使用外接晶振或時鐘
● 上電自動復位電路
● 簡單的數字控制和串口通訊:所有控制由管腳輸入,芯片內寄存器無需編程
● 可選擇10Hz 或80Hz 的輸出數據速率
● 同步抑制50Hz 和60Hz 的電源干擾
● 耗電量(含穩(wěn)壓電源電路):
典型工作電流:< 1.7mA, 斷電電流:< 1μA
● 工作電壓范圍:2.6 ~ 5.5V
● 工作溫度范圍:-20 ~ +85℃








===============================我叫分割線=================================






我要使用的拉力傳感器為傳統(tǒng)的橋式傳感器,量程1kg,想要達到1g的精度,這就要求模塊輸出位數至少為10位(2^10=1024),8位的PCF8591無法勝任,因為它的精度只有2^8=256位。所以決定使用HX711作為我的A/D模塊,而且我選的HX711模塊還帶屏蔽殼,正符合我的要求。


先來看一下該模塊的常用接法:


模擬輸入
通道 A 模擬差分輸入可直接與橋式傳感器的差分輸出相接。由于橋式傳感器輸出的信號較小,為了充分利用A/D 轉換器的輸入動態(tài)范圍,該通道的可編程增益較大,為128 或64。這些增益所對應的滿量程差分輸入電壓分別±20mV 或±40mV。

通道B 為固定的32 增益,所對應的滿量程差分輸入電壓為±80mV。通道B 應用于包括電池在內的系統(tǒng)參數檢測。

供電電源
數字電源(DVDD)應使用與MCU 芯片相同的的數字供電電源。HX711 芯片內的穩(wěn)壓電路可同時向 A/D 轉換器和外部傳感器提供模擬電源。穩(wěn)壓電源的供電電壓(VSUP)可與數字電源(DVDD)相同。穩(wěn)壓電源的輸出電壓值(VAVDD)由外部分壓電阻R1、R2 和芯片的輸出參考電壓VBG 決定(圖1),VAVDD=VBG(R1+R2)/R2。應選擇該輸出電壓比穩(wěn)壓電源的輸入電壓(VSUP)低至少100mV。
如果不使用芯片內的穩(wěn)壓電路,管腳VSUP應連接到DVDD 或AVDD 中電壓較高的一個管腳上。管腳VBG 上不需要外接電容,管腳VFB 應接地,管腳BASE 為無連接。時鐘選擇如果將管腳 XI 接地,HX711 將自動選擇使用內部時鐘振蕩器,并自動關閉外部時鐘輸入和晶振的相關電路。這種情況下,典型輸出數據速率為10Hz 或80Hz。如果需要準確的輸出數據速率,可將外部輸入時鐘通過一個20pF 的隔直電容連接到XI管腳上,或將晶振連接到XI 和XO 管腳上。這種情況下,芯片內的時鐘振蕩器電路會自動關
閉,晶振時鐘或外部輸入時鐘電路被采用。此時,若晶振頻率為11.0592MHz, 輸出數據速率為準確的10Hz 或80Hz。輸出數據速率與晶振頻率以上述關系按比例增加或減少。使用外部輸入時鐘時,外部時鐘信號不一定需要為方波。可將MCU 芯片的晶振輸出管腳上的時鐘信號通過20pF 的隔直電容連接到XI管腳上,作為外部時鐘輸入。外部時鐘輸入信號的幅值可低至150mV。

串口通訊
串口通訊線由管腳PD_SCK 和DOUT 組成,用來輸出數據,選擇輸入通道和增益。當數據輸出管腳DOUT 為高電平時,表明
A/D 轉換器還未準備好輸出數據,此時串口時鐘輸入信號PD_SCK 應為低電平。當DOUT 從高電平變低電平后,PD_SCK 應輸入25 至27 個不等的時鐘脈沖(圖二)。其中第一個時鐘脈沖的上升沿將讀出輸出24 位數據的最高位(MSB),直至第24 個時鐘脈沖完成,24 位輸出數據從最高位至最低位逐位輸出完成。第25至27 個時鐘脈沖用來選擇下一次A/D 轉換的輸入通道和增益,參見表三。


PD_SCK 脈沖數輸入通道 增益



時序圖

PD_SCK 的輸入時鐘脈沖數不應少于25 或多于27,否則會造成串口通訊錯誤。當A/D 轉換器的輸入通道或增益改變時,A/D 轉換器需要4 個數據輸出周期才能穩(wěn)定。DOUT 在4 個數據輸出周期后才會從高電平變低電平,輸出有效數據。






==============================我也是分割線================================


好了,看了這么多原理很多人一定已經暈了,下面來簡單的:HX711在Arduino上的使用!


經過各種搜索,僅僅在Google Project上找到了一個 phk@FreeBSD.ORG 寫的 Arduino 庫(感謝啊?。?,功能很完善,而且支持多版本的Arduino。

我備份在這里吧,以免以后找不到:

再來看一下接線:

1. VCC 可以是 2.6-5.5 中的任意值,因為我們使用的是 Arduino ,所以直接5V供電,GND 接地。
2. SCK 接 Arduino 的 Pin 9,DT 接 Pin10,這兩個接腳可以在程序中改變。
3. E+、E-、A+ 和 A- 分別接橋式傳感器的:激勵電壓正、負,輸出電壓正、負
  (E+ 接紅線;E- 接黑線;A+ 接綠或藍線;A- 接白線)。
4. B+ 和 B- 接通道B的傳感器,也可以通過分壓電路接電源,用來檢測電源電壓。不用的話最好接GND,不過我試驗不接也沒問題。



在 Arduino 中打開示例代碼,可以看到非常簡單:
  1. #include <HX711.h> // 包含庫的頭文件
  2. HX711 hx(9, 10); // 數據接腳定義
  3. void setup() {
  4. Serial.begin(9600);
  5. }
  6. void loop()
  7. {
  8. double sum = 0; // 為了減小誤差,一次取出10個值后求平均值。
  9. for (int i = 0; i < 10; i++) // 循環(huán)的越多精度越高,當然耗費的時間也越多
  10. sum += hx.read(); // 累加
  11. Serial.println(sum/10); // 求平均值進行均差
  12. }

給的示例程序非常簡單,但是我查看庫中含有很多示例沒有給出的函數:
  1. HX711(byte sck, byte dout, byte amp = 128, double co = 1); // 定義 sck、dout 接腳,增益倍數(默認128)和修正系數(默認1)
  2. void set_amp(byte amp); // 改變增益倍數和對應的通道,至少調用一次 read() 后起作用
  3. bool is_ready(); // 返回 hx711 是否可用,在 read() 函數中會被調用
  4. long read(); // 返回傳感器電壓值,如果 hx711 不可用則程序會暫停在此函數
  5. double bias_read(); // 返回:(read() - 偏移值) * 修正系數
  6. void tare(int t = 10); // 將皮重添加到偏移值,影響每次 read(); 的調用
  7. void set_co(double co = 1); // 修改修正系數(默認為1)
  8. void set_offset(long offset = 0); // 修改偏移值(默認為0)

可以看到,HX711還可以使用四參數方式定義,同時指定增益倍數及修正系數。在程序運行中還可以隨時改變增益倍數,修正系數以及利用偏移值實現去皮重等功能,非常實用。


這里唯一需要解釋的是第一個函數,
  1. HX711 hx(9, 10); // 這樣用說明只定義SCK和DOUT接腳,AMP默認使用A通道的128位增益,修正系數默認為1;
  2. HX711 hx(9, 10, 64); // 這樣用說明定義SCK和DOUT接腳,AMP使用A通道的64增益,修正系數默認為1;
  3. HX711 hx(9, 10, 32, 1.4); // 這樣用說明定義SCK和DOUT接腳,AMP使用B通道的32位增益,修正系數為1.4;



這里有關通道和增益倍數的選擇,資料中已經提及過,A通道只有128和64位兩種增益倍數,對應滿載電壓為 20mV 和 40mV,B通道只有固定的32位增益倍數,滿載電壓為 80mV,使用時各個通道輸入電壓不要超過對應增益倍數的滿載電壓。當然,程序中額可以隨時切換增益倍數和通道,使用set_amp(amp)函數即可,當然,amp 的值只能是 128、64或32。
再強調一句,如果增益倍數選擇32位增益,那么讀出的數據就是B通道的。




==============================我真的是分割線================================



下面寫一個具體應用示例:
我選擇的傳感器參數如下:
滿量程輸出電壓=激勵電壓x靈敏度1.0mV/V
例如:供電電壓是5V乘以靈敏度1.0mV/V=滿量程5mV

實際上我選用的這個模塊,當電源電壓是5V時,供給傳感器的供電電壓是4V,于是我的傳感器滿量程電壓為4mV。
這樣我就完全可以選擇增益倍數最高的A通道128位增益來得到最高的精度。

電子稱連接圖示:


圖中綠色的為HX711模塊,右下角為Arduino UNO,吊臂上掛著的就是橋式傳感器(我連接的方式為懸吊式測拉力值),AD模塊與傳感器間的電線越短越好,過長的話會受到各種干擾,AD模塊與Arduino之間的連線最好也不要超過30cm,如果必須加長的話,可以考慮使用帶電磁屏蔽的線以及信號放大器。

首先使用庫自帶的例子測試一下,可以看到懸掛上1kg砝碼以及托盤等部件后得到的值為:
  1. 1315588.75
  2. 1315597.75
  3. 1315607.37
  4. 1315606.75
  5. 1315604.75
  6. 1315589.62
  7. 1315579.62
  8. 1315594.25
  9. 1315588.75
  10. 1315580.25
  11. 1315589.00
  12. 1315584.25
  13. 1315605.50
  14. 1315596.12
  15. 1315592.25
  16. 1315607.75
  17. 1315585.75
  18. 1315582.87
  19. 1315568.75
  20. 1315574.75
  21. 1315578.00
  22. 1315583.12
  23. 1315604.62
  24. 1315573.50
  25. 1315584.25


去掉一個500g砝碼后值為:
  1. 742865.50
  2. 742847.87
  3. 742869.00
  4. 742879.12
  5. 742873.68
  6. 742858.81
  7. 742867.81
  8. 742843.37
  9. 742862.18
  10. 742844.87
  11. 742856.50
  12. 742834.31
  13. 742831.31
  14. 742825.12
  15. 742842.31
  16. 742821.31
  17. 742816.12
  18. 742846.00
  19. 742844.00
  20. 742826.87
  21. 742818.12
  22. 742812.87
  23. 742807.18
  24. 742835.00


可以粗略的計算:
1315500 - 742800 = 572700
所以修正系數大概為: 500 / 572700 = 0.00087305
那么程序就可以寫成(這時可以適當的減小些讀取速度,增加個delay,比如讓程序半分鐘一讀?。?div>復制代碼
  1. #include <HX711.h>
  2. HX711 hx(9, 10, 128, 0.00087305);
  3. void setup() {
  4. Serial.begin(9600);
  5. }
  6. void loop() {
  7. delay(500);
  8. double sum = 0;
  9. for (int i = 0; i < 10; i++)
  10. sum += hx.read();
  11. Serial.println(sum/10);
  12. }


編譯寫入Arduino后,將砝碼全部取下,僅保留稱體,得到結果是:
  1. 169640.70
  2. 169632.59
  3. 169632.90
  4. 169640.90
  5. 169632.79
  6. 169623.59
  7. 169649.79
  8. 169610.40
  9. 169615.20
  10. 169659.40
  11. 169619.90
  12. 169624.79
  13. 169614.79
  14. 169624.29
  15. 169617.79
  16. 169629.20
  17. 169604.00
  18. 169617.50
  19. 169628.20
  20. 169589.40
  21. 169602.29
  22. 169598.40
  23. 169596.40
  24. 169604.00
  25. 169612.40
  26. 169592.20


說明偏移值近似為 169600,那么我們在setup中調用偏移值的函數(使用bias_read()讀取帶修正系數及偏移值的讀數,與read()對比作參考):
  1. #include <HX711.h>
  2. HX711 hx(9, 10, 128, 0.00087305);
  3. void setup() {
  4. Serial.begin(9600);
  5. hx.set_offset(169600);
  6. }
  7. void loop() {
  8. delay(500);
  9. double sum0 = 0;
  10. double sum1 = 0;
  11. for (int i = 0; i < 10; i++) {
  12. sum0 += hx.read();
  13. sum1 += hx.bias_read();
  14. }
  15. Serial.print(sum0/10);
  16. Serial.print(" ");
  17. Serial.println(sum1/10);
  18. }



這時讀出的數據變?yōu)椋?div>復制代碼
  1. 169615.20 0.01
  2. 169616.70 0.02
  3. 169613.40 0.02
  4. 169636.50 0.03
  5. 169620.70 0.02
  6. 169638.09 0.04
  7. 169625.29 0.02
  8. 169620.50 0.02
  9. 169612.29 0.01
  10. 169609.79 0.01
  11. 169624.40 0.02
  12. 169625.20 0.02
  13. 169630.00 0.03
  14. 169628.29 0.03
  15. 169606.29 0.00
  16. 169617.79 0.02
  17. 169637.90 0.03
  18. 169603.70 0.00
  19. 169605.29 0.01
  20. 169636.50 0.03


然后再放上500g砝碼查看一下數據:
  1. 742492.68 500.16
  2. 742499.81 500.17
  3. 742503.81 500.17
  4. 742505.18 500.18
  5. 742507.18 500.17
  6. 742499.31 500.17
  7. 742499.50 500.17
  8. 742512.37 500.18
  9. 742521.87 500.19
  10. 742497.87 500.17
  11. 742518.12 500.18
  12. 742518.81 500.18
  13. 742520.87 500.19
  14. 742520.68 500.19
  15. 742530.18 500.20
  16. 742532.87 500.20
  17. 742543.00 500.20
  18. 742540.12 500.21
  19. 742517.00 500.19


再放上一個500g砝碼試試:
  1. 1315286.75 1000.25
  2. 1315304.62 1000.25
  3. 1315296.62 1000.25
  4. 1315302.25 1000.26
  5. 1315302.12 1000.26
  6. 1315294.25 1000.25
  7. 1315310.00 1000.26
  8. 1315277.37 1000.24
  9. 1315283.75 1000.24
  10. 1315280.25 1000.23
  11. 1315286.75 1000.24
  12. 1315293.25 1000.25
  13. 1315309.87 1000.26
  14. 1315299.50 1000.25
  15. 1315307.12 1000.26
  16. 1315304.50 1000.25
  17. 1315301.50 1000.25
  18. 1315296.75 1000.25
  19. 1315284.50 1000.23
  20. 1315284.37 1000.24
  21. 1315308.75 1000.26
  22. 1315291.62 1000.25
  23. 1315312.75 1000.26
  24. 1315312.25 1000.26


可以看到第一位小數發(fā)生了大概0.2的變化,這說明我們粗略取的修正系數還不夠精確,但是完全符合1g精度的要求。

接下來就是完善程序,增加去皮重的功能了,在Arduino上接一個按鈕,為了阻止電磁干擾發(fā)生誤判斷,我采用了常輸出高電平的按鈕,當按下按鈕的時候輸出低電平,按鈕接在 4 號口上:
  1. #include <HX711.h>
  2. HX711 hx(9, 10, 128, 0.00087305);
  3. void setup() {
  4. Serial.begin(9600);
  5. hx.set_offset(169600);
  6. }
  7. void loop() {
  8. if(digitalRead(4) == LOW) hx.tare();
  9. double sum0 = 0;
  10. double sum1 = 0;
  11. for (int i = 0; i < 10; i++) {
  12. sum0 += hx.read();
  13. sum1 += hx.bias_read();
  14. }
  15. Serial.print(sum0/10);
  16. Serial.print(" ");
  17. Serial.println(sum1/10);
  18. }


這樣每次按下按鈕的時候就可以去皮重了。




============================不要懷疑我是分割線=============================




去皮重也實現了,可是最求完美的我發(fā)現每次掉電后都要重新設置皮重,很是麻煩,于是決定將皮重信息存到EEPROM中保存,這樣每次上電后就會自動讀取存儲的皮重信息,從0點開始稱量了!

看了一下 HX711 的庫,在去皮重的時候只需調用 hx.tare();,tare() 函數內容如下:
  1. void HX711::tare(int t) {
  2. double sum = 0;
  3. for (int i = 0; i < t; i++) {
  4. sum += read();
  5. }
  6. set_offset(sum / t);
  7. }


里面又調用了 read() 和 set_offset(),read() 不用看了,就是讀取一次不帶修正系數和偏移量的傳感器數據。set_offset() 如下:
  1. void HX711::set_offset(long offset) {
  2. OFFSET = offset;
  3. }


僅僅是把偏移量賦值給OFFSET,而OFFSET會在 bias_read() 中起作用:
  1. double HX711::bias_read() {
  2. return (read() - OFFSET) * COEFFICIENT;
  3. }


也就是說,我們在調用 tare() 的時候如果能返回 OFFSET 值就可以存儲它用作去皮重了。
不幸的是,HX711庫并不允許我們這么做。也許有人要說了,那就調用 tare() 后  再調用一次 read() 來獲取 OFFSET唄。這樣可不行,首先調用 tare() 的時候本身就會調用 10 次 read() 并求平均值作為 OFFSET 來使用,我們再調用一次 read() 讀出的數既不是之前那個平均值,精度也不如前面的平均值高,就算再求一次 10個 數的平均值,也得不到之前那個 OFFSET了,精度會大打折扣的。

看來唯一的辦法就是自己手動改一下 HX711 的庫,讓它在調用 tare() 的時候直接返回個 OFFSET,這樣就解決了我們的需求。為了和官方庫區(qū)分,我們改一下庫的名字,將 HX711 庫文件夾復制一份改名為 HX711A ,然后將 HX711.cpp 改為 HX711A.cpp,同樣 HX711.h 改為 HX711A.h。然后打開 HX711A.cpp 和 HX711A.h,作出修改。改動如下:

HX711A.cpp:
  1. #include <HX711.h> -> #include <HX711A.h>
  2. void HX711::tare(int t) { - > double HX711::tare(int t) {
  3. 并在 tare 函數結尾加入: return sum / t;


HX711A.h:
  1. #ifndef HX711_H -> #ifndef HX711A_H
  2. #define HX711_H -> #define HX711A_H
  3. void tare(int t = 10); -> double tare(int t = 10);


這樣在調用 tare() 的時候就可以返回 OFFSET 值了,我們存儲 OFFSET值就可以了。
可是新的問題又出現了,OFFSET 值是 double 類型的,而我們 Arduino 提供的 EEPROM 庫一次僅能存儲1個 char 類型數據。于是上網查資料,發(fā)現弘版有個帖子提到了多類型存儲,可是相應的庫編譯后有點龐大,還是自己解決吧,寫了個共用體實現的double類型存儲:
  1. #include <EEPROM.h>
  2. union data {
  3. double v;
  4. unsigned char dchar[8];
  5. } dvalue;
  6. void setup() {
  7. Serial.begin(9600);
  8. //數據拆分
  9. dvalue.v = 169600.00;
  10. unsigned char *dpointer;
  11. dpointer = dvalue.dchar;
  12. for(int i = 0; i < 8; i++) {
  13. EEPROM.write(i,*dpointer);
  14. dpointer++;
  15. }
  16. }
  17. void loop()
  18. {
  19. //數據還原
  20. for(int i = 0; i < 8; i++) dvalue.dchar[i] = EEPROM.read(i);
  21. Serial.println(dvalue.v);
  22. delay(1000);
  23. }




另外,經過查詢資料,橋式傳感器受溫度影響的偏移量也不容忽視,可以在系統(tǒng)中加入溫度傳感器(例如DS18B20),并在計算重量的時候加入線性溫度漂移修正,這里我就不寫溫度相關代碼了,僅給出溫度漂移修正的函數供大家參考:
  1. #include <HX711A.h>
  2. #include <EEPROM.h>
  3. HX711 hx(9, 10, 128, 0.00087305);
  4. int i=0;
  5. // 用于在 EEPROM 中儲存 double 類型數據的共用體
  6. unsigned char *dpointer;
  7. union data {
  8. double v;
  9. unsigned char dchar[8];
  10. } dvalue;
  11. void setup() {
  12. Serial.begin(9600);
  13. for(i = 0; i < 8; i++) dvalue.dchar[i] = EEPROM.read(i); // 從 EEPROM 讀取偏移量
  14. hx.set_offset(dvalue.v); // 設置已讀取的偏移量
  15. }
  16. void loop() {
  17. if(digitalRead(4) == LOW) {
  18. dvalue.v = hx.tare(); // 去皮重并讀取偏移量
  19. hx.set_offset(dvalue.v); // 設置已讀取的偏移量
  20. dpointer = dvalue.dchar; // 以下程序將偏移量分解并儲存到 EEPROM
  21. for(i = 0; i < 8; i++) {
  22. EEPROM.write(i,*dpointer);
  23. dpointer++;
  24. }
  25. }
  26. double sum = 0;
  27. for (i = 0; i < 10; i++) {
  28. sum += hx.bias_read();
  29. }
  30. Serial.println(sum/10);
  31. //Serial.println(sum / 10 * (1 + (20 - temprature) / 10 * 0.02)); // 帶線性溫度補償的輸出,注意temprature單位為攝氏度。
  32. }


============================我分割線又回來啦=============================


最后在增加一個標準500g砝碼校準程序,用長按按鈕來觸發(fā),給出完善后的部分程序(用到了LCD顯示和EEPROM存儲,但是沒給出完整代碼,大家自己發(fā)揮吧)
  1. // 按鈕狀態(tài)判斷
  2. if(digitalRead(switch_pin) == LOW) { // 如果按鈕被按下
  3. switch_len++; // 按下計數
  4. if(switch_len < 15) {
  5. myGLCD.printNumF(15 - switch_len, 0, LEFT, 24); // 按下 5s 以下屏幕倒計時提示
  6. myGLCD.print(" TARE", 12, 24);
  7. }
  8. else {
  9. myGLCD.print("C-500G ", LEFT, 24); // 按下 5s 以上屏幕提示
  10. }
  11. }
  12. else { // 如果按鈕未被按下
  13. // 去皮重并存儲
  14. if(switch_len > 1 && switch_len < 15) { // 如果按鈕被按下 5s 以下
  15. ofs = hx.tare(); // 去皮重并讀取偏移值
  16. hx.set_offset(ofs); // 設置偏移值
  17. romwrite(1, ofs); // 將偏移值保存到 EEPROM
  18. }
  19. // 修正系數校正
  20. if(switch_len >= 15) // 如果按鈕被按下 5s 以上
  21. {
  22. cof = 500.0 / (hx.readt() - ofs); // 讀取傳感器值并計算 500g 砝碼對應的修正系數
  23. hx.set_co(cof); // 設置修正系數
  24. romwrite(9, cof); // 將修正系數保存到 EEPROM
  25. }
  26. switch_len = 0; // 吸合計數歸零
  27. }






此外,程序可以增加的功能還有:
1.LCD顯示。
2.鍵盤輸入及語音功能。
3.數據定時存儲與電腦通訊功能。

這幾個功能我就不再研究了,都不難,留給各位自己發(fā)揮的空間吧

全文完

By shenhaiyu
2012.11.03

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多