硬件方面,本系統(tǒng)以HG255D路由器為載體,通過基于路由器的嵌入式軟件開發(fā),實(shí)現(xiàn)了一種超低成本的智能家居聯(lián)網(wǎng)控制解決方案。本系統(tǒng)由控制板、學(xué)習(xí)型遙控板和刷入OpenWRT系統(tǒng)的路由器組成,其中控制板采用了STC12C5A60S2單片機(jī)作為控制核心,學(xué)習(xí)型紅外遙控板采用了兩個(gè)STC15F104E單片機(jī)為紅外信號學(xué)習(xí)和發(fā)射的主控芯片。通過1838T紅外接收頭學(xué)習(xí)家用遙控器紅外波形,通過兩路紅外發(fā)射管發(fā)射學(xué)習(xí)來的紅外遙控信號。 軟件方面,通過向OpenWrt系統(tǒng)移植PL2303-USB轉(zhuǎn)串口芯片驅(qū)動實(shí)現(xiàn)了單片機(jī)向路由器的實(shí)時(shí)數(shù)據(jù)傳輸,通過Linux系統(tǒng)下交叉編譯編寫了OpenWrt系統(tǒng)下的串口數(shù)據(jù)處理程序,通過向OpenWrt系統(tǒng)移植boa(開源的嵌入式WEB服務(wù)器,支持CGI)實(shí)現(xiàn)了基于路由器的WEB服務(wù)器,然后以直觀的控制網(wǎng)頁呈現(xiàn)給用戶。控制信號通過CGI程序發(fā)送給控制板,由控制板上的單片機(jī)直接控制8繼電器開關(guān)的通斷或者學(xué)習(xí)型紅外遙控板發(fā)射紅外遙控信號或者學(xué)習(xí)信號。
1.1簡要介紹 1.1.1項(xiàng)目背景 物聯(lián)網(wǎng)興起,熱潮澎湃,但對于國內(nèi)的大多數(shù)人來說,對物聯(lián)網(wǎng)的理解還是停留在一紙空文的狀態(tài)。在物聯(lián)網(wǎng)眾多的應(yīng)用領(lǐng)域中,智能家居成為物聯(lián)網(wǎng)最接近百姓的產(chǎn)物,因?yàn)樗呛腿藗兊钠鹁由钕⑾⑾嚓P(guān)的,能夠?yàn)樗麄儙肀憬菔孢m的生活體驗(yàn)。但是市場上的智能家居類產(chǎn)品價(jià)格太過高昂,很難普及,而且系統(tǒng)結(jié)構(gòu)復(fù)雜,可維護(hù)型差。 1.1.2設(shè)計(jì)目的 用一套低廉的硬件、以及盡可能低的成本實(shí)現(xiàn)智能家居控制系統(tǒng),同時(shí)具備可裁剪、可擴(kuò)展的特性。所以,本系統(tǒng)的設(shè)計(jì)目的為實(shí)現(xiàn)一個(gè)超低成本智能家居聯(lián)網(wǎng)控制的基本框架。 1.1.3 OpenWRT系統(tǒng)簡介 OpenWrt是適合于嵌入式設(shè)備的一個(gè)Linux發(fā)行版。相對原廠固件而言,OpenWrt不是一個(gè)單一、靜態(tài)的固件,而是提供了一個(gè)可添加軟件包的可寫的文件系統(tǒng)。這使用戶可以自由的選擇應(yīng)用程序和配置,而不必受設(shè)備提供商的限制,并且可以使用一些適合某方面應(yīng)用的軟件包來定制你的設(shè)備。對于開發(fā)者來說,OpenWrt是一個(gè)框架,開發(fā)者不必麻煩的構(gòu)建整個(gè)固件就能得到想要的應(yīng)用程序;對于用戶來說,這意味著完全定制的能力,與以往不同的方式使用設(shè)備。 OpenWRT主頁:http://openwrt.org 1.1.4 HG255D路由器簡介 HG255D是華為出品的由電信定制的光纖寬帶用的路由器。在電信用戶中是相當(dāng)普及的一塊路由器,因其16MB的Flash和384MHz的mips處理器,成為了OpenWRT系統(tǒng)理想的載體。而且?guī)в蠻SB接口,擴(kuò)展性得以極大地提高。 HG255D路由器硬件規(guī)格: Architecture: MIPS | Vendor: ChinaTelecom/HuaWei | Bootloader: U-boot-1.1.4 | System-On-Chip: Ralink RT3052 | CPU Speed: 384 Mhz | Flash-Chip: S29GL128P | Flash size: 16MiB | RAM: 32 MiB | Wireless: Ralinl APSoC RT2860 b/g/n 2T2R (integrated) | Ethernet: Integrated 6 Port Fast Ethernet Switch | USB: Yes (1 Port) | Serial: Yes | JTAG: Yes |
1.2 設(shè)計(jì)方案
1.2.1控制板部分 分為控制板和學(xué)習(xí)型紅外遙控板兩部分,控制板使用STC12C5A60S2為主控芯片,直接控制著8路繼電器開關(guān),每個(gè)繼電器都配有獨(dú)立接線端子和通斷指示燈,指示燈亮表示接通狀態(tài)。學(xué)習(xí)型紅外遙控板采用了兩個(gè)STC15F104E單片機(jī)為紅外信號學(xué)習(xí)和發(fā)射的主控芯片,通過1838T紅外接收頭學(xué)習(xí)家用遙控器紅外波形,通過兩路紅外發(fā)射管發(fā)射學(xué)習(xí)來的紅外遙控信號。
1.2.2路由器部分 通過向OpenWrt系統(tǒng)移植PL2303-USB轉(zhuǎn)串口芯片驅(qū)動實(shí)現(xiàn)了單片機(jī)向路由器的實(shí)時(shí)數(shù)據(jù)傳輸,通過Linux系統(tǒng)下交叉編譯編寫了OpenWrt系統(tǒng)下的串口數(shù)據(jù)處理程序,通過向OpenWrt系統(tǒng)移植boa(開源的嵌入式WEB服務(wù)器,支持CGI)實(shí)現(xiàn)了基于路由器的WEB服務(wù)器,然后以直觀的控制網(wǎng)頁呈現(xiàn)給用戶。控制信號通過串口處理程序發(fā)送給控制板,由控制板上的單片機(jī)直接控制8繼電器開關(guān)的通斷或者學(xué)習(xí)型紅外遙控板發(fā)射紅外遙控信號或者學(xué)習(xí)信號。 1.2.3 WEB控制界面
2硬件電路介紹 硬件電路分為控制板和學(xué)習(xí)型紅外遙控板兩部分。 控制板:STC12C5A60S2基本電路、繼電器驅(qū)動電路、繼電器指示燈電路。 學(xué)習(xí)型紅外遙控板:STC15F104E基本電路、1838T紅外信號接收電路、紅外發(fā)射管發(fā)射電路、74HC138對8路按鍵的控制電路。 具體電路請參考附錄原理圖部分。 2.1 STC12C5A60s2單片機(jī)介紹 STC12C5A60s2單片機(jī)是STC生產(chǎn)的單時(shí)鐘/機(jī)器周期1T的單片機(jī),是高速、低功耗、抗干擾的新一代8051單片機(jī),指令代碼兼容傳統(tǒng)的8051,單速度快8-12倍。片上集成1280字節(jié)RAM、60K的FLASH,通用IO口40個(gè),內(nèi)置EEPROM功能,有4個(gè)16位定時(shí)器。由于價(jià)格低廉、性能較好,成為了本系統(tǒng)的首選。
2.2 STC15F104E單片機(jī)介紹 STC15F104E單片機(jī)是STC生產(chǎn)的單時(shí)鐘/機(jī)器周期1T的單片機(jī),是高速、低功耗、抗干擾的新一代8051單片機(jī),指令代碼兼容傳統(tǒng)的8051,單速度快8-12倍。內(nèi)部集成高精度R/C時(shí)鐘,可省掉外部晶振,內(nèi)部高可靠復(fù)位,可省掉外部復(fù)位電路。片上集成128字節(jié)RAM、6K的FLASH,通用IO口6個(gè),內(nèi)置EEPROM(1KB)功能,有2個(gè)16位定時(shí)器。由于其采用DIP-8封裝,速度快、體積小、價(jià)格低廉成為了本系統(tǒng)的首選。 2.3 USB轉(zhuǎn)串口模塊 通過給OpenWRT系統(tǒng)移植PL230驅(qū)動,實(shí)現(xiàn)了使用PL2303芯片的USB轉(zhuǎn)串口模塊與單片機(jī)的通訊。
2.4 連接關(guān)系 USB轉(zhuǎn)串口模塊的綠色連接到上圖三個(gè)針腳的第一針,黑手連接第三針。 控制板:棕、紅、橘、黃、綠、藍(lán) 遙控板:藍(lán) 、綠、黃、橘、紅、棕
3系統(tǒng)結(jié)構(gòu) 3.1單片機(jī)部分 3.1.1學(xué)習(xí)型紅外遙控 帶紅外遙控器的家電給我們的生活帶來極大的方便,但遙控器多了很容易弄混,如果有一種可對家中各種紅外遙控器發(fā)射的控制信號進(jìn)行識別、存儲和再現(xiàn)的遙控板,而且能夠聯(lián)網(wǎng)控制,這絕對是個(gè)激動人心的功能。 - 使用說明
- 在第一次使用這個(gè)功能之前,必需先進(jìn)行學(xué)習(xí)。
- 按客戶端上相應(yīng)的按鍵即可將之前保存的遙控信號發(fā)射出去。
- 遙控學(xué)習(xí)的方法
a) 按客戶端上的學(xué)習(xí)鍵或者長按對應(yīng)的物理按鍵。 b) 若指示燈長亮說明已經(jīng)進(jìn)入學(xué)習(xí)等待狀態(tài)。 c) 對準(zhǔn)接收頭,短按一下要學(xué)習(xí)的遙控器按鍵。 d) 指示燈熄滅則說明學(xué)習(xí)成果。
3.1.2控制板部分 1)流程圖 3.2路由器部分 這里將詳細(xì)介紹一下為HG255D路由器安卓OpenWRT系統(tǒng)的過程和開源軟件BOA的移植與配置,已經(jīng)跨平臺的交叉編譯環(huán)境構(gòu)建,和一下具體的細(xì)節(jié)。
3.2.1 HG255D路由器安裝OpenWRT系統(tǒng) 1)設(shè)置本地連接為IP:192.168.1.2 子網(wǎng)掩碼: 255.255.255.0 網(wǎng)關(guān) 192.168.1.1,DNS不用填寫,網(wǎng)線插入hg255d的LAN口,保持路由器關(guān)閉狀態(tài)。 - 先在瀏覽器輸入 http://192.168.1.1/upload.html,然后按住路由的reset鍵并接通電源,保持reset按住,瀏覽器刷新剛才的那個(gè)地址,大約十秒左右就可以進(jìn)入刷機(jī)界面,此時(shí)要選擇ralink.bin固件并開始刷入。大約5分鐘之后路由會自動重啟,稍等片刻在瀏覽器中輸入192.168.1.1 帳號密碼同為admin.進(jìn)入ralink的設(shè)置界面
- 刷u-boot,執(zhí)行命令:/hg255d/hg255d-flash-uboot.sh提交,然后手動重啟路由器。
- 路由重啟后,wps/wlan/reset按鈕任一按鈕,然后刷入固件就行了,寫入固件0909-DreamBox-ramips-rt305x-hg255d.bin大約10秒鐘,此時(shí)電源燈為常亮,然后大約是5分鐘的等待時(shí)間,電源燈會滅一下,然后頻閃,之后稍等一會就可以192.168.1.1進(jìn)入OpenWRT。
3.2.2 開源軟件向OpenWRT系統(tǒng)的移植 BOA(WEB服務(wù)器,支持CGI)的移植: BOA主頁 0) 構(gòu)建交叉編譯環(huán)境,從svn下載backfire,make menuconfig時(shí)選擇編譯Toolchain 1)從官方網(wǎng)站下載BOA,最新版是boa-0.94.14rc21.tar.gz 2)使用mips-openwrt-linux-gcc 通過靜態(tài)編譯得到boa應(yīng)用程序 5)修改boa.conf配置文件,比如端口、WEB路徑等 6)登陸并配置路由器 7)其中mime.types從Linux系統(tǒng)下 /etc里可以找到。 8)在瀏覽器中寫入http://<目標(biāo)板ip>:<端口>即可訪問 3.2.3 嵌入式系統(tǒng)下的軟件開發(fā) 這個(gè)部分用到了Linux下的串口編程知識,通過系統(tǒng)調(diào)用(System Call) 來進(jìn)行設(shè)備文件操作,PL2303模塊插入后默認(rèn)背加載為USBTTY0,WEB頁面用GET方式提交的指令由一個(gè)CGI程序?qū)iT負(fù)責(zé)通過串口發(fā)射給控制板。 編寫完后使用交叉編譯工具mips-openwrt-linux-gcc直接編譯。
3.3 客戶端部分 3.3.1 Android客戶端 注意:使用前需要先連接到路由器。 由于WEB方式控制對移動設(shè)備來說不是很方便,用戶體驗(yàn)較差,為了更好的用戶體驗(yàn),專門開發(fā)了Android系統(tǒng)客戶端。由于沒有安卓應(yīng)用開發(fā)經(jīng)驗(yàn),所以看起了比較簡陋,不過基本功能還是沒問題的。
兼容的系統(tǒng)版本:Android 2.1、Android 2.2、Android 2.3 其它版本未測試。 3.3.2 Windows客戶端 注意:使用前需要先連接到路由器。
同樣,為了更好的用戶體驗(yàn)和便捷的操作,同時(shí)也做了這個(gè)Windows系統(tǒng)的客戶端。 兼容性:Windows 2000、XP、Vista、Win7、Win8。
總結(jié) 本系統(tǒng)以普通路由器為核心,加上控制板實(shí)現(xiàn)了一種廉價(jià)的智能家居控制系統(tǒng)。成本相當(dāng)?shù)土由下酚善骺偝杀疽部梢钥刂圃诎僭韵拢啾仁袌錾系耐惍a(chǎn)品,很有性價(jià)比。目前,市場上智能家居類的產(chǎn)品中,目前還沒有發(fā)現(xiàn)集成學(xué)習(xí)型紅外遙控功能的,有了學(xué)習(xí)型遙控就可以用手機(jī)方便的集中控制電器,而不用到處找遙控器了。 在物聯(lián)網(wǎng)實(shí)現(xiàn)產(chǎn)業(yè)化規(guī)模的發(fā)展的過程中,智能家居體現(xiàn)的不僅僅只是一些高科技的產(chǎn)品,更是一種全新的生活方式,一種意境和理念。未來隨著經(jīng)濟(jì)的發(fā)展,人們對生活質(zhì)量追求的提高,智能家居也將逐漸引領(lǐng)裝修時(shí)尚潮流,成為新的消費(fèi)趨勢。所以基于此,相信本產(chǎn)品有很好的市場前景。
單片機(jī)源程序如下:
- ;STC15F104E 4路學(xué)習(xí)萬能遙控器
- ;內(nèi)部振蕩11.0592M
- ;EPPROM寄存器
- IAP_DATA EQU 0C2H
- IAP_ADDRH EQU 0C3H
- IAP_ADDRL EQU 0C4H
- IAP_CMD EQU 0C5H
- IAP_TRIG EQU 0C6H
- IAP_CONTR EQU 0C7H
- ;***********************
- ;F38_4KHZ EQU 0FF70H ;38.4KHZ 1T MODE (65536-11059200/2/38400)
- ;F38_4KHZ EQU 0FFF4H ;38.4KHZ 12T MODE(65536-11059200/2/38400/12)
- AUXR EQU 08EH
- INT_CLKO EQU 08FH ;輸出時(shí)鐘使能
- K1 BIT P3.0;按鍵1
- K2 BIT P3.2;按鍵2
- K3 BIT P3.3;按鍵3
- K4 BIT P3.4;按鍵4
- LED BIT P3.3;指示燈(按鍵3復(fù)用)
- IR BIT P3.1;紅外接收頭
- T1CLKO BIT P3.5;紅外發(fā)射管
- ;****************************
- ORG 0
- LJMP START
- ORG 3
- CLR EX0;關(guān)外中斷0
- RETI
- ORG 0BH
- LJMP INT_T0;T0中斷
- ORG 13H
- CLR EX1;關(guān)外中斷1
- RETI
- ORG 53H
- MOV INT_CLKO,#0H ;關(guān)外中斷 2
- RETI
- ORG 83H
- MOV INT_CLKO,#0H ;關(guān)外中斷 4
- RETI
- ORG 100H
- ;************************
- ;************************
- START:;初始化
- MOV R0,#20H
- QL:
- MOV @R0,#0;內(nèi)存清0
- INC R0
- CJNE R0,#80H,QL
- ;MOV AUXR,#40H ; 1T
- MOV P3,#0FFH;拉高管腳
- MOV AUXR,#00H ;定時(shí)器12T模式
- MOV TMOD,#00H ;定時(shí)器16位自動重裝
- ;--------------------
- MOV TH1,#0FFH ;38K方波定時(shí)T1
- MOV TL1,#0F4H
- SETB TR1;開T1
- SETB IT0
- SETB IT1
- MOV TH0,#0;定時(shí)器0初值
- MOV TL0,#0
- SETB ET0
- SETB TR0;開T0
- SETB EA;開總中斷
- ;MOV INT_CLKO,#02H; 發(fā)射38K
- ;MOV INT_CLKO,#00H;停止發(fā)射
- ;--------------------------
- MAIN:;主程序
- JNB 3,MAIN1
- CLR 3;清掉電標(biāo)志
- MOV PCON,#2;進(jìn)入掉電模式
- NOP
- NOP
- NOP
- NOP
- MAIN1:
- CALL PD;拉高P3,按鍵掃描
- JMP MAIN
- ;************************
- ;************************
- PD:;讀管腳是否按下
- MOV P3,#0FFH;拉高管腳
- MOV A,P3
- ANL A,#11101B
- CJNE A,#11101B,PD1
- RET;無按鍵退出
- PD1:;有管腳按下
- CALL DELAY20MS;延時(shí)消抖
- MOV P3,#0FFH;拉高管腳
- MOV A,P3
- ANL A,#11101B
- CJNE A,#11101B,PD2;讀管腳是否按下
- RET;是干擾退出
- PD2:;有管腳按下
- ;-----------------
- CLR EA;關(guān)中斷
- MOV 2FH,#0;清計(jì)數(shù),每計(jì)一次70MS
- MOV TH0,#0;定時(shí)器0初值
- MOV TL0,#0
- SETB TR0;打開T0判斷長按
- ;-----------------
- JNB K1,KEY1;按鍵1
- JNB K2,KEY2;按鍵2
- JNB K3,KEY3;按鍵3
- JNB K4,KEY4;按鍵4
- RET
- ;**************************
- KEY1:;按鍵1
- MOV DPTR,#0H;第1扇區(qū),00H地址
- CALL ADD2FH;;按鍵按下計(jì)時(shí)
- JNC sss;短按跳轉(zhuǎn)
- JMP XIEXI;長按跳轉(zhuǎn)到學(xué)習(xí)功能
- sss:
- JNB K1,KEY1;等待放開
- ;-----------------
- CLR TR0;關(guān)定時(shí)器0
- CALL FFSS;紅外發(fā)射
- RET
- ;***************************
- KEY2:;按鍵2
- MOV DPTR,#100H;第1扇區(qū),100H地址
- CALL ADD2FH;;按鍵按下計(jì)時(shí)
- JNC aaa;短按跳轉(zhuǎn)
- JMP XIEXI;長按跳轉(zhuǎn)到學(xué)習(xí)功能
- aaa:
- JNB K2,KEY2;等待放開
- ;-----------------
- CLR TR0;關(guān)定時(shí)器0
- CALL FFSS;紅外發(fā)射
- RET
- ;************************
- ;************************
- KEY3:;按鍵3
- MOV DPTR,#200H;第2扇區(qū),200H地址
- CALL ADD2FH;;按鍵按下計(jì)時(shí)
- JNC bbb;短按跳轉(zhuǎn)
- JMP XIEXI;長按跳轉(zhuǎn)到學(xué)習(xí)功能
- bbb:
- JNB K3,KEY3;等待放開
- ;-----------------
- CLR TR0;關(guān)定時(shí)器0
- CALL FFSS;紅外發(fā)射
- RET
- ;************************
- KEY4:;按鍵4
- MOV DPTR,#300H;第2扇區(qū),300H地址
- CALL ADD2FH;;按鍵按下計(jì)時(shí)
- JNC ccc;短按跳轉(zhuǎn)
- JMP XIEXI;長按跳轉(zhuǎn)到學(xué)習(xí)功能
- ccc:
- JNB K4,KEY4;等待放開
- ;-----------------
- CLR TR0;關(guān)定時(shí)器0
- CALL FFSS;紅外發(fā)射
- RET
- ;************************
- ADD2FH:;按鍵按下時(shí)定時(shí)計(jì)數(shù)
- CLR C
- JNB TF0,ADD2FHOUT
- CLR TF0
- INC 2FH;計(jì)數(shù)
- MOV A,#12
- CJNE A,2FH,ADD2FHOUT;長按時(shí)長70MS*12=840MS
- ADD2FHOUT:RET
- ;-----------------------
- ;***************************
- INT_T0:;T0中斷,用來定時(shí)進(jìn)入掉電模式
- PUSH ACC
- PUSH PSW
- INC 33H
- MOV A,33H
- CJNE A,#80,INT_T0OUT; 70*20=5.6秒進(jìn)入掉電
- MOV 33H,#0
- SETB EX1;;進(jìn)入掉電模式前開外中斷1
- SETB EX0;;進(jìn)入掉電模式前開外中斷0
- ORL INT_CLKO,#50H ;進(jìn)入掉電模式前開外中斷2,中斷4
- SETB 3;打開掉電標(biāo)志位
- INT_T0OUT:
- POP PSW
- POP ACC
- RETI
- ;***************************
- ;***********************
- ;*********************
- ;***************************
- XIEXI:;;紅外接收;存入EEPROMW
- ;判斷扇區(qū)是否為空,是空就擦除
- MOV R3,DPH;保存扇區(qū)指針
- MOV R4,DPL
- MOV R1,#200;讀200個(gè)字節(jié)
- ZDKA:;
- CALL EEPROMR;讀1字節(jié)
- INC DPTR;下個(gè)地址
- CJNE A,#0FFH,RESA;0FF就是空
- DJNZ R1,ZDKA;是否讀完
- JMP PDSQOUT
- RESA:
- CALL ERASE;扇區(qū)擦除
- PDSQOUT:
- MOV DPH,R3;裝入扇區(qū)指針
- MOV DPL,R4
- INC DPTR;從扇區(qū)第2字節(jié)開始寫,第1字節(jié)用來寫電平數(shù)
- CLR 2;清判斷位
- CLR LED;亮燈
- MOV R1,#0;高電平和低電平總數(shù)
- CLR TR0;停止計(jì)時(shí)
- JB IR,$;等待接收信號
- MOV TH0,#0;;定時(shí)器初值歸0
- MOV TL0,#0
- SETB TR0;有信號開始計(jì)數(shù)
- ;-------------------
- WAIT0:
- JBC TF0,XOUT;等待超時(shí);超過70MS退出
- JNB IR,WAIT0;等待高電平到來
- CLR TR0;停止計(jì)數(shù),存低電平時(shí)長
- ;-------------------
- BAOCUN:;存低(高)電平時(shí)長
- MOV A,TH0;高位
- CPL A;取反計(jì)數(shù)值就是定時(shí)初值
- CALL EEPROMW;寫一字節(jié)EEPROMW大約60US
- INC DPTR;下一地址
- MOV A,TL0;低位
- CPL A;取反
- CALL EEPROMW;寫一字節(jié)EEPROMW大約60US
- ;-------------------
- MOV TH0,#0;定時(shí)器初值歸0
- MOV TL0,#6EH;補(bǔ)償120US
- SETB TR0;開始計(jì)數(shù)
- INC DPTR;下一地址
- INC R1;電平個(gè)數(shù)加1
- CPL 2;取反判斷位,初始是0
- JNB 2,WAIT0;是0就跳到等待高電平到來
- ;***********************************
- WAIT1:
- JBC TF0,XOUT;等待低電平超時(shí),超過70MS計(jì)數(shù)完畢
- JB IR,WAIT1;是1就等待低電平到來
- CLR TR0;停止計(jì)時(shí)
- ;---------------------------
- JMP BAOCUN;存高電平時(shí)長
- XOUT:;退出
- CLR TR0;停止計(jì)時(shí)
- MOV DPH,R3;裝入扇區(qū)指針
- MOV DPL,R4
- MOV A,R1;電平總數(shù)
- CALL EEPROMW;寫入扇區(qū)第1個(gè)地址
- SETB LED;關(guān)燈
- MOV TH0,#0;定時(shí)器初值歸0
- MOV TL0,0
- MOV 33H,#0;掉電計(jì)數(shù)
- SETB TR0
- SETB ET0
- SETB EA
- RET
- ;****************************
- ;****************************
- FFSS:;紅外發(fā)射
- CLR 2;清標(biāo)志位,用來判斷發(fā)射還是停止發(fā)射
- CLR LED;;開燈
- ORL DPH,#10H
- MOV A,#0
- MOVC A,@A+DPTR
- ;CALL EEPROMR
- MOV R1,A;從第1扇區(qū)第1地址取出電平總數(shù)
- INC DPTR;下一地址開始為發(fā)射數(shù)據(jù)時(shí)長
- FFSS0:
- MOV INT_CLKO,#02H;發(fā)射38K紅外(A版T1為3.5)
- ;***************************
- ZCZ:
- CLR TR0;停止計(jì)數(shù)
- CLR TF0;清溢出位
- ;CALL EEPROMR;讀出定時(shí)時(shí)長裝入定時(shí)器
- MOV A,#0
- MOVC A,@A+DPTR
- MOV TH0,A
- INC DPTR;下一地址
- ;CALL EEPROMR
- MOV A,#0
- MOVC A,@A+DPTR
- ;---------------------
- CLR C;數(shù)據(jù)修正,10US左右
- ADD A,#10
- MOV TL0,A
- MOV A,#0
- ADDC A,TH0
- MOV TH0,A
- ;**************************
- SETB TR0;開始計(jì)時(shí)
- INC DPTR;下一地址
- CPL 2;取反發(fā)射標(biāo)志位
- JNB TF0,$;等待溢出
- DJNZ R1, FSW;電平數(shù)是否完畢
- MOV INT_CLKO,#00H;停止發(fā)射
- SETB P3.5;熄滅紅外管
- CLR TR0;停止計(jì)數(shù)
- CLR TF0;清溢出位
- SETB LED;;關(guān)燈
- MOV TH0,#0;定時(shí)器初值歸0
- MOV TL0,0
- MOV 33H,#0;掉電計(jì)數(shù)
- SETB TR0
- SETB ET0
- SETB EA
- RET
- ;**************************
- FSW:
- JNB 2,FFSS0;標(biāo)志位是0就發(fā)射
- FFSS1:
- MOV INT_CLKO,#00H;停止發(fā)射
- SETB P3.5;熄滅紅外管
- JMP ZCZ;定時(shí)時(shí)長裝入定時(shí)器
- ;-----------------------
- ;******************
- ;EPPROM讀寫
- ;******************
- ERASE:;擦除
- MOV IAP_CONTR,#83H;允許IAP/IAP操作
- MOV IAP_CMD,#3 ;扇區(qū)擦除
- MOV IAP_ADDRH,DPH ;送高地址
- MOV IAP_ADDRL,DPL ;送低地址
- ACALL IAPXX ;觸發(fā)
- RET
- ;************************
- EEPROMW:;寫
- MOV IAP_CONTR,#83H;允許IAP/IAP操作
- MOV IAP_CMD,#2 ;送寫命令
- MOV IAP_ADDRH,DPH ;送高地址
- MOV IAP_ADDRL,DPL ;送低地址
- MOV IAP_DATA,A ;A是要寫入的數(shù)據(jù)
- ACALL IAPXX ;觸發(fā)
- RET
- ;************************
- EEPROMR:;讀
- MOV IAP_CONTR,#83H;允許IAP/IAP操作
- MOV IAP_CMD,#1 ;送讀命令
- MOV IAP_ADDRH,DPH ;送高地址
- MOV IAP_ADDRL,DPL ;送低地址
- ACALL IAPXX ;觸發(fā)
- MOV A,IAP_DATA ;讀出的數(shù)據(jù)放到A
- RET
- ;************************
- IAPXX:;觸發(fā)
- ;和11F/15F的相同,而與12C2052的不同
- ;CLR EA ;關(guān)中斷在觸發(fā)之前
- MOV IAP_TRIG,#5AH
- MOV IAP_TRIG,#0A5H;
- NOP
- NOP
- NOP
- ;SETB EA
- RET
- ;----------------------
- IAP_DISABLE:;禁止IAP/IAP操作
- MOV IAP_CONTR,#0
- MOV IAP_CMD,#0
- MOV IAP_TRIG,#0
- MOV IAP_ADDRH,#0FFH
- MOV IAP_ADDRL,#0FFH
- RET
- ;----------------------
- DELAY20MS: ;延時(shí)
- MOV R7,#0EH
- DL1:
- MOV R6,#0A8H
- DL0:
- MOV R5,#16H
- DJNZ R5,$
- DJNZ R6,DL0
- DJNZ R7,DL1
- RET
- END
復(fù)制代碼
0.png (3.88 KB, 下載次數(shù): 59)
下載附件
2019-7-21 15:03 上傳
全部資料51hei下載地址:
智能家居控制系統(tǒng)文檔.rar
(2 MB, 下載次數(shù): 37)
2019-7-21 09:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
智能家居控制系統(tǒng)客戶端.zip
(560.43 KB, 下載次數(shù): 26)
2019-7-21 09:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
學(xué)習(xí)型遙控器.rar
(21.37 KB, 下載次數(shù): 35)
2019-7-21 09:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
boa.rar
(909.93 KB, 下載次數(shù): 24)
2019-7-21 09:27 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|