找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

OpenWRT路由器智能家居控制系統(tǒng)設計 單片機學習型紅外遙控

  [復制鏈接]
跳轉到指定樓層
樓主
ID:587583 發(fā)表于 2019-7-21 09:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
硬件方面,本系統(tǒng)以HG255D路由器為載體,通過基于路由器的嵌入式軟件開發(fā),實現(xiàn)了一種超低成本的智能家居聯(lián)網控制解決方案。本系統(tǒng)由控制板、學習型遙控板和刷入OpenWRT系統(tǒng)的路由器組成,其中控制板采用了STC12C5A60S2單片機作為控制核心,學習型紅外遙控板采用了兩個STC15F104E單片機為紅外信號學習和發(fā)射的主控芯片。通過1838T紅外接收頭學習家用遙控器紅外波形,通過兩路紅外發(fā)射管發(fā)射學習來的紅外遙控信號。
軟件方面,通過向OpenWrt系統(tǒng)移植PL2303-USB轉串口芯片驅動實現(xiàn)了單片機向路由器的實時數(shù)據(jù)傳輸,通過Linux系統(tǒng)下交叉編譯編寫了OpenWrt系統(tǒng)下的串口數(shù)據(jù)處理程序,通過向OpenWrt系統(tǒng)移植boa(開源的嵌入式WEB服務器,支持CGI)實現(xiàn)了基于路由器的WEB服務器,然后以直觀的控制網頁呈現(xiàn)給用戶。控制信號通過CGI程序發(fā)送給控制板,由控制板上的單片機直接控制8繼電器開關的通斷或者學習型紅外遙控板發(fā)射紅外遙控信號或者學習信號。
1.1簡要介紹
1.1.1項目背景
物聯(lián)網興起,熱潮澎湃,但對于國內的大多數(shù)人來說,對物聯(lián)網的理解還是停留在一紙空文的狀態(tài)。在物聯(lián)網眾多的應用領域中,智能家居成為物聯(lián)網最接近百姓的產物,因為它是和人們的起居生活息息相關的,能夠為他們帶來便捷舒適的生活體驗。但是市場上的智能家居類產品價格太過高昂,很難普及,而且系統(tǒng)結構復雜,可維護型差。
1.1.2設計目的
用一套低廉的硬件、以及盡可能低的成本實現(xiàn)智能家居控制系統(tǒng),同時具備可裁剪、可擴展的特性。所以,本系統(tǒng)的設計目的為實現(xiàn)一個超低成本智能家居聯(lián)網控制的基本框架。
1.1.3 OpenWRT系統(tǒng)簡介
OpenWrt是適合于嵌入式設備的一個Linux發(fā)行版。相對原廠固件而言,OpenWrt不是一個單一、靜態(tài)的固件,而是提供了一個可添加軟件包的可寫的文件系統(tǒng)。這使用戶可以自由的選擇應用程序和配置,而不必受設備提供商的限制,并且可以使用一些適合某方面應用的軟件包來定制你的設備。對于開發(fā)者來說,OpenWrt是一個框架,開發(fā)者不必麻煩的構建整個固件就能得到想要的應用程序;對于用戶來說,這意味著完全定制的能力,與以往不同的方式使用設備。
OpenWRT主頁:http://openwrt.org  
1.1.4 HG255D路由器簡介
HG255D是華為出品的由電信定制的光纖寬帶用的路由器。在電信用戶中是相當普及的一塊路由器,因其16MB的Flash和384MHz的mips處理器,成為了OpenWRT系統(tǒng)理想的載體。而且?guī)в蠻SB接口,擴展性得以極大地提高。
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 設計方案

1.2.1控制板部分
分為控制板和學習型紅外遙控板兩部分,控制板使用STC12C5A60S2為主控芯片,直接控制著8路繼電器開關,每個繼電器都配有獨立接線端子和通斷指示燈,指示燈亮表示接通狀態(tài)。學習型紅外遙控板采用了兩個STC15F104E單片機為紅外信號學習和發(fā)射的主控芯片,通過1838T紅外接收頭學習家用遙控器紅外波形,通過兩路紅外發(fā)射管發(fā)射學習來的紅外遙控信號。

1.2.2路由器部分
通過向OpenWrt系統(tǒng)移植PL2303-USB轉串口芯片驅動實現(xiàn)了單片機向路由器的實時數(shù)據(jù)傳輸,通過Linux系統(tǒng)下交叉編譯編寫了OpenWrt系統(tǒng)下的串口數(shù)據(jù)處理程序,通過向OpenWrt系統(tǒng)移植boa(開源的嵌入式WEB服務器,支持CGI)實現(xiàn)了基于路由器的WEB服務器,然后以直觀的控制網頁呈現(xiàn)給用戶?刂菩盘柾ㄟ^串口處理程序發(fā)送給控制板,由控制板上的單片機直接控制8繼電器開關的通斷或者學習型紅外遙控板發(fā)射紅外遙控信號或者學習信號。
1.2.3 WEB控制界面

2硬件電路介紹
硬件電路分為控制板和學習型紅外遙控板兩部分。
控制板:STC12C5A60S2基本電路、繼電器驅動電路、繼電器指示燈電路。
學習型紅外遙控板:STC15F104E基本電路、1838T紅外信號接收電路、紅外發(fā)射管發(fā)射電路、74HC138對8路按鍵的控制電路。
具體電路請參考附錄原理圖部分。
2.1 STC12C5A60s2單片機介紹
STC12C5A60s2單片機是STC生產的單時鐘/機器周期1T的單片機,是高速、低功耗、抗干擾的新一代8051單片機,指令代碼兼容傳統(tǒng)的8051,單速度快8-12倍。片上集成1280字節(jié)RAM、60K的FLASH,通用IO口40個,內置EEPROM功能,有4個16位定時器。由于價格低廉、性能較好,成為了本系統(tǒng)的首選。

2.2 STC15F104E單片機介紹
STC15F104E單片機是STC生產的單時鐘/機器周期1T的單片機,是高速、低功耗、抗干擾的新一代8051單片機,指令代碼兼容傳統(tǒng)的8051,單速度快8-12倍。內部集成高精度R/C時鐘,可省掉外部晶振,內部高可靠復位,可省掉外部復位電路。片上集成128字節(jié)RAM、6K的FLASH,通用IO口6個,內置EEPROM(1KB)功能,有2個16位定時器。由于其采用DIP-8封裝,速度快、體積小、價格低廉成為了本系統(tǒng)的首選。
2.3 USB轉串口模塊
通過給OpenWRT系統(tǒng)移植PL230驅動,實現(xiàn)了使用PL2303芯片的USB轉串口模塊與單片機的通訊。

2.4 連接關系
USB轉串口模塊的綠色連接到上圖三個針腳的第一針,黑手連接第三針。
控制板:棕、紅、橘、黃、綠、藍     遙控板:藍 、綠、黃、橘、紅、棕

3系統(tǒng)結構
3.1單片機部分
3.1.1學習型紅外遙控
  • 意義
帶紅外遙控器的家電給我們的生活帶來極大的方便,但遙控器多了很容易弄混,如果有一種可對家中各種紅外遙控器發(fā)射的控制信號進行識別、存儲和再現(xiàn)的遙控板,而且能夠聯(lián)網控制,這絕對是個激動人心的功能。
  • 使用說明
    • 在第一次使用這個功能之前,必需先進行學習。
    • 按客戶端上相應的按鍵即可將之前保存的遙控信號發(fā)射出去。
  • 遙控學習的方法
a) 按客戶端上的學習鍵或者長按對應的物理按鍵。
b) 若指示燈長亮說明已經進入學習等待狀態(tài)。
c) 對準接收頭,短按一下要學習的遙控器按鍵。
d) 指示燈熄滅則說明學習成果。

3.1.2控制板部分
1)流程圖
3.2路由器部分
這里將詳細介紹一下為HG255D路由器安卓OpenWRT系統(tǒng)的過程和開源軟件BOA的移植與配置,已經跨平臺的交叉編譯環(huán)境構建,和一下具體的細節(jié)。

3.2.1 HG255D路由器安裝OpenWRT系統(tǒng)
1)設置本地連接為IP:192.168.1.2 子網掩碼: 255.255.255.0 網關 192.168.1.1,DNS不用填寫,網線插入hg255d的LAN口,保持路由器關閉狀態(tài)。
  • 先在瀏覽器輸入 http://192.168.1.1/upload.html,然后按住路由的reset鍵并接通電源,保持reset按住,瀏覽器刷新剛才的那個地址,大約十秒左右就可以進入刷機界面,此時要選擇ralink.bin固件并開始刷入。大約5分鐘之后路由會自動重啟,稍等片刻在瀏覽器中輸入192.168.1.1 帳號密碼同為admin.進入ralink的設置界面
  • 刷u-boot,執(zhí)行命令:/hg255d/hg255d-flash-uboot.sh提交,然后手動重啟路由器。
  • 路由重啟后,wps/wlan/reset按鈕任一按鈕,然后刷入固件就行了,寫入固件0909-DreamBox-ramips-rt305x-hg255d.bin大約10秒鐘,此時電源燈為常亮,然后大約是5分鐘的等待時間,電源燈會滅一下,然后頻閃,之后稍等一會就可以192.168.1.1進入OpenWRT。

3.2.2 開源軟件向OpenWRT系統(tǒng)的移植
BOA(WEB服務器,支持CGI)的移植:
BOA主頁
0) 構建交叉編譯環(huán)境,從svn下載backfire,make menuconfig時選擇編譯Toolchain
1)從官方網站下載BOA,最新版是boa-0.94.14rc21.tar.gz
2)使用mips-openwrt-linux-gcc 通過靜態(tài)編譯得到boa應用程序
5)修改boa.conf配置文件,比如端口、WEB路徑等
6)登陸并配置路由器
7)其中mime.types從Linux系統(tǒng)下 /etc里可以找到。
8)在瀏覽器中寫入http://<目標板ip>:<端口>即可訪問
3.2.3 嵌入式系統(tǒng)下的軟件開發(fā)
這個部分用到了Linux下的串口編程知識,通過系統(tǒng)調用(System Call) 來進行設備文件操作,PL2303模塊插入后默認背加載為USBTTY0,WEB頁面用GET方式提交的指令由一個CGI程序專門負責通過串口發(fā)射給控制板。
編寫完后使用交叉編譯工具mips-openwrt-linux-gcc直接編譯。

3.3 客戶端部分
3.3.1 Android客戶端
注意:使用前需要先連接到路由器。
由于WEB方式控制對移動設備來說不是很方便,用戶體驗較差,為了更好的用戶體驗,專門開發(fā)了Android系統(tǒng)客戶端。由于沒有安卓應用開發(fā)經驗,所以看起了比較簡陋,不過基本功能還是沒問題的。

兼容的系統(tǒng)版本:Android 2.1、Android 2.2、Android 2.3
其它版本未測試。
3.3.2 Windows客戶端
注意:使用前需要先連接到路由器。

同樣,為了更好的用戶體驗和便捷的操作,同時也做了這個Windows系統(tǒng)的客戶端。
兼容性:Windows 2000、XP、Vista、Win7、Win8。

總結
本系統(tǒng)以普通路由器為核心,加上控制板實現(xiàn)了一種廉價的智能家居控制系統(tǒng)。成本相當?shù)土,加上路由器總成本也可以控制在百元以下,相比市場上的同類產品,很有性價比。目前,市場上智能家居類的產品中,目前還沒有發(fā)現(xiàn)集成學習型紅外遙控功能的,有了學習型遙控就可以用手機方便的集中控制電器,而不用到處找遙控器了。
在物聯(lián)網實現(xiàn)產業(yè)化規(guī)模的發(fā)展的過程中,智能家居體現(xiàn)的不僅僅只是一些高科技的產品,更是一種全新的生活方式,一種意境和理念。未來隨著經濟的發(fā)展,人們對生活質量追求的提高,智能家居也將逐漸引領裝修時尚潮流,成為新的消費趨勢。所以基于此,相信本產品有很好的市場前景。



單片機源程序如下:
  1.   ;STC15F104E 4路學習萬能遙控器
  2.   ;內部振蕩11.0592M

  3.   ;EPPROM寄存器
  4.   IAP_DATA EQU  0C2H
  5.   IAP_ADDRH EQU 0C3H
  6.   IAP_ADDRL EQU 0C4H
  7.   IAP_CMD  EQU  0C5H
  8.   IAP_TRIG EQU  0C6H
  9.   IAP_CONTR EQU 0C7H
  10.   ;***********************

  11.   ;F38_4KHZ EQU 0FF70H ;38.4KHZ 1T MODE (65536-11059200/2/38400)
  12.   ;F38_4KHZ EQU 0FFF4H ;38.4KHZ 12T MODE(65536-11059200/2/38400/12)

  13.   AUXR EQU 08EH
  14.   INT_CLKO EQU 08FH ;輸出時鐘使能

  15.   K1 BIT P3.0;按鍵1
  16.   K2 BIT P3.2;按鍵2
  17.   K3 BIT P3.3;按鍵3
  18.   K4 BIT P3.4;按鍵4

  19.   LED BIT P3.3;指示燈(按鍵3復用)

  20.   IR BIT  P3.1;紅外接收頭
  21. T1CLKO BIT P3.5;紅外發(fā)射管

  22. ;****************************
  23.   ORG 0
  24.   LJMP START
  25. ORG 3
  26. CLR EX0;關外中斷0
  27. RETI

  28. ORG 0BH
  29. LJMP INT_T0;T0中斷

  30. ORG 13H
  31. CLR EX1;關外中斷1
  32. RETI

  33. ORG 53H
  34. MOV INT_CLKO,#0H ;關外中斷 2
  35. RETI

  36. ORG 83H
  37. MOV INT_CLKO,#0H ;關外中斷 4
  38. RETI

  39. ORG 100H
  40. ;************************
  41. ;************************
  42.   START:;初始化
  43.   MOV R0,#20H
  44.   QL:
  45.   MOV @R0,#0;內存清0
  46.   INC R0
  47.   CJNE R0,#80H,QL

  48.   ;MOV AUXR,#40H ; 1T
  49.   MOV P3,#0FFH;拉高管腳
  50.   MOV AUXR,#00H ;定時器12T模式
  51.   MOV TMOD,#00H ;定時器16位自動重裝
  52. ;--------------------
  53.   MOV TH1,#0FFH ;38K方波定時T1
  54.   MOV TL1,#0F4H
  55.   SETB TR1;開T1
  56. SETB IT0
  57. SETB IT1
  58. MOV TH0,#0;定時器0初值
  59. MOV TL0,#0
  60. SETB ET0
  61. SETB TR0;開T0
  62. SETB EA;開總中斷

  63. ;MOV INT_CLKO,#02H; 發(fā)射38K
  64. ;MOV INT_CLKO,#00H;停止發(fā)射
  65. ;--------------------------
  66. MAIN:;主程序
  67. JNB 3,MAIN1
  68. CLR 3;清掉電標志
  69. MOV PCON,#2;進入掉電模式
  70. NOP
  71. NOP
  72. NOP
  73. NOP
  74. MAIN1:
  75. CALL PD;拉高P3,按鍵掃描

  76. JMP MAIN
  77. ;************************
  78. ;************************

  79. PD:;讀管腳是否按下
  80. MOV P3,#0FFH;拉高管腳
  81. MOV A,P3
  82. ANL A,#11101B
  83. CJNE A,#11101B,PD1
  84. RET;無按鍵退出
  85. PD1:;有管腳按下
  86. CALL DELAY20MS;延時消抖
  87. MOV P3,#0FFH;拉高管腳
  88. MOV A,P3
  89. ANL A,#11101B
  90. CJNE A,#11101B,PD2;讀管腳是否按下
  91. RET;是干擾退出
  92. PD2:;有管腳按下
  93. ;-----------------
  94. CLR EA;關中斷
  95. MOV 2FH,#0;清計數(shù),每計一次70MS
  96. MOV TH0,#0;定時器0初值
  97. MOV TL0,#0
  98. SETB TR0;打開T0判斷長按

  99. ;-----------------
  100. JNB K1,KEY1;按鍵1
  101. JNB K2,KEY2;按鍵2
  102. JNB K3,KEY3;按鍵3
  103. JNB K4,KEY4;按鍵4
  104. RET

  105. ;**************************
  106. KEY1:;按鍵1
  107. MOV DPTR,#0H;第1扇區(qū),00H地址
  108. CALL ADD2FH;;按鍵按下計時
  109. JNC sss;短按跳轉
  110. JMP XIEXI;長按跳轉到學習功能
  111. sss:
  112. JNB K1,KEY1;等待放開
  113. ;-----------------
  114. CLR TR0;關定時器0
  115. CALL FFSS;紅外發(fā)射
  116. RET

  117. ;***************************
  118. KEY2:;按鍵2
  119. MOV DPTR,#100H;第1扇區(qū),100H地址
  120. CALL ADD2FH;;按鍵按下計時
  121. JNC aaa;短按跳轉
  122. JMP XIEXI;長按跳轉到學習功能
  123. aaa:
  124. JNB K2,KEY2;等待放開
  125. ;-----------------
  126. CLR TR0;關定時器0
  127. CALL FFSS;紅外發(fā)射
  128. RET

  129. ;************************
  130. ;************************

  131. KEY3:;按鍵3

  132. MOV DPTR,#200H;第2扇區(qū),200H地址
  133. CALL ADD2FH;;按鍵按下計時
  134. JNC bbb;短按跳轉
  135. JMP XIEXI;長按跳轉到學習功能
  136. bbb:
  137. JNB K3,KEY3;等待放開
  138. ;-----------------
  139. CLR TR0;關定時器0
  140. CALL FFSS;紅外發(fā)射
  141. RET
  142. ;************************
  143. KEY4:;按鍵4
  144. MOV DPTR,#300H;第2扇區(qū),300H地址
  145. CALL ADD2FH;;按鍵按下計時
  146. JNC ccc;短按跳轉
  147. JMP XIEXI;長按跳轉到學習功能
  148. ccc:
  149. JNB K4,KEY4;等待放開
  150. ;-----------------
  151. CLR TR0;關定時器0
  152. CALL FFSS;紅外發(fā)射
  153. RET
  154. ;************************

  155. ADD2FH:;按鍵按下時定時計數(shù)
  156. CLR C
  157. JNB TF0,ADD2FHOUT
  158. CLR TF0
  159. INC 2FH;計數(shù)
  160. MOV A,#12
  161. CJNE A,2FH,ADD2FHOUT;長按時長70MS*12=840MS
  162. ADD2FHOUT:RET
  163. ;-----------------------

  164. ;***************************
  165. INT_T0:;T0中斷,用來定時進入掉電模式
  166. PUSH ACC
  167. PUSH PSW
  168. INC 33H
  169. MOV A,33H
  170. CJNE A,#80,INT_T0OUT; 70*20=5.6秒進入掉電
  171. MOV 33H,#0

  172. SETB EX1;;進入掉電模式前開外中斷1
  173. SETB EX0;;進入掉電模式前開外中斷0
  174. ORL INT_CLKO,#50H ;進入掉電模式前開外中斷2,中斷4
  175. SETB 3;打開掉電標志位
  176. INT_T0OUT:
  177. POP PSW
  178. POP ACC
  179. RETI
  180.   ;***************************

  181. ;***********************

  182. ;*********************
  183.   ;***************************
  184. XIEXI:;;紅外接收;存入EEPROMW

  185. ;判斷扇區(qū)是否為空,是空就擦除
  186. MOV R3,DPH;保存扇區(qū)指針
  187. MOV R4,DPL
  188. MOV R1,#200;讀200個字節(jié)
  189. ZDKA:;
  190. CALL EEPROMR;讀1字節(jié)
  191. INC DPTR;下個地址
  192. CJNE A,#0FFH,RESA;0FF就是空
  193. DJNZ R1,ZDKA;是否讀完
  194. JMP PDSQOUT
  195. RESA:
  196. CALL ERASE;扇區(qū)擦除
  197. PDSQOUT:

  198. MOV DPH,R3;裝入扇區(qū)指針
  199. MOV DPL,R4
  200. INC DPTR;從扇區(qū)第2字節(jié)開始寫,第1字節(jié)用來寫電平數(shù)
  201.   CLR 2;清判斷位
  202.   CLR LED;亮燈
  203.   MOV R1,#0;高電平和低電平總數(shù)
  204.   CLR TR0;停止計時

  205. JB IR,$;等待接收信號


  206.   MOV TH0,#0;;定時器初值歸0
  207.   MOV TL0,#0
  208.   SETB TR0;有信號開始計數(shù)
  209.   ;-------------------
  210.   WAIT0:
  211.   JBC TF0,XOUT;等待超時;超過70MS退出
  212.   JNB IR,WAIT0;等待高電平到來
  213.   CLR TR0;停止計數(shù),存低電平時長
  214.   ;-------------------
  215.   BAOCUN:;存低(高)電平時長
  216.   MOV A,TH0;高位
  217.   CPL A;取反計數(shù)值就是定時初值
  218.   CALL EEPROMW;寫一字節(jié)EEPROMW大約60US
  219.   INC DPTR;下一地址
  220.   MOV A,TL0;低位
  221.   CPL A;取反
  222.   CALL EEPROMW;寫一字節(jié)EEPROMW大約60US
  223.   ;-------------------
  224.   MOV TH0,#0;定時器初值歸0
  225.   MOV TL0,#6EH;補償120US
  226.   SETB TR0;開始計數(shù)
  227.   INC DPTR;下一地址
  228.   INC R1;電平個數(shù)加1
  229.   CPL 2;取反判斷位,初始是0
  230.   JNB 2,WAIT0;是0就跳到等待高電平到來
  231.   ;***********************************
  232.   WAIT1:
  233. JBC TF0,XOUT;等待低電平超時,超過70MS計數(shù)完畢
  234.   JB IR,WAIT1;是1就等待低電平到來
  235.   CLR TR0;停止計時
  236.   ;---------------------------
  237.   JMP BAOCUN;存高電平時長

  238.   XOUT:;退出
  239.   CLR TR0;停止計時
  240.   MOV DPH,R3;裝入扇區(qū)指針
  241.   MOV DPL,R4
  242.   MOV A,R1;電平總數(shù)
  243.   CALL EEPROMW;寫入扇區(qū)第1個地址
  244.   SETB LED;關燈

  245. MOV TH0,#0;定時器初值歸0
  246. MOV TL0,0
  247. MOV 33H,#0;掉電計數(shù)
  248. SETB TR0
  249. SETB ET0
  250. SETB EA
  251.   RET

  252. ;****************************
  253. ;****************************
  254.   FFSS:;紅外發(fā)射
  255. CLR 2;清標志位,用來判斷發(fā)射還是停止發(fā)射
  256.   CLR LED;;開燈

  257. ORL DPH,#10H
  258. MOV A,#0
  259. MOVC A,@A+DPTR
  260. ;CALL EEPROMR
  261.   MOV R1,A;從第1扇區(qū)第1地址取出電平總數(shù)
  262.   INC DPTR;下一地址開始為發(fā)射數(shù)據(jù)時長

  263.   FFSS0:
  264.   MOV INT_CLKO,#02H;發(fā)射38K紅外(A版T1為3.5)
  265.   ;***************************
  266. ZCZ:
  267.   CLR TR0;停止計數(shù)
  268.   CLR TF0;清溢出位
  269.   ;CALL EEPROMR;讀出定時時長裝入定時器
  270. MOV A,#0
  271. MOVC A,@A+DPTR
  272.   MOV TH0,A
  273.   INC DPTR;下一地址
  274.   ;CALL EEPROMR
  275.   MOV A,#0
  276.   MOVC A,@A+DPTR

  277.   ;---------------------
  278.   CLR C;數(shù)據(jù)修正,10US左右
  279.   ADD A,#10
  280.   MOV TL0,A
  281.   MOV A,#0
  282.   ADDC A,TH0
  283.   MOV TH0,A

  284. ;**************************
  285.   SETB TR0;開始計時
  286.   INC DPTR;下一地址
  287.   CPL 2;取反發(fā)射標志位
  288.   JNB TF0,$;等待溢出

  289.   DJNZ R1, FSW;電平數(shù)是否完畢

  290.   MOV INT_CLKO,#00H;停止發(fā)射
  291.   SETB P3.5;熄滅紅外管
  292.   CLR TR0;停止計數(shù)
  293.   CLR TF0;清溢出位
  294.   SETB LED;;關燈
  295. MOV TH0,#0;定時器初值歸0
  296. MOV TL0,0
  297. MOV 33H,#0;掉電計數(shù)
  298. SETB TR0
  299. SETB ET0
  300. SETB EA
  301.   RET
  302.   ;**************************
  303.   FSW:
  304.   JNB 2,FFSS0;標志位是0就發(fā)射
  305.   FFSS1:
  306.   MOV INT_CLKO,#00H;停止發(fā)射
  307.   SETB P3.5;熄滅紅外管
  308.   JMP ZCZ;定時時長裝入定時器
  309.   ;-----------------------

  310.   ;******************
  311.   ;EPPROM讀寫
  312.   ;******************
  313.   ERASE:;擦除
  314.   MOV IAP_CONTR,#83H;允許IAP/IAP操作
  315.   MOV IAP_CMD,#3  ;扇區(qū)擦除
  316.   MOV IAP_ADDRH,DPH ;送高地址
  317.   MOV IAP_ADDRL,DPL ;送低地址
  318.   ACALL IAPXX       ;觸發(fā)
  319.   RET
  320.   ;************************
  321.   EEPROMW:;寫
  322.   MOV IAP_CONTR,#83H;允許IAP/IAP操作
  323.   MOV IAP_CMD,#2  ;送寫命令
  324.   MOV IAP_ADDRH,DPH ;送高地址
  325.   MOV IAP_ADDRL,DPL ;送低地址
  326.   MOV IAP_DATA,A    ;A是要寫入的數(shù)據(jù)
  327.   ACALL IAPXX       ;觸發(fā)
  328.   RET
  329.   ;************************
  330.   EEPROMR:;讀
  331.   MOV IAP_CONTR,#83H;允許IAP/IAP操作
  332.   MOV IAP_CMD,#1  ;送讀命令
  333.   MOV IAP_ADDRH,DPH ;送高地址
  334.   MOV IAP_ADDRL,DPL ;送低地址
  335.   ACALL IAPXX       ;觸發(fā)
  336.   MOV A,IAP_DATA    ;讀出的數(shù)據(jù)放到A
  337.   RET
  338.   ;************************
  339.   IAPXX:;觸發(fā)
  340.   ;和11F/15F的相同,而與12C2052的不同
  341.   ;CLR EA ;關中斷在觸發(fā)之前
  342.   MOV IAP_TRIG,#5AH
  343.   MOV IAP_TRIG,#0A5H;
  344.   NOP
  345.   NOP
  346.   NOP
  347.   ;SETB EA
  348.   RET
  349.   ;----------------------
  350.   IAP_DISABLE:;禁止IAP/IAP操作
  351.   MOV IAP_CONTR,#0
  352.   MOV IAP_CMD,#0
  353.   MOV IAP_TRIG,#0
  354.   MOV IAP_ADDRH,#0FFH
  355.   MOV IAP_ADDRL,#0FFH
  356.   RET
  357.   ;----------------------
  358.   DELAY20MS: ;延時
  359.   MOV R7,#0EH
  360.   DL1:
  361.   MOV R6,#0A8H
  362.   DL0:
  363.   MOV R5,#16H
  364.   DJNZ R5,$
  365.   DJNZ R6,DL0
  366.   DJNZ R7,DL1
  367.   RET
  368.   END
復制代碼

全部資料51hei下載地址:
智能家居控制系統(tǒng)文檔.rar (2 MB, 下載次數(shù): 37)
智能家居控制系統(tǒng)客戶端.zip (560.43 KB, 下載次數(shù): 26)
學習型遙控器.rar (21.37 KB, 下載次數(shù): 35)
boa.rar (909.93 KB, 下載次數(shù): 24)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:594096 發(fā)表于 2019-8-2 13:56 | 只看該作者
不知道直接串口接openwrt可行不呢
回復

使用道具 舉報

板凳
ID:93224 發(fā)表于 2019-9-10 10:04 | 只看該作者
sky48818 發(fā)表于 2019-8-2 13:56
不知道直接串口接openwrt可行不呢

看看你的板子引出來串口了嗎?注意一般路由器引出來的串口是調試串口,不可以用,看看是否有其他串口引出來,如果沒有也沒關系,看看路由器是否帶有USB插口,如果有的話,插上USN轉TTL模塊,注意路由器系統(tǒng)內部要安裝USB轉TTL的驅動,你要會Linux串口編程,或者簡單的用Lua腳本語言寫出來也可以,我的QQ1014461948,不會的找我聯(lián)系
回復

使用道具 舉報

地板
ID:93224 發(fā)表于 2019-9-10 10:06 | 只看該作者
CPU型號太老,工作頻率太低只有300多兆Hz,WEB頁面只有下發(fā)的沒有上傳的,建議增加上傳的功能
回復

使用道具 舉報

5#
ID:679185 發(fā)表于 2020-5-11 18:13 | 只看該作者
贊!學習學習
回復

使用道具 舉報

6#
ID:851122 發(fā)表于 2022-11-10 10:50 | 只看該作者
請問樓主,最近這個實驗有新的進展嗎?
回復

使用道具 舉報

7#
ID:911534 發(fā)表于 2022-11-15 11:19 | 只看該作者
謝謝樓主,學習非常有用
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表