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

標題: 315Mhz無線模塊接收程序 [打印本頁]

作者: 電子黑    時間: 2016-6-27 22:08
標題: 315Mhz無線模塊接收程序
  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. }

復制代碼



作者: wushi6    時間: 2018-3-26 08:27
捕獲器解調有么




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日日骚av | 亚洲一级片 | 丰满少妇高潮无套内谢 | 欧美1级片 | 黄色一级免费视频 | 免费的av | 毛片网站大全 | 男女操操操 | 黄色大毛片 | 成av人片在线观看www | 国产不卡视频 | 国产黄色免费观看 | 日韩在线视频一区二区三区 | 国产三级在线观看视频 | 精久久久 | 日韩一区二区三区视频 | 国产精品aaa | 思思在线视频 | 五月久久| 日韩av在线免费播放 | 日本在线观看一区 | 日韩av免费在线 | 国产视频在线观看视频 | 亚洲精品视频免费观看 | 精品国产99久久久久久宅男i | 国产成人区 | 国产永久精品 | 一区二区三区网站 | 久久国产精品免费视频 | 国产视频一区二区在线 | 毛片视频免费 | 97人人艹 | 国产一区二区在线看 | 又黄又爽又刺激的视频 | 国产一级片在线播放 | 激情五月综合网 | 99精品视频在线 | 成人手机在线视频 | av不卡在线播放 | 亚洲天堂偷拍 | a级片在线 |