51单片机SG90舵机使用

文章详细介绍了使用8051单片机的定时器T0进行LED灯光控制,通过定时器周期性地改变LED状态和延时,实现LED在不同角度间的旋转。同时涉及中断处理、定时器初始化等技术。
摘要由CSDN通过智能技术生成

代码如下:

#include "reg52.h"

//sbit ledgreen = P0^0;
//sbit ledyellow = P0^1;
//sbit beep = P0^2;
sbit sg90=P1^0;
char jd=0;
int cnt;
	
void Delay300ms()		//@11.0592MHz
{
	unsigned char i, j, k;
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Time0Init()  //0.5ms
{
	  TMOD&=0XF0; //置位
	  TMOD|=0X01;	//清零  配置寄存器模式:定时器T0,工作方式一
    TH0=0xFE;   //配置高八位
	  TL0=0X33;   //配置低八位
  	TF0=0;     //当爆表的时候,硬件会修改bit5(TF0)位上面的数据
	  TR0=1;    //定时器T0开启标志
	
	  ET0=1; //开启定时器T0中断允许
	   EA=1;//开启总中断

}

void Time0Handle()  interrupt 1
{
	   
		  cnt++;      // 统计爆表的次数
	    TH0=0xFE;   //配置高八位
	    TL0=0X33;   //配置低八位
	    if(cnt<jd)   //0.5ms 以内
				sg90=1;
			else sg90=0;
			if(cnt==40)  //20MS 内
			{//ledgreen=!ledgreen;  //翻转LED
				sg90=1;
				cnt=0;
			}

}
void main()
{
	Time0Init();
	while(1){
		jd=1;      //转0°
		Delay300ms();
		Delay300ms();
				Delay300ms();
		Delay300ms();
				jd=2;  //转45°
		Delay300ms();
		Delay300ms();
				Delay300ms();
		Delay300ms();
				jd=3;	 //转90度
		Delay300ms();
		Delay300ms();
				Delay300ms();
		Delay300ms();
	}

}

实物效果:

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值