资源简介
通过单片机的串口发送控制数据 控制舵机的转向

代码片段和文件信息
#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
相关资源
- 2018西门子杯中国智能制造挑战赛逻辑
- AsyncTask文件控制暂停和继续,在状态
- DV泵加罗茨泵独立控制系统PID.smart
- F28335无刷直流电机开闭环控制
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 模糊PID控制 c
- 基于MSP430G2553的蓝牙控制小车
- 51单片机PWM程序,占空比、周期可调整
- Verilog FPGA UART串口控制器
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- SG3525频率PWM控制均可调模块
- 51单片机控制舵机程序
- Qt Creator opengl实现四元数鼠标控制轨迹
- 机器人单机械臂滑模控制程序
- ply格式文件的读写程序
- [免费]msp430f149控制PS2键盘并用1602显示
- 51单片机读取温度数据存储到SD卡中并
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- 【单片机】51单片机数码管显示万年历
- vhdl与lcd1602实现的多控制电子钟
- 欧姆龙控制2个伺服
- 远程桌面(带C 源码)
- 8259A中断控制实验
评论
共有 条评论