91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 23KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-13
  • 語言: 其他
  • 標簽: 51單片機??舵機??PWM??

資源簡介

本文使用單片機T2定時器,這個定時器大多數人很少使用它,而卻不知道它有一個非常優秀的功能就是定時自動重載功能。利用這個功能能夠更為精確的對定時器進行設定,可控制精度在1個機器周期(12M晶振下就是1us),T0、T1都需要手動重載,其精度無法很好的控制。 /*------------------------------ 硬件需求: 12T系列單片機(8051內核) 擁有T2定時器 12M時鐘晶振 P2_0輸出控制 舵機角度范圍在0~180 高電平范圍0.5ms~2.5ms 20ms周期 --------------------------------*/

資源截圖

代碼片段和文件信息

//?Header:舵機控制程序
//?File?Name:?
//?Author:程蒙蒙(QQ1058515967)
//?Date:2018年9月12日
//Description:基于12T系列單片機且有T2定時器的單片機舵機控制程序
//,本程序控制精度高(1us),定時器自動控制舵機轉動
/*------------------------------
硬件需求:?12T系列單片機(8051內核)
?擁有T2定時器
?12M時鐘晶振
?P2_0輸出控制
?舵機角度范圍在0~180?高電平范圍0.5ms~2.5ms?20ms周期?
--------------------------------*/

#include?

#define?T2_PWMout?P2_0??//舵機控制端
unsigned?int?PWMTimes=0;//高電平時間
unsigned?char?angle=0;?//測試角度
void?T2_Init();//初始化定時器2
void?SetMotoangle(float?angle);//設置舵機角度
void?Delay100ms(); //@12.000MHz
void?main()
{
bit?SWdir=0;
????T2_Init();//初始化定時器
????while(1)//演示程序,舵機左右擺動?
{
if(angle>180)SWdir=0;
else?if(angle==0)SWdir=1;

????????SetMotoangle(SWdir?angle++:angle--);
Delay100ms();
????}
}

void?T2_Init()
{
????unsigned?int?time=65536-20000;
????RCAP2L?=?TL2?=?time;????????????//initial?timer2?low?byte
????RCAP2H?=?TH2?=?time?>>?8;???????//initial?timer2?high?byte
????TR2?=?1;????????????????????????//timer2?start?running
????ET2?=?1;????????????????????????//enable?timer2?interrupt
????EA?=?1;?????????????????????????//open?global?interrupt?switch
}
void?SetMotoangle(float?angle)
{
????//防止越界而損傷電機
????if(angle?>?175)?angle?=?175;
????if(angle?<5)?angle?=?5;

????PWMTimes=500+angle*2000.0/180;//計算出高電平時間


}
/*?Timer2?interrupt?routine?*/
void?tm2_isr()?interrupt?5?using?1
{
????static??bit?SW=0;
????unsigned?int?T2count;
????TF2?=?0;//標志位清零
????SW=~SW;//狀態取反
????T2_PWMout=SW;//更新輸出
if(SW)//低電平時間
{
????????T2count=0xB1E0+PWMTimes;//0xB1E0即為20ms中斷用時
????????RCAP2L=T2count;
????????RCAP2H=T2count>>8;
????}
????else//高電平時間
????{
????????T2count=0-PWMTimes;
????????RCAP2L=T2count;
????????RCAP2H=T2count>>8;
????}

}
void?Delay100ms() //@12.000MHz
{
unsigned?char?i?j;

i?=?195;
j?=?138;
do
{
while?(--j);
}?while?(--i);
}



?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-09-12?00:57??T2控制舵機\
?????文件??????138042??2018-09-12?00:57??T2控制舵機\12T單片機T2控制舵機.uvgui.cheng
?????文件????????6900??2018-09-12?00:57??T2控制舵機\12T單片機T2控制舵機.uvopt
?????文件???????14052??2018-09-11?23:57??T2控制舵機\12T單片機T2控制舵機.uvproj
?????目錄???????????0??2018-09-12?00:57??T2控制舵機\Listings\
?????文件????????9829??2018-09-12?00:46??T2控制舵機\Listings\12T單片機T2控制舵機.m51
?????目錄???????????0??2018-09-12?00:57??T2控制舵機\objects\
?????文件????????7610??2018-09-12?00:46??T2控制舵機\objects\12T單片機T2控制舵機
?????文件????????6376??2015-05-29?12:09??T2控制舵機\STARTUP.A51
?????文件????????2101??2018-09-12?00:57??T2控制舵機\main.c

評論

共有 條評論