51单片机控制一路舵机控制90度来回控制源程序

2019-11-30来源: 51hei关键字:51单片机控制  一路  舵机控制  90度

分享一个用51单片机实现的一路舵机控制90度来回控制程序


单片机源程序:

#include "STC12C5620AD.H"        //STC89c52系列单片机

sbit pwm =P1^3 ;          //PWM信号输出

sbit sjg =P1^2 ;                  //三极管,继电器 ,电磁铁

sbit cxyg =P1^0 ;                  //场效应管,电磁吸盘

unsigned char ci;        //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度

unsigned char cishu;           //进入中断次数

/*******************延时函数***********************/

void delay10ms(void) //误差 -0.000000000002us 


unsigned char a,b; 

for(b=151;b>0;b--) 


for(a=29;a>0;a--); 


void delay100ms(void) //误差 -0.000000000021us 


unsigned char a,b,c; 

for(c=35;c>0;c--) 


for(b=10;b>0;b--) 

for(a=130;a>0;a--); 


void delay1s(void) //误差 -0.00000000024us


{

unsigned char a,b,c;


for(c=95;c>0;c--)


for(b=26;b>0;b--)


for(a=185;a>0;a--);


}


/********************定时器0初始化************************/

void Time0_Init()            //定时器初始化

{

TMOD = 0x01;             //定时器0工作在方式1    

IE  = 0x82;                                 //中断允许寄存器

TH0  = 0xff;

TL0  = 0xa3;     //11.0592MZ晶振,0.1ms

TR0=1;                   //定时器开始

}

/***************定时器中断函数*****************/

void Time0_Int() interrupt 1 //中断程序

{

TH0  = 0xff;             //重新赋值

TL0  = 0xa3;

   cishu++;

if(cishu

  {

  pwm=1;

  } 

else if(ci

  {

  pwm=0;

  }

  cishu=cishu%200;

}

/*****************主函数*******************/

void main()

{

cishu=0;

ci=5;

pwm=0;

cxyg=0;//电磁吸盘不工作

sjg=1;         //继电器不工作

Time0_Init(); 

   

   ci=5;           //舵机归零

   delay1s();delay1s();delay1s();

   cxyg=0; //电磁吸盘不工作

   sjg=1;  //继电器不工作

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();            

while(1)

  {   

   ci=13;   //舵机转过90度

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();//延时1s时间,舵机转90度

   cxyg=1; //电磁吸盘工作

   sjg=0;  //继电器工作,电磁铁得电

   delay1s();//延时1s时间,将工件吸起来

   cxyg=1; //电磁吸盘工作

   sjg=1;  //继电器不工作,电磁铁失电

   delay1s();delay1s();//延时2s,用来拍照

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();


   ci=5;           //舵机归零,在顶上

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   cxyg=1; //电磁吸盘工作

   sjg=1;  //继电器不工作

   delay1s();delay1s();delay1s();//延时3s时间,拍照

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();


   ci=13;   //舵机转过90度 ,低端

   delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();

   delay1s();//延时1s时间,舵机转90度

   cxyg=1; //电磁吸盘工作

   sjg=0;  //继电器工作,电磁铁得电

   delay1s();delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();delay1s();

   delay1s();delay1s();delay1s();delay1s();

   //延时1s时间,将工件吸起来

   cxyg=0; //电磁吸盘不工作

   delay100ms();

   sjg=1;  //继电器不工作,电磁铁失电

   delay1s();delay1s();delay1s();//延时





关键字:51单片机控制  一路  舵机控制  90度 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481590.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于51单片机的电子音乐盒的课程设计
下一篇:基于51单片机的温度采集系统(Labview做上位机)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机控制DHT11在1602上显示温湿度的程序
单片机源程序如下:#include <reg52.h> #define uint unsigned int #define uchar unsigned char typedef bit BOOL; sbit io = P2^0; sbit rs = P2^6;  sbit rw = P2^5; sbit ep = P2^7; uchar data_byte; uchar RH,RL,TH,TL;/********延时模块***********/ void delay(uchar ms) { 
发表于 2019-12-06
STC89C52RC单片机控制步进电机仿真与程序
本单片机是STC89C52RC,本程序应用于step motor--28BYJ,小型步进电机,供电电压DC5V,可直接接于单片机通过ul2003驱动芯片驱动,数码管是共阴极接口,控制步进电机启动/停止,正反转,加减速,并有运行,及转换状态显示。是初学者的好例程。实物图: 仿真原理图如下 单片机源程序如下:/*本单片机是STC89C52RC,本程序应用于step motor--28BYJ,小型步进电机,   供电电压DC5V,可直接接于单片机通过ul2003驱动芯片驱动,数码管是共阴极接口,*/#include <STC89C5xRC.H>#define uchar
发表于 2019-12-05
STC89C52RC单片机控制步进电机仿真与程序
单片机控制无刷电机初步调试成果和学习经历
调了一天多的无刷电机,用的无刷电调,其实本来应该是用32做的,但是不知道原理,  于是用了比较熟悉的51单片剂一下来进行调试 一下,查询的资料,还是蛮简单的,但是实际操作并没有那么容易, 在网上查也没有能用的程序,尤其是51,因为基本用无刷的都是无人机 四六轴。所以今天贴上我的程序,分享给大家,希望能对各位减少时间学习,快速上手,本程序实现的功能是在第一次给无刷电机上电后,首先拉高油门,然后降低油门,最后满开油门,注意,,,,注意,,,,注意,一定不要用带螺旋桨的无刷电机来实验,危险,开机后会全速运行,我开全速是为了用涵道,所以全速,, 废话不多说,贴程序51单片机
发表于 2019-11-27
单片机控制无刷电机初步调试成果和学习经历
51单片机控制LCD12864显示汉字
;51控制LCD12864");                        delay(5);                LcdPos(4,1);                        
发表于 2019-11-26
51单片机控制LCD12864显示汉字
PIC单片机控制数码管显示4*4矩阵键盘对应按键号
;使用C口作键盘扫描,7段数码管显示按键号 ,63系列通用寄存器地址:20~7FH, A0~FFH ,未达到预期目的,只用个位数显示按键号时正常工作,增加按键号转换(用2位数显示),则提示“STACK OVERFLOW"--堆栈溢出.编译后机器码容量为1.3KB左右,未超过CALL跳转范围——1页(2K) 。#include P16C63A.INC KEYCODE EQU  H'0020'KEYNUM  EQU  H'0021'CC    EQU  H'0024'TABADD EQU H'0025&
发表于 2019-11-25
乘着ETC之风而起的金溢科技,业绩能否一路高歌?
近日,金溢科技发布2019年半年报。 公告显示,ETC行业受益于取消省界收费站政策推动而高度景气,2019年上半年行业进入爆发期,ETC相关设备需求量大增,金溢科技业绩实现大幅增长,实现营业收入3.33亿元,比上年同期上升46.23%,实现归属于上市公司股东的净利润4503.31万元。   回顾:2012年至2018年5年黄金发展期+2年停滞期可以为金溢科技前7年的发展做个简单总结。 2012年到2015年是中国智能交通行业发展的黄金期,也是金溢科技业绩一路飙升的时期。 财报数据显示,金溢科技从2012到2015财年营业收入分别为2.68亿元、3.55亿元、4.27亿元
发表于 2019-09-11
乘着ETC之风而起的金溢科技,业绩能否一路高歌?
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved