版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
蘇州大學(xué)應(yīng)用技術(shù)學(xué)院《電子技術(shù)綜合設(shè)計(jì)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱基于DS18B20的溫度測試儀班級(jí)/小組10信息/09組報(bào)告人姓名/學(xué)號(hào)季偉/1016407049完成日期2013-10-24第25頁《電子技術(shù)綜合設(shè)計(jì)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:基于DS18B20溫度測試儀蘇州大學(xué)應(yīng)用技術(shù)學(xué)院10信息/09組王兆奇/1016407003臧壽池/1016407019馬澤鑫/1016407043季偉/10164070492013年10月24目錄1.任務(wù) 41.1.描述 41.1.1.組成 41.1.2.功能 41.2.要求 41.2.1.基本要求 41.2.2.分工 42.方案 42.1.可選方案 42.1.1.方案1 42.1.2.方案2 52.2.方案確定 52.2.1.主要思路 53.設(shè)計(jì) 53.1.硬件設(shè)計(jì) 53.1.1.單元1 53.1.2.微控制器STM32F103ZET6等單元說明: 63.1.3.溫度傳感器DS18B20的工作原理 73.1.4.顯示模塊的設(shè)計(jì) 83.1.5.LCD液晶顯示屏與單片機(jī)接口電路設(shè)計(jì) 83.1.6.軟件結(jié)構(gòu) 93.1.7.主要函數(shù)說明 104.制作 104.1.制作 104.1.1.過程 104.1.2.分工 104.2.實(shí)物外形 105.測試 115.1.1.系統(tǒng)仿真 115.1.2.系統(tǒng)硬件調(diào)試 115.1.3.系統(tǒng)軟件調(diào)試 115.2.結(jié)果 116.總結(jié) 13參考文獻(xiàn) 13附錄 14附錄1: 14主程序: 14子程序: 18任務(wù)描述本文在基于DS18B20溫度測試儀及微控制器工作原理的基礎(chǔ)上,詳細(xì)介紹了該系統(tǒng)的硬件和軟件設(shè)計(jì)過程。其中,硬件設(shè)計(jì)是以微控制器STM32F103ZET6和DS18B20數(shù)字溫度傳感器為核心器件,主要由溫度采集、微控制器、LCD溫度顯示、串口顯示四部分組成。軟件設(shè)計(jì)采用模塊化編程方法,使得程序易于調(diào)試和維護(hù),并利用C語言實(shí)現(xiàn)數(shù)據(jù)處理、LCD顯示、串口顯示等各功能子程序的編寫。該系統(tǒng)結(jié)構(gòu)簡單、抗干擾性強(qiáng)、實(shí)用性強(qiáng),具有一定的工程應(yīng)用價(jià)值。組成硬件設(shè)計(jì)是以微控制器STM32F103ZET6和DS18B20數(shù)字溫度傳感器為核心器件,主要由溫度采集、微控制器STM32F103Z數(shù)據(jù)處理、LCD溫度顯示、串口顯示四部分組成。功能該測溫系統(tǒng)應(yīng)用測溫傳感器DS18B20,通過DS18B20把溫度值轉(zhuǎn)換成數(shù)字量,把數(shù)字量送給微處理器,并在液晶顯示器上以及串口助手上顯示出來。要求基本要求該測溫系統(tǒng)應(yīng)用測溫傳感器DS18B20,通過DS18B20把溫度值轉(zhuǎn)換成數(shù)字量,把數(shù)字量送給微處理器,并在液晶顯示器上顯示出來。分工總體設(shè)計(jì)臧壽池軟件設(shè)計(jì)王兆奇硬件設(shè)計(jì)馬澤鑫文檔編輯季偉方案可選方案方案1由于本設(shè)計(jì)是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對于檢測1攝氏度的信號(hào)是不適用的。而且在溫度測量系統(tǒng)中,采用單片溫度傳感器,比如AD590,LM35等。但這些芯片輸出的都是模擬信號(hào),必須經(jīng)過A/D轉(zhuǎn)換后才能送給計(jì)算機(jī),這樣就使得測溫裝置的結(jié)構(gòu)較復(fù)雜。另外,這種測溫裝置的一根線上只能掛一個(gè)傳感器,不能進(jìn)行多點(diǎn)測量。即使能實(shí)現(xiàn),也要用到復(fù)雜的算法,一定程度上也增加了軟件實(shí)現(xiàn)的難度。方案2基于DS18B20溫度測試儀,傳統(tǒng)的測溫方法是將模擬信號(hào)遠(yuǎn)距離采樣進(jìn)行A/D轉(zhuǎn)換,而為了獲得較高的測溫系統(tǒng),就必須采用措施解決由長線傳輸,多點(diǎn)測量切換及放大電路零點(diǎn)漂移等造成的誤差補(bǔ)償問題。采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0-100攝氏度時(shí),最大線形偏差小于1攝氏度。DS18B20的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器STM32F103ZET6構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。本次采用溫度芯片DS18B20測量溫度,可以體現(xiàn)系統(tǒng)芯片化的這個(gè)趨勢。部分功能電路的集成,使總體電路更簡潔,搭建電路和焊接電路時(shí)更快。而且,集成塊的使用,有效地避免外界的干擾,提高測量電路的精確度。所以集成芯片的使用將成為電路發(fā)展的一種趨勢。本方案應(yīng)用這一溫度芯片,也是順應(yīng)這一趨勢。方案確定主要思路綜上所述,方案使用了STM32F103ZET6作為控制核心,以智能溫度傳感器DS18B20為溫度測量元件,顯示電路采用LCD顯示模塊以及串口調(diào)試助手顯示。設(shè)計(jì)硬件設(shè)計(jì)單元1電路基于DS18B20的多點(diǎn)溫度采集系統(tǒng)采用了STM32F103ZET6作為控制核心,以智能溫度傳感器DS18B20為溫度測量元件,顯示電路采用LCD數(shù)碼管模塊。電路方案如下圖3.1.1:3.1.1電路方案微控制器STM32F103ZET6等單元說明:微控制器STM32F103ZET6原理圖USART1接口模塊原理圖ONEWIRE原理圖溫度傳感器DS18B20的工作原理DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:3.1.3DS18B20溫度傳感器●獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;●DS18B20可以并聯(lián)在惟一的三線上;●無須外部器件;●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;●零待機(jī)功耗;●溫度以9或12位數(shù)字;●用戶可定義報(bào)警設(shè)置;●報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;顯示模塊的設(shè)計(jì)1.LCD主要技術(shù)參數(shù)顯示點(diǎn)陣數(shù)240*RGB*320DOTS;LCD尺寸48.60(W)x64.80(H)mm;LCD模式262KTFT;動(dòng)態(tài)顯示區(qū)43.2*57.6mm;象素成分a-SiTFT;LCM外型尺寸55.94(W)x77.60(H)x3.70(D)mm;象素尺寸0.153*0.153mm。LCD液晶顯示屏與單片機(jī)接口電路設(shè)計(jì)本系統(tǒng)的顯示部分采用LCD顯示模塊,與采用數(shù)碼管相比,硬件連接和軟件調(diào)試上都由優(yōu)勢。只要把要顯示的內(nèi)容放進(jìn)液晶模塊的顯示存儲(chǔ)器里面就可以直觀的顯示出指定的內(nèi)容,操作方便。LCD原理圖,如圖所示:3.1.5LCD原理圖軟件結(jié)構(gòu)3.1.6軟件結(jié)構(gòu)主要函數(shù)說明見附錄制作制作過程第一步:根據(jù)總體方案,確定軟件設(shè)計(jì)與以及硬件設(shè)計(jì);第二步:分別進(jìn)行硬件設(shè)計(jì)與軟件設(shè)計(jì),實(shí)現(xiàn)所需功能;第三步:完成軟件設(shè)計(jì)與硬件設(shè)計(jì),進(jìn)行最后調(diào)試;分工總體設(shè)計(jì)臧壽池軟件設(shè)計(jì)王兆奇硬件設(shè)計(jì)馬澤鑫文檔編輯季偉實(shí)物外形4.2.1實(shí)物圖測試系統(tǒng)仿真其實(shí)仿真的概念其實(shí)使用非常廣,但是最終的含義就是使用可控的手段來模仿真實(shí)的情況。單片機(jī)系統(tǒng)開發(fā)中的仿真包括軟件仿真和硬件仿真。軟件仿真這種方法主要是使用計(jì)算機(jī)軟件來模擬實(shí)際的單片機(jī)運(yùn)行,因此仿真與硬件無關(guān)的系統(tǒng)具有一定的優(yōu)點(diǎn)。用戶不需要搭建硬件電路就可以對程序進(jìn)行驗(yàn)證,特別適合于偏重算法的程序。軟件仿真的缺點(diǎn)是無法完全仿真與硬件相關(guān)的部分,因此最終還要通過硬件仿真來完成最后的設(shè)計(jì);硬件仿真使用附加的硬件來替代用戶系統(tǒng)的單片機(jī)并完成單片機(jī)全部或大部分的功能。使用了附加硬件后用戶就可以對程序的運(yùn)行進(jìn)行控制,例如單步、全速、查看資源斷點(diǎn)等。在單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過程中,程序的設(shè)計(jì)是最為重要的但也是難度最大的工作,一種最簡單和原始的開發(fā)流程是:編寫程序,燒寫芯片并驗(yàn)證功能,這種方法對于功能簡單的小系統(tǒng)是可以對付的,但在比較大的系統(tǒng)中使用這種方法則是完全不可能的。此時(shí)就需要用到仿真器。在本系統(tǒng)軟件設(shè)計(jì)調(diào)試的過程中使用的是PROTELDXP型仿真軟件。系統(tǒng)硬件調(diào)試系統(tǒng)軟硬件調(diào)試的目的是通過控制程序和硬件電路的配合工作,進(jìn)行一些操作,以驗(yàn)證系統(tǒng)的軟、硬件是否能夠完成設(shè)計(jì)的功能。調(diào)試的過程是按照系統(tǒng)的設(shè)計(jì)功能來劃分的。硬件電路系統(tǒng)測試首先是保證各個(gè)元件之間以及各個(gè)模塊之間的連接正確并且接觸良好,這是整個(gè)硬件電路系統(tǒng)正常工作的前提。接著分別測試各個(gè)硬件模塊的性能。按照測試性質(zhì)的不同可分為電壓測試和信號(hào)測試兩種。單片機(jī)輸入輸出接口主要是信號(hào)測試。根據(jù)理論計(jì)算和軟件仿真的預(yù)期結(jié)果,再通過對響應(yīng)的信號(hào)進(jìn)行測試。測試結(jié)果與預(yù)期結(jié)果基本一致,保證了系統(tǒng)按照設(shè)計(jì)的思路正常運(yùn)行。通過測試硬件電路系統(tǒng)中的幾個(gè)測試點(diǎn),確保關(guān)鍵的電壓信號(hào)滿足要求,確保各個(gè)引腳連接正確,確保系統(tǒng)正常運(yùn)行。系統(tǒng)軟件調(diào)試本次在計(jì)算機(jī)上使用的是keil系列軟件對本次設(shè)計(jì)進(jìn)行軟件的調(diào)試,Keil軟件引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺(tái)監(jiān)視器,并提供了視覺上的表面對窗口位置的完全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個(gè)窗口,提供一個(gè)整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。多顯示器和靈活的窗口管理系統(tǒng),系統(tǒng)瀏覽器窗口的顯示設(shè)備外設(shè)寄存器信息,調(diào)試還原視圖創(chuàng)建并保存多個(gè)調(diào)試窗口布局,多項(xiàng)目工作區(qū)簡化與眾多的項(xiàng)目。結(jié)果5.2.1串口顯示5.2.2LCD顯示溫度界面總結(jié)本文所研究的以微控制器STM32F103ZET6和DS18B20數(shù)字溫度傳感器為核心器件,主要由溫度采集、微控制器STM32F103Z數(shù)據(jù)處理、LCD溫度顯示、串口顯示四部分組成。該測溫系統(tǒng)應(yīng)用測溫傳感器DS18B20,通過DS18B20把溫度值轉(zhuǎn)換成數(shù)字量,把數(shù)字量送給微控制器,并在LCD上以及串口助手上顯示出來。該測溫系統(tǒng)應(yīng)用智能溫度傳感器DS18B20,大大減弱了傳統(tǒng)模擬信號(hào)在傳輸過程中衰減、干擾問題的影晌。使測試系統(tǒng)具有更好的可靠性和精度。實(shí)現(xiàn)了一種在非極端條件下(-50~125℃)的溫度測量方法。而且在硬件電路的設(shè)計(jì)上面更加簡潔,不需要太多的外圍電路,也降低了電路設(shè)計(jì)的要求。但是該系統(tǒng)存在著一些不足:一般環(huán)境的測量儀器完全可以采用數(shù)字式的傳感器,DS18B20是一款非常優(yōu)秀的數(shù)字式溫度傳感器,在測量速度要求不高的情況下,將來可以實(shí)現(xiàn)更多點(diǎn)的溫度測量。而且系統(tǒng)需要結(jié)合機(jī)械結(jié)構(gòu)設(shè)計(jì),方便DS18B20的安裝和更換。數(shù)字式傳感器使用中最大的缺點(diǎn)就是軟件復(fù)雜,所以需要更加優(yōu)化通用軟件包的代碼,提高代碼效率和可移植性,這也是將來的工作重點(diǎn)。這次電子綜合設(shè)計(jì)是我們每個(gè)人必須面臨的一項(xiàng)的考驗(yàn),在過去三年里,我們的學(xué)習(xí)是一個(gè)專業(yè)知識(shí)的積累過程,那么這次設(shè)計(jì)就是對過去所學(xué)知識(shí)的綜合運(yùn)用,是對理論進(jìn)行深化和重新認(rèn)識(shí)的時(shí)間活動(dòng)。在這次設(shè)計(jì)中,我們努力的設(shè)計(jì)。每個(gè)人的能力固然得到了鞏固和提高,但我相信在實(shí)踐中的切身體會(huì)將會(huì)使我在以后的工作和學(xué)習(xí)中終身受用。我們學(xué)習(xí)能力得到了提高。在設(shè)計(jì)中,完成硬件電路的設(shè)計(jì)、軟件編寫。在這些過程中,遇到許多困難,但通過書籍或網(wǎng)絡(luò)查閱了很多相關(guān)文章和向?qū)熣埥毯蠼K于解決了。通過網(wǎng)上查詢相關(guān)的資料,初步掌握了這些知識(shí),并且把查到的應(yīng)用到這次設(shè)計(jì)中。通過這次電子綜合設(shè)計(jì),我們不僅對理論有了更深一步的認(rèn)識(shí),增強(qiáng)了和外界技術(shù)的溝通,同時(shí)還培養(yǎng)了自學(xué)能力和分析解決問題的能力,更重要的是,培養(yǎng)我們自身的能力。這次電子綜合設(shè)計(jì)讓我們的觀念有了很大的改變。之前我們使用的51單片機(jī),這次設(shè)計(jì)使用ARM。我們想要跟上時(shí)代腳步。如何在保證質(zhì)量和完成同等功能的情況下,把產(chǎn)品的成本降到最低并符合用戶的實(shí)際使用習(xí)慣。是我們每個(gè)設(shè)計(jì)人員在作出方案時(shí)首要考慮的因素。設(shè)計(jì)產(chǎn)品時(shí)要聯(lián)系實(shí)際,實(shí)際情況有時(shí)候和我們的理解差距很大!感謝學(xué)校這次出資購買ARM。我們作為最先使用這套設(shè)備的人,大家還是比較緊張的。但是這次設(shè)計(jì)大家收獲還是相當(dāng)大的。不管對之后的畢業(yè)設(shè)計(jì)還是今后的工作都有很大的幫助!參考文獻(xiàn)亞荷毛爾等.構(gòu)建嵌入式LINUX系統(tǒng).東南大學(xué)出版社,2009周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程.北京航空航天大學(xué)出版社,2008杜春雷.ARM體系結(jié)構(gòu)與編程.清華大學(xué)出版社,2003鄭杰.ARM嵌入式系統(tǒng)開發(fā)與應(yīng)用完全手冊.中國鐵道出版社,2013黃建華,歐陽寧.ARM嵌入式系統(tǒng)開發(fā)教程.西安電子科技大學(xué)出版社,2012肖廣兵.ARM嵌入式開發(fā)實(shí)例.電子工業(yè)出版社,2013葛超,王嘉偉.ARM體系結(jié)構(gòu)與編程.清華大學(xué)出版社,2012譚云生.ARM嵌入式系統(tǒng)原理及應(yīng)用開發(fā).西安電子科技大學(xué)出版社,2012
附錄附錄1:主程序:/**********************************************************************************************************File:main.c*HardwareEnvironment:Open103Z*BuildEnvironment:RealViewMDK-ARMVersion:4.20*Version:V1.0*By:WaveShare**(c)Copyright2005-2011,WaveShare**AllRightsReserved**********************************************************************************************************//*Includes*/#include"stm32f10x.h"#include<stdio.h>#include<string.h>#include"usart.h"#include"OneWire.h"#include"18B20.h"#include"LCD.h"#include"AsciiLib.h"/*Privatetypedef*//*Privatedefine*//*Privatemacro*//*Privatevariables*//*Privatefunctionprototypes*/#ifdef__GNUC__/*WithGCC/RAISONANCE,smallprintf(optionLDLinker->Libraries->Smallprintfsetto'Yes')calls__io_putchar()*/#definePUTCHAR_PROTOTYPEint__io_putchar(intch)#else#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)#endif/*__GNUC__*/voidGPIO_Configuration(void);voidUSART_Configuration(void);voidDelay(uint32_tnCount);uint16_tn;/*Privatefunctions*//***@briefMainprogram.*@paramNone*@retvalNone*/intmain(void){/*!<Atthisstagethemicrocontrollerclocksettingisalreadyconfigured,thisisdonethroughSystemInit()functionwhichiscalledfromstartupfile(startup_stm32f10x_xx.s)beforetobranchtoapplicationmain.ToreconfigurethedefaultsettingofSystemInit()function,refertosystem_stm32f10x.cfile*//*Addyourapplicationcodehere*/ u8i,tmp,*p,id[8]; chars3[64];Onewire_Enable_GPIO_Port(); GPIO_Configuration(); USART_Configuration();printf("\r\n****************************************************************\r\n"); /**ReadID*/ p=readID(); while(*p){id[i]=*p;p++;i++;} printf("DS18B20'sID:"); i=0; while(i!=8) {printf("0x%x",id[i]);i++;} printf("\n\r"); /**ReadTemp*/ LCD_Initializtion(); LCD_Clear(White); while(1) { GUI_Chinese(127,20,"蘇州大學(xué)",Red,White); GUI_Chinese(110,40,"應(yīng)用技術(shù)學(xué)院",Red,White); GUI_Chinese(110,60,"電子綜合設(shè)計(jì)",Blue,White); GUI_Chinese(112,85,"電子信息工程",Blue,White); GUI_Text(95,85,"10",Blue,White); GUI_Text(150,158,"10",Blue,White); GUI_Text(170,158,"25",Blue,White); GUI_Text(115,158,"2013",Blue,White); GUI_Chinese(90,108,"王兆奇",Black,White); GUI_Chinese(175,108,"臧壽池",Black,White); GUI_Chinese(90,128,"馬澤鑫",Black,White); GUI_Chinese(175,128,"季",Black,White); GUI_Chinese(207,128,"偉",Black,White); GUI_Text(3,3,"***************************************",Blue,White); GUI_Text(3,222,"***************************************",Blue,White); LCD_DrawLine(2,5,317,5,Yellow); //縱軸 LCD_DrawLine(2,5,2,224,Blue); //橫軸 LCD_DrawLine(3,5,3,224,Blue); //橫軸 LCD_DrawLine(317,5,317,224,Blue); //橫軸 LCD_DrawLine(316,5,316,224,Blue); //橫軸 //Delay(0xfffff); while(!(GPIOG->IDR&0x0040)) { LCD_Clear(White); while(1) { if(tmp!=i) { n++; printf("Temperture:%d度,第%d次測試\r\n",i,n); sprintf(s3,"%4d",i); GUI_Text(160,100,s3,Red,White); GUI_Chinese(100,100,"當(dāng)前溫度",Blue,White); GUI_Chinese(70,20,"基于",Blue,White); GUI_Chinese(160,20,"的溫度測試儀",Blue,White); GUI_Text(100,20,"DS18b20",Blue,White); GUI_Chinese(200,100,"度",Blue,White); tmp=i; } i=readTemp(); } } }}/********************************************************************************FunctionName:GPIO_Configuration*Description:ConfigureGPIOPin*Input:None*Output:None*Return:None*Attention :None*******************************************************************************/voidGPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG,ENABLE); /***LED1->PF6,LED2->PF7,LED3->PF8,LED4->PF9*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOF,&GPIO_InitStructure);/*Key*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOG,&GPIO_InitStructure);}/********************************************************************************FunctionName:Delay*Description:DelayTime*Input:-nCount:DelayTime*Output:None*Return:None*Attention :None*******************************************************************************/voidDelay(uint32_tnCount){for(;nCount!=0;nCount--);}#ifdefUSE_FULL_ASSERT/***@briefReportsthenameofthesourcefileandthesourcelinenumber*wheretheassert_paramerrorhasoccurred.*@paramfile:pointertothesourcefilename*@paramline:assert_paramerrorlinesourcenumber*@retvalNone*/voidassert_failed(uint8_t*file,uint32_tline){/*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,ex:printf("Wrongparametersvalue:file%sonline%d\r\n",file,line)*//*Infiniteloop*/while(1){}}#endif/***************************************ENDOFFILE*************************************/ 子程序usart.c:/***********************************************************************************************************File:usart.c*HardwareEnvironment:*BuildEnvironment:RealViewMDK-ARMVersion:4.20*Version:V1.0*By:**(c)Copyright2005-2011,WaveShare**AllRightsReserved**********************************************************************************************************/#include"usart.h"#ifdef__GNUC__/*WithGCC/RAISONANCE,smallprintf(optionLDLinker->Libraries->Smallprintfsetto'Yes')calls__io_putchar()*/#definePUTCHAR_PROTOTYPEint__io_putchar(intch)#else#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)#endif/*__GNUC__*//********************************************************************************FunctionName:USART_Configuration*Description:ConfigureUSART1*Input:None*Output:None*Return:None*Attention :None*******************************************************************************/voidUSART_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);/**USART1_TX->PA9,USART1_RX-> PA10*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);USART_ClearFlag(USART1,USART_FLAG_TC);USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);USART_ITConfig(USART1,USART_IT_TXE,ENABLE);USART_Cmd(USART1,ENABLE);}voidUsartGPIO_CTRT_Configuration(void){ GPIO_InitTypeDefGPIO_InitStruct; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_12; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_11; GPIO_Init(GPIOA,&GPIO_InitStruct);}voidUSART_CTRT_Configuartion(void){ USART_InitTypeDefUSART_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE); USART_InitStruct.USART_BaudRate=115200; USART_InitStruct.USART_StopBits=USART_StopBits_1; USART_InitStruct.USART_WordLength=USART_WordLength_8b; USART_InitStruct.USART_Parity=USART_Parity_No; USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_RTS_CTS; USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; USART_Init(USART1,&USART_InitStruct); USART_Cmd(USART1,ENABLE); UsartGPIO_CTRT_Configuration();}/*Usenosemihosting*/#if1#pragmaimport(__use_no_semihosting)struct__FILE{ inthandle;};FILE__stdout;_sys_exit(intx){ x=x;}#endif/***@briefRetargetstheClibraryprintffunctiontotheUSART.*@paramNone*@retvalNone*/PUTCHAR_PROTOTYPE{/*Placeyourimplementationoffputchere*//*e.g.writeacharactertotheUSART*/USART_SendData(USART1,(uint8_t)ch); //USART_SendData(USART1,(u8)ch);/*Loopuntiltheendoftransmission*/while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET) //while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET){}returnch;} 子程序LCD:/***********************************************************************************************************File:LCD.h*HardwareEnvironment:*BuildEnvironment:RealViewMDK-ARMVersion:4.20*Version:V1.0*By:**(c)Copyright2005-2011,WaveShare**AllRightsReserved**********************************************************************************************************/#ifndef__GLCD_H#define__GLCD_H/*Includes*/#include<math.h>#include"stm32f10x.h"/*Privatedefine*/#defineUSE_16BIT_PMP/**********************************************************************Overview:Horizontalandverticaldisplayresolution*(fromtheglassdatasheet).*********************************************************************///#defineDISP_HOR_RESOLUTION 320//#defineDISP_VER_RESOLUTION 240//#defineDISP_ORIENTATION 0#defineDISP_ORIENTATION 90//#defineDISP_ORIENTATION 180//#defineDISP_ORIENTATION 270/*Privatedefine*/#if(DISP_ORIENTATION==90)||(DISP_ORIENTATION==270)#defineMAX_X320#defineMAX_Y240#elif(DISP_ORIENTATION==0)||(DISP_ORIENTATION==180)#defineMAX_X240#defineMAX_Y320#endif/**********************************************************************Overview:Horizontalsynchronizationtiminginpixels*(fromtheglassdatasheet).*********************************************************************///#defineDISP_HOR_PULSE_WIDTH 20/*20*///#defineDISP_HOR_BACK_PORCH 51 /*48 *///#defineDISP_HOR_FRONT_PORCH 20 /*20*//**********************************************************************Overview:Verticalsynchronizationtiminginlines*(fromtheglassdatasheet).*********************************************************************///#defineDISP_VER_PULSE_WIDTH 2 /*2*///#defineDISP_VER_BACK_PORCH 12 /*16*///#defineDISP_VER_FRONT_PORCH 4 /*4*//**********************************************************************DefinitionforSPIinterfaceforHIMAX8238-Arelevanttohardware*layout;Hardwaredependent!*********************************************************************/#defineGPIO33#defineGPIO22#defineGPIO11#defineGPIO00#defineLCD_RESET(1<<GPIO3) /*LCDResetsignal(Resetfordisplaypanel,NOTssd1963)*/#defineLCD_SPENA(1<<GPIO0) /*SPIENsignal*/#defineLCD_SPCLK(1<<GPIO1) /*SPICLK*/#defineLCD_SPDAT(1<<GPIO2) /*SPIDATA*//*LCDcolor*/#defineWhite0xFFFF#defineBlack0x0000#defineGrey0xF7DE#defineBlue0x001F#defineBlue20x051F#defineRed0xF800#defineMagenta0xF81F#defineGreen0x07E0#defineCyan0x7FFF#defineYellow0xFFE0#defineRGB565CONVERT(red,green,blue)(int)(((red>>3)<<11)|((green>>2)<<5)|(blue>>3))/*Privatefunctionprototypes*/voidLCD_Initializtion(void);voidLCD_Clear(uint16_tColor); //voidLCD_SetBacklight(uint8_tintensity);uint16_tLCD_GetPoint(uint16_tXpos,uint16_tYpos);voidLCD_SetPoint(uint16_tXpos,uint16_tYpos,uint16_tpoint);voidPutChar(uint16_tXpos,uint16_tYpos,uint8_tc,uint16_tcharColor,uint16_tbkColor);voidLCD_DrawLine(uint16_tx0,uint16_ty0,uint16_tx1,uint16_ty1,uint16_tcolor);voidPutChinese(uint16_tXpos,uint16_tYpos,uint8_t*str,uint16_tColor,uint16_tbkColor);voidGUI_Text(uint16_tXpos,uint16_tYpos,uint8_t*str,uint16_tColor,uint16_tbkColor);voidGUI_Chinese(uint16_tXpos,uint16_tYpos,uint8_t*str,uint16_tColor,uint16_tbkColor); voidLCD_DrawPicture(uint16_tStartX,uint16_tStartY,uint16_tEndX,uint16_tEndY,uint16_t*pic);__inlinevoidLCD_WriteIndex(uint16_tindex);__inlinevoidLCD_WriteData(uint16_tdata);__inlineuint16_tLCD_ReadData(void);__inlineuint16_tLCD_ReadReg(uint16_tLCD_Reg);__inlinevoidLCD_WriteReg(uint16_tLCD_Reg,uint16_tLCD_RegValue);staticvoidLCD_SetCursor(uint16_tXpos,uint16_tYpos);voiddelay_ms(uint16_tms);#endif/*********************************************************************************************************ENDFILE*********************************************************************************************************/基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時(shí)控和計(jì)數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動(dòng)低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計(jì)基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報(bào)警系統(tǒng)設(shè)計(jì)基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計(jì)基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動(dòng)信號(hào)的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實(shí)踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實(shí)現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)\t"_blan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深井泵房施工組織設(shè)計(jì)
- 歷年英語四級(jí)真題及答案
- 2025年華師大新版七年級(jí)歷史下冊月考試卷
- 2025年外研版九年級(jí)歷史上冊月考試卷含答案
- 2025年浙教版九年級(jí)歷史下冊階段測試試卷
- 2025年華師大版選擇性必修3歷史下冊階段測試試卷
- 2025年度農(nóng)機(jī)環(huán)保技術(shù)合作開發(fā)合同范本4篇
- 房屋建筑設(shè)計(jì)合同(2篇)
- 擔(dān)保合同補(bǔ)充協(xié)議書(2篇)
- 2025年度綠色建筑項(xiàng)目除草與節(jié)能合同3篇
- 數(shù)學(xué)-山東省2025年1月濟(jì)南市高三期末學(xué)習(xí)質(zhì)量檢測濟(jì)南期末試題和答案
- 中儲(chǔ)糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 湖南省長沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項(xiàng)整治三年行動(dòng)實(shí)施方案全國安全生產(chǎn)專項(xiàng)整治三年行動(dòng)計(jì)劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 產(chǎn)鉗助產(chǎn)護(hù)理查房
- 招聘專員轉(zhuǎn)正述職報(bào)告
- GB/T 31525-2015圖形標(biāo)志電動(dòng)汽車充換電設(shè)施標(biāo)志
- 裝飾業(yè)務(wù)員培訓(xùn)教程方案
評(píng)論
0/150
提交評(píng)論