|
55.gif (973.66 KB, 下載次數(shù): 55)
下載附件
2020-3-15 16:12 上傳
單片機(jī)源程序如下:
//按鍵控制SG90舵機(jī)轉(zhuǎn)動(dòng)成功
//按下按鍵舵機(jī)正轉(zhuǎn),松開(kāi)按鍵舵機(jī)回位,按鍵掃描去掉后,直接高地電平檢測(cè)也可以控制舵機(jī)運(yùn)動(dòng)
#include <reg52.h>
sbit SG_PWM=P2^7;//接舵機(jī)
sbit jia=P2^0; // 按鍵檢測(cè)I/O口
unsigned char count=0;
unsigned char PWM_count=3; //1--0度,2--45度,3--90度,4--135度,5--180度
unsigned char a=0;
void delay(unsigned char z)
{
unsigned char x,y;
for(x=125;x>0;x--)
for(y=z;y>0;y--);
}
void Timer_Init()
{
TMOD|=0X01; //T0定時(shí)方式1
TH0=0Xfe;
TL0=0X33; //計(jì)數(shù)初值設(shè)置為0.5ms
ET0=1; //打開(kāi)定時(shí)器0的中斷
TR0=1; //打開(kāi)定時(shí)器0
EA=1; //開(kāi)總中斷
}
void Timer() interrupt 1 //特別注意此處,0--外部中斷0,1--定時(shí)器中斷0,2--外部中斷1,3--定時(shí)器中斷1,4--串行口中斷1
{
TR0=0;
TH0=0Xfe;
TL0=0X33; //重新賦計(jì)數(shù)初值為0.5ms
if(count<=PWM_count)
{
SG_PWM=1;
}
else
{
SG_PWM=0;
}
count++;
if(count>=40)
{
count=0;
a++;
}
TR0=1;
}
void main()
{
PWM_count=4;
Timer_Init();
while(1)
{
if(jia==0) //角度增加按鍵是否按下
{
delay(30); //按下延時(shí),消抖
if(jia==0) //確實(shí)按下
{
a==20;
PWM_count=1;
while(jia==0); //等待按鍵放開(kāi)
a==32;
PWM_count=4;
a=0;
}
}
}
}
|
評(píng)分
-
查看全部評(píng)分
|