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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15W104單片機遙控開關電路圖+程序(匯編語言)

  [復制鏈接]
跳轉到指定樓層
樓主
電路原理圖如下:


STC15W104單片機遙控開關
功能介紹:
1.按鍵控制繼電器釋放吸合
2.遙控碼控制繼電器(只一個按鍵編碼識別,其他編碼無效)
3.按鍵按下時,按遙控器,學習當前遙控碼,前碼失效(利用內部eeprom)

/*15W408單片機遙控燈,外部中斷方式通過測試2018.09.04

IAP_DATA    EQU 0C2H        ;IAP數據寄存器
IAP_ADDRH   EQU 0C3H        ;IAP地址寄存器高字(地址需要改變時,才需要重新送地址)
IAP_ADDRL   EQU 0C4H        ;IAP地址寄存器低字(指令完成后地址不會自動加1或減1)
IAP_CMD     EQU 0C5H        ;IAP命令寄存器
IAP_TRIG    EQU 0C6H        ;IAP命令觸發寄存器
IAP_CONTR   EQU 0C7H        ;IAP控制寄存器
P0M1    DATA    0x93        ; P0M1.n,P0M0.n     =00--->準雙向口,  01--->推挽輸出
P0M0    DATA    0x94        ;                            =10--->高阻輸入,  11--->開漏輸出
P1M1    DATA    0x91        ; P1M1.n,P1M0.n   
P1M0    DATA    0x92        ;                 
P2M1    DATA    0x95        ; P2M1.n,P2M0.n  
P2M0    DATA    0x96        ;                 
P3M1    DATA    0xB1        ; P3M1.n,P3M0.n   
P3M0    DATA    0xB2        ;               
P4M1    DATA    0xB3        ; P4M1.n,P4M0.n  
P4M0    DATA    0xB4        ;               
P5M1    DATA    0xC9        ; P5M1.n,P5M0.n   
P5M0    DATA    0xCA        ;               
P6M1    DATA    0xCB        ; P6M1.n,P6M0.n  
P6M0    DATA    0xCC        ;               
P7M1    DATA    0xE1            ;
P7M0    DATA    0xE2            ;
;ENABLE_IAP  EQU  80H          ;if SYSCLK<30MHz
;ENABLE_IAP  EQU  81H          ;if SYSCLK<24MHz
;ENABLE_IAP  EQU  82H          ;if SYSCLK<20MHz
;ENABLE_IAP  EQU  83H          ;if SYSCLK<12MHz
ENABLE_IAP  EQU  84H           ;if SYSCLK<6MHz
;ENABLE_IAP  EQU  85H          ;if SYSCLK<3MHz
;ENABLE_IAP  EQU  86H          ;if SYSCLK<2MHz
;ENABLE_IAP  EQU  87H          ;if SYSCLK<1MHz


ADDRESS  EQU 00H        ;EEPROM扇區地址(第1扇區0000H)(第2扇區0200H)(第3扇區0400H)(第4扇區0600H
P5_0 BIT 0C8H                ;P5口定義
P5_1 BIT 0C9H
P5_2 BIT 0CAH
P5_3 BIT 0CBH
P5_4 BIT 0CCH
P5_5 BIT 0CDH


        SSR        BIT        P3.4        ;輸出控制腳
        S0        BIT        P3.3        ;開關燈鍵和記憶鍵
        IRIN        BIT        P3.2   ;紅外線輸入腳

        ORG        0000H
        LJMP        MAIN
        ORG        0003H         ;外部中斷P3.2腳INT0入口地址
        LJMP        INT_0
        ORG        0100h
;=========================主程序================================
MAIN:
        MOV        SP,        #60h
        CLR        P3.5
        CLR     A
        MOV        P0M1, A    ;設置準雙向口 00--->準雙向口,    01--->推挽輸出
        MOV        P0M0, A
        MOV        P1M1, A    ;設置準雙向口 10--->高阻輸入,  11--->開漏輸出
        MOV        P1M0, A
        MOV        P2M1, A    ;設置準雙向口
        MOV        P2M0, A
        MOV        P3M1, A    ;設置準雙向口
        MOV        P3M0, A

        SETB        SSR
        mov        IE,#10000001b        ;允許外部中斷0
        mov        IP,#00000001B        ;外中斷1優先中斷
        MOV        TCON,#00000101B        ;都是脈沖下降中
        MOV        R0,#20h    ;20h單元開始放數據
MAIN1:
;        LCALL DISPLAY
        ACALL KEY
        JMP MAIN1
;==================================繼電器輸出========================================
OUT_0:
        MOV  A,20H
        CJNE A,2AH,WWW    ;將接收到的20H、21H、22H與讀出的數據比較,
        MOV  A,21H                ;相同繼電器就進行動作
        CJNE A,2BH,WWW   ;
        MOV  A,22H
        CJNE A,2CH,WWW
        MOV  A,23H
        CJNE A,2DH,WWW
        CPL        SSR
WWW:
        RET
;=================================按鍵程序===========================================
KEY:
        JB        S0,        KEY_D
        ACALL        DELAY
        JB        S0,        KEY_D
        JNB        S0,        $
        ACALL        DELAY
        JNB        S0,        $
        cpl SSR
KEY_D:
        RET
;=========================寫入EEPROM數據========================================
WERED:
        MOV   DPTR,#ADDRESS        ;EEPROM扇區起始地址(擦除起始地址)
        LCALL IAP_ERASE                ;扇區擦除
;        MOV   DPTR,#ADDRESS        ;EEPROM指針寫入數據起始地址
;        MOV   R0,#0                ;檢測512字節(256*2=512)
;        MOV   R1,#2
;CHECK_0:                        ;檢測是否擦除成功(全FF檢測)
;        LCALL IAP_READ                ;讀IAP數據
;        CJNE  A,#0FFH,ERROR        ;如果出錯,則退出
;        INC   DPTR                ;IAP地址+1
;        DJNZ  R0,CHECK_0
;        DJNZ  R1,CHECK_0
;寫入數據程序                  ;
        MOV   DPTR,#ADDRESS        ;EEPROM扇區起始地址(寫數據起始地址)
        MOV   R0,#4                ;編程3字節
        MOV   R1,#20H                ;寫紅外解碼數據地址
NEXT:                              
        MOV   A,@R1                ;準備數據
        LCALL IAP_PROGRAM        ;字節編程
        INC   DPTR                ;IAP地址+1
        INC   R1                ;修改數據地址
        DJNZ  R0,NEXT
        RET
;===============讀取EEPROM數據===========================
READ_ROM:
        MOV   DPTR,#ADDRESS        ;設置要讀取的EEPROM地址(扇區)
        MOV   R0,#4                ;讀取多少字節
        MOV   R1,#2AH                ;數據存放起始地址
CHECK2:                             
        LCALL IAP_READ                ;讀IAP數據
        MOV  @R1,A                ;數據轉移到地址R1指向
        INC   DPTR                ;IAP地址+1
        INC   R1                ;數據保存地址加1
        DJNZ  R0,CHECK2                ;是否讀完
        RET

;=====================關閉IAP========================
IAP_IDLE:
    MOV   IAP_CONTR,#0              ;關閉IAP功能
    MOV   IAP_CMD,#0               ; 清除命令寄存器
    MOV   IAP_TRIG,#0               ;清除觸發寄存器
    MOV   IAP_ADDRH,#80H            ;將地址設置到非IAP區域
    MOV   IAP_ADDRL,#0
    RET
;=====================讀取一字節=====================
IAP_READ:
    MOV   IAP_CONTR,#ENABLE_IAP     ;允許擦除與等待時間設置(10000xxxB)
    MOV   IAP_CMD,#01H                 ;字節讀命令
    MOV   IAP_ADDRL,DPL             ;設置IAP低地址
    MOV   IAP_ADDRH,DPH             ;設置IAP高地址
    MOV   IAP_TRIG,#5AH             ;寫觸發命令(0x5a)
    MOV   IAP_TRIG,#0A5H            ;寫觸發命令(0xa5)
    NOP                             ;等待ISP/IAP/EEPROM操作完成
    MOV   A,IAP_DATA                ;度IAP數據
    LCALL IAP_IDLE                  ;關閉IAP功能
    RET
;====================寫一字節數據==================
IAP_PROGRAM:
    MOV   IAP_CONTR,#ENABLE_IAP    ;允許擦除與等待時間設置(10000xxxB)
    MOV   IAP_CMD,#02H                     ;字節寫命令
    MOV   IAP_ADDRL,DPL            ;設置IAP低地址
    MOV   IAP_ADDRH,DPH            ;設置IAP高地址
    MOV   IAP_DATA,A               ;寫IAP數據
    MOV   IAP_TRIG,#5AH            ;寫觸發命令(0x5a)
    MOV   IAP_TRIG,#0A5H           ;寫觸發命令(0xa5)
    NOP                            ;等待ISP/IAP/EEPROM操作完成
    LCALL IAP_IDLE                 ;關閉IAP功能
    RET
;====================扇區擦除======================
IAP_ERASE:
    MOV   IAP_CONTR,#ENABLE_IAP    ;允許擦除與等待時間設置(10000xxxB)
    MOV   IAP_CMD,#03H               ;扇區擦除命令
    MOV   IAP_ADDRL,DPL            ;設置IAP低地址
    MOV   IAP_ADDRH,DPH            ;設置IAP高地址
    MOV   IAP_TRIG,#5AH            ;寫觸發命令(0x5a)
    MOV   IAP_TRIG,#0A5H           ;寫觸發命令(0xa5)
    NOP                            ;等待ISP/IAP/EEPROM操作完成
    LCALL IAP_IDLE                 ;關閉IAP功能
    RET
;===================中斷程序=======================
INT_0:
        CLR EA         ;暫時關閉CPU的所有中斷請求
        MOV R0,#20h    ;20h單元開始放數據
        MOV R5,#17
L2:        ACALL DELAY05_R5
        JB IRIN,L10      ;
        DJNZ R5,L2        ;重復多次
         JNB IRIN,$
        MOV R5,#8
L3:        ACALL DELAY05_R5  
        JNB IRIN,L10   
        DJNZ R5,L3        
L4:        MOV R3,#0
L5:        JNB IRIN,L6
        ACALL DEL
        JMP L5
L6:        JB IRIN,L7
        ACALL DEL
        JMP L6
L7:        MOV R2,#0
L8:        ACALL DEL
        JB IRIN,L9
        MOV A,#8
        CLR C
        SUBB A,R2
        MOV A,@R0
        RRC A
        MOV @R0,A
        INC R3
        CJNE R3,#8,L5
        MOV R3,#0
        INC R0
        CJNE R0,#24H,L5   
        JMP L10
L9:        INC R2
        CJNE R2,#30,L8  
        JB        S0,L9_0
        LCALL WERED
        LCALL READ_ROM
L9_0:
L10:
        SETB EA ;允許中斷,然后退出中斷程序
        RETI
;=============================================
DE:
DELAY540US:                        ;@6.000MHz
        NOP
        PUSH 38H
        PUSH 39H
        MOV 38H,#3
        MOV 39H,#128
NEXT1:
        DJNZ 39H,NEXT1
        DJNZ 38H,NEXT1
        POP 39H
        POP 38H
        RET


DELAY05_R5:       ;總延時時間為0.5ms*R5
DELAY500US:                        ;@6.000MHz
        NOP
        PUSH 38H
        PUSH 39H
        MOV 38H,#3
        MOV 39H,#80
NEXT2:
        DJNZ 39H,NEXT2
        DJNZ 38H,NEXT2
        POP 39H
        POP 38H
        RET
DEL:             ;延時為0.093ms
DELAY93US:                        ;@6.000MHz
        NOP
        NOP
        PUSH 38H
        MOV 38H,#108
NEXT3:
        DJNZ 38H,NEXT3
        POP 38H
        RET   
;=================延時程序==================
DELAY: MOV  R6, #30
D1:    MOV  R7, #250
       DJNZ R7, $
       DJNZ R6, D1
       RET
;==================================================

        END


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1 發表于 2018-12-5 03:03 | 只看該作者
好資料,能分享一下程序嗎?
回復

使用道具 舉報

板凳
ID:349717 發表于 2019-5-8 15:06 | 只看該作者
學習了,好……
回復

使用道具 舉報

地板
ID:419910 發表于 2019-5-16 07:30 | 只看該作者
求程序
回復

使用道具 舉報

5#
ID:72088 發表于 2019-5-16 15:33 | 只看該作者

程序已經貼出來了,呵呵
回復

使用道具 舉報

6#
ID:72088 發表于 2019-5-16 15:40 | 只看該作者
admin 發表于 2018-12-5 03:03
好資料,能分享一下程序嗎?

已經直接分享過了,
回復

使用道具 舉報

7#
ID:72088 發表于 2019-5-16 15:42 | 只看該作者

下面是PCB照片和焊接好的成品,供喜歡單片機的朋友借鑒

1557992336979.jpg (1.86 MB, 下載次數: 192)

1557992336979.jpg

1557992354002.jpg (2.17 MB, 下載次數: 225)

1557992354002.jpg
回復

使用道具 舉報

8#
ID:471889 發表于 2019-5-16 17:29 | 只看該作者
STC15W104性價比完全抵不過義隆,一個STC15W104芯片的價錢都能買10個義隆芯片
回復

使用道具 舉報

9#
ID:419910 發表于 2019-5-19 00:05 | 只看該作者
新手第一次編譯,求解答,

IMG_20190518_235938.jpg (4.77 MB, 下載次數: 208)

IMG_20190518_235938.jpg

2019-05-18_23.58.36.jpg (7.12 MB, 下載次數: 194)

2019-05-18_23.58.36.jpg

IMG_20190519_000502.jpg (5.12 MB, 下載次數: 191)

IMG_20190519_000502.jpg

IMG_20190519_000452.jpg (5.46 MB, 下載次數: 206)

IMG_20190519_000452.jpg
回復

使用道具 舉報

10#
ID:72088 發表于 2019-6-24 20:26 | 只看該作者
pleianth 發表于 2019-5-19 00:05
新手第一次編譯,求解答,

頻率不對,設置成6M
回復

使用道具 舉報

11#
ID:72088 發表于 2019-6-24 20:28 | 只看該作者
pleianth 發表于 2019-5-19 00:05
新手第一次編譯,求解答,

程序是匯編的,你保存成C了,編譯是不對的,燒寫時候頻率調成6M就行了
回復

使用道具 舉報

12#
ID:499081 發表于 2019-8-1 11:43 來自手機 | 只看該作者
有沒有燒錄文件,匯編有點蒙圈
回復

使用道具 舉報

13#
ID:688521 發表于 2020-1-29 13:17 | 只看該作者
學習了!!!
回復

使用道具 舉報

14#
ID:711438 發表于 2020-3-24 22:56 | 只看該作者
匯編怎么燒寫?
回復

使用道具 舉報

15#
ID:430492 發表于 2020-3-25 10:39 | 只看該作者
匯編代碼,還是很牛逼的!
回復

使用道具 舉報

16#
ID:149318 發表于 2021-2-26 08:38 | 只看該作者
不錯的資料,謝謝!
回復

使用道具 舉報

17#
ID:423238 發表于 2021-3-1 18:08 來自手機 | 只看該作者
求c語言
回復

使用道具 舉報

18#
ID:27161 發表于 2021-5-15 11:48 | 只看該作者
最近在學習中,想仿制樓主的,可是編譯無法通過,不知道是啥原因,下面是截圖,MCU選15W104和15W408都不行。
回復

使用道具 舉報

19#
ID:27161 發表于 2021-5-15 11:51 | 只看該作者
不知為何無法上傳截圖,編譯提示錯誤如下:
*** FATAL ERROR L210: I/O ERROR ON INPUT FILE:
    EXCEPTION 0021H: PATH OR FILE NOT FOUND
    FILE: STC15W104單片機遙控開關電路.obj
Target not created
代碼保存的是ASM格式。

回復

使用道具 舉報

20#
ID:476909 發表于 2021-5-19 12:01 | 只看該作者
不懂匯編呀
回復

使用道具 舉報

21#
ID:701805 發表于 2021-5-30 21:29 來自手機 | 只看該作者
接收端怎么一個遙控器發送的啥信息呀
回復

使用道具 舉報

22#
ID:409399 發表于 2022-9-19 11:48 | 只看該作者
怎么樣進入學習紅外信號模式,長按按鍵不放嗎??、
回復

使用道具 舉報

23#
ID:1009425 發表于 2022-10-13 15:44 | 只看該作者
很好一次編譯通過。想做個阻容降壓做電源,試一下看有沒有干擾
回復

使用道具 舉報

24#
ID:72088 發表于 2022-11-18 10:59 | 只看該作者
超級賽亞人8402 發表于 2022-9-19 11:48
怎么樣進入學習紅外信號模式,長按按鍵不放嗎??、

對,按著不放,按下遙控鍵就學習成功了
回復

使用道具 舉報

25#
ID:72088 發表于 2022-11-18 11:01 | 只看該作者
liu2454004961 發表于 2022-10-13 15:44
很好一次編譯通過。想做個阻容降壓做電源,試一下看有沒有干擾

阻容降壓要考慮繼電器吸合電流,繼電器吸合電流100ma比較可靠
回復

使用道具 舉報

26#
ID:1055722 發表于 2022-12-23 09:53 來自手機 | 只看該作者
為什么我還是報錯?Build target 'Target 1' assembling 2.asm... 2.asm(271): error A300: unterminated comment 2.asm(272): warning A41: MISSING 'END' STATEMENT Target not created. Build Time Elapsed:  00:00:01
回復

使用道具 舉報

27#
ID:1009425 發表于 2022-12-23 12:01 | 只看該作者
仔細一看,程序還是有問題的。主程序:第一行,帶分號不編譯;第二行,按鍵處理程序;第三行,跳回主程序標題。按鍵處理程序,只包含繼電器狀態取反。
回復

使用道具 舉報

28#
ID:1009425 發表于 2022-12-26 10:05 | 只看該作者
pleianth 發表于 2019-5-19 00:05
新手第一次編譯,求解答,

不要想了,這個程序明顯有問題。燒錄進去運行結果是紅外無法解碼,按一次按鍵,輸出腳取反一次
回復

使用道具 舉報

29#
ID:72088 發表于 2023-1-4 18:47 | 只看該作者
liu2454004961 發表于 2022-12-23 12:01
仔細一看,程序還是有問題的。主程序:第一行,帶分號不編譯;第二行,按鍵處理程序;第三行,跳回主程序標 ...

你看不懂匯編就不要說,
遙控中斷程序最后是判斷按鍵狀態是否決定學習,和對比存儲數據決定是否反轉繼電器
回復

使用道具 舉報

30#
ID:98396 發表于 2023-1-5 15:41 | 只看該作者
        LCALL WERED
        LCALL READ_ROM
L9_0:
   
       LCALL OUT_0

L10:
        SETB EA ;允許中斷,然后退出中斷程序
        RETI

評分

參與人數 1黑幣 +5 收起 理由
新鄉家電維修 + 5 很給力!

查看全部評分

回復

使用道具 舉報

31#
ID:200118 發表于 2023-9-6 22:34 | 只看該作者
電路簡潔,值得學習。。。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品福利 | 亚洲综合五月天婷婷 | 欧美成人一区二区三区 | 精品一区二区三区四区五区 | 国产精品三级 | 久久久久国产一区二区三区 | 国产成人免费 | 国产高清一区二区 | 在线观看日本高清二区 | 午夜tv免费观看 | 精品亚洲一区二区三区 | 日韩伦理一区二区 | 久久精品亚洲精品国产欧美kt∨ | 亚洲精品一区二区三区四区高清 | 香蕉久久久久久 | 日韩aⅴ在线观看 | 午夜男人免费视频 | 在线一级片| 久久久久国产一区二区三区四区 | 激情视频一区 | 欧美日韩精品 | 欧美日韩国产一区二区 | 久久久久久久91 | 91亚洲视频在线 | 国产精品视频yy9299一区 | 国产欧美精品一区二区三区 | 日韩在线观看一区 | 中文字幕一区二区三区日韩精品 | 国产精品久久久久久久久久久久久久 | 99成人精品| 久久99精品久久久久久 | 欧美九九| 国产综合久久 | 日日摸日日添日日躁av | 日韩手机在线看片 | 国产成人精品a视频一区www | 91在线观| 99精品欧美一区二区三区综合在线 | 国产精品资源在线观看 | 欧美日韩高清一区二区三区 | 欧美日韩电影一区 |