欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

315Mhz無線模塊接收程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:128229 發表于 2016-6-27 22:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. # include<reg52.h>
  2. # define uint unsigned int
  3. # define uchar unsigned char

  4. sbit DATA=P3^2;
  5. sbit rs=P2^6;                  //1602引腳定義
  6. sbit rw=P2^5;
  7. sbit e=P2^7;
  8. uchar dat,num;

  9. uchar code table[]="0123456789ABCDEF";
  10. uchar code table1[]="Receive:";                //液晶固定部分顯示
  11. uchar code table2[]="Re_data:0x";

  12. void write_data (uchar dat);         //1602寫數據
  13. void write_com (uchar com);                 //1602寫命令
  14. unsigned char pow(unsigned char n,unsigned char m);        //n的m次方函數
  15. uchar receive(void);                          //接收處理函數  
  16. void gd();                        //液晶固定部分顯示

  17. void delay (uint xms)                //1602延時
  18. {
  19.         uint i,j;
  20.         for (i = xms; i > 0; i--)
  21.                 for (j = 110; j > 0; j--);
  22. }

  23. void delay1(unsigned char t)//延時程序
  24. {
  25.         unsigned char n;
  26.         for(;t>0;t--)
  27.         for(n=40;n>0;n--);  
  28. }

  29. unsigned char pow(unsigned char n,unsigned char m)//n的m次方函數
  30. {
  31.         unsigned  char t,result=1;
  32.         for(t=0;t<m;t++){result=n*result;}
  33.         return result;
  34. }

  35. void init_1602()
  36. {
  37.     e = 0;                                                //1602初始化
  38.         write_com (0x38);
  39.     write_com (0x0c);
  40.         write_com (0x06);
  41.         write_com (0x01);
  42.         gd();
  43. }

  44. /*1602液晶代碼部分        ------------------------------ */
  45. void write_com (uchar com)                //寫命令
  46. {
  47.         rs = 0;
  48.         rw = 0;
  49.         P0 = com;
  50.         delay (5);
  51.         e = 1;
  52.         delay (5);
  53.         e = 0;
  54. }

  55. void write_data (uchar dat)                 //寫數據
  56. {
  57.         rs = 1;
  58.         rw = 0;
  59.         P0 = dat;
  60.         delay (5);
  61.         e = 1;
  62.         delay (5);
  63.         e = 0;
  64. }

  65. void gd()                                //液晶固定部分顯示
  66. {
  67.     write_com(0x80);
  68.         for(num=0;num<8;num++)
  69.         {
  70.            write_data(table1[num]);
  71.                 delay(5);
  72.         }
  73.         write_com(0x80+0x40);
  74.         for(num=0;num<10;num++)
  75.         {
  76.            write_data(table2[num]);
  77.                 delay(5);
  78.         }
  79. }

  80. uchar receive(void)//接收處理函數
  81. {
  82.         unsigned char guid=0,result[12],i,key=0,res=0,t,time=0;
  83.         while(1)//捕獲前導命令
  84.         {
  85.                 while(DATA==1){t++;if(t>=90){delay1(100);return 0;}}//防止錯誤數據導致的死循環
  86.                 if(t>=60&&t<95){t=0;key++;time=0;if(key>3)break;}//獲得前導命令跳出循環,清除計時信號
  87.                 else if(time>100){delay1(100);return 0;}//長0,錯誤信號返回0
  88.                 else {t=0;time++;}//計時壘加,清除t                
  89.         }  
  90.         t=0;
  91.         time=0;
  92.         for(i=1;i<13;)             //校驗碼及數據的接收共12位數據
  93.         {
  94.                 while(DATA==1){t++;if(t>=95){delay1(100);return 0;}}//防止錯誤信號導致的死循環
  95.                 if(t>=60&&t<95){t=0;i=1;time=0;}//去除多余的前導命令
  96.                 else if(t>=28&&t<60){result[i-1]=1;i++;time=0;}//捕獲數據1
  97.                 else if(t>0&&t<27){result[i-1]=0;i++;time=0;}//捕獲數據0
  98.                 if(time>100)return 0; //消除長0的干擾確保數據正確
  99.                 t=0;   //清零
  100.                 time++;//計時               
  101.         }
  102.         if(result[0]==1&&result[1]==0&&result[2]==1&&result[3]==0)//判斷校驗碼
  103.         for(i=0;i<8;i++){res+=pow(2,i)*result[11-i];}//將結果轉換為十進制數據
  104.         return res;//返回得到的結果
  105. }

  106. void display(uchar dat)                //液晶數據顯示
  107. {
  108.     uchar a,b;
  109.         a=dat/16;
  110.         b=dat%16;
  111.         if(a>9)
  112.         a=a+0;
  113.         if(b>9)
  114.         b=b+0;
  115.         write_com(0x80+0x4A);
  116.         write_data(table[a]);delay(5);
  117.         write_data(table[b]);delay(5);
  118. }

  119. void main()
  120. {
  121.         init_1602();                                //1602初始化
  122.         while(1)
  123.         {
  124.                 dat=receive();
  125.                 if(dat)                                  //顯示
  126.                 {
  127.                       write_com(0x80+0x08);
  128.                           write_data('O');delay(5);
  129.                           write_data('K');delay(5);
  130.                           write_data('!');delay(5);
  131.                           display(dat);
  132.                 }
  133.                 else
  134.                 {
  135.                       write_com(0x80+0x08);
  136.                           write_data('N');delay(5);
  137.                           write_data('O');delay(5);
  138.                           write_data('!');delay(5);
  139.                           write_com(0x80+0x4A);
  140.                           write_data(' ');delay(5);
  141.                           write_data(' ');delay(5);
  142.                 }
  143.         }
  144. }

復制代碼


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

使用道具 舉報

沙發
ID:296649 發表于 2018-3-26 08:27 | 只看該作者
捕獲器解調有么
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表