欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

搜索
查看: 9277|回復(fù): 3
收起左側(cè)

STC15W408AS單片機(jī)4-20mA(SPI4通道采集)內(nèi)部電壓采集程序

  [復(fù)制鏈接]
ID:840147 發(fā)表于 2020-12-3 18:36 | 顯示全部樓層 |閱讀模式
STC15W408AS-4-20mA(SPI4通道采集)+內(nèi)部電壓采集程序  實(shí)際項(xiàng)目用。
Project STC15W408AS_6soft_uart3(讀內(nèi)部參考BandGap-模擬串口發(fā)送)
電路原理圖如下:
51hei.png

STC15W408AS測(cè)試內(nèi)部BandGap參考電壓:
1.png

單片機(jī)源程序如下:
  1. #include        "config.h"
  2. #include        "adc.h"
  3. #include        "delay.h"
  4. #include        "soft_uart.h"

  5. #define P1n_pure_input(bitn)                P1M1 |=  (bitn),        P1M0 &= ~(bitn)

  6. /*************        功能說明        **************

  7. 本程序演示多路ADC查詢采樣,通過模擬串口發(fā)送給上位機(jī),波特率9600,8,n,1。
  8. 用戶可以修改為1~8路的ADC轉(zhuǎn)換。

  9. 說明:
  10.     ADC的第9通道是用來測(cè)試內(nèi)部BandGap參考電壓的,由于內(nèi)部BandGap參考電
  11. 壓很穩(wěn)定,不會(huì)隨芯片的工作電壓的改變而變化,所以可以通過測(cè)量?jī)?nèi)部BandGap
  12. 參考電壓,然后通過ADC的值便可反推出VCC的電壓,從而用戶可以實(shí)現(xiàn)自己的低
  13. 壓檢測(cè)功能.
  14.     ADC的第9通道的測(cè)量方法:首先將P1ASF初始化為0,即關(guān)閉所有P1口的模擬功能
  15. 然后通過正常的ADC轉(zhuǎn)換的方法讀取第0通道的值,即可通過ADC的第9通道讀取當(dāng)前
  16. 內(nèi)部BandGap參考電壓值.
  17.     用戶實(shí)現(xiàn)自己的低壓檢測(cè)功能的實(shí)現(xiàn)方法:首先用戶需要在VCC很精準(zhǔn)的情況下
  18. (比如5.0V),測(cè)量出內(nèi)部BandGap參考電壓的ADC轉(zhuǎn)換值(比如為BGV5),并這個(gè)值保存
  19. 到EEPROM中,然后在低壓檢測(cè)的代碼中,在實(shí)際VCC變化后,所測(cè)量出的內(nèi)部BandGap
  20. 參考電壓的ADC轉(zhuǎn)換值(比如為BGVx),通過計(jì)算公式: 實(shí)際VCC = 5.0V * BGV5 / BGVx,
  21. 即可計(jì)算出實(shí)際的VCC電壓值,需要注意的是,第一步的BGV5的基準(zhǔn)測(cè)量一定要精確.

  22. 標(biāo)定內(nèi)部基準(zhǔn)Vref, 提供一個(gè)穩(wěn)定的工作電壓Vcc, 讀內(nèi)部基準(zhǔn)Nref, 計(jì)算內(nèi)部基準(zhǔn) Vref = Nref * Vcc / 1024.

  23. 測(cè)量某個(gè)電壓, 讀ADC值Nx, 則電壓 Ux = Vref * Nx / Nref. 一般Vref = 1220mV.


  24. ******************************************/

  25. /*************        本地常量聲明        **************/


  26. /*************        本地變量聲明        **************/
  27. u16        Nref;


  28. /*************        本地函數(shù)聲明        **************/



  29. /*************  外部函數(shù)和變量聲明 *****************/


  30. void        ADC_config(void)
  31. {
  32.         ADC_InitTypeDef                ADC_InitStructure;                                //結(jié)構(gòu)定義
  33.         ADC_InitStructure.ADC_Px        = ADC_P10 | ADC_P11 | ADC_P12;        //設(shè)置要做ADC的IO,        ADC_P10 ~ ADC_P17(或操作),ADC_P1_All
  34.         ADC_InitStructure.ADC_Speed     = ADC_360T;                        //ADC速度                        ADC_90T,ADC_180T,ADC_360T,ADC_540T
  35.         ADC_InitStructure.ADC_Power     = ENABLE;                        //ADC功率允許/關(guān)閉        ENABLE,DISABLE
  36.         ADC_InitStructure.ADC_AdjResult = ADC_RES_H8L2;                //ADC結(jié)果調(diào)整,        ADC_RES_H2L8,ADC_RES_H8L2
  37.         ADC_InitStructure.ADC_Polity    = PolityLow;                //優(yōu)先級(jí)設(shè)置        PolityHigh,PolityLow
  38.         ADC_InitStructure.ADC_Interrupt = DISABLE;                        //中斷允許                ENABLE,DISABLE
  39.         ADC_Inilize(&ADC_InitStructure);                                        //初始化
  40.         ADC_PowerControl(ENABLE);                                                        //單獨(dú)的ADC電源操作函數(shù), ENABLE或DISABLE

  41.         P1n_pure_input(0x07);        //把ADC口設(shè)置為高阻輸入
  42. }



  43. /**********************************************/
  44. void main(void)
  45. {
  46.         u8        i;
  47.         u16        j;
  48. //        u8        k;

  49.         ADC_config();

  50.         while (1)
  51.         {
  52.                 for(i=0; i<4; i++)
  53.                 {
  54.                         delay_ms(250);                //為了讓發(fā)送的速度慢一點(diǎn),延時(shí)250ms

  55.                         if(i <3)        //ADC0~ADC2
  56.                         {
  57.                                 j = Get_ADC10bitResult(i);        //參數(shù)0~7,查詢方式做一次ADC, 返回值就是結(jié)果, == 1024 為錯(cuò)誤
  58.                                 TxSend('A');
  59.                                 TxSend('D');
  60.                                 TxSend(i+'0');
  61.                         }
  62.                         else                //內(nèi)基準(zhǔn)
  63.                         {
  64.                                 P1ASF = 0;
  65.                                 j = Get_ADC10bitResult(0);        //讀內(nèi)部基準(zhǔn)電壓, P1ASF=0, 讀0通道
  66.                                 P1ASF = ADC_P10 | ADC_P11 | ADC_P12;
  67.                                 Nref = j;
  68.                                 TxSend('A');
  69.                                 TxSend('D');
  70.                                 TxSend('r');
  71.                                 TxSend('e');
  72.                                 TxSend('f');
  73.                         }
  74.                         TxSend('=');
  75.                         TxSend(j/1000 + '0');
  76.                         TxSend(j%1000/100 + '0');
  77.                         TxSend(j%100/10 + '0');
  78.                         TxSend(j%10 + '0');
  79.                         TxSend(' ');
  80.                         TxSend(' ');

  81.                         TxSend('V');
  82.                         TxSend('=');
  83.                         j = (u32)1250 * (u32)j / Nref;                        //Ux = Vref * Nx / Nref. Vref = 1250mV
  84.                         TxSend(j/1000 + '0');
  85.                         TxSend('.');
  86.                         TxSend(j%1000/100 + '0');
  87.                         TxSend(j%100/10 + '0');
  88.                         TxSend(j%10 + '0');
  89.                         TxSend(' ');
  90.                         TxSend(' ');
  91.                 }
  92.                 PrintString("\r\n");
  93.                 //=====================================================================
  94.         }
  95. }
復(fù)制代碼
51hei.png

所有資料51hei提供下載:
原理圖STC15W408_V1.0 程序.zip (711.84 KB, 下載次數(shù): 179)
原理圖STC15W408_V1.0.pdf (513.11 KB, 下載次數(shù): 141)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:97678 發(fā)表于 2022-11-9 18:26 | 顯示全部樓層
怎么感覺程序和原理圖不一致。
回復(fù)

使用道具 舉報(bào)

ID:168165 發(fā)表于 2023-2-23 23:35 | 顯示全部樓層
我用仿真測(cè)試好像你原理圖里面的運(yùn)放模擬量輸入輸出并不是線性的
回復(fù)

使用道具 舉報(bào)

ID:115923 發(fā)表于 2023-11-23 09:03 | 顯示全部樓層
程序和原理圖不一致。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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