基于C8051F340单片机的舵机简单控制程序

一、背景描述
自己在DIY航模,属于小白,把自己做的舵机控制做个简单的记录,大佬们不要嘲笑~~。如果是初学单片机的,可以参考下。
程序的主要功能是,通过ADC读取旋钮(滑动变阻器的电压),然后对应的调节舵机的位置。
二、直接上程序
初始化定义

#include"c8051f340.h"		//引入头文件					
#define SYSCLK       12000000  //定义系统晶振
void Port_Init (void);                 // 定义端口初始化函数
void Timer0_Init (void);               // Timer0初始化函数
void delay_50us(unsigned long N50us);  // 定义延时函数
void OSCIN_init(void);   //定义晶振初始化函数
void Volt_measure(void);  //定义电压测量函数
//定义全局变量
xdata unsigned long Volt1_value=0;   
xdata unsigned long Time_flag=0;
sbit LED = P2^2;                       // P2.2连接了一个LED
sbit PPM0=P0^0;                        //P0.0控制PPM

贴上main函数:

main()
{
  unsigned long  coeff=0;
  PCA0MD &= ~0x40;                    // 清看门狗
  OSCIN_init();                       //晶振初始化
  Port_Init();                        //端口初始化
  EA=1;
  while(1)
    {
		  PPM0=0;
	      Volt_measure();
	      coeff=Volt1_value/60;
	      if(coeff>10)
	      coeff=10;
		  delay_50us(342-2*coeff); 
		  PPM0=1;
		  delay_50us(20+2*coeff); 
	}
}

定时器0终端函数:

void Timer0_ISR (void) interrupt 1
{

   TH0 = 0xff;            // Reinit Timer0 High register
   TL0 = 0xce;            // Reinit Timer0 Low register
   Time_flag++;
}

延时函数:

void delay_50us(unsigned long N50us)
{
  unsigned long i=0;
  Timer0_Init();
  Time_flag=0;
  while(Time_flag<N50us);
  ET0=0;
  Time_flag=0;
}

电压测量函数:

void Volt_measure(void)
{
  ADC0_Init ();

	  Volt1_value=0;
      AD0BUSY=1;
      while(AD0INT==0);
      AD0INT=0;
	  Volt1_value=ADC0H;
      Volt1_value<<=8;
      Volt1_value|=ADC0L;
}

三、效果
能够实现舵机的简单控制,根据旋钮位置,控制舵机的位置。

相关推荐

  1. 基于C8051F340单片机简单控制程序

    2024-05-01 22:54:02       32 阅读
  2. 基于单片机直流电控制

    2024-05-01 22:54:02       34 阅读
  3. 使用

    2024-05-01 22:54:02       38 阅读
  4. 利用STM32F103驱动指南(使用HAL库)

    2024-05-01 22:54:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 22:54:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 22:54:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 22:54:02       87 阅读
  4. Python语言-面向对象

    2024-05-01 22:54:02       96 阅读

热门阅读

  1. MongoDB聚合运算符:$sqrt

    2024-05-01 22:54:02       34 阅读
  2. 笨蛋学C++之 C++对数据库实现CRUD

    2024-05-01 22:54:02       37 阅读
  3. vue3父组件调用子组件方法

    2024-05-01 22:54:02       33 阅读
  4. 如何将API 中的excel 文件load 到 Azure blob 中

    2024-05-01 22:54:02       35 阅读
  5. .requires_grad,.detach(),torch.no_grad()

    2024-05-01 22:54:02       30 阅读
  6. C/C++中的整数除法运算与汇编指令DIV和IDIV

    2024-05-01 22:54:02       35 阅读
  7. 如何看待AIGC技术

    2024-05-01 22:54:02       29 阅读
  8. Leetcode 590:N叉树的后序遍历

    2024-05-01 22:54:02       35 阅读
  9. Ubuntu 4G模块域名ping不通

    2024-05-01 22:54:02       29 阅读