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

標題: 基于單片機的的智能晾衣系統設計文檔 [打印本頁]

作者: 9870456    時間: 2018-1-1 20:54
標題: 基于單片機的的智能晾衣系統設計文檔

基于單片機的的智能晾衣系統設計


摘要

隨著社會經濟水平的發展,現在人們的生活追求個性化、自動化,追求快節奏,追求充滿樂趣的生活方式,家裝要求的檔次越來越高,生活家居人性化、智能化的要求使智能控制技術在智能家居電子產品中得到了廣泛應用,伴隨著智能家居的快速發展,晾衣工具的智能化發展明顯落后與其他家用器具智能化發展之后,現在己經引起社會的很大關注。本文檔為了把握市場動態,順應時代主題,設計并實現了智能晾衣架系統。

采用單片機進行采集光照、雨滴兩個外部天氣信號,并通過單片機控制旋轉衣架,旋轉衣架通過步進電機進行調節,當外部天晴,且無雨時,將衣架轉出,晾曬衣物;當下雨或者沒有陽光時,轉回室內,防止被雨打濕,或者天已黑。其中光照傳感器采用光敏電阻,雨滴傳感器采用LY-69雨滴檢測傳感器,控制硬件采用步進電機,按鍵電路設定光照和雨滴的閾值,5110液晶顯示感測量和設定值,及工作狀態。

通過設計和實驗調試完成了基于單片機的智能晾衣系統。



目錄

1  引言

1.1  課題研究背景與意義

1,2  國內外研究現狀

1.3  課題研究內容

2  基于單片機的的智能晾衣系統的硬件設計

2.1  整體設計框圖

2.2  光照傳感器

2.3  雨滴傳感器

2.4  衣架位置傳感器

2.5  STM32控制器

2.6  步進電機驅動電路

2.7  液晶顯示屏

2.8  按鍵電路

3  基于單片機的的智能晾衣系統的軟件設計

3.1  系統分析

3.2  軟件算法

3.3  軟件容錯處理

4  實驗調試

5  結論與展望

參考文獻

致謝

附頁1




1  引言

隨著社會經濟水平的發展,現在人們的生活追求個性化、自動化,追求快節奏,追求充滿樂趣的生活方式,家裝要求的檔次越來越高,生活家居人性化、智能化的要求使智能控制技術在智能家居電子產品中得到了廣泛應用,它不僅優化人們的生活方式和居住環境,而且方便人們有效地安排時間和節約各種能源,實現了家電、照明、窗簾控制和防盜報警、定時控制及電話遠程控制等。伴隨著智能家居的快速發展,晾衣工具的智能化發展明顯落后與其他家用器具智能化發展之后,現在己經引起社會的很大關注。本文檔為了把握市場動態,順應時代主題,設計并實現了智能晾衣架系統。

1.1  課題研究背景與意義

基于現在晾衣架發展現狀,本設計開發了一種能幫助人們擺脫原始操作的智能晾衣架。本新型晾衣架主要特點在于:可以伸縮,操作簡單,占地面積小,美觀實尸構優點。同類產品雖有可收縮式的,但屬組裝而成,操作比較麻煩,而本晾才架只需按下打開按鍵,衣架桿即可自動伸展開來。同時晾衣架能識別晴雨天氣一自動完成收衣服功能的目的。晴雨智能晾衣架能有效地避免在下雨時,衣服無人收起而被雨淋濕;或在天色變晚時,衣架能自動收回,避免衣服在外面過夜。

1,2  國內外研究現狀

在中國各大中城市以及農村普遍是將衣物晾曬于陽臺內部或外部,而傳統的晾曬衣物方式是陽臺內天花板下設置有鋼筋掛鉤,鉤卜通常是掛有竹桿或其它桿體。人們通常習慣于用一支撐桿將衣物支撐到晾衣桿晾曬,這樣晾曬衣物費時費力,而且布置鋼筋及竹桿與當今現代化建筑結構的陽臺也不搭配、有失雅觀。另外,家庭通常大都是老人晾衣物,因此,傳統的支撐曬衣、收衣不僅是費神費力,而目.容易扭傷筋胃·或支撐不順扎傷人體。正因傳統晾曬衣方式有眾多的不便,后出現手搖晾衣架,手搖晾衣架改變了支撐晾衣架的傳統習慣,同時也給眾多家庭帶來了更多的方便。但手搖晾衣架需設置多個機械裝置和支撐點,同時需多根網線布置來帶動其晾衣桿上下升降。由幾支撐點及多根網線的布置,手搖式晾衣架給原本漂亮的陽臺增添了不美的因素。其次,手搖晾衣架的升降每次都要人工轉換接頭,目.需要人力搖動慢慢將桿升降,若晾桿承載的衣物重量過大,搖上去既費力又容易傷手。因此,手搖晾衣架雖然改變傳統支撐晾衣的不便,但沒有徹底改變費神費力的根本狀態。人們期望著一種更方便更美觀的新型晾衣架的出現。

1.3  課題研究內容

基于單片機的的智能晾衣系統設計,需要采用單片機作為控制中心,實現自動晾衣的功能,并根據具體情況進行相應的調整,具體性能和指標如下:


2  基于單片機的的智能晾衣系統的硬件設計

采用單片機進行采集光照、雨滴兩個外部天氣信號,并通過單片機控制旋轉衣架,旋轉衣架通過步進電機進行調節,當外部天晴,且無雨時,將衣架轉出,晾曬衣物;當下雨或者沒有陽光時,轉回室內,防止被雨打濕,或者天已黑。

2.1  整體設計框圖

    控制總體款圖如下圖2.1所示,通過光照傳感器和雨滴傳感器感知外部天氣的光照和雨滴情況,按鍵設定光照和雨滴的閾值,衣架位置傳感器采集衣架所在位置,最后單片機驅動步進電機,將衣架來回于室內室外。

圖2.1 總體設計款圖

2.2  光照傳感器

為了對外部光照強度的測量,文檔采用光敏電阻對光照進行測量,如圖2.2.1所示光敏電阻,此光敏電阻是負參數的光敏電阻,也就是說光照增強后電阻阻減小,我們通過實驗測量得到光敏電阻的電子變化范圍在幾百歐姆到幾兆歐姆之間變化,當光強度很大時,光敏電阻的阻值可達幾百歐姆,當在黑暗的環境中時,測量光敏電阻兩端的阻值,可達幾兆歐姆的電阻。

圖 2.2.1 光敏電阻

為了實現與光敏電阻的阻值想匹配的電阻,我們采用10K的電阻進行上拉電阻。通常情況下,光敏電阻的阻值在千歐姆上,所以當光照強度很大時,光敏電阻的阻值很小,進行圖2.2.2電路后輸出的信號就是很小的電壓信號;當光照強度很小時,即黑暗情況下,光敏電阻的阻值很大,進行圖2.2.2電路后輸出的信號就是接近供電電源的電壓3.3V。在電壓信號輸出后,采用104電容進行濾波,已得到更平滑的信號波形,方便單片機對信號的處理,不會因為光照的不穩定,而導致誤判。

圖2.2.2 光照測量電流
2.3  雨滴傳感器

雨滴傳感器又叫雨滴檢測傳感器,用于檢測是否下雨及雨量的大小,如圖2.3.1所示。雨滴傳感器的種類有:(1)根據雨滴沖擊能量的變化進行檢測;(2)利用靜電電容量變化進行檢測;(3)利用光亮變化進行檢測。

本文檔采用的圖2.3.1雨滴傳感器檢測雨滴,當雨滴滴到檢測極板上時,檢測極板的電阻就會發生變化,通過上拉電阻就可以檢測極板輸出的電壓變化。

圖2.3.1 雨滴傳感器

如圖2.3.3所示的是雨滴傳感器的電路圖,通過上拉10K電阻將雨滴傳感器的電阻變化得到電壓變化,最后通過運放實現信號的調理,還有LED的指示可以清楚的了解電路工作情況。

圖2.3.2 雨滴傳感器電路
2.4  衣架位置傳感器

為了識別衣架位置,我們采用紅外傳感器進行判斷衣架的位置,當衣架運動到紅外傳感器可以檢測的范圍內時,紅外傳感器就輸出一個變化的信號,通過單片機讀取后就知道衣架現在運動到什么位置了。實物圖如圖2.4.1所示。

圖2.4.1 紅外檢測傳感器

如圖2.4.2所示,三極管Q采用9013小功率三極管,單片機通過IO口驅動三極管的b極,通過1K電阻進行限流,防止電流過大燒毀三極管和單片機。

紅外接收管的工作功率為75mW,開啟電壓0.39V,為了實現接收,采用如圖2.4.3所示,NE5532運放作為電壓跟隨器跟隨接收管上電壓的變化,單片機通過IO口中斷讀取數據,通過10K電阻進行限流,防止電流過大燒毀三極管。

   
圖2.4.2 紅外發射電路   圖2.4.3 紅外接收電路

我們分別在室內和室外兩個地方各安裝一個傳感器,當衣架運動是室內時,為了不讓衣架運動過度,通過紅外傳感器檢測到衣架后,將衣架停止。當衣架運動是室外時,為了不讓衣架運動過度,通過紅外傳感器檢測到衣架后,將衣架停止,晾曬衣物。

2.5  STM32控制器

STM32系列單片機是一款高性能、低成本、低功耗的嵌入式應用的單片機,它的內核是ARM Cortex-M3。ST公司對STM32進行了產品劃分,按性能分成兩個不同的系列:STM32F103屬于增強型系列和STM32F101是基本型系列。增強型STM32F103系列的系統時鐘頻率可達到72MHz,是同類中低端產品中性能是屬于最高的一款產品。STM32F101基本型的系統時鐘頻率是36MHz,它的16位產品比其他公司的16位產品在價格上有大幅提升了性能,是16位單片機用戶的最好的選擇。STM32F103與STM32F101系列都內置32K到128K的閃存,所不一樣的是SRAM的最大容量是和外部設備接口的組合。當系統時鐘的頻率為72MHz時,單片機從內部閃存位置開始執行初始代碼,STM32總的系統功耗36mA,是32位單片機市場中功耗最低的一款產品,電流頻率比為0.5mA/MHz。圖2.5.1是STM32F103C8T6的實物圖。

圖2.5.1 STM32F103C8T6

STM32F103C8T6總共有48個引腳,PA0—PA15端口A15個、PB0—PB15端口B15個,2個外部晶振引腳OSC_IN、OSC_OUT,1個復位引腳NRST,2個32.768K的實時時鐘晶振引腳,BOOT0程序驅動腳。VDDA、VDD_1、VDD_2、VDD_3與VSS、VSS_1、VSS_2 、VSS_3總共8個電源引腳,包括模擬供電電源。內核采用ARM 32位的Cortex-M3,最高72MHz工作頻率,單周期乘法和硬件除法;存儲器采用從64K字節的閃存程序存儲器,高達20K字節的SRAM;時鐘、復位和電源管理采用3.6伏供電和I/O引腳,上電/斷電復位(POR/PDR)、可編程電壓監測器(PVD),8MHz晶體振蕩器,內嵌經出廠調校的8MHz的RC振蕩器,內嵌帶校準的40kHz的RC振蕩器,產生CPU時鐘的PLL,帶校準功能的32kHz RTC振蕩器;低功耗模式有睡眠、停機和待機模式,VBAT為RTC和后備寄存器供電;2個12位模數轉換器,1us轉換時間(多達16個輸入通道) ,轉換范圍:0至3.6V,雙采樣和保持功能,還有內部溫度傳感器;內部共有7通道DMA控制器,支持的外設有3個定時器、ADC、SPI、I2C和USART等;調試模式可選擇串行單線調試(SWD)和JTAG接口。如圖2.5.2所示。

圖2.5.2 引腳圖

圖2.5.3與圖2.5.4是STM32F103C8T6的外部時鐘,本方案采用8M外部晶振,進過內部9倍頻后得到72M系統時鐘,圖5與圖6中的30pF電容與10pF電容為晶振的啟動電容,不能偏大也不能偏小,鏈接8M的晶振上經典值電容應該選擇30pF,32.768K晶振上的電容最大不能超過15pF,晶振連接圖如圖所示。

圖2.5.3  8M時鐘            圖2.5.4  32.768K時鐘

單片機最小系統包括單片機芯片、晶振、復位電路,圖2.5.5所示為單片機的復位電路,SW1為復位按鍵,常態為開,當按下時為閉合,R4為10K電阻,上拉電阻的選取沒有固定的要求,通常選取10K,C5為濾波電容,大小選擇104電容,也就是100nF陶瓷電容,防止復位按鍵抖動,導致系統誤復位,啟動濾除系統脈沖的作用,保護最小系統的正常工作。通常機械按鍵都有一個抖動過程,就需要通過這個電容來濾除按鍵產生的抖動。

圖2.5.5 復位電路

通常供電電源都有小幅波動,需要通過使用大電容來濾除電源抖動,圖2.5.6的4個電容是靠近STM32F103C8T6的電源引腳上放的,防止電源引腳有抖動信號的干擾。104電容為通用的選取阻值。

圖2.5.6 濾波電路

為了實現單片機的正常工作,就需要為單片機提供穩定的供電電源,這里使用LM1117線性穩壓芯片為單片機提供穩定的+3.3V電源,圖2.5.7中P6與P7為排針,方便杜邦線的插拔,C8、C6為+5V電源的輸入濾波電容,穩定輸入的+5V電壓,使用100nF濾除高頻干擾,100uF濾除低頻干擾,C9、C7為輸出濾波電容,穩定輸出電壓,使用100nF濾除輸出的高頻干擾,100uF濾除輸出的低頻干擾,為單片機提供可靠的供電電源。

圖2.5.7 穩壓供電電路

圖2.5.8為單片機下載方式選擇端,或者是程序驅動方式選擇端。STM32有三種啟動模式對應的存儲介質均是芯片內置的,它們是:

1)用戶閃存 = 芯片內置的Flash。

2)SRAM = 芯片內置的RAM區,就是內存啦。

3)系統存儲器 = 芯片內部一塊特定的區域,芯片出廠時在這個區域預置了一段Bootloader,就是通常說的ISP程序。這個區域的內容在芯片出廠后沒有人能夠修改或擦除,即它是一個ROM區。

在每個STM32的芯片上都有兩個管腳BOOT0和BOOT1,這兩個管腳在芯片復位時的電平狀態決定了芯片復位后從哪個區域開始執行程序,見下表:

BOOT1=x BOOT0=0 從用戶閃存啟動,這是正常的工作模式。

BOOT1=0 BOOT0=1 從系統存儲器啟動,這種模式啟動的程序功能由廠家設置。

BOOT1=1 BOOT0=1 從內置SRAM啟動,這種模式可以用于調試。

要注意的是,一般不使用內置SRAM啟動(BOOT1=1 BOOT0=1),因為SRAM掉電后數據就丟失。多數情況下SRAM只是在調試時使用,也可以做其他一些用途。如做故障的局部診斷,寫一段小程序加載到SRAM中診斷板上的其他電路,或用此方法讀寫板上的Flash或EEPROM等。還可以通過這種方法解除內部Flash的讀寫保護,當然解除讀寫保護的同時Flash的內容也被自動清除,以防止惡意的軟件拷貝。

一般BOOT0和BOOT1跳線都跳到0(地)。串口下載的情況下,BOOT0=1,BOOT1=0 ,再復位,點擊下載,下載完成后,把BOOT0的跳線接回0,也即BOOT0=0,BOOT1=0 。所以為了方便期間我們將BOOT1直接通過100K下拉電阻拉直地,只通過BOOT1就能進行選擇下載方式。

圖2.5.8 下載方式選擇位

STM32的下載方式可以分為兩種方式:第一種是20引線的JTAG下載;第二種是5引線的SW下載方式,這里使用SW下載方式,所以具體分析第二種下載方式(SW下載),五根引線的連接分配如下表格:

引腳名
描述
引腳分配
JTMS/SWDIO
串行線輸入/輸出
PA13
JTCK/SWCLK
串行線時鐘
PA14
NRST
復位
NRST
VDD
3.3V
VDD
GND
GND

圖2.5.9為實物圖中的連接方式,+3.3V、GND為電源引腳,SWDIO下載數據的引腳、SWCLK是下載數據的時鐘引腳,NRST為單片機復位引腳,也為下載器的復位引腳。

圖2.5.9 下載端口

STM32系列單片機內部集成AD模塊,所以我們只需要使用STM32控制器即可實現AD轉化和音頻數據編碼后控制紅外發射電路的工作方式。

2.6  步進電機驅動電路

步進電機采用ULN2003進行驅動,ULN2003是ST公司旗下的一款步進電機驅動的高性能芯片,高耐壓、大電流復合晶體管陣列,由七個硅NPN 復合晶體管組成。芯片內部原理圖如圖2.6.1所示,邏輯是反向的。

圖2.6.1  ULN2003內部原理圖

單片機通過IO控制輸出驅動ULN2003的輸入信號,因為單片機的IO輸出電流和功率不足以驅動步進電機,所以采用ULN2003專用驅動芯片驅動步進電機,ULN2003輸出后的信號直接接到步進電機的引腳上,如圖2.6.2所示。

圖2.6.2 步進電機驅動電路
2.7  液晶顯示屏

由于Nokia5110液晶的四大優點所以選擇作為顯示模塊,如圖3-6-1所示:

1)性價比高,LCD1602可以顯示32個字符,而Nokia5110可以顯示15個漢字,30個字符。Nokia5110裸屏僅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。

2)接口簡單,僅四根I/O線即可驅動,1602需11根I/O線,12864需12根。

3)速度快,是LCD12864的20倍,是LCD1602的40倍。

4) Nokia5110工作電壓3.3V,正常顯示時工作電流200uA以下,具有掉電模式,適合電池供電的便攜式移動設備。

5110液晶的引腳定義為RST復位引腳、CE片選引腳、DC數據/命令切換引腳、Din數據輸入引腳、CLK時鐘引腳,BL背光開關引腳,5110供電電壓可在+3V—+5V,我們方案采用+3.3V,如圖2.7.1所示。

圖2.7.1 5110液晶      圖2.7.2 液晶接口

51110液晶的各引腳定義如下所示:

引腳號                 引腳名                功能                                            備注

1                                           GND              地

2                                          BL                            背光控制腳                            高電平打開背光燈,否則相反

3                                           VDD              電源輸入腳                             3.3-5V(推薦使用3.3V),導電膠連接

4                                           CLK              同步時鐘輸入                最高可達4Mbps

5                                           DIN                            數據輸入                              時鐘上升沿采樣

6                                           D/C                            數據/命令切換               0:命令;1:數據

7                                          CE                            片選信號                              低電平有效

8                                           RST               復位信號輸入                低電平有效

液晶模塊內部的原理圖如圖2.7.3所示:

  

圖2.7.3 5110液晶內部原理圖    圖2.8 按鍵電路

2.8  按鍵電路

如圖2.8所示,按鍵電路圖,上拉10K電阻檢測按鍵情況,當按鍵按下后,輸出電平是低電平0,當按鍵抬起后,輸出電壓是高電平3.3V。


3  基于單片機的的智能晾衣系統的軟件設計

軟件部分采用C語言進行編寫,開發環境選擇keil4。采用單片機進行采集光照、雨滴兩個外部天氣信號,并通過單片機控制旋轉衣架,旋轉衣架通過步進電機進行調節,當外部天晴,且無雨時,將衣架轉出,晾曬衣物;當下雨或者沒有陽光時,轉回室內,防止被雨打濕,或者天已黑。

3.1 系統分析

外部天氣的光照和下雨情況,如下表1:

表1 外部天氣的光照和下雨分類表

是否有陽光

是否下雨

衣架動作

收回室內

收回室內

出室晾曬

收回室內

所以我們可以通過表格發現,只有當外部天氣是晴天,且沒有雨的時候,衣物是可以進行晾曬的,其他條件下,都需要將衣物拿回室內。

3.2  軟件算法
算法從最初對的系統初始化、外設初始化后,就通過按鍵設定光照和雨滴的閾值,來決定怎么樣的光照強度和怎么樣的雨滴強度,才能使衣架出去晾曬,或者回到室內。之后就判斷是否有雨,是否有光照,若有達到相應強度的光照和沒有雨時就出去晾曬衣物,其他清理進室內。但是有時機器也會被東西給卡主,所以需要檢查衣架是否有故障,若有故障,就停下來,若無故障就完成上一步沒有完成的動作,即回到室內或者出室晾曬。
圖3.2 算法流程圖
3.3  軟件容錯處理
采用累積時間來判斷事故,我們通過實驗可得當衣架從室內到室外,或者從室外到室內的運動時間大概是20秒左右,我們累積時間當超過30秒時,室內衣架位置傳感器還沒有檢測到衣架回到室內,就是說明發生了事故;同理,從室內到室外也是用室外的衣架位置傳感器檢測衣架,當超過30秒時還沒有檢測到衣架,就表示發生故障。

4  實驗調試
通過實驗調試得到圖4.1、4.2、4.3、4.4,可以看出實現運行正常,且可行。當外部天晴,且無雨時,將衣架轉出,晾曬衣物;當下雨或者沒有陽光時,轉回室內,防止被雨打濕,或者天已黑。
圖4.1  按鍵設定閾值
圖4.2  有陽光衣架出室
圖4.3  衣架達到設定位置停下
圖4.4 有雨衣架回室內

5  結論與展望

本文檔設計并實現了基于單片機的智能晾衣系統,通過實驗調試,當外部天晴,且無雨時,衣架轉出,晾曬衣物;當下雨或者沒有陽光時,轉回室內。完成要求中智能晾衣桿全自動工作,實現無人操控;晾衣桿有兩個位置,伸出去,縮回來;可以進行位置檢測:晾衣桿伸出去時,到達指定位置能夠停下來;有軟件容錯處理:晾衣桿伸縮過程中遇到各種障礙,能夠通過軟件容錯處理來停止;使用光敏傳感器:天黑時候將衣服收回來,天亮時候或者陽光猛烈的時候伸出去晾曬;使用雨滴傳感器:下雨的時候將衣服收回來;參數靈敏度可以調節(動態設置):按鍵+液晶顯示;采用5V供電:5V電源供給單片機、電機。

本文檔實現了智能晾衣系統,還需要結合市場,對衣架的結構和工作方式。比如旋轉還是上下伸縮,前后伸縮等,進一步完善系統,使之滿足市場需求,更好的為客戶服務




致  謝

值此文檔即將完稿之際,向所有關心和幫助我的朋友表示衷心的感謝!首先,要感謝我的導師。兩年多來,在老師的精心指導和親切關懷下,我完成了本課題硬件系統的搭建、監控系統的開發和實驗分析以及文檔撰寫等工作。導師淵博的學識、嚴謹的態度、求實的精神以及高尚的個人品質,給我留下了深刻的印象,使我受益終身。兩年多來,無論是在學業上還是在生活中導師都給予我無微不至的關懷,寬容對待我的犯錯,其坦誠與親和感染了我。借此機會,我要向尊敬老師致以最誠摯的謝意!

兩年多來,同窗好友等人在我的學業和生活中給予我莫大的支持和幫助,與他們分享我進步的快樂,分擔失敗的苦澀是人生中的幸事!感謝我的師兄,他們在我的學習過程中引導我前進,教我把握課題的進度,我今天的文檔和他們的關心是分不開的。感謝師弟、師妹們的無私幫助!感謝求學期間給我提供幫助的老師、同學!

最后,我要感謝我的所有親人在我求學生涯中給予我一貫的支持和鼓勵!



附頁1
圖A  實物圖


附頁2
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "key.h"
  5. #include "usart.h"
  6. #include "key.h"
  7. #include "nokia_5110.h"
  8. #include "adc.h"

  9. void motor_forward(void);
  10. void motor_back(void);

  11. int main(void)
  12. {            
  13.               while(1)
  14.               {
  15.                             key = KEY_Scan();
  16.                             switch(key)
  17.                             {
  18.                                           case 1:
  19.                                           {            
  20.                                                         k=0;
  21.                                                         light_set++;
  22.                                                         if(light_set >= 10)
  23.                                                                       light_set = 0;
  24.                                           }
  25.                                           break;
  26.                                           case 2:
  27.                                           {
  28.                                                         k=0;
  29.                                                         rain_set++;
  30.                                                         if(rain_set >= 10)
  31.                                                                                     rain_set = 0;
  32.                                           }
  33.                                           break;
  34.                                           default:
  35.                                                         k++;
  36.                                                                       break;
  37.                             }
  38.                             delay_ms(5);
  39.                             sprintf(str,"light_set:%d",light_set);
  40.                             LCD_write_String(0,1,str);
  41.                             sprintf(str,"rain_set:%d",rain_set);
  42.                             LCD_write_String(0,3,str);
  43.                             if(k>=1000)
  44.                                           break;
  45.               }            
  46.             
  47.               while(1)
  48.               {
  49.                             light = Get_Adc_Average(0,10);
  50.                             light = light/410;
  51.                             rain  = Get_Adc_Average(1,10);
  52.                             rain = rain/410;
  53.                             son   = Get_Adc_Average(2,10);
  54.                             son = son/410;
  55.                             soff  = Get_Adc_Average(3,10);
  56.                             soff = soff/410;
  57.                                          
  58.                             sprintf(str,"light:%d",9-light);
  59.                             LCD_write_String(0,0,str);            
  60.                             sprintf(str,"light_set:%d",light_set);
  61.                             LCD_write_String(0,1,str);
  62.                             sprintf(str,"rain:%d",9-rain);
  63.                             LCD_write_String(0,2,str);            
  64.                             sprintf(str,"rain_set:%d",rain_set);
  65.                             LCD_write_String(0,3,str);
  66.                             sprintf(str,"state:%d %d",son,soff);
  67.                             LCD_write_String(0,4,str);            
  68.                             sprintf(str,"state:off");
  69.                             LCD_write_String(0,5,str);                                                                     
  70.                            
  71.               }            

  72. }

  73. void motor_forward(void)
  74. {
  75.                             MOTOR1 = 0;
  76.                             MOTOR2 = 1;
  77.                             MOTOR3 = 1;
  78.                             MOTOR4 = 1;
  79.                             delay_ms(10);
  80.                             MOTOR1 = 1;
  81.                             MOTOR2 = 0;
  82.                             MOTOR3 = 1;
  83.                             MOTOR4 = 1;
  84.                             delay_ms(10);
  85.                             MOTOR1 = 1;
  86.                             MOTOR2 = 1;
  87.                             MOTOR3 = 0;
  88.                             MOTOR4 = 1;
  89.                             delay_ms(10);
  90.                             MOTOR1 = 1;
  91.                             MOTOR2 = 1;
  92.                             MOTOR3 = 1;
  93.                             MOTOR4 = 0;
  94.                             delay_ms(10);
  95. }
  96. void motor_back(void)
  97. {
  98.                             MOTOR1 = 1;
  99.                             MOTOR2 = 1;
  100.                             MOTOR3 = 1;
  101.                             MOTOR4 = 0;
  102.                             delay_ms(10);
  103.                             MOTOR1 = 1;
  104.                             MOTOR2 = 1;
  105.                             MOTOR3 = 0;
  106.                             MOTOR4 = 1;
  107.                             delay_ms(10);
  108.                             MOTOR1 = 1;
  109.                             MOTOR2 = 0;
  110.                             MOTOR3 = 1;
  111.                             MOTOR4 = 1;
  112.                             delay_ms(10);
  113.                             MOTOR1 = 0;
  114.                             MOTOR2 = 1;
  115.                             MOTOR3 = 1;
  116.                             MOTOR4 = 1;
  117.                             delay_ms(10);
  118. }
復制代碼

以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便保存):
word文檔.doc (4.39 MB, 下載次數: 136)

作者: 975243734    時間: 2019-2-24 14:05
感謝分享

作者: outing逆旅    時間: 2019-2-24 15:19
感謝分享
作者: 我是你大哥    時間: 2019-5-7 14:47
謝謝
作者: 21570    時間: 2019-5-17 09:03
我覺得有些地方可以由單片機程序進行控制這樣可以省去一些成本,又鍛煉到了邏輯思維的能力提升
作者: 你是白癡    時間: 2019-9-19 11:07
謝謝分享
作者: dhasj    時間: 2019-10-15 17:54
樓主,你好,我下載了你分享的資料,但是里面也是沒有程序里面了頭文件,你手頭上有嗎?可不可以發下,謝謝啦!
作者: tonggin    時間: 2019-10-16 09:49
作為學習是可以了,但如果推論到實際產品,那就差很遠了;應該多跟進實際的項目去做一些文檔
作者: HCY    時間: 2019-10-16 12:25
謝謝分享
作者: melo777    時間: 2019-12-16 15:33
代碼一共就這么多嗎
作者: 1472774349    時間: 2020-1-3 19:07
樓主有完整的原理圖嗎,能發我一份嗎,謝謝
作者: Dokoe    時間: 2021-4-7 22:28
樓主,你好,請問有完整的程序和頭文件嗎?可以發我一下嗎?謝謝!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕欧美日韩 | 福利视频网 | 亚洲精品免费在线 | 久久久www成人免费精品 | 欧美1页 | 黄网站免费在线看 | 在线免费国产视频 | 91久久夜色| 一区在线观看 | 久久久久成人精品 | 色狠狠桃花综合 | 精品亚洲第一 | 精品一区二区三区中文字幕 | 三级在线视频 | 蜜桃视频麻豆 | 午夜视频在线免费观看 | 日韩欧美国产一区二区 | 日本h片在线观看 | 国产精品一区二区三区久久久 | 亚洲视频中文字幕 | 99福利视频导航 | 久久在线视频 | 一区二区三区四区在线 | 日本电影免费完整观看 | 欧美在线综合 | 91精品国产777在线观看 | 中文字幕视频在线观看免费 | 亚洲激情在线视频 | 欧美性video 精品亚洲一区二区 | 久久高清免费视频 | 亚洲一区二区电影在线观看 | 黄色片在线免费看 | 欧美精品一区二区在线观看 | 午夜视频免费在线 | 国内自拍视频在线观看 | 亚洲国产成人av好男人在线观看 | 一级片子| 日韩影音 | 久久精品视频播放 | 免费在线观看一区二区三区 | 97碰碰碰 |