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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3680|回復: 4
打印 上一主題 下一主題
收起左側

求助!想請教大家單片機外部中斷怎么控制定時器?

[復制鏈接]
跳轉到指定樓層
樓主
ID:630579 發表于 2019-12-14 19:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
300黑幣
大家好,需要在舵機角度旋轉代碼里加key0,key1控制啟動和停止,不知道有什么簡便的方法。
#include<reg52.h>
#include"lcd.h"

sbit pwm=P0^0;//輸出PWM信號
unsigned int pwm_value=1500;//初值為1.5ms
unsigned int ms[]={00,90,00,45,00,45,00,90,00};
unsigned int value[]={1500,500,1500,1000,1500,2000,1500,2300,1500};//

void InitTimer(void)
{
        TMOD=0x11;//開定時器0,1
        TH0=-20000/256;//定時20MS,20MS為一個周期
        TL0=-20000%256;
        TH1=-1500/256;//定時1.5MS,這時舵機處于0度
        TL1=-1500%256;
        EA=1;//開總斷
        TR0=1;//開定時器0
        ET0=1;
        TR1=1;//開定時器1
        ET1=1;
}
void timer0(void) interrupt 1//定時器0中斷函數
{
        pwm=1;
        TH0=-20000/256;
        TL0=-20000%256;
        TR1=1;
}

void timer1(void) interrupt 3//定時器1中斷函數
{
        pwm=0;
        TH1=-pwm_value/256;
        TL1=-pwm_value%256;
        TR1=0;
}
void main(void)//主函數
{
        unsigned char i;        
               
                LcdInit();
        InitTimer();
        pwm_value=1500;
        while(1)
        {
                for(i=0;i<9;i++)
                {
                        pwm_value=value;//通過數組就可以改變舵機的轉角度
                        Delayms(1000);
                                                LcdWriteCom(0xc0);
                                                LcdWriteData(ms/10+'0');
                                LcdWriteData(ms%10+'0');
                }
        }
}

這個是main.c,只需要加幾句話就好了。

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

使用道具 舉報

沙發
ID:282850 發表于 2019-12-14 22:57 | 只看該作者
舵機啟動和停止,與舵機的原理相悖。但你的問題并不錯誤,是個好題。
舵機也叫伺服機,也叫servo。你送給它的脈沖寬度就是要讓它處于需要的角度。
但是因為舵機的功耗是非常高,近400mA,里面有一定扭力的電機、電阻啊。所以停止舵機還是有必要的,我就這樣做了。因為舵機內有齒輪變速,當它停在某一位置時,外力要反向改變角度,是需要一定力的,所以關閉舵機是有意義的。
你的程序我并不想看,我的做法:
1、加一個NMOS管,供舵機電源,一個IO口控制NMOS是否給舵機供電;
2、當有角度變化需要時,先產生脈沖,再給舵機供電,幾mS舵機到位后,停止NMOS,不再給舵機供電。
這是自動化的操作。

評分

參與人數 2黑幣 +30 收起 理由
鄭漢松 + 10 贊一個!
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:627214 發表于 2019-12-16 11:44 | 只看該作者
51單片機按鍵控制舵機旋轉 - OverWatcher的博客 https://blog.csdn.net/OverWatcher/article/details/80215520
這是一位前輩寫的,希望對你 有用!
回復

使用道具 舉報

地板
ID:584814 發表于 2019-12-16 12:41 | 只看該作者
又見高分的神答
1、舵機啟動和停止,與舵機的原理相悖 ?那么舵機的原理又是什么、怎么相悖呢 ?
2、“因為舵機內有齒輪變速,當它停在某一位置時,外力要反向改變角度,是需要一定力的,所以關閉舵機是有意義的。”有什么意義能明說么 ?
3、實操中只用一個IO口控制舵機,并不需要什么外控MOS管,更不說指定N型的MOS管了;
4、“當有角度變化需要時,先產生脈沖,再給舵機供電,幾mS舵機到位后,停止NMOS,不再給舵機供電。這是自動化的操作。”這兩段更是如周星星臺詞。
5、舵機內有相關電路(多數用集成電路),那些需要實現的功能在設計時都考慮全了,外部只需接3根錢,除需接電源2根外只接1個控制線。
6、外部中斷的寫法看器件手冊的程例就好,這東東設計時就沒打算需要安啟停開關,不是這個設計有多復雜或高大上亦或提高故障率好多賣而是根本沒必要。
7、總開關控制總電源,舵機控制線控制舵機就好。
回復

使用道具 舉報

5#
ID:630579 發表于 2019-12-17 10:25 | 只看該作者
無敵小杰杰 發表于 2019-12-16 11:44
51單片機按鍵控制舵機旋轉 - OverWatcher的博客 https://blog.csdn.net/OverWatcher/article/details/80215 ...

已經做好了,謝謝你,做的方法和他講的差不多,沒有用到外部中斷,只是按鍵設置
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表