#include "cpu.h"
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
void Uart_Control(void);
void GetMcuUID(void);
void ReportToServer();
unsigned char ChipID[4];
code unsigned char auchCRCLo[]=
{
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,
0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,
0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7,
0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE,
0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2,
0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB,
0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91,
0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88,
0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80,
0x40
};
/* Table of CRC values for high杘rder byte */
code unsigned char auchCRCHi[]=
{
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
0x40
};
unsigned int getCRC16(unsigned char *array,unsigned char length)
{
unsigned char uchCRCHi = 0xFF ; /* ??????*/
unsigned char uchCRCLo = 0xFF ; /* ??????*/
unsigned char uIndex ; /*CRC???*/
while(length--)
{
uIndex=uchCRCHi^*array++; ;
uchCRCHi=uchCRCLo^auchCRCHi[uIndex];
uchCRCLo=auchCRCLo[uIndex];
}
return ((uchCRCHi<<8)|uchCRCLo);
}
unsigned char TXbup[30];
void ReportToServer(void)
{
unsigned int CRCTemp=0;
TXbup[12]=1;//Fan_QTY
TXbup[13]=FanStauts;//CH1-Status
TXbup[14]=0x00;//CH2-Status
TXbup[15]=0x00;//CH3-Status
TXbup[16]=0x00;//CH4-Status
CRCTemp = getCRC16(TXbup,17);
TXbup[17]=CRCTemp>>8;
TXbup[18]=CRCTemp;
SendData_String(TXbup,19);
}
const unsigned char Buffer1[1] = {0x01};
const unsigned char Buffer2[1] = {0x02};
const unsigned char Buffer3[1] = {0x03};
const unsigned char Buffer4[1] = {0x04};
const unsigned char Buffer5[1] = {0x05};
unsigned char Demo_For_BYD[12] = {0xc0,0xA8,0x00,0xD1,0xAA,0x01,0x00,0x00,0x00,0x00,0x00,0x0d};
void GetMcuUID(void)
{
unsigned char *ADD;
unsigned char ID[7];
unsigned char Get=0;
unsigned int CRC=0;
ADD=0xf1;
for(Get=0;Get<7;Get++)
{
ID[Get]=*ADD;
ADD++;
};
CRC = getCRC16(ID,7);
ChipID[0]=ID[5];
ChipID[1]=ID[6];
ChipID[2]=CRC>>8;
ChipID[3]=CRC;
}
void ReBackToPC(unsigned char Type)
{
unsigned int CRC=0;
unsigned char Buf[20];
Buf[0]=0xaa;
Buf[1]=0xbb;
Buf[2]=0xcc;
Buf[3]=0xdd;
Buf[4]=21;//DataLEN
Buf[5]=Type;//Commandtype
Buf[6]=ChipID[0];//SN1
Buf[7]=ChipID[1];//SN2
Buf[8]=ChipID[2];//SN3
Buf[9]=ChipID[3];//SN4
Buf[10]=0x0d;//Equipment-Number
CRC = getCRC16(Buf,11);
Buf[11]=CRC>>8;
Buf[12]=CRC;
SendData_String(Buf,13);
}
#define Status 0x05
#define Power_Command 0xfb
#define FanSpeed 0x07
#define Clear_Command 0x08
void Uart_Control(void)
{
// unsigned char z;
unsigned char Clear=0;
unsigned char Buffer = 0 ; //WiFi用到的缓存
unsigned char Buffer_2 = 0 ; //WiFi用到的缓存
unsigned char Buffer_3 = 0 ; //WiFi用到的缓存
unsigned char Buffer_4 = 0 ; //WiFi用到的缓存
unsigned char Dop_Number = 0 ; //WiFi用到的缓存,'.'的个数
unsigned char Comma_Number = 0 ; //WiFi用到的缓存,','的个数
unsigned char TEST88[] = {0x11,0x22,0x33,0x44,0x55} ; //WiFi用到的缓存,','的个数
if( _gUart_Control.State == GET )
{
_gUart_Control.State = 0 ;
_gUart_Control.R_Value = _gUart_Control.R_Counter ; //获取接收到字节的个数
_gUart_Control.R_Counter = 0 ;
if(
((_gUart_Control.R_Buffer[0])==0xaa)&&((_gUart_Control.R_Buffer[1])==0xbb)
&&((_gUart_Control.R_Buffer[2])==0xcc)&&((_gUart_Control.R_Buffer[3])==0xdd)
)//AA--BB--CC--DD
{
unsigned int TempCRC=0;
unsigned int TempLen=0;
unsigned char tcrc[]={0,0};
unsigned char Dattemp[]={0,0};
TempLen=_gUart_Control.R_Buffer[4];
TempCRC=getCRC16(_gUart_Control.R_Buffer,(TempLen-2));
tcrc[0]=TempCRC>>8;//
tcrc[1]=TempCRC;
//SendData_String(tcrc , 2);
Dattemp[0]=_gUart_Control.R_Buffer[TempLen-1];
Dattemp[1]=_gUart_Control.R_Buffer[TempLen-2];
//SendData_String(Dattemp , 2);
// SendData_String(tcrc , 1);
//if(1)
if( (tcrc[0]==Dattemp[0] )
&& (tcrc[1]==Dattemp[1] )
)//---CRC OK ???
{
unsigned char CommandType=_gUart_Control.R_Buffer[5];
switch(CommandType)
{
case (Status):
ReportToServer();
break;
case (Power_Command):
if((_gUart_Control.R_Buffer[6])==0x01)
{
//TurnON
_gConsole.BEEP_State = ON ;
_gConsole.State = START;
}
else if((_gUart_Control.R_Buffer[6])==0x02)
{
//TurnOFF
_gConsole.BEEP_State = ON ;
_gConsole.State = IDLE ;
FanStauts=0;
};
ReBackToPC(0xfb);
break;
case (FanSpeed):
if(_gConsole.State == START)
{
if(_gUart_Control.R_Buffer[6])
{
if((_gUart_Control.R_Buffer[6])>=0x07)
{
_gConsole.FAN_Speed = 7 ;
}
else
{
_gConsole.FAN_Speed =_gUart_Control.R_Buffer[6];
}
EEPROM_Write_C
没有合适的资源?快使用搜索试试~ 我知道了~
STC单片机+红外遥控编解码控制4路PWM输出-串口调试工具中显示4路PWM输出数据.rar
共114个文件
lst:24个
c:22个
obj:18个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 5 下载量 190 浏览量
2022-07-13
07:31:54
上传
评论
收藏 589KB RAR 举报
温馨提示
STC单片机+红外遥控编解码控制4路PWM输出-串口调试工具中显示4路PWM输出数据 通过红外遥控四路电机,可以控制小车运动,红外遥控都可以控制,内部有红外遥控学习编码的程序。使用时首先要先学习红外遥控码,对码成功之后才可以遥控控制,可以控制4路PWM输出,并且还可以通过串口查看红外遥控数据,直接可以显示到串口调试工具中显示数据
资源推荐
资源详情
资源评论
收起资源包目录
STC单片机+红外遥控编解码控制4路PWM输出-串口调试工具中显示4路PWM输出数据.rar (114个子文件)
138v3.0_NewAgreement_20210128a 403KB
138 399KB
138__new 408KB
138v31_NewAgreement_20210128a 403KB
138v31_NewAgreement_20210223b 407KB
138v3BYDDemo 403KB
STARTUP.A51 6KB
138.uvgui.Administrator 73KB
138.uvgui_Administrator.bak 136KB
138.uvgui_YC.bak 70KB
138_uvproj.bak 17KB
138_uvopt.bak 16KB
Console_Uart.c 16KB
Console_WiFi.c 13KB
Console_Key.c 12KB
tm1668.c 8KB
Console_EEPROM.c 7KB
Timer.c 7KB
Console_State.c 6KB
Console_Uart2.c 4KB
UART.c 4KB
Key.c 3KB
EEPROM.c 3KB
UART2.c 3KB
Main.c 2KB
INTO.c 2KB
PWM.c 2KB
Display.c 1KB
Data_Init.c 1KB
Console_Fan.c 802B
IO.c 272B
WatchDog.c 191B
Console.c 174B
GPIO.c 0B
Console.h 4KB
cpu.h 2KB
uart.h 684B
Key.h 677B
Display.h 502B
Timer.h 362B
uart2.h 308B
INTO.h 269B
EEPROM.h 225B
tm1668.h 191B
DATA_INIT.h 92B
global.h 79B
IO.h 75B
138v31_NewAgreement_20210224c.hex 36KB
138v31_NewAgreement_20210224c.build_log.htm 2KB
138__new.build_log.htm 2KB
138v31_NewAgreement_20210223b.build_log.htm 1KB
138v3.build_log.htm 1KB
138v31_NewAgreement_20210128a.build_log.htm 1KB
138v3BYDDemo.build_log.htm 1KB
138v31_NewAgreement_20210224c.lnp 696B
138v3.lnp 673B
138v3BYDDemo.lnp 662B
138__new.lnp 654B
138.lnp 644B
Console_Uart.lst 27KB
Console_Key.lst 23KB
Console_WiFi.lst 21KB
STARTUP.lst 14KB
tm1668.lst 13KB
Timer.lst 13KB
Console_EEPROM.lst 11KB
Console_State.lst 11KB
Console_Uart2.lst 8KB
Key.lst 8KB
UART.lst 7KB
EEPROM.lst 5KB
UART2.lst 5KB
Main.lst 4KB
INTO.lst 4KB
PWM.lst 3KB
Display.lst 3KB
Console_Fan.lst 3KB
Data_Init.lst 2KB
IO.lst 1KB
Console.lst 1KB
WatchDog.lst 1KB
GPIO.lst 828B
AD.lst 517B
138v31_NewAgreement_20210223b.m51 134KB
138v31_NewAgreement_20210224c.m51 131KB
138v31_NewAgreement_20210128a.m51 129KB
138v3.m51 129KB
138v3BYDDemo.m51 129KB
138__new.m51 128KB
138.m51 127KB
Console_Uart.obj 26KB
Console_EEPROM.obj 26KB
Timer.obj 22KB
tm1668.obj 22KB
Console_Uart2.obj 20KB
Key.obj 19KB
Main.obj 18KB
UART.obj 18KB
UART2.obj 17KB
Display.obj 16KB
共 114 条
- 1
- 2
资源评论
- z3921980962023-07-26这个资源值得下载,资源内容详细全面,与描述一致,受益匪浅。
- 彼此9752023-06-03超级好的资源,很值得参考学习,对我启发很大,支持!
- m0_621284172023-12-31资源很赞,希望多一些这类资源。
- 小刘爱学习哈哈2023-03-08总算找到了自己想要的资源,对自己的启发很大,感谢分享~
- max挖坑2023-09-27实在是宝藏资源、宝藏分享者!感谢大佬~
ZCY5202015
- 粉丝: 325
- 资源: 747
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功