【正文】
同程度開始對其進行推廣工作。因此適當(dāng)降低燈具工作電壓是延長燈具壽命的有效途徑。智能照明控制系統(tǒng)使用了先進的電力電子技術(shù),能對控制區(qū)域內(nèi)的燈具進行智能調(diào)光,當(dāng)室外光較強時,室內(nèi)照度自動調(diào)暗,室外光較弱時,室內(nèi)照度則自動調(diào)亮,使室內(nèi)的照度始終保持在恒定值附近,從而能夠充分利用自然光實現(xiàn)節(jié)能的目的。control;flushbonadingIV目 錄第一章 緒論 1 照明控制系統(tǒng)設(shè)計研究的意義 1 國內(nèi)外發(fā)展概況與發(fā)展趨勢 1第二章 系統(tǒng)總體設(shè)計方案與硬件介紹 3 系統(tǒng)的總體方案設(shè)計介紹 3 系統(tǒng)的硬件設(shè)計 4 單片機控制模塊設(shè)計 4 DM9000網(wǎng)絡(luò)通信模塊 7第三章 系統(tǒng)軟件設(shè)計 10 網(wǎng)絡(luò)通信協(xié)議 13 uIP協(xié)議棧及其體系結(jié)構(gòu) 14 協(xié)議棧接口 14 程序流程圖 16 程序運行初始化流程圖 16 程序功能流程圖 17 系統(tǒng) LED燈程序 18 22 30第四章 系統(tǒng)的程序調(diào)試 31 系統(tǒng)的主程序調(diào)試 31 編寫程序 31 燒寫代碼下載 32 系統(tǒng)硬件連接 33 34第五章 畢業(yè)設(shè)計總結(jié) 36致謝 37參考文獻 38附錄一:硬件電路圖 39附錄二:英文資料和譯文 41第一章 緒論 照明控制系統(tǒng)設(shè)計研究的意義 采用智能照明控制系統(tǒng),使照明系統(tǒng)工作在全自動狀態(tài),系統(tǒng)按預(yù)先設(shè)定的開館、值班、清掃、保安等照明模式進行工作,這些照明模式會按預(yù)先設(shè)定的時間相互自動地進行切換。STM32F103是意法半導(dǎo)體推出全新STM32互連型系列微控制器中的一款性能較強產(chǎn)品,此芯片集成了各種高性能工業(yè)標(biāo)準(zhǔn)接口,且STM32不同型號產(chǎn)品在引腳和軟件上具有完美的兼容性,可以輕松適應(yīng)更多的應(yīng)用,此芯片可以滿足工業(yè)、醫(yī)療、樓宇自動化、家庭音響和家電市場多種產(chǎn)品需求。本課題在分析照明控制系統(tǒng)的研究現(xiàn)狀、發(fā)展趨勢、研究意義的基礎(chǔ)上提出了基于單片機以及嵌入式操作系統(tǒng)的照明控制系統(tǒng)的設(shè)計方案。關(guān)鍵詞:單片機;照明控制;嵌入式Abstract With the rapid development of puter technology and electronic information technology, especially in recent years in the construction of the Internet Push the lighting control system more and more attention of people. This paper on the basis of analysis of lighting control system, the research present situation, development trend and the research significance the microcontroller and embedded operating system of lighting control system design based on. STM32F103 is STMicroelectronics launched new STM32 interconnection series micro controller in a high performance products. The chip integrates a variety of high performance industrial standard interface and STM32 different types of products on the pin and software with perfect patibility can easily adapt to the application of more, this chip can meet the industrial, medical, building automation and home audio and home appliances market various demands of products. Dm9000 is a single chip fast Ethernet MAC controller, it municate with the STM32 controller, send the mand, through the I / O port level, control relay to achieve intelligent control of the lighting system. Its main features are practical, simple operation, low cost, easy installation, so that the system can be widely used in schools, factories and other lighting facilities.Key words: single chip puter;lighting可觀的節(jié)能效果。保護燈具實際上也是節(jié)能的一種方式,燈具損壞的致命原因主要是電壓過高,工作電壓越高,其壽命則成倍降低。智能照明系統(tǒng)通常能使燈具壽命延長2~4倍,不僅節(jié)省大量燈具,而且大大減少更換燈具的工作量,有效地降低了照明系統(tǒng)的運行費用。同時,開展電力需求管理活動,將綠色照明活動擴展到大型的集團公司、央企及私人企業(yè)。除此之外,照明產(chǎn)品標(biāo)準(zhǔn)不明確、節(jié)能要求不統(tǒng)一也為其推廣造成了困擾。62第二章 系統(tǒng)總體設(shè)計方案與硬件介紹 系統(tǒng)的總體方案設(shè)計介紹 電 腦 命令 照明燈狀態(tài) DM9000 命令 I/O狀態(tài)(照明燈狀態(tài)) STM32 I/O 繼電器 照明燈 首先控制端,通過網(wǎng)絡(luò)給網(wǎng)絡(luò)端口(dm9000網(wǎng)卡)發(fā)命令stm32取到命令控制I/O高低電平,控制繼電器控制照明燈。 STM32F103 ,STM32F103是意法半導(dǎo)體推出全新STM32互連型系列微控制器中的一款性能較強產(chǎn)品,此芯片集成了各種高性能工業(yè)標(biāo)準(zhǔn)接口,且STM32不同型號產(chǎn)品在引腳和軟件上具有完美的兼容性,可以輕松適應(yīng)更多的應(yīng)用。該系列芯片按片內(nèi)Flash的大小可分為三大類:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。DM9000還提供了介質(zhì)無關(guān)的接口,來連接所有提供支持介質(zhì)無關(guān)接口功能的家用電話線網(wǎng)絡(luò)設(shè)備或其他收發(fā)器。 DM9000電路原理圖 3. 網(wǎng)卡芯片 DM9000 和 STM32的連接。數(shù)據(jù)端口和地址端口的地址碼由下式?jīng)Q定:DM9000 地址端口 = 高位片選地址 +300H+0H,DM9000 數(shù)據(jù)端口 = 高位片選地址 +300H+4H 的調(diào)試過程DM9000 的調(diào)試過程中, 首先要確保芯片能否正常工作, 即確保 MAC 地址是存儲在 EEPROM 中,且 MAC 地址正常。進行向另一臺主機發(fā)包、 收包的測試, 最后連上交換機, 把事先編譯好的程序下載到處理器中去, 驗證是否實現(xiàn)聯(lián)網(wǎng)。在嵌入式系統(tǒng)上運行TCP/IP協(xié)議可以使得該系統(tǒng)直接與內(nèi)部網(wǎng)絡(luò)甚至全球互聯(lián)網(wǎng)相聯(lián),而不需要引入額外的網(wǎng)關(guān)設(shè)備,給嵌入式設(shè)備通信帶來巨大的便利。 由瑞典計算機科學(xué)研究所Adam Dunkels開發(fā)的uIP0.9,去掉了全功能TCP/IP協(xié)議棧中不常用的功能,保留網(wǎng)絡(luò)通信所必要的協(xié)議機制,大大減少了協(xié)議代碼量,降低了協(xié)議對系統(tǒng)資源的要求。其設(shè)計重點放在IP、ICMP和TCP協(xié)議的實現(xiàn)上,協(xié)議雖然也同時實現(xiàn)了UDP和ARP協(xié)議,但僅將其作為可選模塊。為進一步節(jié)省資源占用,簡化應(yīng)用接口,UIP在內(nèi)部實現(xiàn)上還作了如下特殊的處理:① 采用單一的全局?jǐn)?shù)據(jù)收發(fā)緩沖區(qū),不支持內(nèi)存動態(tài)分配;② 基于事件驅(qū)動的應(yīng)用程序接口,各并發(fā)連接采用輪循處理,僅當(dāng)網(wǎng)絡(luò)事件發(fā)生時,由UIP內(nèi)核喚起應(yīng)用程序處理。正是由于UIP所具有的以上顯著特點,自從0.6版本以來就被移植到多種處理器上,包括MSP4AVR和Z80等。其中UIP提供了3個函數(shù)給底層系統(tǒng):uip— init()39。一個是uip— input(),當(dāng)設(shè)備驅(qū)動程序從網(wǎng)絡(luò)層收到的一個數(shù)據(jù)包時要調(diào)用這個函數(shù),設(shè)備驅(qū)動程序必須事先將數(shù)據(jù)包存入到uip bur中,包長放到uip— len,然后交由uip—input()處理。uip— buf[O])uip—len=ethemet—devicedriver— poll();//接收以太網(wǎng)數(shù)據(jù)包(設(shè)備驅(qū)動程序)if(uip— len0){ //收到數(shù)據(jù)if(BUF一type: :HTONS(UIP—ETHTYPE— IP)){//是IP包嗎?uip— arp—ipin(); //去除以太網(wǎng)頭結(jié)構(gòu),更新ARP表uip— input(); //IP包處理if(uip— len0){ //有帶外回應(yīng)數(shù)據(jù)uiparp out(); //加以太網(wǎng)頭結(jié)構(gòu),在主動連接時可能要構(gòu)造ARP請求ethemet—devieedriver— send();//發(fā)送數(shù)據(jù)到以太網(wǎng)(設(shè)備驅(qū)動程序)}}elseif(sot一type==HTONS(U1PETHTYPEARP)){//是ARP請求包uip— arp—arpin();//如是是ARP回應(yīng),更新ARP表;如果是請求,構(gòu)造回應(yīng)數(shù)據(jù)包if(uip— len0){//是ARP請求,要發(fā)送回應(yīng)ethernet—devicedriver— send();//發(fā)ARP回應(yīng)到以太網(wǎng)上另一個UIP內(nèi)核直接提供給底層設(shè)備驅(qū)動程序的函數(shù)是uip— periodic(conn)。當(dāng)收發(fā)數(shù)據(jù)、新連接建立或者數(shù)據(jù)需要重新傳輸時,UIP都會調(diào)用應(yīng)用程序。同時設(shè)置結(jié)構(gòu)體UIP— eonn指針指向當(dāng)前連接。在應(yīng)用程序函數(shù)中,依靠UIP事件檢測函數(shù)來決定處理的方法,另外可以通過判斷當(dāng)前連接的端口號來區(qū)分處理不同的連接。define LED1_OFF() GPIO_ResetBits(GPIOB, GPIO_Pin_5)。void server_udp_appcall(void)。 uint8_t led3_readvalue。 if(led1_readvalue == 0)myudp_send(LED1 亮\n,8)。 if(led3_readvalue == 0)myudp_send(LED3 亮\n,8)。 memcpy(nptr, str, n)。 len = uip_datalen()。 else if(strncmp(nptr,ledon 1,7)==0){ LED1_ON()。 } else if(strncmp(nptr,ledon 3,7)==0){ LED3_ON()。 } else if(strncmp(nptr,ledoff 2,8)==0){ LED2_OFF()。 } else if(strncmp(nptr,ledpoll,7)==0) led_poll()。 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE)。 GPIO_Init(GPIOA, amp。}struct timer periodic_timer, arp_timer。 struct timer t。 Usart1_Init()。 //基本時鐘 clock_arch_init()。arp_timer, CLOCK_SECOND * 10)。 /* 初始化網(wǎng)絡(luò)設(shè)備以及UIP協(xié)議棧,配置IP地址 */ //應(yīng)用層MAC初始化 for (i = 0。//UIP MAC初始化 //UIP初始化 uip_init()。 /* 創(chuàng)建一個TCP監(jiān)聽端口和監(jiān)聽端口,端口號為1200,80 */ uip_listen(HTONS(1200))。 //定時查詢TCP及UDP連接收發(fā)狀態(tài) ARP表更新, 并響應(yīng) }}/***************************************************************************** 名 稱:void eth_poll(v