找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16193|回復(fù): 24
收起左側(cè)

315Mhz無線模塊單片機軟解碼接收程序

  [復(fù)制鏈接]
ID:72519 發(fā)表于 2015-1-21 18:31 | 顯示全部樓層 |閱讀模式
# include<reg52.h>
# define uint unsigned int
# define uchar unsigned char

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

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

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

void delay (uint xms)        //1602延時
{
uint i,j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}

void delay1(unsigned char t)//延時程序
{
unsigned char n;
for(;t>0;t--)
for(n=40;n>0;n--);  
}

unsigned char pow(unsigned char n,unsigned char m)//n的m次方函數(shù)
{
unsigned  char t,result=1;
for(t=0;t<m;t++){result=n*result;}
return result;
}

void init_1602()
{
    e = 0;        //1602初始化
write_com (0x38);
    write_com (0x0c);
write_com (0x06);
write_com (0x01);
gd();
}

/*1602液晶代碼部分        ------------------------------ */
void write_com (uchar com)        //寫命令
{
rs = 0;
rw = 0;
P0 = com;
delay (5);
e = 1;
delay (5);
e = 0;
}

void write_data (uchar dat)         //寫數(shù)據(jù)
{
rs = 1;
rw = 0;
P0 = dat;
delay (5);
e = 1;
delay (5);
e = 0;
}

void gd()        //液晶固定部分顯示
{
    write_com(0x80);
for(num=0;num<8;num++)
{
   write_data(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<10;num++)
{
   write_data(table2[num]);
delay(5);
}
}

uchar receive(void)//接收處理函數(shù)
{
unsigned char guid=0,result[12],i,key=0,res=0,t,time=0;
while(1)//捕獲前導(dǎo)命令
{
while(DATA==1){t++;if(t>=90){delay1(100);return 0;}}//防止錯誤數(shù)據(jù)導(dǎo)致的死循環(huán)
if(t>=60&&t<95){t=0;key++;time=0;if(key>3)break;}//獲得前導(dǎo)命令跳出循環(huán),清除計時信號
else if(time>100){delay1(100);return 0;}//長0,錯誤信號返回0
else {t=0;time++;}//計時壘加,清除t
}  
t=0;
time=0;
for(i=1;i<13;)             //校驗碼及數(shù)據(jù)的接收共12位數(shù)據(jù)
{
while(DATA==1){t++;if(t>=95){delay1(100);return 0;}}//防止錯誤信號導(dǎo)致的死循環(huán)
if(t>=60&&t<95){t=0;i=1;time=0;}//去除多余的前導(dǎo)命令
else if(t>=28&&t<60){result[i-1]=1;i++;time=0;}//捕獲數(shù)據(jù)1
else if(t>0&&t<27){result[i-1]=0;i++;time=0;}//捕獲數(shù)據(jù)0
if(time>100)return 0; //消除長0的干擾確保數(shù)據(jù)正確
t=0;   //清零
time++;//計時       
}
if(result[0]==1&&result[1]==0&&result[2]==1&&result[3]==0)//判斷校驗碼
for(i=0;i<8;i++){res+=pow(2,i)*result[11-i];}//將結(jié)果轉(zhuǎn)換為十進制數(shù)據(jù)
return res;//返回得到的結(jié)果
}

void display(uchar dat)        //液晶數(shù)據(jù)顯示
{
    uchar a,b;
a=dat/16;
b=dat%16;
if(a>9)
a=a+0;
if(b>9)
b=b+0;
write_com(0x80+0x4A);
write_data(table[a]);delay(5);
write_data(table[b]);delay(5);
}

void main()
{
init_1602();        //1602初始化
while(1)
{
dat=receive();
if(dat)                                  //顯示
{
      write_com(0x80+0x08);
  write_data('O');delay(5);
  write_data('K');delay(5);
  write_data('!');delay(5);
  display(dat);
}
else
{
      write_com(0x80+0x08);
  write_data('N');delay(5);
  write_data('O');delay(5);
  write_data('!');delay(5);
  write_com(0x80+0x4A);
  write_data(' ');delay(5);
  write_data(' ');delay(5);
}
}
}

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:54731 發(fā)表于 2015-1-23 15:10 | 顯示全部樓層
315Mhz無線模塊單片機軟解碼接收程序:程序下載來看看,希望有人。
回復(fù)

使用道具 舉報

ID:72950 發(fā)表于 2015-1-29 09:35 | 顯示全部樓層
呵呵,先收藏了,馬上要弄這個,屯資料!
回復(fù)

使用道具 舉報

ID:54731 發(fā)表于 2015-1-31 17:24 | 顯示全部樓層
315Mhz無線模塊單片機軟解碼接收程序:我下載了,經(jīng)過試驗好像不行哦,
回復(fù)

使用道具 舉報

ID:66871 發(fā)表于 2015-4-11 23:09 | 顯示全部樓層
請問樓主接受靈敏度如何,怎么樣保證遠距離接收的可靠性
回復(fù)

使用道具 舉報

ID:66287 發(fā)表于 2015-5-28 16:02 | 顯示全部樓層
程序?qū)懙南喈敳诲e,贊一個
回復(fù)

使用道具 舉報

ID:84912 發(fā)表于 2015-7-6 16:16 | 顯示全部樓層
呵呵,先收藏了,馬上要弄這個,屯資料!
回復(fù)

使用道具 舉報

ID:84912 發(fā)表于 2015-7-6 16:16 | 顯示全部樓層
程序?qū)懙南喈敳诲e,贊一個
回復(fù)

使用道具 舉報

ID:86689 發(fā)表于 2015-7-27 23:00 來自手機 | 顯示全部樓層
hjjleon 發(fā)表于 2015-7-6 16:16
呵呵,先收藏了,馬上要弄這個,屯資料!

哥們,你做315m發(fā)射接收了嗎?資料給我一份唄,我也要弄這個,有些不大懂,452634017@qq.com麻煩了
回復(fù)

使用道具 舉報

ID:88560 發(fā)表于 2015-8-18 22:51 | 顯示全部樓層
我也想做一個,先下載下來。
回復(fù)

使用道具 舉報

ID:91418 發(fā)表于 2015-10-1 23:44 | 顯示全部樓層
我有一個牛人搞的很不錯的   不過不是C   是編譯后的燒錄軟件   很牛的

評分

參與人數(shù) 1黑幣 +35 收起 理由
admin + 35 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:91418 發(fā)表于 2015-10-1 23:44 | 顯示全部樓層
我有個很牛的   誰要
回復(fù)

使用道具 舉報

ID:91531 發(fā)表于 2016-1-2 08:31 來自手機 | 顯示全部樓層
美麗人生美 發(fā)表于 2015-10-1 23:44
我有個很牛的   誰要

我想要,加我Q838284304
回復(fù)

使用道具 舉報

ID:84495 發(fā)表于 2016-1-12 12:09 | 顯示全部樓層
1602顯示正常,就是收不到數(shù)據(jù),我買的315和433的接收模塊咋一模一樣,發(fā)射用的2262,匹配電阻需要改動嗎
回復(fù)

使用道具 舉報

ID:84495 發(fā)表于 2016-1-12 12:11 | 顯示全部樓層
還有這個晶振多少,12和11.0592都沒反應(yīng)
回復(fù)

使用道具 舉報

ID:91418 發(fā)表于 2016-4-1 13:31 | 顯示全部樓層
沒用定時器和外中斷嗎,聽說別人編這個程序是要用的   
回復(fù)

使用道具 舉報

ID:116105 發(fā)表于 2016-4-23 12:23 | 顯示全部樓層

多牛,我要
回復(fù)

使用道具 舉報

ID:85941 發(fā)表于 2016-6-13 10:36 | 顯示全部樓層
有沒有配套的電路圖?
回復(fù)

使用道具 舉報

ID:130180 發(fā)表于 2016-7-14 15:40 | 顯示全部樓層
看的不是太懂的
回復(fù)

使用道具 舉報

ID:143016 發(fā)表于 2016-11-28 18:03 | 顯示全部樓層

實現(xiàn)無線傳輸了嗎
回復(fù)

使用道具 舉報

ID:130231 發(fā)表于 2017-3-19 19:49 | 顯示全部樓層
不錯的資料,感謝樓主的分享。
回復(fù)

使用道具 舉報

ID:112693 發(fā)表于 2017-6-1 20:42 | 顯示全部樓層
樓主威武!。
回復(fù)

使用道具 舉報

ID:389488 發(fā)表于 2020-10-7 14:10 | 顯示全部樓層
樓主出來解釋一下啊  定時器和中斷沒有開 這個程序用不了吧
回復(fù)

使用道具 舉報

ID:72088 發(fā)表于 2020-10-11 21:05 | 顯示全部樓層
uestchina 發(fā)表于 2015-7-11 08:11
這個不是自適應(yīng)的。LZ又沒有告知解碼晶體,發(fā)射的電阻。實際應(yīng)用還要好好研究研究。

我寫的程序是自適應(yīng)震蕩電阻的解碼程序
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表