久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4210|回復: 1
打印 上一主題 下一主題
收起左側

[討論]學習型遙控器的方案程序討論

[復制鏈接]
跳轉到指定樓層
樓主
ID:36149 發表于 2012-3-13 00:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

我最近在研究用51做一個學習型遙控器,參考了網上的一些程序,只是這個程序只是用于學習單個按鍵的,而且還不是很穩定,我想做一個能夠學習多個按鍵的遙控器,不過我剛開始學單片機不久,對于網上的那個程序還不能完全看出究竟有哪些不足,也不知道如何在它的基礎上將遙控代碼存進AT24C02等系列的存儲器里面,希望有相同興趣愛好的或者之前有過研究的人能夠指點下,感激不盡,若有較完善的程序代碼的話,那就感激涕零了。

/********學習型遙控器程序*********/
#include<reg52.h>
#include<intrins.h>   //延時函數
#define uchar unsigned char
#define uint unsigned int
sbit studylamp=P1^6; //學習指示燈
sbit lamp=P1^7; //發射指示燈
sbit studykey=P3^3; //學習鍵
sbit remotein=P3^2; //遙控信號輸入口
sbit remoteout=P3^5; //遙控信號輸出口
sbit txkey=P3^0; //發射鍵
uint i,j,m=2040,n,k,s;
uchar idata remotedata[206]; //存脈沖寬度數據用
uint head; //存起始位用
uint remdata; //
/****一毫秒延時程序****/
delay1ms(uint t)
{
  for(i=0;i<t;i++)
   for(j=0;j<120;j++)
  ;
}
/****初始化程序****/
clearmen()
{
  studylamp=1;//關學習指示燈
  lamp=1;  //關發射指示燈
  remoteout=0; //關遙控輸出
  remotein=1;  //
  for(i=0;i<206;i++)
   {remotedata=0x00;}  //清內存
  IE=0x00;
  IP=0x01;
  TMOD=0x22;//八位自動重裝模式
  PCON=0x00;
  TH1=0xf3;//40KHz初值
  TL1=0xf3;
  IT1=1;//脈沖延跳變模式
  EX1=1; //外中斷允許
  EA=1; //開總中斷
}
/*****鍵功能函數****/
keywork()
{
  if (txkey==0)
    {while(txkey==0);//等待鍵釋放
      ET1=1;
      TR1=1;//發起始位
      for(i=head;i>0;i--){;}
    remoteout=0;
    ET1=0;
    TR1=0;
    n=0;
    while(1)
    { if(remotedata[n]==0)
      {delay1ms(10);break;} //數據為0結束
      for(i=remotedata[n];i>0;i--)
        {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
      lamp=~lamp;
      n++;//偶地址不發送
      ET1=1;
      TR1=1;//奇地址發送調制脈沖
       for(i=remotedata[n];i>0;i--){;}
      remoteout=0;
      ET1=0;
      TR1=0;
      n++; 
    } 
  } 
}
/******主函數****/
main()
{
  clearmen();
  while(1)
  {
   keywork();
  }
 
}
/****40KHz載波發生函數*****/
 void time_intt(void)interrupt 3
{
remoteout=~remoteout;
}
/*******學習函數*****/
//外中斷1
void intt1(void)interrupt 2

  ET1=0;TR1=0;EA=0;EX0=0;EX1=0;
  head=0;studylamp=0;lamp=1;
  while(studykey==0);//等待鍵釋放
 
  while(remotein==1);//等待遙控碼輸入
  head=0;//讀入起始位
  while(remotein==0)
  {_nop_();_nop_();_nop_();_nop_();_nop_();
   _nop_();_nop_();_nop_();_nop_();_nop_();
   _nop_();_nop_();_nop_();_nop_();_nop_();
   head++;
  }
  head=head-1;
 n=0;remdata=0x00;
 
 while(1)
  {
   while(remotein==1)
   {_nop_();_nop_();_nop_();_nop_();_nop_();
   _nop_();_nop_();_nop_();_nop_();_nop_();
   _nop_();_nop_();_nop_();_nop_();_nop_();remdata++;
   }

if(remdata>m) //高電平大于5毫秒退出
  {remotedata[n]=0x00;EX1=1;EA=1; goto end;}
  remotedata[n]=remdata;n++;//存高電平脈寬數據
  remdata=0x00;//脈寬計數器清零
  while(remotein==0)
  {_nop_();_nop_();_nop_();_nop_();_nop_();
   _nop_();_nop_();_nop_();_nop_();_nop_();
   _nop_();_nop_();_nop_();_nop_();_nop_();
  remdata++;
  }//低電平計數
  remotedata[n]=remdata;
  n++;
  remdata=0x00;//存低電平脈寬數據
 }
 
end:lamp=0;studylamp=1;
  
}

 

 

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:79544 發表于 2016-8-24 12:14 | 只看該作者
我也在折騰這貨啊,希望有高手指點謎經
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕免费观看视频 | 欧美在线播放视频 | www.4hu95.com四虎| 亚洲综合区 | 久久国产小视频 | 亚洲一区二区免费视频 | 国产91av视频 | 国产理论片在线观看 | 岛国av噜噜噜久久久狠狠av | 午夜激情在线观看 | 亚洲国产福利 | 国产精品成人国产乱一区 | 一区二区不卡视频 | av久久| 国产美女福利 | 久久久久久97 | 久久国内视频 | 亚洲精品1区 | www.日日夜夜 | 午夜aaa | 中文字幕一区二区三区四区 | 国产在线欧美 | 成人高清免费 | 美国式禁忌14在线 | www国产精品 | 亚洲第一免费视频 | 九九在线 | 日本久久久久久 | 国产精品久久久久久无人区 | 国产欧美日韩 | 日本免费中文字幕 | 成人激情在线观看 | 亚洲特黄 | 国产欧美日韩视频 | 一区二区三区网站 | 草少妇 | 日韩精品久久久 | 日日夜夜精品视频免费 | 黄色片网站免费 | 国产网址| 国产精品三级在线 |