标题:
esp8266通讯手机APP控制云台舵机源程序
[打印本页]
作者:
lihongquan123
时间:
2020-12-8 10:21
标题:
esp8266通讯手机APP控制云台舵机源程序
直接上源码文件
云台.jpg
(36.24 KB, 下载次数: 67)
下载附件
2020-12-8 10:21 上传
单片机源程序如下:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define false 0
#define true 1
#define High 1
#define Low 0
//舵机控制引脚
sbit SERVO_SB1 = P1^0; //上臂1
sbit SERVO_SB2 = P1^1; //上臂2
sbit LED = P1^2;
sbit KEY1 = P2^0;
sbit KEY2 = P2^1;
sbit KEY3 = P2^2;
sbit KEY4 = P2^3;
sbit KEY5 = P2^4;
sbit KEY6 = P2^5;
uchar ComDat;
//调节范围5-19,对应舵机的0-180度
uchar pwm_val_SJ =0; //上夹子
uchar pwm_val_SB1 =0; //上夹子1臂
uchar pwm_val_SB2 =0; //上夹子2臂
uchar push_val_SJ =0;
uchar push_val_SB1 =0;
uchar push_val_SB2 =0;
uchar SB1_Val = 0;
uchar SB2_Val = 0;
bit Comflag = false;
//void Uart_byte(unsigned char adata)
//{
// TI=0;
// SBUF=adata;
// while(!TI);
// TI=0;
//}
void InitUART(void)
{
TMOD = 0x21;
SCON = 0x50;
TH1 = 0xFA;
TL1 = TH1;
PCON = 0x80;
ES = 1;
TR1 = 1;
}
void PWM_INIT()
{
TH0= 0XFF; //1ms定时
TL0= 0XA4;
TR0= 1;
ET0= 1;
EA = 1;
}
void Delay_1ms(uint t)
{
unsigned int i,j;
for(i=0; i<t; i++)
for(j=0; j<150; j++);
}
void Uart_byte(unsigned char adata)
{
TI=0;
SBUF=adata;
while(!TI);
TI=0;
}
void sendstring(unsigned char *string)
{
while(*string!='\0')
{
Uart_byte(*string);
string++;
}
}
void ESP8266_Init()
{
sendstring("AT\r\n");
Delay_1ms(200);
sendstring("AT+CWMODE=3\r\n");
Delay_1ms(300);
sendstring("AT+CIPMUX=1\r\n");
Delay_1ms(300);
sendstring("AT+CIPSERVER=1,8080\r\n");
Delay_1ms(300);
}
void main()
{
uchar DJ1 = 5,DJ2 = 19;
InitUART();
PWM_INIT();
ESP8266_Init();
pwm_val_SB1 = 0;
push_val_SB1 = DJ1;
pwm_val_SB2 = 0;
push_val_SB2 = DJ2;
while(1){
if(Comflag == 1){
Comflag = 0;
if(ComDat == 0xAA){
DJ1 ++;
if(DJ1>=19){
DJ1 = 19;
}
SB1_Val = DJ1;
//Uart_byte(SB1_Val);
push_val_SB1 = SB1_Val;
}
else if(ComDat == 0xBB){
DJ1 --;
if(DJ1<=5){
DJ1 = 5;
}
SB1_Val = DJ1;
//Uart_byte(SB2_Val);
push_val_SB1 = SB1_Val;
}
if(ComDat == 0xCC){
DJ2 ++;
if(DJ2>=19){
DJ2 = 19;
}
SB2_Val = DJ2;
//Uart_byte(SB1_Val);
push_val_SB2 = SB2_Val;
}
else if(ComDat == 0xDD){
DJ2 --;
if(DJ2<=5){
DJ2 = 5;
}
SB2_Val = DJ2;
//Uart_byte(SB2_Val);
push_val_SB2 = SB2_Val;
}
}
if(KEY1 ==0){
Delay_1ms(5);
if(KEY1 ==0){
DJ1 ++;
if(DJ1>=19){
DJ1 = 19;
}
SB1_Val = DJ1;
//Uart_byte(SB1_Val);
push_val_SB1 = SB1_Val;
while(!KEY1);
}
}
if(KEY2 ==0){
Delay_1ms(5);
if(KEY2 ==0){
DJ1 --;
if(DJ1<=5){
DJ1 = 5;
}
SB1_Val = DJ1;
//Uart_byte(SB1_Val);
push_val_SB1 = SB1_Val;
while(!KEY2);
}
}
if(KEY3 ==0){
Delay_1ms(5);
if(KEY3 ==0){
DJ2 ++;
if(DJ2>=19){
DJ2 = 19;
}
SB2_Val = DJ2;
//Uart_byte(SB2_Val);
push_val_SB2 = SB2_Val;
while(!KEY3);
}
}
if(KEY4 ==0){
Delay_1ms(5);
if(KEY4 ==0){
DJ2 --;
if(DJ2<=5){
DJ2 = 5;
}
SB2_Val = DJ2;
//Uart_byte(SB2_Val);
push_val_SB2 = SB2_Val;
while(!KEY4);
}
}
}
}
/***************************************************/
///*TIMER0中断服务子函数产生PWM信号*/
void timer0()interrupt 1
{
TH0=0XFF; //1Ms定时
TL0=0XA4;
pwm_val_SB1++;;
if(pwm_val_SB1<=push_val_SB1)
SERVO_SB1 = High;
else
SERVO_SB1 = Low;
if(pwm_val_SB1>=200){
pwm_val_SB1=0;
}
pwm_val_SB2++;;
if(pwm_val_SB2<=push_val_SB2)
SERVO_SB2 = High;
else
SERVO_SB2 = Low;
if(pwm_val_SB2>=200){
pwm_val_SB2=0;
}
}
void UARTInterrupt(void) interrupt 4
{
//// static int i=0;
// if(RI==1)
// {
// RI=0;
// if(SBUF==0xaa) LED=0; //开灯
// else if(SBUF==0xbb)LED=1; //关灯
//
// }
if(RI) {
RI = 0;
ComDat = SBUF;
Comflag = true;
}
}
复制代码
以上资料51hei提供下载:
NO12.zip
(46.67 KB, 下载次数: 31)
2020-12-8 10:20 上传
点击文件名下载附件
下载积分: 黑币 -5
28215.pdf
(212.44 KB, 下载次数: 21)
2020-12-8 10:21 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1