標(biāo)題: 請(qǐng)教大佬,stc單片機(jī)io口怎么輸出幾毫安的電流 [打印本頁(yè)]

作者: Dokkis    時(shí)間: 2024-7-16 09:02
標(biāo)題: 請(qǐng)教大佬,stc單片機(jī)io口怎么輸出幾毫安的電流
用的是stc8g1k08—sop16,想讓16、15、13腳輸出幾毫安的電流,剛開(kāi)始我把它們?cè)O(shè)置成推挽模式,沒(méi)加上拉電阻,它的電流有56ma,我們總工說(shuō)太耗電了,然后我把它設(shè)置成準(zhǔn)雙向口,加了上拉電阻,它的電流只有ua,電流太小了不太靈敏,有時(shí)候會(huì)直接判斷成低電平,如果把它設(shè)置成開(kāi)漏輸出,然后加個(gè)上拉電阻,變成跟準(zhǔn)雙向口一樣的,但是數(shù)據(jù)手冊(cè)沒(méi)寫(xiě)有多少電流,還有沒(méi)有其它方法呀
#include "stc8g.h"


sbit KeyA = P3^3;         //按鍵A連接引腳12
sbit KeyB = P3^2;         //按鍵B連接引腳11
sbit button1 = P3^6;      //相位開(kāi)關(guān)F連接引腳15
sbit button2 = P3^7;      //相位開(kāi)關(guān)E連接引腳16
sbit BI = P1^1;           //電機(jī)后退輸入D連接引腳2
sbit FI = P1^0;           //電機(jī)前進(jìn)輸入C連接引腳1
sbit FAN = P5^4;          //風(fēng)扇G連接引腳引腳5
sbit lock = P3^5;         //鎖扣I連接引腳14
sbit S1 = P3^4;           //鎖扣開(kāi)關(guān)S1連接引腳13

bit KeyAFlag = 0;         //按鍵A標(biāo)志位
bit KeyBFlag = 0;         //按鍵B標(biāo)志位
bit openFlag = 1;
bit button1Flag = 0;
bit button2Flag = 0;

#define MAIN_Fosc                22118400L        //定義主時(shí)鐘


void delay_ms(unsigned char ms)    //延時(shí)函數(shù)
{
        unsigned int i;
        do{
                i = MAIN_Fosc / 10000;
                while(--i);
        }while(--ms);
}

void main()
{
            P1M0 = 0x03; P1M1 = 0x00;//1 2為推挽輸出
      P3M0 = 0xd0; P3M1 = 0xdc; //11腳和12腳為高阻輸入,16 15 13為開(kāi)漏輸出,其余為準(zhǔn)雙向口
      P5M0 = 0x10; P5M1 = 0x00;    //5為推挽輸出
          if(openFlag==1)
                {
                        openFlag = 0;
            BI = 0;
                        FI = 0;
                        FAN = 0;
                        lock = 0;
                        KeyA = 0;
                        KeyB = 0;
                        KeyAFlag = 1;
                        KeyBFlag = 1;
                }
        
                while(1)
                {
                        if(KeyA==1)
                        {
                                KeyBFlag = 1;
                                if(KeyAFlag==1)
                                {                                                                        
                                        button1Flag =1;
                                        KeyAFlag = 0;
                                        lock = 1;
                                        FI = 1;
                                        BI = 0;
                                        FAN = 0;
                                }
                        }
                        
                        if(KeyB==1)
                        {
                                KeyAFlag = 1;                                
                                if(KeyBFlag==1)
                                {
                                        button2Flag = 1;
                                        KeyBFlag = 0;
                                        FAN = 0;
                                        FI = 0;
                                        BI = 1;
                                }
                        }        

        if(button1==0)
        {               
                if(button1Flag==1)
                {
                        button1Flag = 0;
                        FI = 0;
                        BI = 0;
                        FAN = 1;
                }
        }
        
        if(button2==0)                                    
        {
                if(button2Flag==1)
                {
                        button2Flag = 0;
                        FI = 0;
                        BI = 0;
                        FAN = 0;
                }
        }
        
                if(S1==0)
                {
                        delay_ms(10);
                        if(S1==0)
                        {
                                lock = 0;
                        }
                }
                }
}





作者: devcang    時(shí)間: 2024-7-16 13:09
單片機(jī)是數(shù)字信號(hào),,,,用三極管唄
作者: kxcuser    時(shí)間: 2024-7-16 14:42
加個(gè)限流電阻不就行了
作者: Dokkis    時(shí)間: 2024-7-16 16:32
devcang 發(fā)表于 2024-7-16 13:09
單片機(jī)是數(shù)字信號(hào),,,,用三極管唄

準(zhǔn)雙向口模式的時(shí)候用三極管放大電流嗎,但是我們總工說(shuō)ua太小了,抗干擾能力差,手一碰它就會(huì)自己?jiǎn)?dòng),有沒(méi)有什么能直接讓單片機(jī)輸出ma嘞
作者: newlined    時(shí)間: 2024-7-16 16:46
對(duì)硬件不熟悉,但我還是本能的想到了,IO口設(shè)為推挽輸出,然后加限流電阻如何?
作者: xiaobendan001    時(shí)間: 2024-7-16 18:21
newlined 發(fā)表于 2024-7-16 16:46
對(duì)硬件不熟悉,但我還是本能的想到了,IO口設(shè)為推挽輸出,然后加限流電阻如何?

對(duì)啊,推挽,加個(gè)電阻,想要多少都行。
作者: lgwd    時(shí)間: 2024-7-16 22:07
你們的總工太水了!
作者: chchking    時(shí)間: 2024-7-17 05:36
買(mǎi)個(gè)模擬輸出芯片,io是數(shù)字量
作者: a185980800    時(shí)間: 2024-7-17 07:44
不是應(yīng)該調(diào)整上拉電阻的阻值 限制電流大小嗎
作者: Dokkis    時(shí)間: 2024-7-17 09:08
a185980800 發(fā)表于 2024-7-17 07:44
不是應(yīng)該調(diào)整上拉電阻的阻值 限制電流大小嗎

他當(dāng)時(shí)調(diào)過(guò)上拉電阻的阻值,沒(méi)什么變化,而且串了一個(gè)1k的電阻,電壓才變了零點(diǎn)幾,后面并了一個(gè)電容和一個(gè)電阻才可以
作者: Dokkis    時(shí)間: 2024-7-17 09:09
xiaobendan001 發(fā)表于 2024-7-16 18:21
對(duì)啊,推挽,加個(gè)電阻,想要多少都行。

加過(guò)電阻,但是沒(méi)什么變化,后面并了電容和一個(gè)電阻才行
作者: Dokkis    時(shí)間: 2024-7-17 09:13
lgwd 發(fā)表于 2024-7-16 22:07
你們的總工太水了!

沒(méi)有,我們總工沒(méi)學(xué)過(guò)單片機(jī)和代碼,當(dāng)時(shí)加了限流電阻但是調(diào)不了,說(shuō)是脈沖電流,后面并了一個(gè)電容和電阻
作者: Y_G_G    時(shí)間: 2024-7-17 10:00
STC單片機(jī)目前是沒(méi)有能調(diào)節(jié)IO電流的,要調(diào)節(jié)電流大小,就只能通過(guò)加限流電阻來(lái)調(diào)節(jié)
作者: IdeaMing    時(shí)間: 2024-7-17 10:15
推挽模式加限流電阻,另外處理器不太建議做輸出,手冊(cè)上說(shuō)了整個(gè)MCU灌電流支持幾十mA
作者: Dokkis    時(shí)間: 2024-7-17 10:27
Y_G_G 發(fā)表于 2024-7-17 10:00
STC單片機(jī)目前是沒(méi)有能調(diào)節(jié)IO電流的,要調(diào)節(jié)電流大小,就只能通過(guò)加限流電阻來(lái)調(diào)節(jié)

嗷嗷好的 感謝
作者: coody_sz    時(shí)間: 2024-7-20 11:37
推挽輸出+串聯(lián)一個(gè)電阻
作者: 君工創(chuàng)    時(shí)間: 2024-7-21 07:48
要輸出mA級(jí)的電流,推挽輸出就可以了。至少我是這樣用的。外行當(dāng)領(lǐng)導(dǎo),你又沒(méi)有說(shuō)服力。難辦。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1