久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4825|回復: 20
打印 上一主題 下一主題
收起左側

STC單片機ADC差分采樣或輪詢采樣程序如何編寫?

  [復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 zhth1979 于 2022-1-4 08:52 編輯

STC  ADC輪詢采樣例程有嗎?  采用的傳感器是壓阻式壓力傳感器,共四個腳,供電:一個正一個負,兩個輸出:一個正極輸出,一個負極輸出。有氣壓時,測量兩個輸出腳為0到60mV的變化。原有電路這兩上輸出腳都分別接在ADC口上。這種情況是不是要分別檢測這兩個腳的值,結果再相減。最好有STC8H3k系列的單片機例程參考。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2021-12-30 23:35 | 只看該作者
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. sfr     ADC_CONTR   =   0xbc;
  4. sfr     ADC_RES     =   0xbd;
  5. sfr     ADC_RESL    =   0xbe;
  6. sfr     ADCCFG      =   0xde;

  7. sfr     P_SW2   =   0xba;
  8. #define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)

  9. sfr     P0M1    =   0x93;
  10. sfr     P0M0    =   0x94;
  11. sfr     P1M1    =   0x91;
  12. sfr     P1M0    =   0x92;
  13. sfr     P2M1    =   0x95;
  14. sfr     P2M0    =   0x96;
  15. sfr     P3M1    =   0xb1;
  16. sfr     P3M0    =   0xb2;
  17. sfr     P4M1    =   0xb3;
  18. sfr     P4M0    =   0xb4;
  19. sfr     P5M1    =   0xc9;
  20. sfr     P5M0    =   0xca;
  21. bit ACD_DN;
  22. void main()
  23. {
  24.     P0M0 = 0x00;
  25.     P0M1 = 0x00;
  26.     P1M0 = 0x00;
  27.     P1M1 = 0x00;
  28.     P2M0 = 0x00;
  29.     P2M1 = 0x00;
  30.     P3M0 = 0x00;
  31.     P3M1 = 0x00;
  32.     P4M0 = 0x00;
  33.     P4M1 = 0x00;
  34.     P5M0 = 0x00;
  35.     P5M1 = 0x00;

  36.     P1M0 = 0x00;                                //設置P1.0為ADC口
  37.     P1M1 = 0x01;
  38.     P_SW2 |= 0x80;
  39.     ADCTIM = 0x3f;                              //設置ADC內部時序
  40.     P_SW2 &= 0x7f;
  41.     ADCCFG = 0x0f;                              //設置ADC時鐘為系統時鐘/2/16
  42.     ADC_CONTR = 0x80;                           //使能ADC模塊

  43.     while (1)
  44.     {
  45.                 if(!ACD_DN)
  46.                 {
  47.                         ADC_CONTR |= 0x40;                      //啟動AD轉換
  48.                         _nop_();
  49.                         _nop_();
  50.                         ACD_DN = 1;
  51.                 }else{
  52.                         if(ADC_CONTR & 0x20)            //查詢ADC完成標志
  53.                         {
  54.                                 ADC_CONTR &= ~0x20;                     //清完成標志
  55.                                 P2 = ADC_RES;                           //讀取ADC結果
  56.                                 ACD_DN = 0;
  57.                         }                       
  58.                 }
  59.                 //Do other thing
  60.     }
  61. }

復制代碼


回復

使用道具 舉報

板凳
ID:313048 發表于 2021-12-31 10:40 | 只看該作者
差分輸入采樣的,可以用單片機自帶的差分采樣去采集,或者通過外圍電路轉為單信號去采集。
回復

使用道具 舉報

地板
ID:401564 發表于 2021-12-31 12:24 | 只看該作者
首先,你計算好沒有?0-60mV的電壓,對應的12位ADC,如果參考電壓是5V,那么ADC的數字量是很少的
推薦用外部ADC,MCP3421這個還行,只是有點慢,但對于壓力傳感器來說,足夠了

回復

使用道具 舉報

5#
ID:686513 發表于 2021-12-31 12:39 | 只看該作者
AUG 發表于 2021-12-31 10:40
差分輸入采樣的,可以用單片機自帶的差分采樣去采集,或者通過外圍電路轉為單信號去采集。

STC8H3k32s2單片機說明書里找了,沒有自帶的差分采樣。
回復

使用道具 舉報

6#
ID:686513 發表于 2021-12-31 12:40 | 只看該作者

這是P1.0查詢一次的結果嗎?
回復

使用道具 舉報

7#
ID:686513 發表于 2021-12-31 12:42 | 只看該作者
Y_G_G 發表于 2021-12-31 12:24
首先,你計算好沒有?0-60mV的電壓,對應的12位ADC,如果參考電壓是5V,那么ADC的數字量是很少的
推薦用外部ADC ...

參考電壓為2.5V,變化是0.3mv一個PSI.
回復

使用道具 舉報

8#
ID:301191 發表于 2021-12-31 16:51 | 只看該作者
頂一下
回復

使用道具 舉報

9#
ID:130230 發表于 2021-12-31 17:59 | 只看該作者
你要用差分輸入的引腳才可以,不是為了求差。差分是為了抑制干擾,你概念理解錯了。
回復

使用道具 舉報

10#
ID:624769 發表于 2021-12-31 18:09 | 只看該作者
zhth1979 發表于 2021-12-31 12:42
參考電壓為2.5V,變化是0.3mv一個PSI.

2.5v 參考電壓, 即2500mv, 0.3mv 變化即約  1/8333 的差異, 12位ADC 滿量程則為 4096,可以區分 1/4096 的變化差異, 硬件上就滿足不了,你也不需要考慮軟件如何實現了。
回復

使用道具 舉報

11#
ID:401564 發表于 2021-12-31 18:53 | 只看該作者
zhth1979 發表于 2021-12-31 12:42
參考電壓為2.5V,變化是0.3mv一個PSI.

就算是0.3mV一個位,那不也就200個數字量而已嗎?那就是說,你不管是測量什么,最大量程只能是0-199,個人感覺這沒啥用
如果一定要用這個方案,個人推薦參考電壓使用2.048V,不要用2.5V
回復

使用道具 舉報

12#
ID:686513 發表于 2022-1-3 10:50 | 只看該作者
Y_G_G 發表于 2021-12-31 18:53
就算是0.3mV一個位,那不也就200個數字量而已嗎?那就是說,你不管是測量什么,最大量程只能是0-199,個人感覺 ...

200個量就夠了,實際使用到的只需要150個就夠了。
回復

使用道具 舉報

13#
ID:686513 發表于 2022-1-3 10:52 | 只看該作者
jizhongbiao 發表于 2021-12-31 17:59
你要用差分輸入的引腳才可以,不是為了求差。差分是為了抑制干擾,你概念理解錯了。

這個單片機好像沒有差分輸入功能 ,但我看到別人同類產品,用的單片機也沒有差分功能,用了兩個ADC口,不知道如何實現的。
回復

使用道具 舉報

14#
ID:686513 發表于 2022-1-3 10:58 | 只看該作者
jizhongbiao 發表于 2021-12-31 17:59
你要用差分輸入的引腳才可以,不是為了求差。差分是為了抑制干擾,你概念理解錯了。

兩個結果求差的結果和(ADC1-GND)-(ADC2-GND)不是一樣嗎?
回復

使用道具 舉報

15#
ID:401564 發表于 2022-1-3 18:48 | 只看該作者
傳感器的1腳接ADC的地,單片機上面的AGnd,3腳接到一個ADC,這應該就可以了
然后進行ADC看一下結果

回復

使用道具 舉報

16#
ID:686513 發表于 2022-1-4 08:51 | 只看該作者
Y_G_G 發表于 2022-1-3 18:48
傳感器的1腳接ADC的地,單片機上面的AGnd,3腳接到一個ADC,這應該就可以了
然后進行ADC看一下結果

這樣接不就是單端輸入了嗎?傳感器部分按樣板線路已經做好了。
回復

使用道具 舉報

17#
ID:301191 發表于 2022-1-6 04:40 | 只看該作者
頂一下
回復

使用道具 舉報

18#
ID:82067 發表于 2022-1-7 15:34 | 只看該作者
還是用放大器放大一下吧,這個太小了,測不了
回復

使用道具 舉報

19#
ID:313048 發表于 2022-1-7 16:26 | 只看該作者
zhth1979 發表于 2021-12-31 12:39
STC8H3k32s2單片機說明書里找了,沒有自帶的差分采樣。

用運放吖,芯片沒有就用運放,運放差分放大就可以了,只用單片機1個IO
回復

使用道具 舉報

20#
ID:625730 發表于 2022-1-14 17:11 | 只看該作者
zhth1979 發表于 2022-1-4 08:51
這樣接不就是單端輸入了嗎?傳感器部分按樣板線路已經做好了。

傳感器有說明書吧?可以參考推薦的電路,很多Vout-接地就可以用了,單端也不是不可以。
回復

使用道具 舉報

21#
ID:169891 發表于 2022-1-27 16:17 | 只看該作者
Y_G_G 發表于 2022-1-3 18:48
傳感器的1腳接ADC的地,單片機上面的AGnd,3腳接到一個ADC,這應該就可以了
然后進行ADC看一下結果

這個沒看懂啊,ADC的地和AGnd不是一個地嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久久久毛片 | 一区二区三区福利视频 | 91资源在线观看 | 天天天操天天天干 | 亚洲在线一区二区 | www国产成人免费观看视频,深夜成人网 | 国产超碰人人爽人人做人人爱 | 在线国产精品一区 | 剑来高清在线观看 | www.99re| 久久大陆| 91久久精品日日躁夜夜躁国产 | 蜜桃视频在线观看免费视频网站www | 欧美中国少妇xxx性高请视频 | 黄色在线免费观看视频网站 | 欧美国产视频 | 亚洲欧美日韩电影 | 伊人精品视频 | 拍戏被cao翻了h承欢 | av在线免费播放 | 欧美日韩不卡合集视频 | ririsao久久精品一区 | 免费看色 | 91传媒在线观看 | 777zyz色资源站在线观看 | 欧美日本在线观看 | 国产精品国产精品国产专区不片 | 欧美网站一区二区 | h在线免费观看 | 中文字幕1区 | heyzo在线| 欧美电影在线 | 久久久久久久久一区 | 国产成人精品一区二 | 亚洲国产aⅴ精品一区二区 免费观看av | 欧美九九 | 污免费网站 | 久久久久国产视频 | 中文字幕一区二区三区在线观看 | 免费看91 | 在线视频国产一区 |