找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為啥我的單片機(jī)uln2003輸入和輸出一樣

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主


普中 a2這是我的代碼(電機(jī)是一端連uln2003 5v電源 一端連的是OUT1)

/*直流電機(jī)控制*/

#include<reg52.h>

typedef char u8;
typedef int u16;

sbit up = P3^1;           //加速按鍵
sbit down = P3^0;  //減速按鍵
sbit start = P3^2; //開始按鍵

sbit in = P1^0;

u8 times = 0; //定時(shí)器T0計(jì)數(shù)
u8 pwm = 0;          //初始pwm占空比為0

//延時(shí)函數(shù)
void delay(u16 num)
{
        u16 x,y;
        for(x = num;x > 0;x--)
        for(y = 110;y > 0;y--);
}

//定時(shí)器T0初始化
void timer_T0()
{
        TMOD = 0x01;                         //定時(shí)器T0模式1
        TH0 = (65535 - 1000) / 256;
        TL0 = (65535 - 1000) % 256;
        EA = 1;
        ET0 = 1;
        TR0        = 1;
}

//加速
void key_up()
{
        if(up == 0)
        {
                delay(2);
                if(up == 0 && pwm <= 100)
                {
                        pwm += 10;
                        if(pwm >= 100)
                        {
                                pwm = 100;
                        }
                }while(!up);
        }
}

//減速
void key_down()
{
        if(down == 0)
        {
                delay(2);
                if(down == 0 && pwm >=0)
                {
                        pwm = pwm - 10;
                        if(pwm <= 0)
                        {
                                pwm = 0;
                        }
                }while(!down);
        }        
}

/******主函數(shù):初始pwm占空比為0電機(jī)不轉(zhuǎn)動*/
/******按下up鍵加速按下down鍵減速*********/         
void main()
{
        in = 0;
        if(start == 0)
        {
                delay(2);
                if(start == 0)
                {
                        timer_T0();  
                        while(1)
                        {
                                key_up();
                                key_down();
                                if(times <= pwm)
                                {
                                        in = 1;
                                }
                                if(times >= pwm)
                                {
                                        in = 0;
                                }
                        }
                }while(!start);
        }

}

//定時(shí)器T0產(chǎn)生pwm波 pwm波周期為100*1ms
void timer_pwm() interrupt 1
{
        TH0 = (65535 - 1000) / 256;
        TL0 = (65535 - 1000) % 256;
        times++;
        if(times == 100)
        {
                times = 0;
        }
}


輸入為高輸出也為高
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2020-5-29 17:19 | 只看該作者
這是仿真波形,黃為輸入,藍(lán)為輸出,是反相的。
回復(fù)

使用道具 舉報(bào)

板凳
ID:761375 發(fā)表于 2020-5-30 11:02 | 只看該作者
xuyaqi 發(fā)表于 2020-5-29 17:19
這是仿真波形,黃為輸入,藍(lán)為輸出,是反相的。

那我的pwm占空比是不是反了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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