亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

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

QQ登錄

只需一步,快速開(kāi)始

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

求 雙IO獨(dú)立控阻+RC放電測(cè)溫方案

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
雙 IO 獨(dú)立控阻 + RC 放電測(cè)溫 方案(無(wú) ADC 測(cè) NTC 成熟拓?fù)洌@電路誰(shuí)玩過(guò),發(fā)個(gè)原理圖示例代碼出來(lái)學(xué)習(xí)學(xué)習(xí)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2026-6-4 15:11 | 只看該作者
上古時(shí)期的東西,類似于鉆木取火
一個(gè)帶12位ADC的九齊單片機(jī)3毛2
回復(fù)

使用道具 舉報(bào)

板凳
ID:1133081 發(fā)表于 2026-6-4 15:55 | 只看該作者
模擬串口+RC測(cè)電壓程序,可以電壓換算溫度。測(cè)試芯片STC15F104W。
  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU International Limited -------------------------------*/
  3. /* --- STC 1T Series MCU RC Demo -----------------------------------*/
  4. /* If you want to use the program or the program referenced in the  */
  5. /* article, please specify in which data and procedures from STC    */
  6. /*------------------------------------------------------------------*/

  7. /*

  8. 功能描述: 使用STC15F系列C版本做的RC測(cè)量電壓的例子.

  9. */
  10. #include "reg51.h"
  11. /********宏定義*******/
  12. #define MAIN_Fosc                22118400L        //定義主時(shí)鐘
  13. #define        uchar        unsigned char
  14. #define uint        unsigned int
  15. /********特殊功能寄存器*******/
  16. sfr AUXR = 0x8e;    //Auxiliary register
  17. sfr P3M1  = 0xB1;        //P3M1.N,P3M0.N         =00--->Standard,        01--->push-pull
  18. sfr P3M0  = 0xB2;        //                                        =10--->pure input,        11--->open drain
  19. /********端口定義*******/
  20. sbit P_TXD1  = P3^1;        //定義模擬串口發(fā)送腳,打印信息用
  21. sbit P_RC = P3^2;                //RC 檢測(cè)端口
  22. /********變量與子程序聲明*******/
  23. uchar        SampleCnt;                //發(fā)送結(jié)果的采樣間隔計(jì)數(shù)
  24. uchar        LineCnt;                //每行顯示結(jié)果計(jì)數(shù)
  25. bit                B_Over;                        //超量程標(biāo)志
  26. bit                B_ADC_OK;                //檢測(cè)完成標(biāo)志
  27. uint        adc;                        //RC做的ADC值

  28. void        RC_start(void);                //RC檢測(cè)開(kāi)始
  29. void        Tx1Send(uchar dat);        //發(fā)送數(shù)據(jù)
  30. void         InitTimer(void);        //初始化定時(shí)器
  31. void        delay_ms(uchar ms);        //延時(shí)

  32. ///////////////////////////////////////////////////////////

  33. void main(void)
  34. {        
  35.         InitTimer();                //初始化定時(shí)器
  36.         P3M1 |=  1 << 2;         //P3.2 開(kāi)漏模式
  37.         P3M0 |=  1 << 2;
  38.         P_RC = 0;               //RC 檢測(cè)端口

  39.         while (1)
  40.         {
  41.                 delay_ms(5);                //放電時(shí)間        
  42.                 B_ADC_OK = 0;                //清除ADC結(jié)束標(biāo)志        
  43.                 B_Over = 0;                        //清除超量程標(biāo)志
  44.                 RC_start();         //RC 檢測(cè)開(kāi)始
  45.                 while(!B_ADC_OK && !B_Over);        //等待ADC結(jié)束或超量程
  46.                 if(B_ADC_OK)                                        //檢測(cè)完成標(biāo)志為1
  47.                 {
  48.                         if(++SampleCnt >= 100)        //1秒鐘發(fā)一個(gè)結(jié)果給串口
  49.                         {
  50.                                 SampleCnt = 0;
  51.                                 Tx1Send(adc / 10000 + '0');           //send to PC from the UART
  52.                                 Tx1Send(adc % 10000 / 1000 + '0');
  53.                                 Tx1Send(adc % 1000 / 100 + '0');
  54.                                 Tx1Send(adc % 100 / 10 + '0');
  55.                                 Tx1Send(adc % 10 + '0');
  56.                                 Tx1Send(' ');
  57.                                 Tx1Send(' ');
  58.                                 if(++LineCnt >= 10)                //10個(gè)結(jié)果后換行
  59.                                 {
  60.                                         LineCnt = 0;
  61.                                         Tx1Send(0x0d);   //send CR
  62.                                         Tx1Send(0x0a);
  63.                                 }
  64.                         }
  65.                 }
  66.         }
  67. }

  68. /***************延時(shí)函數(shù)*****************/
  69. void  delay_ms(uchar ms)
  70. {
  71.         uint i;
  72.         do
  73.         {
  74.                 i = MAIN_Fosc / 14000L;        //1T
  75.                 while(--i)        ;   //13T per loop
  76.         }while(--ms);
  77. }
  78. /**************** Timer初始化函數(shù) ************/
  79. void InitTimer(void)
  80. {
  81.         TMOD = 0;                //16位自動(dòng)重裝
  82.         TH0  = 0;                //
  83.         TL0  = 0;                //
  84.         TR0  = 0;                //關(guān)定時(shí)器0
  85.         ET0  = 1;                //開(kāi)定時(shí)器0中斷
  86.         EA   = 1;                //開(kāi)總中斷
  87. }
  88. /********************* INT0外部中斷函數(shù) *************************/
  89. void INT0_int () interrupt 0                //
  90. {
  91.         if(INT0 && !B_Over)                //上升沿中斷,無(wú)超時(shí)
  92.         {
  93.                 TR0 = 0;            //關(guān)定時(shí)器0
  94.                 P_RC = 0;           //RC 檢測(cè)端口置0
  95.                 adc = TH0;          //讀定時(shí)寄存器高8位數(shù)據(jù)
  96.                 adc =(adc<<8)+TL0;        //高8位數(shù)據(jù)+低8位數(shù)據(jù)
  97.                 B_ADC_OK = 1;                //標(biāo)志ADC結(jié)束
  98.         }
  99. }
  100. /********************** Timer0中斷函數(shù)************************/
  101. void timer0 (void) interrupt 1
  102. {
  103.         TR0 = 0;        //超量程關(guān)閉
  104.         B_Over = 1;        //標(biāo)志超量程
  105. }
  106. /**************** RC啟動(dòng)函數(shù) ******************************/
  107. void RC_start()
  108. {                                       //使用定時(shí)器0計(jì)時(shí)
  109.         TH0 = 0;            //計(jì)數(shù)寄存器清0
  110.         TL0 = 0;
  111.         B_Over = 0;                        //超時(shí)標(biāo)志清0
  112.         P_RC = 1;           //RC 檢測(cè)端口置1
  113.         TR0 = 1;            //開(kāi)啟定時(shí)器
  114.         IE0 = 0;                        //外部中斷0請(qǐng)求標(biāo)志清0
  115.         EX0 = 1;                        //INT0 開(kāi)外中斷
  116.         IT0 = 0;                        //INT0 上升/下降沿均可觸發(fā)中斷        
  117. }
  118. /********************** 模擬串口相關(guān)函數(shù)************************/

  119. void BitTime(void)        //位時(shí)間函數(shù)
  120. {
  121.         uint i;
  122.         i = ((MAIN_Fosc / 100) * 104) / 130000L - 1;                //根據(jù)主時(shí)鐘來(lái)計(jì)算位時(shí)間
  123.         while(--i);
  124. }

  125. //模擬串口發(fā)送
  126. void Tx1Send(uchar dat)                //9600,N,8,1                發(fā)送一個(gè)字節(jié)
  127. {
  128.         uchar        i;
  129.         EA = 0;
  130.         P_TXD1 = 0;
  131.         BitTime();
  132.         for(i=0; i<8; i++)
  133.         {
  134.                 if(dat & 1)
  135.                         P_TXD1 = 1;
  136.                 else
  137.                         P_TXD1 = 0;
  138.                 dat >>= 1;
  139.                 BitTime();
  140.         }
  141.         P_TXD1 = 1;
  142.         EA = 1;
  143.         BitTime();
  144.         BitTime();
  145. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

地板
ID:1109793 發(fā)表于 2026-6-4 17:16 | 只看該作者
對(duì)啊,現(xiàn)在帶AD的芯片都很便宜了呢
回復(fù)

使用道具 舉報(bào)

5#
ID:41656 發(fā)表于 2026-6-4 19:29 | 只看該作者
這個(gè)估計(jì)要自己測(cè)試了,IO的輸入阻抗可能影響電路的,而且高低電平閾值每個(gè)芯片還有偏差而且電容的容量誤差一邊也比較大只能粗略測(cè)量一致性不好。使用RC充放電時(shí)間常數(shù)C知道、高低電平閾值知道、充放電時(shí)間也知道就能計(jì)算出R
回復(fù)

使用道具 舉報(bào)

6#
ID:1034262 發(fā)表于 2026-6-4 21:06 | 只看該作者
90年代末到2002年這幾年用過(guò),電子表、電子鐘等等測(cè)溫,要求IO讀到高電平有高度一致性。
IO1 ---Ro----|
IO2 ---Rt----|
                 |
                C
                 |
              GND
步驟:
1、IO1、IO2均輸出0,給C放電。
2、IO2高阻,IO1輸出高,給C充電,直到IO2讀到高電平,充電時(shí)間為t1。
3、IO1、IO2均輸出0,給C放電。
4、IO1高阻,IO2輸出高,給C充電,直到IO1讀到高電平,充電時(shí)間為t2。
則 Rt = Ro*t2/t1

更準(zhǔn)確的是用3個(gè)IO,不用考慮IO讀到高電平的差異:
IO1 ---Ro----|
IO2 ---Rt----|
IO3----------|
                 |
                C
                 |
              GND
步驟:
IO3保持高阻。
1、IO1、IO2均輸出0,給C放電。
2、IO2高阻,IO1輸出高,給C充電,直到IO3讀到高電平,充電時(shí)間為t1。
3、IO1、IO2均輸出0,給C放電。
4、IO1高阻,IO2輸出高,給C充電,直到IO3讀到高電平,充電時(shí)間為t2。
則 Rt = Ro*t2/t1


回復(fù)

使用道具 舉報(bào)

7#
ID:1066092 發(fā)表于 2026-6-6 02:00 | 只看該作者
找當(dāng)年P(guān)IC單片機(jī)的應(yīng)用手冊(cè),里面有這個(gè)的詳細(xì)分析和匯編程序
回復(fù)

使用道具 舉報(bào)

8#
ID:59341 發(fā)表于 2026-6-11 10:00 | 只看該作者
WL0123 發(fā)表于 2026-6-4 15:55
模擬串口+RC測(cè)電壓程序,可以電壓換算溫度。測(cè)試芯片STC15F104W。

這個(gè)在硬件上測(cè)試過(guò)是OK的嗎?
回復(fù)

使用道具 舉報(bào)

9#
ID:59341 發(fā)表于 2026-6-11 10:11 | 只看該作者
@coody_sz   是這個(gè)意思嗎?

01.png (52.77 KB, 下載次數(shù): 0)

01.png
回復(fù)

使用道具 舉報(bào)

10#
ID:59341 發(fā)表于 2026-6-11 10:12 | 只看該作者
原理圖是這樣的嗎? @coody_sz

01.png (52.77 KB, 下載次數(shù): 0)

01.png
回復(fù)

使用道具 舉報(bào)

11#
ID:59341 發(fā)表于 2026-6-11 10:21 | 只看該作者
@ WL0123   用這個(gè)原理圖和你的程序?qū)Φ蒙蠁幔?/td>

111.png (13.68 KB, 下載次數(shù): 0)

111.png
回復(fù)

使用道具 舉報(bào)

12#
ID:59341 發(fā)表于 2026-6-11 10:23 | 只看該作者
wjhg1026 發(fā)表于 2026-6-11 10:00
這個(gè)在硬件上測(cè)試過(guò)是OK的嗎?

看一下9#的圖對(duì)不對(duì)?
回復(fù)

使用道具 舉報(bào)

13#
ID:1173156 發(fā)表于 2026-6-11 10:35 | 只看該作者
xiaobendan001 發(fā)表于 2026-6-4 17:16
對(duì)啊,現(xiàn)在帶AD的芯片都很便宜了呢

是這樣的現(xiàn)在很便宜
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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