资源简介
用51单片机控制舵机,周期为20ms,我的程序尽量写得简单易懂了,可以通过串口发送1、2、3、4分别控制舵机的不同工作状态。1右转,2左转,3回到初始位置,4自由转动:不断地左转和右转
代码片段和文件信息
#include
#define uchar unsigned char
uchar count;
sbit pwm=P0^0; //PWM信号输出口
uchar jia=1; //角度增加按键检测I/O口
uchar jan=1; //角度减少按键检测I/O口
uchar jd; //角度标识
uchar a;
uchar i;
uchar flag;
void delay(uchar z)
{
uchar xy;
for(x=125;x>0;x--)
for(y=z;y>0;y--);
}
void Com_Init()
{
TMOD=0x21; //T1工作于方式1
TH1=0xfd; //设置波特率为9600
TL1=0xfd;
TR1=1; //启动T1
REN=1; //允许串行口接收
SM0=0; //串口工作方式1
SM1=1;
EA=1; //开放所有中断
ES=1; //允许串行口中断
}
void Time0_Init() //定时器初始化
{
// TMOD=0x01; //定时器0工作在方式1
IE=0x82;
TH0=0xff;
TL0=0xa3; //11.0592MHz晶振,0.1ms
TR0=1; //定时器开始
}
void Time0_Int() interrupt 1
{
TH0=0xff;
TL0=0xa3;
if(count pwm=1; //确实小于,pwm输出高电平
else
pwm=0; //大于则输出低电平
count=(count+1); //0.5ms次数加1
count=count%40; //次数始终保持为40即保持周期为20ms
}
void main()
{
jd=12;
count=0;
Time0_Init();
Com_Init();
while(1)
{
if(flag==4)
{
do
{
if(flag != 4)
break;
jd=5;
count=0;
delay(500);
for(i=1;i<=14;i++)
{
if(flag != 4)
break;
jd++;
count=0;
if(jd==20)
jd=19; //已经是180度,则保持
delay(500);
if(i==14)
{
for(i=1;i<=14;i++)
{
if(flag != 4)
break;
jd--;
count=0;
if(jd==4)
jd=5; //已经是0度,则保持
delay(500);
}
}
}
}while(flag!=4);
}
}
}
void ser() interrupt 4
{
if(RI==0) return;
ES=0; //关闭口中断
RI=0; //清除口接收标志位
a=SBUF; //读取字符
flag=a;
ES=1; //允许串口中断
P2 = ~P2;
if(flag==1)
{
jd++;
count=0; //按键按下 则20ms周期从新开始
if(jd==20)
jd=19; //已经是180度,则保持
}
if(flag==2)
{
jd--;
count=0;
if(jd==4)
jd=5; //已经是0度,则保持
}
if(flag==3)
{
jd=12;
count=0;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7199 2010-08-29 23:32 串口控制舵机\串口控制舵机.LST
文件 2099 2010-08-30 00:10 串口控制舵机\串口控制舵机.c
文件 1348 2010-08-29 23:32 串口控制舵机\串口控制舵机.hex
文件 41 2010-08-29 23:32 串口控制舵机\串口控制舵机.lnp
文件 6232 2010-08-29 23:32 串口控制舵机\串口控制舵机.OBJ
文件 8462 2010-08-29 23:32 串口控制舵机\串口控制舵机.M51
文件 996 2010-08-30 00:10 串口控制舵机\串口控制舵机.Opt
文件 5404 2010-08-29 23:32 串口控制舵机\串口控制舵机
文件 199 2010-08-30 00:10 串口控制舵机\串口控制舵机.plg
文件 2160 2010-08-27 00:34 串口控制舵机\串口控制舵机.Uv2
文件 0 2010-08-26 09:53 串口控制舵机\串口控制舵机_Uv2.Bak
....... 994 2010-08-29 23:34 串口控制舵机\串口控制舵机_Opt.Bak
目录 0 2010-08-29 19:52 串口控制舵机
----------- --------- ---------- ----- ----
35134 13
相关资源
- Modbus协议官方文档中、英文全
- 易语言OTG串口通信
- delphi 串口通讯
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- STM32蓝牙和串口程序
- LCD显示温度+串口接收温度.rar
- WPF USB 网络 串口 通信软件
- 51单片机PWM程序,占空比、周期可调整
- DELPHI与西门子200PLC的串口通信实例
- Verilog FPGA UART串口控制器
- 51单片机多功能自行车测速仪
- USB转串口驱动,FT232R驱动程序,最新
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- 51单片机控制舵机程序
- PC 串口调试软件
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 单片机与PC机串口通讯仿真
- 串口调试助手V5.0
- 双串口调试助手 V4.0 _ 可同时调试两个
- 读取串口数据并画实时曲线的VC 程序
- 网络(UDP)转串口程序
评论
共有 条评论