好爽又高潮了毛片免费下载,国产97在线 | 亚洲,亚洲一区二区三区AV无码,特级AAAAAAAAA毛片免费视频

行業(yè)產(chǎn)品

  • 行業(yè)產(chǎn)品

安陽(yáng)新世紀(jì)電子研究所有限公司


當(dāng)前位置:安陽(yáng)新世紀(jì)電子研究所有限公司>技術(shù)文章>單片機(jī)實(shí)現(xiàn)遙控編碼器PT2262的軟件解碼

經(jīng)營(yíng)模式:生產(chǎn)廠家

商鋪產(chǎn)品:9條

所在地區(qū):河南安陽(yáng)市

聯(lián)系人:張郁敏 (市場(chǎng)部銷(xiāo)售)

技術(shù)文章

單片機(jī)實(shí)現(xiàn)遙控編碼器PT2262的軟件解碼

閱讀:4583發(fā)布時(shí)間:2010-8-27

單片機(jī)實(shí)現(xiàn)遙控編碼器PT2262的軟件解碼

 來(lái)源: 國(guó)外電子元器件雜志    作者:未知    

 
 1.引 言

    PT2262是紅外遙控編碼器,PT2272是其接收解碼器,兩者常常配對(duì)使用,現(xiàn)已廣泛用于汽車(chē)門(mén)控、遙控門(mén)鎖、門(mén)禁管理等領(lǐng)域,也可用于傳送數(shù)字信息。PT2262具有19位二進(jìn)制編碼功能;PT2272的解碼只有4-6位,這就限制了數(shù)據(jù)傳輸?shù)膽?yīng)用。在此從PT2262接收的信號(hào)特征入手,利用8051F330單片機(jī)直接對(duì)接收到的信號(hào)進(jìn)行解碼,解釋出PT2262發(fā)出的全部19位數(shù)據(jù),從而使其應(yīng)用于數(shù)字通信、智能化控制等領(lǐng)域。

 2.硬件電路
    圖1是發(fā)射裝置的原理圖,PT2262作為編碼器,當(dāng)按下按鍵時(shí),設(shè)定的地址碼和數(shù)據(jù)碼從17引腳串行輸出,經(jīng)紅外發(fā)射元件IRED發(fā)出信號(hào)。通過(guò)電阻Rosc調(diào)節(jié)發(fā)射頻率,適當(dāng)提高PT2262工作電壓(2.6V-15V),以增大發(fā)射距離。其中A0-A12可設(shè)置為高電平、低電平、懸空三種狀態(tài),因此可以發(fā)送531441種編碼組合。*設(shè)計(jì)需求。
    接收裝置采用集紅外線接收、放大、整形與一體的集成電路TL0038,無(wú)需任何外接元件,就能完成從紅外線接收帶輸出與TTL電平信號(hào)兼容的所有工作,故適用于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。譯碼采用8051F330D單片機(jī),11.0592MHz晶體振蕩器,接收信號(hào)送至I/O斷口P1.0進(jìn)行軟件解碼。接收和譯碼電路如圖2所示。

 3.解碼原理
    編碼器PT2262發(fā)送的編碼信號(hào)是由:地址碼、數(shù)據(jù)碼、同步碼組成的一個(gè)完整碼字,zui多可以有12位(A0-A11)三態(tài)地址端引腳(懸空、高電平、低電平),任意組合可提供531441個(gè)地址碼。將編碼器PT2262的A8位拉高,D3拉高,D0拉高,D1拉低,其余懸空。截取一段接收信號(hào)輸出波形如圖3所示,PT2262每發(fā)射一次,至少發(fā)送4組相同編碼字碼。每組字碼間隔(低電平)約14ms。
    將其截獲波形每組字碼放大,如圖4所示,一組字碼有12位A/D碼,每個(gè)A/D位是由2個(gè)脈沖表示:2個(gè)窄脈沖則表示“0”;2個(gè)寬脈沖表示“1”;1個(gè)窄脈沖和一個(gè)寬脈沖表示“F”,即地址碼“懸空”;除此之外,每組字碼之間還有一個(gè)同步碼隔開(kāi),所以每組字碼共計(jì)有25個(gè)寬度不同的脈沖。窄脈沖寬為200µs;寬脈沖寬為1200µs;兩個(gè)窄脈沖之間寬1200µs;兩個(gè)寬脈沖間寬200µs;寬窄脈沖間寬為200µs;在4組字碼中,每組的字碼間隔為4000µs。因此,采用單片機(jī)軟件解碼時(shí),只要判斷出起始碼,并且識(shí)別起后面的字碼脈沖寬度即可。

 4.抗干擾措施
    常用抗干擾措施,是在硬件電路中采用電源濾波、電源穩(wěn)壓、數(shù)字地與模擬地隔離。在設(shè)計(jì)中,除采用上訴方法外,還根據(jù)干擾信號(hào)與有效信號(hào)波形特征異同點(diǎn),采用軟件識(shí)別干擾信號(hào)和有效信號(hào),從而實(shí)現(xiàn)“抗干擾”目的。
    當(dāng)遙控器不發(fā)射時(shí),由于空氣中各雜波干擾,接收模塊的信號(hào)輸出端仍然會(huì)有干擾信號(hào),截獲波形如圖5所示。
    觀察其特征,低電平zui長(zhǎng)為3000µs,zui短數(shù)十微秒;高電平zui長(zhǎng)500µs,zui短數(shù)微秒。與發(fā)射時(shí)接收到的規(guī)則波形(即非有效信號(hào))相比較,低電平為1400µs的信號(hào),是有效信號(hào),而不是干擾信號(hào)。并將A0-A34個(gè)地址焊接到高電平上作為發(fā)射編碼信號(hào)的幀前碼,可解決誤碼率和干擾問(wèn)題。

 5.軟件解碼
    步驟1:?jiǎn)纹瑱C(jī)循環(huán)記錄接收模塊信號(hào)電平脈沖的長(zhǎng)度,高低電平都記錄。
    步驟2:從記錄高低電平組成的波形中,找出連續(xù)8個(gè)1200µs時(shí)長(zhǎng)的脈沖信號(hào)為特征波形段,即幀前碼。
    步驟3:確認(rèn)幀前碼之間是否存在一個(gè)時(shí)長(zhǎng)為14000µs的低電平,如果有(則說(shuō)明不是干擾碼),將解碼并儲(chǔ)存結(jié)果,然后根據(jù)指令碼執(zhí)行相應(yīng)控制功能。如沒(méi)有,則放棄記錄的數(shù)據(jù),重復(fù)步驟1,直到滿足條件為止。
  以下給出了相關(guān)軟件解碼的程序代碼:
  #Include<c8051f330。h>
  unsigned int k,k1,k2,i=0,j;
  idata unsigned int bite[50]
  //存高電平,至少接收2組
  idata unsigned int bote1[40];//存低電平
  idata unsigned char jieguo[4];//解碼結(jié)果
  long int result;
  sbit P01=P0? 1;//無(wú)限信號(hào)接收端
  sbit P07=P0? 7;//驅(qū)動(dòng)LED
  void IOdingyi()//單片機(jī)配置
  { XBRO=0X01; XBR1= 0X40 ;
  P0MDIN=0XF3; P0MDOUT= 0X00;
  P0SKIP=0X0C; P1MDIN=0XFF;
  P1MDOUT=0X00;P1SKIP=0X00;
  }
  void oscillator() //單片機(jī)配置
  {OSCXCN =0X67;
  //開(kāi)啟外部振蕩器 12 MHz
  while((OSCXCN& 0X80)= =0X00){}
  CLKSEL =0x01; //切換到外部晶體振蕩器
  }
  void bianma() //記錄高低電平脈寬
  {for(j=0;j<50;j++) { bite[j]=0;bite1[j]=0;}
  //歸零
  for(j=0;j<50;j++) //用計(jì)數(shù)方式記錄脈寬
  {while(P01= =0) {bite1[j]++;}
  {while(P01= =1) {bite[j]++;}
  }
  }
  void yima()
  //把高電平脈寬解碼成十六進(jìn)制字碼
  { int s=500;
  //大于500脈寬為高電平,反之為低
  unsigned char r1=0x80,r2=0x80;
  unsigned char r0=0x80,r=0x80;
  idata unsigned char bite2[32];//解碼用
  for(j=0;j<8;j++)
  //將高電平轉(zhuǎn)換為十六進(jìn)制代碼
  { if(bite[j+k2]>s) {bite2[j]=r;}
  else {bite2[j]=0x00;}
  r=(r>>1);
  jieguo[0]=jieguo[0]+bite2[j];}
  for(j=8;j<16;j++)
  //將高電平轉(zhuǎn)換為十六進(jìn)制代碼
  { if(bite[j+k2]>s) {bite2[j]=r0;}
  else {bite2[j]=0x00;}
  r0=(r0>>1);
  jieguo[1]=jieguo[1]+bite2[j];}
  for(j=16;j<24;j++)
  //將高電平轉(zhuǎn)換為十六進(jìn)制代碼
  { if(bite[j+k2]>s) {bite2[j]=r1;}
  else {bite2[j]=0x00;}
  r1=(r1>>1);
  jieguo[2]=jieguo[2]+bite2[j];}
  for(j=24;j<32;j++)
  //將高電平轉(zhuǎn)換為十六進(jìn)制代碼
  { if(bite[j+k2]>s) {bite2[j]=r2;}
  else {bite2[j]=0x00;}
  r2=(r2>>1);
  jieguo[3]=jieguo[3]+bite2[j];}
  }
  void PT2262-72()
  { bianma();k2=0; yima();
  result=jieguo [0]*0x1000000+jieguo [1]*0x10000+jieguo[2]
  *0x100+jieguo[3];
  k1=0;
  while ((result&0xff000000)! =0xff000000)
  //找出幀前碼
  { result=(result<<1);k1++;
  //移位 result,直到幀前碼出現(xiàn)zui高位
  if(k1>25) {k1=0; break;}
  //找尋超過(guò)25次,退出找尋
  }
  k2=k1; yima();//ka存儲(chǔ)幀前碼,并將電平值從幀前碼開(kāi)始
  轉(zhuǎn)換為十六進(jìn)制代碼
  }
  main()
  { PCA0MD=0x00;EA=0;//關(guān)中斷,看門(mén)狗
  IOdingyi();oscillator();//初始化
  while(1)
  { PT2262-72();//軟件解碼程序
  //判斷幀前碼是否正確,排除干擾信號(hào)(幀前碼前面是否有14000µs低電平)
  if((jieguo[0]= =255)&&(bite1[k2]>6000)){;}
  //存儲(chǔ),認(rèn)為結(jié)果[0-2]有效
  else jieguo [0]=0;jieguo [1]=0;jieguo [2]=0;}
  //認(rèn)為jieguo無(wú)效,清零
  //根據(jù)指令碼,執(zhí)行控制功能
  if((jieguo[0]= =255)&&(jieguo[1]= =0x55)&&(jieguo[2]= =0x55))
  {P07=0;}
  //執(zhí)行控制程序這里讓p07驅(qū)動(dòng)數(shù)碼管發(fā)光
  else P07=1;//不正確,LED熄滅警示*/
  }
  )

 6.結(jié)束語(yǔ)
    該軟件解碼部分已在8051F330D單片機(jī)(11.0592MHz晶體振蕩器)上通過(guò)現(xiàn)場(chǎng)測(cè)試,設(shè)計(jì)方案可應(yīng)用與門(mén)禁管理系統(tǒng)。實(shí)踐表明,應(yīng)用方便、可靠性好、代碼識(shí)別準(zhǔn)確。

 


智慧城市網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ? Copyright(C)?2021 http://www.cmr6829.com,All rights reserved.

以上信息由企業(yè)自行提供,信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),智慧城市網(wǎng)對(duì)此不承擔(dān)任何保證責(zé)任。 溫馨提示:為規(guī)避購(gòu)買(mǎi)風(fēng)險(xiǎn),建議您在購(gòu)買(mǎi)產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。

會(huì)員登錄

×

請(qǐng)輸入賬號(hào)

請(qǐng)輸入密碼

=

請(qǐng)輸驗(yàn)證碼

收藏該商鋪

請(qǐng) 登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時(shí)間回復(fù)您~