找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1800|回復: 0
打印 上一主題 下一主題
收起左側(cè)

舵機角度控制可用作跳一跳

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:293063 發(fā)表于 2018-10-9 18:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
sbit SEV_PWM = P1^0;  //設定PWM輸出的I/O端口
unsigned char count = 0;
unsigned char SEV_conut =8;
sbit K6=P1^1;//設置兩個按鍵,代表抬起和按下。根據(jù)實際硬件資源編寫。
sbit K7=P1^2;
sbit LED=P1^3;          /*延時程序*/
void delay(unsigned char i)
{
  unsigned char j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}       
/*定時器T0初始化*/
void Com_Init()           {   
TMOD &= 0x00;   
TMOD |= 0x01; //定時器T0設置成方式1     
TH0 = 0xff;   //定時常數(shù) 0.1ms 晶振為11.0592MHz   
TL0 = 0xa4;     
ET0 = 1;         
TR0 = 1;
EA=1;
}                /*T0中斷初始化*/
void Time0_Init() interrupt 1 {       
TR0 = 0;        
TH0 = 0xff; //重裝時間常數(shù) 0.1ms       
TL0 = 0xa4;               
if(count <= SEV_conut) //5==0° 10==90°       
{                
SEV_PWM = 1;
}
else         {                
SEV_PWM = 0;
}
count++;
if (count >= 200) //T = 20ms清零
{        
count = 0;
}
TR0 = 1; //開啟T0
}
void main(){
Com_Init();
while(1)        {
if(K6==0)       
{
delay(10);
if(K6==0)       
{       
SEV_conut =5;//5代表0.5ms       
count=0;       
}
}       
if(K7==0)
{
delay(10);
if(K7==0)
{       
SEV_conut =8;
count=0;
}
}
//SEV_conut =5;//舵機恢復到0°的位置       
//count=0;//讓定時器重新計數(shù)       
//約延時2s       
//SEV_conut =8;//8這個值是作者調(diào)試的角度,得到現(xiàn)象是觸控筆向下按壓屏幕       
//count=0;       
//Delay(100000);
//延時函數(shù)寫得不好,讀者可改寫。
}
}


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

使用道具 舉報

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

本版積分規(guī)則

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

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

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