导航:首页 > 软件知识 > 怎么样给遥控器芯片写入程序

怎么样给遥控器芯片写入程序

发布时间:2022-11-15 10:37:48

A. 12款福克斯,新配的遥控器钥匙为什么只能遥控门锁不能启动车子

12款福克斯,新配的遥控器钥匙只能遥控门锁不能启动车子的原因:除了有可能是芯片损坏,也会和遥控钥匙或钥匙防盗控制系统故障和转向锁故障有关。如果是钥匙的芯片损坏,那么需要去4S店或者规模大一点的汽车修理店,将钥匙芯片配对,重新写入芯片程序。

首先排查是如何解锁汽车的,如果是用钥匙直接开锁,尝试一下用遥控重新开锁,然后把遥控钥匙贴在点火开关位置,看是否能把点火开关转到ON挡,并留意一下组合仪表上防盗指示灯是否常亮,如防盗指示灯常亮,可用专用的诊断电脑重新匹配注册遥控钥匙试试。



遥控钥匙的工作方式

当车主进入钥匙系统的感应区域内只要手触及车门把手,其携带的身份识别钥匙就会接收到汽车发送的低频信号,如果这个信号与钥匙中保存的身份识别信息一致,钥匙将被唤醒。钥匙被唤醒后将分析汽车发出的认证口令并发送相应信号,这些信号经过加密处理以提高安全性。

汽车会对接收信号和汽车内部保存的信息进行比较,如果验证通过,汽车将打开车门锁。一旦驾驶员进入车内,只需要简单的按一下启动键,汽车发动机就会启动。按键触发时PKE系统首先需要检测钥匙设备是否在车内,然后完成同样的认证过程后才会启动发动机。

B. 禹鼎遥控器编程器,可发自制吗可以写空白芯片吗

买一条禹鼎遥控器编程线,安装禹鼎软件(F21,F23,F24)和编程线(PL2303)驱动就OK,下面附编程线电路图仅供参考!

C. 怎样将好的玩具遥控车遥控器上的芯片转到新的遥控器里

遥控器频率是配对的, 你仅把"芯片"移殖是没有用的..! 当然, 如果是简易玩具车的遥控, 只需要移过去, 重新连接天线/控制线/电源线就可以了...! (遥控器按键坏了? 换一个按键下面的"微动开关"就OK..!)

D. 想知道红外遥控LED等遥控器方面的程序要怎么写

给你一个我编的红外解码的程序,这个程序会将接收到的红外编码中的8位码通过串口发送到上位机,你可以通过串口调试助手来看看,程序是正确的,希望对你有参考价值。 ////////////////////////////////////////////////////////////////// //////////////////////////yorkWorldDream///////////////////////// ///////////////////////////////////////////////////////////////// #include"reg52.h" #define uchar unsigned char #define uint unsigned int  //tc9012 uchar flag=0;//是否接到起始位标志 未接到为0 接到为1 uchar traflag=0;//翻译是否完成标记 完成为1 uchar rec[33];//接收遥控器发送的所有数据 用来记录两个下降沿之间的时间 uchar recok=0;//是否接收完一帧数据标记 接收完为1 uchar sendok=0;//是否发送完毕标记 发送完成为1 uchar num=0;//变相记录时间   uchar n=0;//rec[]中的数组定位 void timerinit();//定时器0初始化    void ruptinit();//外部中断0初始化   void tradata();//一帧数据的翻译 即把时间记录转换成0/1 void send();//把收到的数据发给上位机    void delay(); //////////////////////////定时器 中断初始化///////////////////////////////// void timerinit()//定时器0 {  TMOD=0x02;//定时器0使用方式2  TH0=0x00;  TL0=0x00;  EA=1;  ET0=1;//定时器中断开   TR0=1;//计时开     } void ruptinit()//外部中断0 {  EA=1;  EX0=1;//外部中断开      IT0=1;//下降沿触发 0是电平触发   } ////////////////////////////定时器 中断函数////////////////////////////// void timer() interrupt 1 //系统从0x00记到0xff 每记一次时间大概为1us 记256次 即256us中断一次 {  num++;//num记录的是256us的个数 总时间=num*256us } void rupt() interrupt 0   //外部中断0 当遇到下降沿时触发    {  if(flag==1)//flag为1 说明收到了起始位 接下来要开始进行记录了     {   if(num>32)//时间为32*256us=8.2ms是整个起始位的时间      { n=0; }   rec[n]=num;//记录两个下降沿之间的num值 这样也就相当于记录了其间的时间   num=0;   n++;   if(n==33)//因为前面是n++ 所以当n=33时 数组已经从0记到了32 已经记满了   {    recok=1;//标记 接收一帧数据完成         n=0;      }    }  else//首次得到下降沿到达这里 使flag变1 用来说明收到了起始位  {    flag=1;  } } /////////////////////////////时间翻译函数/////////////////////////////////////// void tradata()//一帧数据的翻译 即把时间记录转换成0/1 {  uchar i;  for(i=1;i/0的数据时间是num=4.4 1的数据时间是num=8.8   {     //记住要从rec[1]开始 因为rec[0]记录的是引导码的num值    if(rec[i]>6)//使用6做中间值 小于则为0 大于为1 用0/1替换rec中的数据 这样就进行了翻译   { rec[i]='1'; }//因为要以字符串发送 所以这里用字符形式    else    rec[i]='0';    }  traflag=1;//翻译完成标记  } /////////////////////////////发送数据函数//////////////////////////////////// void send()//把收到的数据发送给上位机 具体细节不懂看串口通信 mcu to pc {   uchar i;  TMOD=0x20;  TH1=0xfd;  TL1=0xfd;  TR1=1;  SM0=0;  SM1=1;  REN=1;  for(i=25;i/选择要发送出去的数据 这里是从25开始发送的     {  SBUF=rec[i];  while(!TI);  TI=0;  }  sendok=1; }                                              //////////////////////////////////////////////////////////////////////// void delay()//1ms {  unsigned char a,b,c;     for(c=1;c>0;c--)         for(b=142;b>0;b--)             for(a=2;a>0;a--); } void main() {  timerinit();//定时器0初始化     ruptinit();//外部中断0初始化    while(1)  {   if(recok==1)//接收一帧数据完成      {    P1=0xfe;//灯亮一下 为了指示是否收到了数据       tradata();//翻译数据     }   delay();   if(traflag==1)//翻译完成      {    send();//发送          }   delay();   if(sendok==1)//发送完成       {    flag=0;    traflag=0;    recok=0;    sendok=0;    P1=0xff;    timerinit();    ruptinit();   }      //全部恢复初始    }

E. 如何编写红外遥控器 客户码

以下是程序,调试成功,LCD1602显示
//本解码程序适用于NEC的upd6121及其兼容芯片的解码,支持大多数遥控器 实验板采用11.0592MHZ晶振
#include<reg52.h> //包含单片机寄存器的头文件
#include<intrins.h> //包含_nop_()函数定义的头文件
sbit IR=P3^2; //将IR位定义为P3.2引脚
sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚
sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚
sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚
sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚
sbit BEEP = P3^6; //蜂鸣器控制端口P36
unsigned char flag;
unsigned char code string[ ]= {"1602IR-CODE TEST"};
unsigned char a[4]; //储存用户码、用户反码与键数据码、键数据反码
unsigned int LowTime,HighTime; //储存高、低电平的宽度
/*****************************************************
函数功能:延时1ms
***************************************************/
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delay(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}

/*********************************************************/
void beep() //蜂鸣器响一声函数
{
unsigned char i;
for (i=0;i<100;i++)
{
delay1ms();
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay(250); //延时
}

/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
unsigned char BusyTest(void)
{
bit result;
RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1; //E=1,才允许读写
_nop_(); //空操作
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
result=BF; //将忙碌标志电平赋给result
E=0;
return result;
}
/*****************************************************
函数功能:将模式设置指令或显示地址写入液晶模块
入口参数:dictate
***************************************************/
void WriteInstruction (unsigned char dictate)
{
while(BusyTest()==1); //如果忙就等待
RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令
RW=0;
E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,
// 就是让E从0到1发生正跳变,所以应先置"0"
_nop_();
_nop_(); //空操作两个机器周期,给硬件反应时间
P0=dictate; //将数据送入P0口,即写入指令或地址
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=1; //E置高电平
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:指定字符显示的实际地址
入口参数:x
***************************************************/
void WriteAddress(unsigned char x)
{
WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"
}
/*****************************************************
函数功能:将数据(字符的标准ASCII码)写入液晶模块
入口参数:y(为字符常量)
***************************************************/
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1; //RS为高电平,RW为低电平时,可以写入数据
RW=0;
E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,
// 就是让E从0到1发生正跳变,所以应先置"0"
P0=y; //将数据送入P0口,即将数据写入液晶模块
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=1; //E置高电平
_nop_();
_nop_();
_nop_();
_nop_(); //空操作四个机器周期,给硬件反应时间
E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令
}
/*****************************************************
函数功能:对LCD的显示模式进行初始化设置
***************************************************/
void LcdInitiate(void)
{
delay(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间
WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口
delay(5); //延时5ms
WriteInstruction(0x38);
delay(5);
WriteInstruction(0x38);
delay(5);
WriteInstruction(0x0C); //显示模式设置:显示开,有光标,光标闪烁
delay(5);
WriteInstruction(0x06); //显示模式设置:光标右移,字符不移
delay(5);
WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除
delay(5);
}
/************************************************************
函数功能:对4个字节的用户码和键数据码进行解码
说明:解码正确,返回1,否则返回0
出口参数:dat
*************************************************************/
bit DeCode(void)
{

unsigned char i,j;
unsigned char temp; //储存解码出的数据
for(i=0;i<4;i++) //连续读取4个用户码和键数据码
{
for(j=0;j<8;j++) //每个码有8位数字
{
temp=temp>>1; //temp中的各数据位右移一位,因为先读出的是高位数据
TH0=0; //定时器清0
TL0=0; //定时器清0
TR0=1; //开启定时器T0
while(IR==0) //如果是低电平就等待
; //低电平计时
TR0=0; //关闭定时器T0
LowTime=TH0*256+TL0; //保存低电平宽度
TH0=0; //定时器清0
TL0=0; //定时器清0
TR0=1; //开启定时器T0
while(IR==1) //如果是高电平就等待
;
TR0=0; //关闭定时器T0
HighTime=TH0*256+TL0; //保存高电平宽度
if((LowTime<370)||(LowTime>640))
return 0; //如果低电平长度不在合理范围,则认为出错,停止解码
if((HighTime>420)&&(HighTime<620)) //如果高电平时间在560微秒左右,即计数560/1.085=516次
temp=temp&0x7f; //(520-100=420, 520+100=620),则该位是0
if((HighTime>1300)&&(HighTime<1800)) //如果高电平时间在1680微秒左右,即计数1680/1.085=1548次
temp=temp|0x80; //(1550-250=1300,1550+250=1800),则该位是1
}
a[i]=temp; //将解码出的字节值储存在a[i]
}
if(a[2]=~a[3]) //验证键数据码和其反码是否相等,一般情况下不必验证用户码
return 1; //解码正确,返回1
}

/*------------------二进制码转换为压缩型BCD码,并显示---------------*/

void two_2_bcd(unsigned char date)
{

unsigned char temp;
temp=date;
date&=0xf0;
date>>=4; //右移四位得到高四位码
date&=0x0f; //与0x0f想与确保高四位为0
if(date<=0x09)
{
WriteData(0x30+date); //lcd显示键值高四位
}
else
{
date=date-0x09;
WriteData(0x40+date);
}
date=temp;
date&=0x0f;
if(date<=0x09)
{
WriteData(0x30+date); //lcd显示低四位值
}
else
{
date=date-0x09;
WriteData(0x40+date);
}
WriteData(0x48); //显示字符'H'
}
/************************************************************
函数功能:1602LCD显示
*************************************************************/
void Disp(void)
{
WriteAddress(0x40); // 设置显示位置为第一行的第1个字
two_2_bcd(a[0]);
WriteData(0x20);
two_2_bcd(a[1]);
WriteData(0x20);
two_2_bcd(a[2]);
WriteData(0x20);
two_2_bcd(a[3]);

}
/************************************************************
函数功能:主函数
*************************************************************/
void main()
{
unsigned char i;
LcdInitiate(); //调用LCD初始化函数
delay(10);
WriteInstruction(0x01);//清显示:清屏幕指令
WriteAddress(0x00); // 设置显示位置为第一行的第1个字
i = 0;
while(string[i] != '\0') //'\0'是数组结束标志
{ // 显示字符 www.RICHMCU.COM
WriteData(string[i]);
i++;
}
EA=1; //开启总中断
EX0=1; //开外中断0
ET0=1; //定时器T0中断允许
IT0=1; //外中断的下降沿触发
TMOD=0x01; //使用定时器T0的模式1
TR0=0; //定时器T0关闭
while(1); //等待红外信号产生的中断

}
/************************************************************
函数功能:红外线触发的外中断处理函数
*************************************************************/
void Int0(void) interrupt 0
{
EX0=0; //关闭外中断0,不再接收二次红外信号的中断,只解码当前红外信号
TH0=0; //定时器T0的高8位清0
TL0=0; //定时器T0的低8位清0
TR0=1; //开启定时器T0
while(IR==0); //如果是低电平就等待,给引导码低电平计时
TR0=0; //关闭定时器T0
LowTime=TH0*256+TL0; //保存低电平时间
TH0=0; //定时器T0的高8位清0
TL0=0; //定时器T0的低8位清0
TR0=1; //开启定时器T0
while(IR==1); //如果是高电平就等待,给引导码高电平计时
TR0=0; //关闭定时器T0
HighTime=TH0*256+TL0; //保存引导码的高电平长度
if((LowTime>7800)&&(LowTime<8800)&&(HighTime>3600)&&(HighTime<4700))
{
//如果是引导码,就开始解码,否则放弃,引导码的低电平计时
//次数=9000us/1.085=8294, 判断区间:8300-500=7800,8300+500=8800.
if(DeCode()==1) // 执行遥控解码功能
{

Disp();//调用1602LCD显示函数
beep();//蜂鸣器响一声 提示解码成功
}
}
EX0=1; //开启外中断EX0
}

F. ETCp遥控器怎么写码

分别写三种类型的码,学习码、固定码与滚动码。
固定码:常用IC芯片:SC2260 、SC2262 、HS2260、HS2262、PT2262,地址编码组合为:3的8次方(6561)。学习码:代表IC:编码:EV1527、 HS1527 、HS2240、 HTP6P20B、 HT6P20D,地址编码组合为:2的20次方(1048576简称100万组)。滚动码常用IC芯片主要有:HCS101、HCS301、HCS300、HCS200等,地址码编码组合:由28位序列号、4个按键位、2个状态位和32位加密值构成的一组发送66位编码的芯片,遥控器按键每按一次芯片内同步计算器累计一次,从而使数据发生跳变,以此增加信息的安全性,从而使编码截获和重发均无效。

G. 车库门遥控器没有数据输入插口如何写入数据

你买的遥控器,据你的描述应该是焊码或拔码的普通固定码遥控器,这个是要手工编码的,一般只要和原遥控器PT2272IC上的8脚编码一样就可以使用。不行就得查看振荡电阻的值对不对。

H. N51如何生成遥控器

生成共有五个步骤。
一.同样使用51单片机作为控制芯片,同样只需要一个芯片和一个晶振电路单片机就能运行,但是注意可以将需要的引脚外拉。二.将按键开关的两端,一端连接到单片机引脚,另一端接到地,接单片机的一端再通过一个10K电阻上拉到5V,也可以不上拉,亲试能用,上拉的话稳定一些,能够防干扰,按键数目自行而定,按照遥控器的那件分布来在洞洞板上焊接。三.蓝牙信号脚要结对,只需要单片机的发射脚,即P3.1接到蓝牙模块的接收脚,注意和之前的不一样;蓝牙模块设置成主模块,但是注意车上的蓝牙设置成从模块,注意波特率一致。四.需要两节18650电池(两节7.2V),使用一个lm2940稳压芯片就可以产生5V电压给设备供电,或使用其他的5V电源来供电,比如说充电宝。五.启动程序。
单片机是一种控制芯片,一个微型的计算机,加上晶振,存储器,地址锁存器,逻辑门,显示器,按钮,扩展芯片,接口等构成单片机系统。利用51单片机内部UART功能和蓝牙模块实现单片机之间的无限遥控,主要通过编程用于控制其他单片机或微机系统。

I. 51单片机遥控车编程,帮忙写程序要求在下面

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
void delay(uint n)
{ uint x,y;
for(x=n;x>0;x--)
for(y=110;y>0;y--);
}
void forward()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}

void reverse()
{
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
void left()
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
void right()
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
void stop()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}

void RSINTR() interrupt 4
{
if(RI==1)
{
RI=0;
if(SBUF=='A')
reverse();
else if(SBUF=='B')
forward();
else if(SBUF=='C')
left();
else if(SBUF=='D')
right();
else if(SBUF=='E')
stop();

}
}
main()
{
SCON=0x50;//允许串口接收
TMOD=0x20;
PCON=0x80;
TH1=0xfd;
TL1=0xfd;
RI=0;
TR1=1;
EA=1;
ES=1;
while(1)
{
}

}

阅读全文

与怎么样给遥控器芯片写入程序相关的资料

热点内容
全国版权交易平台有多少家 浏览:928
学信网信息补充哪个学校怎么填 浏览:319
地产营销代理是什么 浏览:235
个体商户的委托代理人是什么人 浏览:516
国产红酒怎么代理 浏览:609
开学报到个人信息怎么填 浏览:12
干洗技术学什么好 浏览:609
中山大学的电子信息类是学什么的 浏览:658
最细市场上米线是什么样 浏览:724
青海有哪些农牧产品 浏览:654
济南纺织市场搬去哪里 浏览:418
代理人员的责任有哪些 浏览:305
职高和职业技术哪个好 浏览:573
芒果市场上一斤多少钱 浏览:477
怎么在程序和功能上删掉橘子 浏览:958
碳排放权上线交易什么意思 浏览:229
熟食市场怎么打开 浏览:371
怎么选产品爆款 浏览:741
打了疫苗后为什么查不到信息 浏览:731
微信有了小程序怎么退出 浏览:446