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

QQ登錄

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

帖子
查看: 4381|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

這個(gè)方波程序怎么通過(guò)兩個(gè)按鍵控制方波頻率?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:195175 發(fā)表于 2017-5-4 17:48 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include"reg52.h"
sbit PWM=P1^0;
void main()
{
        TMOD=0x01;                                 
        TH0=(65536-1000)/256;         
        TL0=(65536-1000)%256;
        EA=1;                                         
        ET0=1;                                       
        TR0=1;                                       
        while(1);
}

void T0_time(void) interrupt 1
{
        TH0=(65536-1000)/256;         
        TL0=(65536-1000)%256;
        if(PWM)
        PWM=0;   
        else
        PWM=1;
}
這個(gè)方波程序怎么通過(guò)兩個(gè)按鍵控制方波頻率?
能不能實(shí)現(xiàn)步進(jìn)電機(jī)先正轉(zhuǎn)兩周,暫停2秒,再反轉(zhuǎn)五周,然后暫停



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

使用道具 舉報(bào)

沙發(fā)
ID:146949 發(fā)表于 2017-5-4 21:11 | 只看該作者
        if(PWM)
        PWM=0;   
        else
        PWM=1;
為什么不直接寫(xiě)成PWM=!PWM;??
還有就是你把P1^0聲明做PWM時(shí),下面用"if(PWM)"如果P1.0腳外面接了負(fù)載約1K下地時(shí),
可能會(huì)導(dǎo)致下次檢測(cè)if(PWM)時(shí)PWM讀出狀態(tài)一直保持為0.
你要改頻率的話,
#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit PWM=P1^0;
sbit KEY1=P1^1;
sbit KEY2=P1^2;
uint mun;
void Delayms(unsigned int ms)                //1mS@11.0592MHz
{unsigned char i, j;
        while(ms--)
        {       
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);}
}
void main()
{
        TMOD=0x01;                                 
        TH0=(65536-1000)/256;         
        TL0=(65536-1000)%256;
        EA=1;                                         
        ET0=1;                                       
        TR0=1;                                       
        while(1)
{
if(!KEY1)
{
Delayms(10);          
   if(!KEY1)
        {       
          num++;
        }
}
if(!KEY2)
{
Delayms(10);          
   if(!KEY2)
        {       
          num--;
        }
}
}

void T0_time(void) interrupt 1
{
        TH0=(65536-mun)/256;         
        TL0=(65536-mun)%256;
        //if(PWM)
        //PWM=0;   
        //else
        //PWM=1;
        PWM=!PWM;
}


回復(fù)

使用道具 舉報(bào)

板凳
ID:195175 發(fā)表于 2017-5-4 22:54 | 只看該作者
非常感謝
回復(fù)

使用道具 舉報(bào)

地板
ID:195175 發(fā)表于 2017-5-4 22:55 | 只看該作者
我試下
回復(fù)

使用道具 舉報(bào)

5#
ID:194871 發(fā)表于 2017-5-4 22:59 | 只看該作者
好厲害
回復(fù)

使用道具 舉報(bào)

6#
ID:195175 發(fā)表于 2017-5-5 07:50 | 只看該作者
如果通過(guò)這種方波控制讓步進(jìn)電機(jī)先正轉(zhuǎn)2圈,暫停5秒再反轉(zhuǎn)5圈然后暫停
怎么操作
回復(fù)

使用道具 舉報(bào)

7#
ID:195175 發(fā)表于 2017-5-5 14:22 | 只看該作者
非常感謝,我的硬件是一個(gè)步進(jìn)驅(qū)動(dòng)器,一個(gè)42步進(jìn)電機(jī),一個(gè)電源24V
回復(fù)

使用道具 舉報(bào)

8#
ID:195175 發(fā)表于 2017-5-5 17:04 | 只看該作者
wosiyabo 發(fā)表于 2017-5-4 21:11
if(PWM)
        PWM=0;   
        else

親,您給的這個(gè)程序也沒(méi)辦法實(shí)現(xiàn)加減速,和我上面提問(wèn)的那個(gè)差不多,加入num變量之后,步進(jìn)電機(jī)的速度直接就變慢了,并且增加的按鈕也是不可調(diào)的
回復(fù)

使用道具 舉報(bào)

9#
ID:146949 發(fā)表于 2017-5-6 14:16 | 只看該作者
sunshine1973 發(fā)表于 2017-5-5 17:04
親,您給的這個(gè)程序也沒(méi)辦法實(shí)現(xiàn)加減速,和我上面提問(wèn)的那個(gè)差不多,加入num變量之后,步進(jìn)電機(jī)的速度直 ...

你題目是說(shuō)控制方波頻率,而不是說(shuō)改變PWM(脈寬占空比)..........
回復(fù)

使用道具 舉報(bào)

10#
ID:146949 發(fā)表于 2017-5-6 14:23 | 只看該作者
控制的是那款步進(jìn)電機(jī)?四線還是五線的?
先正轉(zhuǎn)兩周? 這個(gè)要看步進(jìn)電機(jī)的參數(shù),還有你要的轉(zhuǎn)速多少,一周為360度。有的步進(jìn)為15度,要跑24次才完成一周。
暫停2秒,再反轉(zhuǎn)五周,然后暫停
回復(fù)

使用道具 舉報(bào)

11#
ID:195175 發(fā)表于 2017-5-19 15:20 | 只看該作者
wosiyabo 發(fā)表于 2017-5-6 14:23
控制的是那款步進(jìn)電機(jī)?四線還是五線的?
先正轉(zhuǎn)兩周? 這個(gè)要看步進(jìn)電機(jī)的參數(shù),還有你要的轉(zhuǎn)速多少,一周為3 ...

我的步進(jìn)電機(jī)是四線的
通過(guò)步進(jìn)驅(qū)動(dòng)器控制
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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