單片機(jī)主芯片選擇方案
方案一:AT89C51是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS型8位單片機(jī),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大。其片內(nèi)的4K程序存儲(chǔ)器是FLASH工藝的,這種單片機(jī)對(duì)開發(fā)設(shè)備的要求很低,開發(fā)時(shí)間也大大縮短。寫入單片機(jī)內(nèi)的程序還可以進(jìn)行加密,這又很好地保護(hù)我們的勞動(dòng)成果。再者,AT89C51目前的售價(jià)比8031還低,市場(chǎng)供應(yīng)也很充足。AT89C51可構(gòu)成真正的單片機(jī)最小應(yīng)用系統(tǒng),縮小系統(tǒng)體積,增加系統(tǒng)的可靠性,降低系統(tǒng)的成本。只要程序長(zhǎng)度小于4K,四個(gè)I/O口全部提供給用戶??捎?V電壓編程,而且擦寫時(shí)間僅需lOms。AT89C51芯片提供三級(jí)程序存儲(chǔ)器加密,提供了方便靈活而可靠的硬加密手段,能完全保證程序或系統(tǒng)不被仿制。PO口是三態(tài)雙向口,通稱數(shù)據(jù)總線口,因?yàn)橹挥性摽谀苤苯佑糜趯?duì)外部存儲(chǔ)器的讀/寫操作。
方案二:STM32系列單片機(jī)控制,該型號(hào)單片機(jī)為L(zhǎng)QFP44封裝,內(nèi)部資源足夠用于本次設(shè)計(jì)。STM32F103系列芯片最高工作頻率可達(dá)72MHZ,在存儲(chǔ)器的01等等待周期仿真時(shí)可達(dá)到1.25Mip/MHZ(Dhrystone2.1)。內(nèi)部128k字節(jié)的閃存程序存儲(chǔ)器,也就是說(shuō)代碼量可以寫到128k字節(jié),本次設(shè)計(jì)足夠,內(nèi)部高達(dá)20K字節(jié)的SRAM。
比較這兩種方案,由于在學(xué)校期間學(xué)過(guò)數(shù)字電路、單片機(jī)原理、C語(yǔ)言程序設(shè)計(jì),綜合考慮單片機(jī)的各部分資源和作為學(xué)生能夠獲得的資源,經(jīng)過(guò)對(duì)比此次設(shè)計(jì)要求,我選擇用STM32系列芯片完成。而且學(xué)校也提供了相應(yīng)的硬件操作平臺(tái),實(shí)際操作起來(lái)比較方便,故STM32為更合理的選擇。
STM32STM32概述
? ? ? ? STM32系列是為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARM Cortex-M3內(nèi)核。按性能分成兩個(gè)不同的系列:“增強(qiáng)型”STM32F103系列和“基本型”STM32F101系列。增強(qiáng)型系列的時(shí)鐘頻率能達(dá)到72MHz,是同類產(chǎn)品中頻率最高的;基本型的時(shí)鐘頻率為36MHz,用16位產(chǎn)品一樣的價(jià)格得到比16位產(chǎn)品更大的性能,是16位產(chǎn)品的最好選擇。兩個(gè)系列都有內(nèi)置的32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時(shí)鐘頻率為72MHz時(shí),從閃存執(zhí)行代碼來(lái)看,STM32功耗36mA,是32位市場(chǎng)上功耗最低的產(chǎn)品,相當(dāng)于0.5mA/MHz[6]。
以STM32103C8T6單片機(jī)為處理器,該單片機(jī)為32位處理器。內(nèi)核為Cortex-M3,其并行總線結(jié)構(gòu),嵌套中斷向量控制單元,調(diào)試系統(tǒng)和它標(biāo)準(zhǔn)的存儲(chǔ)映射。嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡(jiǎn)稱NVIC)是Cortex-M3處理器中一個(gè)比較關(guān)鍵的組件,它為基于Cortex-M3的微控制器提供了標(biāo)準(zhǔn)的中斷架構(gòu)和優(yōu)秀的中斷響應(yīng)能力,為超過(guò)240個(gè)中斷源提供專門的中斷入口,而且可以為每個(gè)中斷源賦予單獨(dú)的優(yōu)先級(jí)。采用NVIC可以達(dá)到非??斓闹袛囗憫?yīng)速度,從收到中斷請(qǐng)求到執(zhí)行中斷服務(wù)的第一條指令僅需12個(gè)周期。這種極快的響應(yīng)速度一方面得益于Cortex-M3內(nèi)核對(duì)堆棧的自動(dòng)處理機(jī)制,這種機(jī)制是通過(guò)固化在CPU內(nèi)部的微代碼實(shí)現(xiàn)的。另一方面,在中斷請(qǐng)求連續(xù)出現(xiàn)的情況下,NVIC使用一種稱為“尾鏈”的技術(shù),使連續(xù)而來(lái)的中斷可以在6個(gè)時(shí)鐘周期內(nèi)得到服務(wù)。在中斷的壓棧階段,更高優(yōu)先級(jí)的中斷可以不耗費(fèi)任何額外的CPU周期就能完成嵌入低優(yōu)先級(jí)中斷的動(dòng)作。具體的細(xì)節(jié)后面我會(huì)繼續(xù)總結(jié)的。用戶可以通過(guò)設(shè)置CPU自動(dòng)進(jìn)入低功耗狀態(tài),而使用中斷來(lái)將其喚醒,CPU在中斷時(shí)間來(lái)臨之前會(huì)一直保持睡眠狀態(tài)[7]。
Cortex-M3的CPU支持兩種運(yùn)行模式:線程模式(Thread Mode)與處理模式(Handler Mode)并且需要注意的是,這兩種模式都擁有各自獨(dú)立的堆棧。這種設(shè)計(jì)使得開發(fā)人員可以進(jìn)行更為精密的程序設(shè)計(jì),對(duì)實(shí)時(shí)操作系統(tǒng)的支持也就更好了。Cortex-M3處理器還包含了一個(gè)24位可自動(dòng)重裝載定的定時(shí)器,可以為內(nèi)核(RTOS)提供一個(gè)周期中斷。
在指令集方面,ARM7和ARM9都有兩種指令集(32位指令集和16位指令集),而Cortex-M3系列處理器支持Thumb-2指令集。由于Thumb-2指令集融合了Thumb指令集和ARM指令集,使得32位指令集的性能和16位指令集的代碼密度之間取得了平衡[5]。 專業(yè)嵌入式、單片機(jī)技術(shù)實(shí)訓(xùn)。而且,ARM Thumb-2 專門為C/C++編譯器設(shè)計(jì),這就意味著Cortex-M3系列處理器的開發(fā)應(yīng)用可以全部在C語(yǔ)言環(huán)境中完成。
STM32微控制器的推出標(biāo)志著ST公司在兩條產(chǎn)品主線(低價(jià)位主線和高性能主線)上邁出了重大一步。STM32最初發(fā)布時(shí)有14個(gè)不同型號(hào),分為兩個(gè)版本:最高CPU時(shí)鐘為72MHZ的“增強(qiáng)型”和最高CPU時(shí)鐘為36MHZ的“基本型”。這些不同STM32型號(hào)里內(nèi)置的Flash最大可達(dá)128KB,SRAM最大為20KB,在STM32發(fā)布之初,配置更大Flash,RAM和更復(fù)雜外設(shè)的版本就已經(jīng)在規(guī)劃之中了。不管是什么版本,什么型號(hào)的STM32器件,它們?cè)谝_功能和應(yīng)用軟件上是兼容的。這就使得開發(fā)人員在使用STM32系列微控制器時(shí),不必改動(dòng)PCB就可以根據(jù)需要隨意更換器件型號(hào)。乍一看STM32的設(shè)備配備,與往日熟悉的51單片機(jī)倒有幾分相似。一般,STM32都會(huì)配備常見外設(shè),諸如多通道ADC,通用定時(shí)器,I2C總線接口,SPI總線接口,CAN總線接口,USB控制器,實(shí)時(shí)時(shí)鐘RTC等。但是,它的每一個(gè)外部設(shè)備都具有獨(dú)特之處。例如,12位精度的ADC具備多種轉(zhuǎn)換模式,并帶有一個(gè)內(nèi)部溫度傳感器,帶有雙ADC的STM32器件,還可以使兩個(gè)ADC同時(shí)工作,從而衍生出了更為高級(jí)的9種轉(zhuǎn)換模式;STM32的每一個(gè)定時(shí)器都具備4個(gè)捕獲比較單元,而且每個(gè)定時(shí)器都可以和另外的定時(shí)器聯(lián)合工作以生成更為精密的時(shí)序;STM32有專門為電機(jī)控制而設(shè)的高級(jí)定時(shí)器,帶有6個(gè)死區(qū)時(shí)間可編程的PWM輸出通道,同時(shí)其帶有的緊急制動(dòng)通道可以在異常情況出現(xiàn)時(shí),強(qiáng)迫PWM信號(hào)輸出保持在一個(gè)預(yù)訂好的安全狀態(tài);SPI接口含有一個(gè)硬件CC8單元,支持8位字節(jié)和16位半字?jǐn)?shù)據(jù)的CC8計(jì)算。在對(duì)SD或MMC等存儲(chǔ)介質(zhì)進(jìn)行數(shù)據(jù)存取時(shí)相當(dāng)有用。而且,STM32還包含了7個(gè)DMA通道。沒惡搞通道都可以用來(lái)在設(shè)備與內(nèi)存之間進(jìn)行8位,16位,32位數(shù)據(jù)的傳輸。每個(gè)設(shè)備都可以向DMA控制器請(qǐng)求發(fā)送或者接收數(shù)據(jù)。STM32內(nèi)部總線仲裁器和總線矩陣將CPU數(shù)據(jù)接口和DMA通道之間的連接大大的簡(jiǎn)化了,這就意味著DMA通道單元是很靈活的其使用方法簡(jiǎn)單,足以應(yīng)付微控制器應(yīng)用中常見的數(shù)據(jù)傳輸要求。
一、硬件方案
硬件構(gòu)成:本系統(tǒng)采用STM32單片機(jī)+時(shí)鐘晶振電路+復(fù)位電路(上電自復(fù)位,手動(dòng)復(fù)位)+ TFT1.44寸彩屏液晶顯示電路+ 喂食舵機(jī)驅(qū)動(dòng)電路 + 排水舵機(jī)驅(qū)動(dòng)電路+加水水泵驅(qū)動(dòng)電路+雙路光敏渾濁度檢測(cè)電路+水位傳感器檢測(cè)電路+DS18B20溫度采集電路+按鍵電路及電源組成。?
二、設(shè)計(jì)功能
1、本系統(tǒng)通過(guò)單片機(jī)實(shí)時(shí)采集DS18B20溫度數(shù)據(jù)進(jìn)行顯示,通過(guò)兩個(gè)光敏電阻采集光照差值,也就是說(shuō)水表面和水中的光照差表達(dá)水的渾濁度。通過(guò)水位傳感器檢測(cè)水位水深,AD轉(zhuǎn)換獲取具體數(shù)據(jù);此外單片機(jī)內(nèi)部進(jìn)行計(jì)時(shí),達(dá)到一定的值可以自動(dòng)觸發(fā)投食舵機(jī)動(dòng)作進(jìn)行投食;可以通過(guò)按鍵觸發(fā)換水,換水根據(jù)設(shè)置的上下水位進(jìn)行先排水然后在加水;液晶顯示所有數(shù)據(jù)參數(shù)。
2、上電初始化,液晶顯示相應(yīng)標(biāo)題。液晶顯示相應(yīng)數(shù)據(jù)。單片機(jī)實(shí)時(shí)采集DS18B20溫度數(shù)據(jù)進(jìn)行顯示,此處溫度指示一個(gè)指示量,給用戶查看的沒有對(duì)應(yīng)的觸發(fā)動(dòng)作。通過(guò)兩個(gè)光敏(實(shí)際中不分上下,直接處理其差值絕對(duì)值)探測(cè)水的渾濁度,默認(rèn)固定閾值20,如果渾濁度超過(guò)20,液晶相應(yīng)提醒“請(qǐng)換水”。
3、可以通過(guò)按鍵設(shè)置水位上下限值以及喂食時(shí)間,通過(guò)按鍵進(jìn)行設(shè)置,另外兩個(gè)按鍵可以對(duì)設(shè)置閾值進(jìn)行加減處理,設(shè)置過(guò)程中對(duì)應(yīng)位置有“<”指示。上電后單片機(jī)內(nèi)部計(jì)時(shí),計(jì)時(shí)達(dá)到喂食時(shí)間后,喂食舵機(jī)動(dòng)作(表示投食閥門打開),打開一段時(shí)間后自動(dòng)關(guān)閉;也可以在非設(shè)置參數(shù)情況下K3觸發(fā)手動(dòng)喂食。投食過(guò)程中液晶相應(yīng)位置顯示具體狀態(tài)。
4、在渾濁度提醒下,通過(guò)按鍵按下,可以進(jìn)行換水操作,液晶顯示“開始換水..”;隨后顯示“排水至<L”,排水舵機(jī)動(dòng)作(模擬排水閥),此時(shí)排水直至當(dāng)前水位低于水位下限;排水完成后,顯示“加水至>H”,排水舵機(jī)動(dòng)作恢復(fù),加水水泵啟動(dòng),此時(shí)加水直至當(dāng)前水位高于水位上限;加水完成后液晶顯示“換水完成”。此過(guò)程表示整個(gè)換水過(guò)程。換水需要手動(dòng)啟動(dòng)換水。
5、如果有加上無(wú)線功能的需求可以定制。可以通過(guò)無(wú)線藍(lán)牙或者WIFI連接板子,通過(guò)APP功能查看相應(yīng)數(shù)據(jù),能夠發(fā)送指令/或者接收指令。完成功能的使用,具有強(qiáng)大的實(shí)用性功能。?
三、實(shí)物圖?
?
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-560648.html
四、原理圖
在本設(shè)計(jì)做的過(guò)程中,硬件和軟件方面都遇到了許多問(wèn)題,但是相比于軟件,在硬件方面還是比較快解決的方面,因?yàn)橛布潜容^容易檢查出來(lái)錯(cuò)誤的,軟件比較晦澀難懂,還是有一定難度。
在硬件調(diào)試問(wèn)題上,首先焊接好了元器件實(shí)物板后,先用萬(wàn)用表測(cè)量這個(gè)工業(yè)板子的電源方面,電源方面是最重要的問(wèn)題,應(yīng)該是特別需要檢查的地方,以防止電源的短路和正負(fù)極的錯(cuò)誤。然后在仔細(xì)檢查電路的連接是否有問(wèn)題,或者有沒有虛焊或者沒有焊接到的地方,然后核對(duì)一下元器件的安裝是否有問(wèn)題,安裝上去是否符合規(guī)定,由于已經(jīng)是大學(xué)四年都是做過(guò)了很多實(shí)訓(xùn)過(guò)來(lái)了,對(duì)于這些還是游刃有余的,但是在上機(jī)調(diào)試后還是發(fā)現(xiàn)了很多的問(wèn)題。
?
五、PCB圖
在本設(shè)計(jì)做的過(guò)程中,硬件和軟件方面都遇到了許多問(wèn)題,但是相比于軟件,在硬件方面還是比較快解決的方面,因?yàn)橛布潜容^容易檢查出來(lái)錯(cuò)誤的,軟件比較晦澀難懂,還是有一定難度。
在硬件調(diào)試問(wèn)題上,首先焊接好了元器件實(shí)物板后,先用萬(wàn)用表測(cè)量這個(gè)工業(yè)板子的電源方面,電源方面是最重要的問(wèn)題,應(yīng)該是特別需要檢查的地方,以防止電源的短路和正負(fù)極的錯(cuò)誤。然后在仔細(xì)檢查電路的連接是否有問(wèn)題,或者有沒有虛焊或者沒有焊接到的地方,然后核對(duì)一下元器件的安裝是否有問(wèn)題,安裝上去是否符合規(guī)定,由于已經(jīng)是大學(xué)四年都是做過(guò)了很多實(shí)訓(xùn)過(guò)來(lái)了,對(duì)于這些還是游刃有余的,但是在上機(jī)調(diào)試后還是發(fā)現(xiàn)了很多的問(wèn)題。
?
?
六、程序源碼 ?
Keil 5是美國(guó)Keil Software公司出品的51和STM32系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語(yǔ)言編程,那么Keil幾乎就是你的不二之選,即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。
?
?
資料包括:
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-560648.html
?
需要完整的資料可以點(diǎn)擊下面的名片加下我,找我要資源壓縮包的百度網(wǎng)盤下載地址及提取碼。
到了這里,關(guān)于102、基于STM32的智能投食智能魚缸魚塘養(yǎng)殖寵物喂食換水監(jiān)控系統(tǒng)(程序+原理圖+PCB源文件+參考論文+硬件設(shè)計(jì)資料+元器件清單等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!