找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

315M無(wú)線遙控單片機(jī)軟件解碼

[復(fù)制鏈接]
ID:72088 發(fā)表于 2021-9-3 20:54 | 顯示全部樓層 |閱讀模式
學(xué)習(xí)單片機(jī)很久了,沒(méi)做過(guò)像樣的東西,對(duì)315M和433M無(wú)線遙控做過(guò)很多維修,也安裝過(guò)一些遙控開(kāi)關(guān),更遇到過(guò)配遙控的客戶無(wú)數(shù),研究了配遙控器的方法。

用單片機(jī)STC15W204S軟件解碼密碼,同步頭長(zhǎng)度,做過(guò)兩個(gè)版本的線路板,第一版這里不介紹了,這里說(shuō)一下第二版,看圖
1.jpg

圖上說(shuō)的清楚,接收模塊供電是單獨(dú)濾波后的,防止干擾單片機(jī),信號(hào)輸出經(jīng)一集成塊放大(貼片5腳的那個(gè)),隔離單片機(jī)與接收模塊干擾,是遠(yuǎn)距離解碼的關(guān)鍵。
上原理圖和PBC圖,省的你們樓層問(wèn)我要,呵呵!!
10.png 11.png

這是焊接好的線路板,這里沒(méi)用時(shí)鐘,所以沒(méi)焊接DS3231,
2.jpg 3.jpg

顯示屏是0.91寸的OLED屏,這玩意老貴了,用一個(gè)心疼半天。
4.jpg

寫(xiě)入程序,開(kāi)機(jī)嘍。。!只看屏幕,不算丑,
5.jpg

解碼一個(gè)遙控試試,4M是單片機(jī)震蕩頻率,燒寫(xiě)時(shí)需手動(dòng)填寫(xiě),選項(xiàng)里沒(méi)有4M
順便說(shuō)明一下意思啊,圖片介紹更清楚:
6.jpg

多解碼幾個(gè)不同震蕩電阻試試看效果:
7.jpg 8.jpg

9.jpg

發(fā)射按鍵就是P3.3腳,這里沒(méi)法演示發(fā)射,需要視頻才能演示,我不會(huì)發(fā)鏈接
發(fā)射也是很精準(zhǔn)的,接收設(shè)備很靈敏解碼,第一版不介紹就是因?yàn)榘l(fā)射不精準(zhǔn)
設(shè)備解碼很不靈,用的發(fā)射模塊是1000米的,這3.7V供電肯定達(dá)不到這距離,
要9V-12V才能600米左右,天線和障礙物因素眾多,沒(méi)詳細(xì)實(shí)驗(yàn)距離
接收普通遙控信號(hào)最遠(yuǎn)30米,接收遠(yuǎn)距離遙控100米成功解碼,
謝謝大家的閱讀,此板已在某條魚(yú)出售

程序只起到拋磚引玉的功能,不能全部分享給大家,有人收獲多,有人收獲不到,


下面是發(fā)射程序和顯示程序,匯編寫(xiě)的大家輕噴!。。!
  1. ;=============================按鍵發(fā)射接收到的編碼==================================
  2. TTTT:
  3.         CLR LED_F        ;發(fā)射指示燈
  4.         MOV R3,#8        ;每字節(jié)調(diào)用8次
  5. TTT_1:
  6.         mov 20h,24h
  7.         mov 21h,25h
  8.         mov 22h,26h
  9.         MOV R0,#20H
  10. TTT_2:
  11.         LCALL FASE_T0
  12. TTT_3:
  13.         CLR C
  14.         MOV A,@R0
  15.         RLC A               
  16.         MOV @R0,A
  17.         JC TTT_4        
  18.         LCALL FASE_0        ;輸出0碼               
  19.         JMP TTT_5
  20. TTT_4:
  21.         LCALL FASE_1        ;輸出1碼
  22. TTT_5:
  23.         DJNZ R3,TTT_3        ;一字節(jié)是否發(fā)完
  24.         MOV R3,#8
  25.         INC R0
  26.         CJNE R0,#23H,TTT_3        ;3字節(jié)是否發(fā)完
  27.         MOV R3,#8        ;每字節(jié)調(diào)用8次
  28.         MOV R0,#20H

  29.         JNB K1,TTT_1
  30.         CLR FAST
  31.         SETB LED_F
  32.         RET
  33. ;-------------同步碼----------------
  34. FASE_T0:
  35.         SETB FAST
  36.         LCALL DEL_FS
  37.         MOV R5,#31
  38. FASE_T1:
  39.         CLR FAST
  40.         LCALL DEL_FS
  41.         DJNZ R5,FASE_T1
  42.         RET
  43. ;--------------0碼-----------------
  44. FASE_0:        SETB FAST
  45.         LCALL DEL_FS
  46.         MOV R5,#3
  47. FASE_01:CLR FAST
  48.         LCALL DEL_FS
  49.         DJNZ R5,FASE_01
  50.         RET
  51. ;--------------1碼-----------------
  52. FASE_1:        MOV R5,#3        ;
  53. FASE_11:SETB FAST
  54.         LCALL DEL_FS
  55.         DJNZ R5,FASE_11
  56.         CLR FAST
  57.         LCALL DEL_FS
  58.         RET



  59. ;-----------數(shù)據(jù)解碼顯示-----------------20H/21H/22H/2FH------
  60. ;顯示0/F/D/1
  61. DISP_JMB:
  62.         MOV R0, #20H        ;原數(shù)據(jù)地址
  63.         MOV R1, #40H
  64.         MOV R7, #0                ;左移次數(shù)計(jì)數(shù)
  65.         MOV 2FH,#0                ;該位可以位操作(位操作地址是7FH--78H)
  66. DISP_JM:
  67.         MOV A,@R0
  68.         CLR C
  69.         RLC A        ;C→A0  A7→C  數(shù)據(jù)存入C
  70.         MOV 79H,C        ;移入2FH單元A1位
  71.         CLR C
  72.         RLC A        ;C→A0  A7→C  數(shù)據(jù)存入C
  73.         MOV 78H,C        ;移入2FH單元A0位
  74.         MOV @R0,A        ;暫存@R0
  75.         MOV A,2FH        
  76.         JNZ        DISP_0F
  77.         MOV @R1,#0          ;------00--0解碼顯示
  78.         JMP DISP_01DF
  79. DISP_0F:
  80.         CJNE A,#01,DISP_0D
  81.         MOV @R1,#15        ;--------01--F解碼顯示
  82.         JMP DISP_01DF        
  83. DISP_0D:
  84.         CJNE A,#02,DISP_0H
  85.         MOV @R1,#13        ;--------10--D解碼顯示
  86.         JMP DISP_01DF
  87. DISP_0H:
  88.         CJNE A,#03,DISP_01DF
  89.         MOV @R1,#1        ;--------11--1解碼顯示
  90.         JMP DISP_01DF
  91. DISP_01DF:
  92.         MOV 2FH,#0
  93.         INC R1
  94.         INC R7
  95.         CJNE R7,#4,DISP_JM        ;是否移動(dòng)了4次,夠4次說(shuō)明一字節(jié)輸出完成
  96.         MOV R7,#0        ;左移次數(shù)清零
  97.         INC R0
  98.         CJNE R0,#23H,DISP_JM;3字節(jié)是否調(diào)取完成
  99.         MOV 4CH,#36
  100.         MOV 4DH,#36
  101.         MOV 4EH,#4
  102.         MOV 4FH,#22
  103. DISP_EN:
  104.         RET

  105. ;===========================第一排顯示=====================================
  106. DISP_A:
  107.         MOV R0,#40H
  108.          MOV DIZHI_X,#00H ;列地址 1
  109.         LCALL DISP_B0
  110.         INC R0
  111.         MOV DIZHI_X,#08H ;列地址 2
  112.         LCALL DISP_B0
  113.         INC R0
  114.         MOV DIZHI_X,#10H ;列地址 3
  115.         LCALL DISP_B0
  116.         INC R0
  117.         MOV DIZHI_X,#18H ;列地址 4
  118.         LCALL DISP_B0
  119.         INC R0
  120.         MOV DIZHI_X,#20H ;列地址 5
  121.         LCALL DISP_B0
  122.         INC R0
  123.         MOV DIZHI_X,#28H ;列地址 6
  124.         LCALL DISP_B0
  125.         INC R0
  126.         MOV DIZHI_X,#30H ;列地址 7
  127.         LCALL DISP_B0
  128.         INC R0
  129.         MOV DIZHI_X,#38H ;列地址 8
  130.         LCALL DISP_B0
  131.         INC R0
  132.         MOV DIZHI_X,#40H ;列地址 9
  133.         LCALL DISP_B0
  134.         INC R0
  135.         MOV DIZHI_X,#48H ;列地址 10
  136.         LCALL DISP_B0
  137.         INC R0
  138.         MOV DIZHI_X,#50H ;列地址 11
  139.         LCALL DISP_B0
  140.         INC R0
  141.         MOV DIZHI_X,#58H ;列地址 12
  142.         LCALL DISP_B0
  143.         INC R0
  144.         MOV DIZHI_X,#60H ;列地址 13
  145.         LCALL DISP_B0
  146.         INC R0
  147.         MOV DIZHI_X,#68H ;列地址 14
  148.         LCALL DISP_B0
  149.         INC R0
  150.         MOV DIZHI_X,#70H ;列地址 15
  151.         LCALL DISP_B0
  152.         INC R0
  153.         MOV DIZHI_X,#78H ;列地址 16
  154.         LCALL DISP_B0
  155.         RET
  156. ;=========================第二排顯示程序==============================
  157. DISP_B:
  158.         MOV R0,#40H
  159.          MOV DIZHI_X,#00H ;設(shè)置列地址 1
  160.         LCALL DISP_B2
  161.         INC R0
  162.         MOV DIZHI_X,#08H ;列地址 2
  163.         LCALL DISP_B2
  164.         INC R0
  165.         MOV DIZHI_X,#10H ;列地址 3
  166.         LCALL DISP_B2
  167.         INC R0
  168.         MOV DIZHI_X,#18H ;列地址 4
  169.         LCALL DISP_B2
  170.         INC R0
  171.         MOV DIZHI_X,#20H ;列地址 5
  172.         LCALL DISP_B2
  173.         INC R0
  174.         MOV DIZHI_X,#28H ;列地址 6
  175.         LCALL DISP_B2
  176.         INC R0
  177.         MOV DIZHI_X,#30H ;列地址 7
  178.         LCALL DISP_B2
  179.         INC R0
  180.         MOV DIZHI_X,#38H ;列地址 8
  181.         LCALL DISP_B2
  182.         INC R0
  183.         MOV DIZHI_X,#40H ;列地址 9
  184.         LCALL DISP_B2
  185.         INC R0
  186.         MOV DIZHI_X,#48H ;列地址 10
  187.         LCALL DISP_B2
  188.         INC R0
  189.         MOV DIZHI_X,#50H ;列地址 11
  190.         LCALL DISP_B2        
  191.         INC R0
  192.         MOV DIZHI_X,#58H ;列地址 12
  193.         LCALL DISP_B2
  194.         INC R0
  195.         MOV DIZHI_X,#60H ;列地址 13
  196.         LCALL DISP_B2
  197.         INC R0
  198.         MOV DIZHI_X,#68H ;列地址 14
  199.         LCALL DISP_B2
  200.         INC R0
  201.         MOV DIZHI_X,#70H ;列地址 15
  202.         LCALL DISP_B2
  203.         INC R0
  204.         MOV DIZHI_X,#78H ;列地址 16
  205.         LCALL DISP_B2
  206.         RET
  207. ;--數(shù)值第一排8*16顯示子程序---------
  208. DISP_B0:
  209.           MOV DIZHI_Y,#0B0H ;設(shè)置頁(yè)起始地址(B0-B7)(第一排)
  210.           LCALL TBT_0                ;根據(jù)值取表
  211.         LCALL XIE_MLING        ;寫(xiě)頁(yè)地址和列地址
  212.          MOV R6,#8
  213.         LCALL MAK_XZJ  ;
  214.         INC DIZHI_Y                ;8*16下半部分頁(yè)地址加1
  215.         LCALL XIE_MLING;寫(xiě)頁(yè)地址和列地址
  216.         MOV R6,#8
  217.         LCALL MAK_XZJ
  218.         RET
  219. ;--數(shù)值第二排8*16顯示子程序---------
  220. DISP_B2:
  221.           MOV DIZHI_Y,#0B2H ;設(shè)置頁(yè)起始地址(B0-B7)(第2排)
  222.           LCALL TBT_0        ;根據(jù)值取表
  223.         LCALL XIE_MLING        ;寫(xiě)頁(yè)地址和列地址
  224.          MOV R6,#8
  225.         LCALL MAK_XZJ  ;
  226.         INC DIZHI_Y                ;8*16下半部分頁(yè)地址加1
  227.         LCALL XIE_MLING;寫(xiě)頁(yè)地址和列地址
  228.         MOV R6,#8
  229.         LCALL MAK_XZJ
  230.         RET
  231. ;=========================數(shù)據(jù)區(qū)清零程序======================================
  232. QLCX:
  233.         MOV A,#0        ;清零程序
  234.         MOV R6,#40H
  235.         MOV R0,#20H
  236. QQQQ:
  237.         MOV @R0,A
  238.         INC R0
  239.         DJNZ R6,QQQQ
  240.         RET
  241. ;============================初始化0.91寸OLED=================================
  242. RESET:
  243.         MOV R7,#0AEH        ;關(guān)閉顯示
  244.         LCALL COMMAND
  245.         MOV R7,#20H                ;設(shè)置模式命令
  246.         LCALL COMMAND
  247.         MOV R7,#10H                ;00水平地址,01垂直地址,10頁(yè)地址
  248.         LCALL COMMAND
  249.         MOV R7,#0B0H        ;設(shè)置頁(yè)起始地址(B0-B7)
  250.         LCALL COMMAND
  251.         MOV R7,#0C8H        ;設(shè)置COM輸出掃描方向(C8從上到下,C0反向)
  252.         LCALL COMMAND
  253.         MOV R7,#00H                ;設(shè)置低列地址
  254.         LCALL COMMAND
  255.         MOV R7,#10H                ;設(shè)置高列地址
  256.         LCALL COMMAND
  257.         MOV R7,#40H                ;設(shè)置起始行地址
  258.         LCALL COMMAND
  259.         MOV R7,#81H                ;設(shè)置對(duì)比度
  260.         LCALL COMMAND
  261.         MOV R7,#200                ;對(duì)比度值(00-255)
  262.         LCALL COMMAND
  263.         MOV R7,#0A1H        ;設(shè)置egment re-map 0 to 127
  264.         LCALL COMMAND
  265.         MOV R7,#0A6H        ;正常顯示(A6正常,A7反相顯示)
  266.         LCALL COMMAND
  267.         MOV R7,#0A8H        ;設(shè)置驅(qū)動(dòng)路數(shù)
  268.         LCALL COMMAND
  269.         MOV R7,#31                ;路數(shù)(0-63)
  270.         LCALL COMMAND
  271.          MOV R7,#0A5H        ;
  272.         LCALL COMMAND
  273.         MOV R7,#0A4H        ;全部顯示開(kāi)啟
  274.         LCALL COMMAND
  275.         MOV R7,#0D3H        ;設(shè)置顯示偏移
  276.         LCALL COMMAND
  277.         MOV R7,#0                ;偏移量
  278.         LCALL COMMAND
  279.         MOV R7,#0D5H        ;設(shè)置震蕩頻率
  280.         LCALL COMMAND
  281.         MOV R7,#0F0H        ;
  282.         LCALL COMMAND
  283.         MOV R7,#0D9H        ;設(shè)置充電周期
  284.         LCALL COMMAND
  285.         MOV R7,#22H                ;
  286.         LCALL COMMAND
  287.         MOV R7,#0DAH        ;引腳硬件配置
  288.         LCALL COMMAND
  289.         MOV R7,#02H                ;
  290.         LCALL COMMAND
  291.         MOV R7,#0DBH        ;設(shè)置電壓倍率
  292.         LCALL COMMAND
  293.          MOV R7,#20H                ;
  294.         LCALL COMMAND
  295.         MOV R7,#8DH                ;設(shè)置
  296.         LCALL COMMAND
  297.         MOV R7,#14H               
  298.         LCALL COMMAND
  299.         MOV R7,#0AFH        ;打開(kāi)顯示
  300.         LCALL COMMAND
  301.         RET



  302. ;====================清屏程序=================================
  303. QPCX:
  304.         MOV R7,#00H                ;00水平地址,01垂直地址,10頁(yè)地址
  305.         LCALL COMMAND
  306.            MOV R6,#0
  307.            MOV R4,#252
  308.         MOV R7,#0B0H        ;設(shè)置頁(yè)起始地址(B0-B7)
  309.         LCALL COMMAND
  310.         MOV R7,#00H        ;設(shè)置低列地址
  311.            LCALL COMMAND
  312.         MOV R7,#10H        ;設(shè)置高列地址
  313.         LCALL COMMAND
  314. MAH:
  315.         MOV A,20h
  316.         MOV R7,A
  317.         LCALL COMDADA
  318.         INC R6                          
  319.         CJNE R6,#0,MAH
  320.         INC R4
  321.         CJNE R4,#0,MAH
  322.         RET        


  323. ;==================================================================
  324. ;--------寫(xiě)命令程序----------
  325. COMMAND:
  326.           MOV R3,#3
  327. COMMAND_1:
  328.         DEC R3          ;######防止出現(xiàn)程序檢測(cè)不到I2C出現(xiàn)死循環(huán)
  329.         lcall start                ;啟動(dòng)總線        
  330.         mov a,#78h           ;地址寫(xiě)入
  331.         lcall send
  332.         lcall ack
  333.         MOV A, R3
  334.         JZ COMMAND_EN
  335.         jc         command_1


  336.         mov a,#00h
  337.         lcall send
  338.         lcall ack


  339.         mov a,R7
  340.         lcall send
  341.         lcall ack
  342.          lcall stop
  343. COMMAND_EN:
  344.         ret
  345. ;--------寫(xiě)數(shù)據(jù)程序----------
  346. COMDADA:
  347.         MOV R3,#3
  348. COMDADA_1:
  349.         DEC R3                 ;######防止出現(xiàn)程序檢測(cè)不到I2C出現(xiàn)死循環(huán)
  350.         lcall start                ;啟動(dòng)總線        
  351.         mov a,#78h
  352.         lcall send
  353.         lcall ack
  354.         MOV A, R3
  355.         JZ COMDADA_EN
  356.         jc         comdada_1


  357.         mov a,#40h
  358.         lcall send
  359.         lcall ack
  360.         mov a,R7
  361.         lcall send
  362.         lcall ack
  363.          lcall stop
  364. COMDADA_EN:
  365.         ret
  366. ;------寫(xiě)頁(yè)、列地址命令-----------
  367. XIE_MLING:
  368.         MOV R7,DIZHI_Y        ;設(shè)置頁(yè)起始地址(B0-B7)
  369.         LCALL COMMAND
  370.         MOV A,DIZHI_X
  371.         ANL A,#0FH        ;
  372.         MOV R7,A        ;設(shè)置低列地址
  373.         LCALL COMMAND
  374.         MOV A,DIZHI_X
  375.         SWAP A
  376.         ANL A,#0FH        ;
  377.         ORL A,#10H
  378.          MOV R7,A        ;設(shè)置高列地址
  379.         LCALL COMMAND
  380.         RET
  381. ;--------寫(xiě)一字節(jié)數(shù)據(jù)--------------
  382. MAK_XZJ:
  383.         CLR A
  384.         MOVC A,@A+DPTR               
  385.         MOV R7,A
  386.         LCALL COMDADA
  387.         INC DPTR                          
  388.         DJNZ R6,MAK_XZJ
  389.         RET
  390. ;============================IIC總線程序=================================
  391. ;-------總線啟動(dòng)程序---------
  392. start:
  393.         setb         scl
  394.         setb         sda
  395.         nop
  396.         nop
  397.         clr         sda
  398.         nop
  399.         nop
  400.         clr         scl
  401.         ret
  402. ;-------總線停止程序---------
  403. stop:
  404.         clr         sda
  405.         nop
  406.         nop
  407.         setb         scl
  408.         nop
  409.         nop
  410.         setb         sda
  411.         ret
  412. ;-----------應(yīng)答----------
  413. ack:
  414.         setb         sda
  415.         nop
  416.         nop
  417.         setb         scl
  418.         jb         sda,        ack_0
  419.         clr         c
  420.         sjmp         ack_1
  421. ack_0:
  422.         setb         c
  423. ack_1:
  424.         nop
  425.         nop
  426.         clr         scl
  427.         ret
  428. ;--------------發(fā)送8位數(shù)據(jù)---------
  429. send:
  430.         mov         b,        #08h
  431. send_1:
  432.         rlc         a
  433.         mov         sda,        c
  434.         setb         scl
  435.         nop
  436.         nop
  437.         clr         scl
  438.         djnz         b,        send_1
  439.         ret
  440. ;--------------接收8位數(shù)據(jù)-----------
  441. receive:
  442.         mov         b,        #08h
  443.         clr         a
  444.         setb         sda
  445. receive_1:
  446.         setb         scl
  447.         nop
  448.         nop
  449.         mov         c,sda
  450.         rlc         a
  451.         clr         scl
  452.         djnz         b,        receive_1
  453.         ret
  454. ;----------10MS--------------
  455. DELAY10ms:
  456.           MOV  6EH, #100
  457. DLY5: MOV  6FH, #100
  458.       DJNZ 6FH, $
  459.       DJNZ 6EH, DLY5
  460.       RET
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1041599 發(fā)表于 2022-8-8 07:42 | 顯示全部樓層
感謝樓主分享,那個(gè)74AHC1具體型號(hào)是? 具體如何起到抗干擾的作用?
回復(fù)

使用道具 舉報(bào)

ID:72088 發(fā)表于 2022-8-11 15:52 | 顯示全部樓層
月亮小小鳥(niǎo) 發(fā)表于 2022-8-8 07:42
感謝樓主分享,那個(gè)74AHC1具體型號(hào)是? 具體如何起到抗干擾的作用?

緩沖隔離作用,
回復(fù)

使用道具 舉報(bào)

ID:68189 發(fā)表于 2022-8-11 17:29 | 顯示全部樓層
74AHC1 是反相器(施密特)? ArSnag_20220811172405.png

回復(fù)

使用道具 舉報(bào)

ID:1034262 發(fā)表于 2022-8-12 14:29 | 顯示全部樓層
315M和433M通信,自己定義編碼的話,我都用曼徹斯特編碼,這是歸0碼,很合適做無(wú)線編碼。
回復(fù)

使用道具 舉報(bào)

ID:1041599 發(fā)表于 2022-8-14 05:11 | 顯示全部樓層
74AHC1G125  這個(gè)型號(hào)適用不?

74ahc1g125.png
回復(fù)

使用道具 舉報(bào)

ID:72088 發(fā)表于 2025-1-11 17:08 | 顯示全部樓層
月亮小小鳥(niǎo) 發(fā)表于 2022-8-14 05:11
74AHC1G125  這個(gè)型號(hào)適用不?

也可以不用,隔離干擾最好
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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