雙通道數(shù)據(jù)采集系統(tǒng)的設(shè)計_第1頁
雙通道數(shù)據(jù)采集系統(tǒng)的設(shè)計_第2頁
雙通道數(shù)據(jù)采集系統(tǒng)的設(shè)計_第3頁
雙通道數(shù)據(jù)采集系統(tǒng)的設(shè)計_第4頁
雙通道數(shù)據(jù)采集系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、西安科技大學(xué)電控學(xué)院課程設(shè)計論文 第5頁電控學(xué)院課程設(shè)計(論文) 課程名稱:ARM課程設(shè)計 題 目:雙通道數(shù)據(jù)采集系統(tǒng)的設(shè)計 院 (系):電氣與控制工程學(xué)院專業(yè)班級: 姓 名: 學(xué) 號:指導(dǎo)教師:李紅巖 楊學(xué)存 2016年12月09日第1章 緒論1.1 ARM概述及其發(fā)展ARM公司的IP核已經(jīng)由ARM7,ARM9發(fā)展到今天的ARM11版本。ARM11囊括了Thumb-2,CoreSight,TrusZone 等眾多業(yè)界領(lǐng)先技術(shù),同時由單一的處理器內(nèi)核向多核發(fā)展,為高端的嵌入式應(yīng)用提供了強大的處理平臺。高集成度SOC芯片的采用可以帶來一系列好處,諸如減少了外圍器件和PCB面積,提高系統(tǒng)抗干擾能力

2、,縮小產(chǎn)品體積,降低功耗等。 ARM 公司是一家IP供應(yīng)商,其核心業(yè)務(wù)是IP核以及相關(guān)工具的開發(fā)和設(shè)計。半導(dǎo)體廠商通過購買ARM公司的IP授權(quán)來生產(chǎn)自己的微處理器芯片。由此以來,處理器內(nèi)核來自ARM公司、各芯片廠商結(jié)合自身已有的技術(shù)優(yōu)勢以及芯片的市場定位等因數(shù)使芯片設(shè)計最優(yōu)化,從而產(chǎn)生了一大批高度集成、各據(jù)特色的SOC芯片。例如Intel公司的XScale系列集成了LCD控制器、音頻編/解碼器,定位于智能PDA市場;Atmel公司的AT91系列片內(nèi)集成了大容量 Flash和RAM、高精度A/D轉(zhuǎn)換器以及大量可編程I/O端口,特別適合于工業(yè)控制領(lǐng)域;Philips公司的LPC2000系列片內(nèi)集成

3、了128位寬的零等待Flash存儲器以及I2C,&nbspSPI,PWM,UART等傳統(tǒng)接口,極高的性價比使它對傳統(tǒng)的8/16位MCU提出了嚴峻的挑戰(zhàn)。本次設(shè)計仍使用的ARM7系列。第2章LPC2132 2.1 LPC2132概述LPC2132是基于一個支持實時仿真和嵌入式跟蹤的 32/16位 ARM7TDMI-STM CPU的微控制器,并帶有64kB的嵌入的高速 Flash存儲器。128位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使 32 位代碼能夠在最大時鐘速率下運行。對代碼規(guī)模有嚴格控制的應(yīng)用可使用 16 位 Thumb®模式將代碼規(guī)模降低超過 30%,而性能的損失卻很小。較小的

4、封裝和極低的功耗使21328可理想地用于小型系統(tǒng)中,如訪問控制和POS機。寬范圍的串行通信接口和片內(nèi)16kB的SRAM 使2132非常適用于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、軟modem、聲音辨別和低端成像,為它們提供巨大的緩沖區(qū)空間和強大的處理功能。多個 32位定時器、1個或2個10位 8路 ADC、10 位 DAC、PWM 通道和47個GPIO 以及多達 9個邊沿或電平觸發(fā)的外部中斷使它們特別適用于工業(yè)控制和醫(yī)療系統(tǒng)。 2.2LPC2132的特性 小型LQFP64封裝的16/32位ARM7TDMI-S微控制器。 ·8/16/32kB 片內(nèi)靜態(tài)RAM。·片內(nèi)Boot裝載軟件實現(xiàn)在系統(tǒng)

5、/在應(yīng)用中編程(ISP/IAP)。扇區(qū)擦除或 整片擦除的時間為400ms,1ms 可編程256 字節(jié)。·EmbeddedICERT 和嵌入式跟蹤接口可實時調(diào)試(利用片內(nèi)RealMonitor 軟件)和高速跟蹤執(zhí)行代碼。·1個(LPC2132/2132)或2個(LPC2138)8路10位A/D 轉(zhuǎn)換器共包含16個模擬輸入,每個通道的轉(zhuǎn)換時間低至2.44us。·1個10位D/A 轉(zhuǎn)換器,可提供不同的模擬輸出(LPC2132/2138)。·2個32位定時器/計數(shù)器(帶4路捕獲和4路比較通道)、PWM 單元(6路輸出)和看門狗。·實時時鐘具有獨立的電源

6、和時鐘源,在節(jié)電模式下極大地降低了功耗。·多個串行接口,包括2個16C550工業(yè)標(biāo)準UART、2個高速I2C接口(400kbit/s)、SPITM 和SSP(具有緩沖功能,數(shù)據(jù)長度可變)。·向量中斷控制器??膳渲脙?yōu)先級和向量地址。·多達47個5V的通用I/O口(LQFP64封裝)。·9個邊沿或電平觸發(fā)的外部中斷引腳。·通過片內(nèi)PLL可實現(xiàn)最大為60MHz的CPU操作頻率,PLL的穩(wěn)定時間為100us。·片內(nèi)晶振頻率范圍:130MHz。·2個低功耗模式:空閑和掉電。·可通過個別使能/禁止外部功能和降低外部時鐘來優(yōu)化功

7、耗。·通過外部中斷將處理器從掉電模式中喚醒。·單個電源供電,含有上電復(fù)位(POR)和掉電檢測(BOD)電路:CPU操作電壓范圍:3.03.6V(3.3V+/10%),I/O口可承受5V的最大電壓。2.3 LPC2132的結(jié)構(gòu)概述LPC2132包含一個支持仿真的ARM7TDMI-SCPU、與片內(nèi)存儲器控制器接口的ARM7局部總線、與中斷控制器接口的AMBA高性能總線(AHB)和連接片內(nèi)外設(shè)功能的VLSI外設(shè)總線(VPB,ARM,AMBA 總線的兼容超集)。LPC2132將 ARM7TDMI-S配置為小端(little-endian)字節(jié)順序。 AHB外設(shè)分配了2M 字節(jié)的地址

8、范圍,它位于4G 字節(jié) ARM 存儲器空間的最頂端。每個AHB外設(shè)都分配了16k字節(jié)的地址空間。LPC2132的外設(shè)功能(中斷控制器除外)都連接到VPB總線。AHB到VPB的橋?qū)PB總線與 AHB總線相連。VPB外設(shè)也分配了2M 字節(jié)的地址范圍,從3.5GB 地址點開始。每個VPB外設(shè)在VPB地址空間內(nèi)都分配了16k字節(jié)地址空間。片內(nèi)外設(shè)與器件管腳的連接由管腳連接模塊控制。該模塊必須由軟件進行控制以符合外設(shè)功能與管腳在特定應(yīng)用中的需求。在進行硬件設(shè)計時要注意:LPC2132的I/O口的灌入電流大于驅(qū)動電流,在驅(qū)動LED時可考慮采用灌入電流(I/O口輸出低電平時LED亮)技術(shù),如果采用此法依然

9、不能滿足要求,則可用多個I/O口并聯(lián)或加驅(qū)動電路。LPC2132內(nèi)部8路10位A/D轉(zhuǎn)換器,但在使用時,要給I/O口加穩(wěn)壓二極管保護,防止輸入的模擬量超限而損壞芯片。在進行軟件設(shè)計時要注意:盡量使用位操作指令I(lǐng)OSET和IOCLR控制LPC2132的I/O口,而不要直接操作I/O口寄存器(如IO0PIN或IO1PIN),否則會出現(xiàn)不可預(yù)料的結(jié)果。在調(diào)試時要注意:LPC2132支持JTAG調(diào)試,但因JTAG使用了系統(tǒng)的定時器T0,所以當(dāng)用戶用JTAG進行軟件調(diào)試時,不能使用定時器T0,否則會出錯??梢钥闯觯麄€系統(tǒng)僅需少量的外圍電路和驅(qū)動電路,性能價格比較高。具體實現(xiàn)方法:采用HONYWELL的

10、24PC系列壓力傳感器測量控制內(nèi)部壓力,經(jīng)放大電路放大后送LPC2132的內(nèi)部A/D轉(zhuǎn)換模塊,實現(xiàn)A/D轉(zhuǎn)換,根據(jù)檢測的壓力數(shù)據(jù),計算風(fēng)機的風(fēng)速及內(nèi)部壓力狀態(tài),并執(zhí)行相應(yīng)的動作。LPC2132G功能方框圖如圖2-1所示LPC2132采用貼片封裝形式,體積小功耗低,外觀上看呈正方形,共有64個引腳,其引腳圖如圖1-1所示。圖1-1 LPC2132引腳圖第3章 硬件電路設(shè)計3.1控制模塊 以ARM7LPC2132開發(fā)板為控制核心,無需再添加晶振及復(fù)位電路等外圍電路,其運算速率非???,并且ARM7-LPC2131有6路PWM脈沖輸出,8路10位的A/D轉(zhuǎn)換和1個D/A轉(zhuǎn)換,2個帶4路捕獲和4路比較通

11、道的32位定時器,1個2KB的Flash存儲器、看門狗,實時時鐘等,它不僅可以在系統(tǒng)編程,在內(nèi)置的串行JTAG接口對存儲器進行編程,也可以在應(yīng)用編程的過程中對存儲器進行編程。晶顯示模塊12864具有四位或八位并行,兩線或三線串行等多種接線方式,內(nèi)部具有簡體的中文字庫,液晶顯示的分辨率是128×64, 其內(nèi)部含有8192個16 * 16點漢字和128個16 * 8點ASCII碼字符集。通過靈活的接線方式以及利用簡單的指令,能夠很方便地產(chǎn)生全中文的人機交互界面,可以顯示漢字,也可以顯示圖形。 液晶顯示模塊12864具有低電壓以及低功耗的特點。該液晶模塊同其它顯示圖形的點陣液晶模塊相比,具

12、有硬件電路簡單,顯示程序更簡潔等諸多優(yōu)點,并且該液晶顯示模塊價格較為便宜??梢圆捎脽崦綦娮鑱韺崿F(xiàn)溫度的測量,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對于檢測到的溫度的精確度不能夠得到保證。在本裝置中,要實現(xiàn)精度為0.1攝氏度溫度的車輛,采用熱敏電阻不嫩夠滿足求,故考慮采用數(shù)字溫度傳感器DS18B20。DS18B20 測量溫度,輸出信號全數(shù)字化,便于單片機處理及控制,單總線的數(shù)據(jù)傳輸,省去傳統(tǒng)的測溫方法的很多外圍電路,系統(tǒng)的結(jié)構(gòu)可以做得較為緊湊圖3 DS18B20 電路3.2.12864顯示內(nèi)部 第4章 軟件設(shè)計系統(tǒng)的軟件設(shè)計包括程序的下載和調(diào)試,需要用到ADS

13、集成開發(fā)環(huán)境和EASYJTAG-H仿真使用器。該仿真器是ARM公司開發(fā)出的標(biāo)準的20腳JTAG仿真的簡易仿真器,實現(xiàn)了全速,單步和斷點等調(diào)試功能,采用ADS1.2集成開發(fā)的RDI協(xié)議,支持在AXD中直接固話程序到片內(nèi)Flash。 EASYJTAG-H仿真器是符合ARM公司提出的標(biāo)準20腳JTAG仿真調(diào)試接口的簡易仿真器。該仿真器采用ADS1.2集成開發(fā)環(huán)境的RDI協(xié)議。實現(xiàn)了單步、全速及斷點等調(diào)試功能,此外支持在AXD中直接固化程序到片內(nèi)FLASH。H-JTAG 軟件具有如下特點:支持ARM7/ARM9,支持自動檢測和手動指定內(nèi)核; 使用RDI 接口,支持SDT2.51、ADS1.2、REAL

14、VIEW 和IAR 集成開發(fā)環(huán)境;支持2 個硬件斷點或數(shù)量不限的軟件斷點; 支持ARM/Thumb 模式; 支持Little Endian & BIG Endian 模式; 支持Semihosting 調(diào)試; 支持Wiggler、SDT JTAG 和自定義接口。將計算機并口與EASYJTAG-H仿真器連接,并將仿真器JTAG口接頭插入EasyARM2131開發(fā)板的J3,再使用USB連接電纜與PC連接給開發(fā)板供電。通過H-JTAG Serve和 H-Flasher兩個工具對仿真器進行配置就可以用AXD軟件進行調(diào)試了。硬件調(diào)試及結(jié)果分析。硬件調(diào)試:硬件調(diào)試時,應(yīng)先檢查印制板及焊接的質(zhì)量是否

15、符合要求,有無虛焊點及線路間有無短路、斷路。然后用萬用表測試或通電檢測,檢查無誤后,可通電檢查LCD液晶顯示器亮度情況,一般情況下取背光電壓為45.5V即可得到滿意的效果。采用編程器將程序?qū)懭雴纹瑱C,給電路板供電,觀察電路工作情況,再進行最終的處理。4.1軟件實現(xiàn)方框圖系統(tǒng)軟件采用C語言編程,程序詳情請參見附錄。程序的流程圖如下:第5章 心得在這次為期兩周課程設(shè)計的過程中,我深深的感觸到了團隊合作的重要性,尤其是在當(dāng)今的社會工作中,一個人的力量在一個巨大的任務(wù)前是那么的渺小,必須靠多人合作才能共同完成。在設(shè)計規(guī)劃過程,我們小組四個人親密無間的合作,使得本次課程設(shè)計能夠非常順利地完成,在課程設(shè)計

16、的過程中,每個人都能按要求很好的完成分配給自己的任務(wù),最后大家一起通過討論把所有任務(wù)串連起來完成總的設(shè)計任務(wù)。通過本次課程設(shè)計,讓我很好的鍛煉了理論聯(lián)系實際,與具體項目、課題相結(jié)合開發(fā)、設(shè)計產(chǎn)品的能力。既讓我們懂得了怎樣將理論應(yīng)用于實際,又讓我們懂得了在實踐中遇到的問題怎樣用理論去解決。在設(shè)計過程中,總是會遇到這樣或那樣的問題。有時一個問題可能會需要大家集體去查閱資料,做大量的工作,花大量的時間才能解決。通過不斷地發(fā)現(xiàn)問題,解決問題,自然而然,我的發(fā)現(xiàn)問題和解決問題的能力便在其中建立起來了。這都為以后的工作積累了經(jīng)驗,同時也增強了我們解決問題的能力。非常感謝老師的指導(dǎo),和同學(xué)的幫忙。通過做這次

17、ARM嵌入式實訓(xùn),我深深的體會到,專心投入去完成一件事情是多么讓人激動不已的,當(dāng)某個環(huán)節(jié)的問題被你解決后,那種成就感能帶給自己更大的信心和激發(fā)你對學(xué)習(xí)的熱情,可能這是大學(xué)最后一個課程設(shè)計的原因,我把大量的精力和激情都投入到這次實訓(xùn)中,所以在整個學(xué)習(xí)過程中,我解決了一些平時沒有碰到的問題,這更讓我對技術(shù)這個行業(yè)產(chǎn)生強烈的興趣,下面是我這三周的實訓(xùn)總結(jié)。三個星期的實訓(xùn)下來,付出了很大的努力,明白了很多東西,在軟件制作過程中,因為LPC2132與51單片機的I/O口使用上有著不小的區(qū)別,所以在對LPC2132的管腳定義上遇到了很多問題,重新查閱教材后才完全將其理解。在此,感謝在制作過程中幫過我們的老

18、師和同學(xué),感謝他們的幫助。經(jīng)過了這次實訓(xùn),更加激起了自己對嵌入式系統(tǒng)的興趣,對嵌入式系統(tǒng)的使用有了一定的了解,讓我看到了嵌入式系統(tǒng)強大的功能和在使用上的便利。而對于應(yīng)該如何使用LPC2132中的定時功能有了更為全面的認識。憑借個人能力也無法在短短兩個星期內(nèi)解決在本次實訓(xùn)中出現(xiàn)的問題。正是有了大家的幫助和關(guān)懷,我才能順利圓滿的完成此次實訓(xùn)任務(wù)。通過這三周的嵌入式系統(tǒng)設(shè)計實訓(xùn),我在理論的基礎(chǔ)上更深刻的掌握了智能電子的深層內(nèi)容及實際生活中的應(yīng)用,實訓(xùn)鍛煉了自己動手能力和思維能力,還有在軟件方面的編程能力,讓我受益匪淺,同時也暴露出一些平時學(xué)習(xí)上的問題,讓我深刻反思。這些問題的發(fā)現(xiàn)將為我以后的學(xué)習(xí)和工

19、作找明道路,查漏補缺為進一步學(xué)習(xí)作好準備。三周的課程設(shè)計,我們組的任務(wù)算是比較完美的完成,在預(yù)期的基本功能上拓展了我們自己的想法:擴大A/D轉(zhuǎn)換器的量程范圍,溫度的采集。此次的課設(shè)中,我們團隊從查資料,原理圖的繪制,硬件的焊接,軟件的編輯,到最后的成品,四個人都付出了自己的一份努力。我從最初對課題的不解,到成品運轉(zhuǎn),整個流程,學(xué)到了很多的東西,當(dāng)然,在設(shè)計的過程中遇到了很多問題,比如,焊接完成,在硬件檢測的時候,發(fā)現(xiàn)所需的電阻阻值與焊接上的電阻阻值不相符;在加拓展功能時,調(diào)試量程的誤差解決等等??偠灾?,在此次ARM的課程設(shè)計中,知識的增長有很多,因為我們學(xué)到的東西不夠深奧,所以要勤看課本,多

20、查資料,從基礎(chǔ)著手,一點一滴的積累,慢慢的應(yīng)用到不同的領(lǐng)域中。還有,團隊的互助,雖然有時候也會意見不統(tǒng)一,但我們的團隊很有包容性,大家都很為對方考慮,努力把課題做到大家都滿意的程度。在本次課程設(shè)計中,我最大的收獲就是,要懂得自己去動手,自己去思考,不管遇到什么問題,都要有自己的想法,就針對這次設(shè)計,我主要負責(zé)的軟件程序的編寫,由于ARM課學(xué)的不是特別好,自己對程序指令好多都不熟悉,所以好好的對課本上的知識再學(xué)習(xí)了一遍。編程的目的是要實現(xiàn)系統(tǒng)的功能,而這便是要求我們要對設(shè)計原理,思路要清晰。心里要清楚自己做的是什么東西,該如何做。關(guān)于軟件這塊,我還請教了許多學(xué)霸,從他們那里知道了自己的不足,這也

21、會使我對自己有了一個認識。驗收的時候,雖然對老師的提問回答的不是很好,而老師卻耐心的為我們講解了整個過程,以及操作流程。在這里我要特別的感謝老師。通過本次課程設(shè)計,我學(xué)會了好多,不管做什么事堅持就會取得成功,而合作也是必不可少的,感謝有這個機會。數(shù)據(jù)采集系統(tǒng)是將采集傳感器輸出的溫度等模擬信號轉(zhuǎn)換成計算機能識別的數(shù)字信號,我們組基于兩路電壓的采集之上擴展了A/D轉(zhuǎn)化器的測量范圍,以及溫度的采集,本次課程設(shè)計我主要負責(zé)軟件的編寫,因為軟件不是我的強項,剛開始也是無從下手,查資料,請教隔壁班級的同學(xué),讓他先給我講程序然后我再自己編寫,因為授人以魚不如授人以漁,慢慢的從中學(xué)到了很多,在后期的拓展功能,

22、也能稍微的得心應(yīng)手。兩周的時間,學(xué)到的東西很多,特別是此次軟件的編寫到功能的實現(xiàn),讓我明白一定要不懈努力,不能遇到問題就想到要退縮,不能知難而退,那樣永遠不可能得到自己期待的結(jié)果。通過本次設(shè)計,能使自己對所學(xué)知識有一個系統(tǒng)的認識和理解,而且也讓我對arm這門課有了更深的學(xué)習(xí),使自己的興趣大大提高,以后會多閱讀這方面的資料和書籍來提高自己的能力和經(jīng)驗。第6章 調(diào)試及實物照片:參考文獻:【1】周立功,ARM嵌入式系統(tǒng)基礎(chǔ)教程【M】北京航空航天大學(xué)出版社,2008.9【2】周明安,朱光忠,步進電機驅(qū)動技術(shù)發(fā)展及現(xiàn)狀【J】機電工程技術(shù),2005【3】許大中、賀益康,電機控制【M】杭州:浙江大學(xué)出版社,

23、2002【4】周立功、陳明計、陳渝,ARM嵌入式Linux系統(tǒng)構(gòu)建與驅(qū)動開發(fā)范例【M】: 北京航空航天大學(xué)出版社,2006 致謝值此論文完成之際,我要代表全組成員衷心的感謝給予我們關(guān)心和幫助的所有師長,同學(xué)和朋友們。而且,我們要特別感謝此次課程設(shè)計的李紅巖老師,在我們小組進行電路硬件和軟件設(shè)計的時候悉心的指導(dǎo)和無微不至的關(guān)懷給予了我們很大的幫助,是我們受益匪淺。他淵博的學(xué)識和平易近人的風(fēng)范、嚴謹?shù)闹螌W(xué)態(tài)度和以身作則的高貴品質(zhì),不斷激勵我們奮進,在這里我們小組全體成員在這表示誠摯的謝意!最后,感謝我的母校西安科技大學(xué)電氣與控制工程學(xué)院,希望她能越辦越強大,培養(yǎng)出更多的優(yōu)秀人才!附程序: LCD1

24、2864顯示程序:/* 文 件 名: main.c* 功 能: LCD12864顯示* * 說 明: LCD12864串行方式接線*/#include "config.h"#include "stdio.h"#define GPIOSET(PIN) IO0SET = PIN / 方便修改置位端口#define GPIOCLR(PIN)IO0CLR = PIN / 方便修改清位端口#define LCD_CON 0x00000250 / 液晶顯示控制字#define E_CLK (1<<4) /clock input 同步時鐘輸入端 P0.4

25、const uint32 RW_SID= (1<<6); /data input/output 串行數(shù)據(jù)輸入、輸出端P0.6 const uint32 CS = (1<<9); /P0.9unsigned char IC_DAT1 = "兩個黃鸝鳴翠柳"unsigned char IC_DAT2 = "一行白鷺上青天"unsigned char IC_DAT3 = "不知細葉誰裁出"unsigned char IC_DAT4 = "二月春風(fēng)似剪刀"/* 名稱:delay()* 功能:延時程序

26、*/void delay(uint32 dly)uint32 i;for ( ; dly>0; dly-)for (i=0; i<10; i+); /* 名稱:SeddByte()* 功能:發(fā)送1字節(jié)數(shù)據(jù)*/ void SendByte(uint8 data) uint8 i; IO0SET=CS; for(i=0;i<8;i+) IO0CLR=E_CLK ;delay(5);if(data&0x80)IO0SET=RW_SID;delay(5);else IO0CLR=RW_SID; IO0SET=E_CLK;delay(5); data=data<<1

27、; IO0CLR=CS; /* 名稱:ReceieveByte()* 功能:接收1字節(jié)數(shù)據(jù)*/ unsigned char ReceieveByte(void) uint8 i,d1,d2; for(i=0;i<8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d1+; d1=d1<<1; for(i=0;i<8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d2+; d2=d2<<1; return (d1&a

28、mp;0xF0+d2&0x0F); /* 名稱:SendCMD()* 功能:向LCD12864發(fā)送命令*/ void SendCMD(uint8 data) SendByte(0xF8); SendByte(data&0xF0); SendByte(data&0x0F)<<4); /* 名稱:SendData()* 功能:向LCD12864發(fā)送數(shù)據(jù)*/ void SendData(uint8 data) SendByte(0xFA); SendByte(data&0xF0); SendByte(data&0x0F)<<4); /*

29、 名稱:lcd_mesg()* 功能:在LCD12864上顯示漢字*/ void lcd_mesg(uint8 x_add, unsigned char * word) SendCMD(x_add); while(*word) SendData(*(word+); /* 名稱:initinal()* 功能:LCD12864字庫初始化*/ void initlcm(void) delay(200); SendCMD(0x30);/功能設(shè)置,一次送8位數(shù)據(jù),基本指令集 SendCMD(0x0C);/0000,1100 整體顯示,游標(biāo)off,游標(biāo)位置off SendCMD(0x01);/0000,0

30、001 清DDRAM SendCMD(0x02);/0000,0010 DDRAM地址歸位 SendCMD(0x80);/1000,0000 設(shè)定DDRAM 7位地址000,0000到地址計數(shù)器AC /* 名 稱:main()* 功 能:根據(jù)表DISP_TAB來控制LED顯示。*/int main(void)PINSEL0=0x00000000;PINSEL1=0X00000000;PINSEL2&=(0x00000006); /設(shè)置所有I/O口為GPIO口IO0DIR =LCD_CON;initlcm(); /12864初始化程序 lcd_mesg(0x80,IC_DAT1); /d

31、elay(100); lcd_mesg(0x90,IC_DAT2); /delay(100); lcd_mesg(0x88,IC_DAT3); /delay(100); lcd_mesg(0x98,IC_DAT4); 主程序:#include "config.h"#include "stdio.h"#define GPIOSET(PIN) IO0SET = PIN / 方便修改置位端口#define GPIOCLR(PIN)IO0CLR = PIN / 方便修改清位端口#define LCD_CON 0x00000250 / 液晶顯示控制字#define

32、 E_CLK (1<<4) /clock input 同步時鐘輸入端 P0.4const uint32 LED1 = (1 << 18);/ P1.18控制LED1,低電平點亮const uint32 LED2 = (1 << 19);/ P1.19控制LED2,低電平點亮const uint32 LED3 = (1 << 20);/ P1.20控制LED3,低電平點亮const uint32 LED4 = (1 << 21);/ P1.21控制LED4,低電平點亮const uint32 RW_SID= (1<<6);

33、/data input/output 串行數(shù)據(jù)輸入、輸出端P0.6 const uint32 CS = (1<<9); /P0.9unsigned char IC_DAT1 = "多通道數(shù)據(jù)采集" unsigned char IC_DAT2 ;unsigned char IC_DAT3 ;unsigned char IC_DAT4 ="超出量程燈閃爍"unsigned char IC_DAT5 ;/* * 函數(shù)名稱 :DelayNS()* 函數(shù)功能 :長軟件延時。* 入口參數(shù) :dly延時參數(shù),值越大,延時越久* 出口參數(shù) :無*void D

34、elayNS (uint32 dly)uint32 i;for ( ; dly>0; dly-)for (i=0; i<50000; i+);/* 名稱:delay()* 功能:延時程序*/void delay(uint32 dly)uint32 i;for ( ; dly>0; dly-)for (i=0; i<10; i+); /* 名稱:SeddByte()* 功能:發(fā)送1字節(jié)數(shù)據(jù)*/ void SendByte(uint8 data) uint8 i; IO0SET=CS; for(i=0;i<8;i+) IO0CLR=E_CLK ;delay(5);if

35、(data&0x80)IO0SET=RW_SID;delay(5);else IO0CLR=RW_SID; IO0SET=E_CLK;delay(5); data=data<<1; IO0CLR=CS; /* 名稱:ReceieveByte()* 功能:接收1字節(jié)數(shù)據(jù)*/ unsigned char ReceieveByte(void) uint8 i,d1,d2; for(i=0;i<8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d1+; d1=d1<<1; for(i=0;i

36、<8;i+) IO0CLR=E_CLK;delay(5); IO0SET=E_CLK;delay(5); if(RW_SID)d2+; d2=d2<<1; return (d1&0xF0+d2&0x0F); /* 名稱:SendCMD()* 功能:向LCD12864發(fā)送命令*/ void SendCMD(uint8 data) SendByte(0xF8); SendByte(data&0xF0); SendByte(data&0x0F)<<4); /* 名稱:SendData()* 功能:向LCD12864發(fā)送數(shù)據(jù)*/ void

37、SendData(uint8 data) SendByte(0xFA); SendByte(data&0xF0); SendByte(data&0x0F)<<4); /* 名稱:lcd_mesg()* 功能:在LCD12864上顯示漢字*/ void lcd_mesg(uint8 x_add, unsigned char * word) SendCMD(x_add); while(*word) SendData(*(word+); /* 名稱:initinal()* 功能:LCD12864字庫初始化*/ void initlcm(void) delay(200);

38、SendCMD(0x30);/功能設(shè)置,一次送8位數(shù)據(jù),基本指令集 SendCMD(0x0C);/0000,1100 整體顯示,游標(biāo)off,游標(biāo)位置off SendCMD(0x01);/0000,0001 清DDRAM SendCMD(0x02);/0000,0010 DDRAM地址歸位 SendCMD(0x80);/1000,0000 設(shè)定DDRAM 7位地址000,0000到地址計數(shù)器AC int main (void)char data3;char data4;char data5; char temperdata;uint32 ADC_Data;PINSEL0=0x00000000;P

39、INSEL1=0X00000000;PINSEL2&=(0x00000006); /設(shè)置所有I/O口為GPIO口IO0DIR =LCD_CON;initlcm(); /12864初始化程序 delay(100);PINSEL0 = 0x00000005;/ 管腳連接串口while (1)PINSEL1 = 1 << 28;/ P0.30連接到AD0.3 AD0CR = (1 << 3)|/ SEL=8,選擇通道3(Fpclk / 1000000 - 1) << 8)|/ CLKDIV=Fpclk/1000000-1,轉(zhuǎn)換時鐘為1MHz(0 <&

40、lt; 16)|/ BURST=0,軟件控制轉(zhuǎn)換操作(0 << 17)|/ CLKS=0, 使用11clock轉(zhuǎn)換(1 << 21)| / PDN=1,正常工作模式(0 << 22)| / TEST1:0=00,正常工作模式(1 << 24)|/ START=1,直接啟動ADC轉(zhuǎn)換(0 << 27); / 直接啟動ADC轉(zhuǎn)換時,此位無效ADC_Data = AD0DR;/ 讀取ADC結(jié)果,并清除DONE標(biāo)志位AD0CR |= 1 << 24;/ 進行第一次轉(zhuǎn)換while (ADDR & 0x80000000) =

41、0);/ 等待轉(zhuǎn)換結(jié)束AD0CR |= 1 << 24;/ 再次啟動轉(zhuǎn)換while (AD0DR & 0x80000000) = 0);/ 等待轉(zhuǎn)換結(jié)束ADC_Data = AD0DR;/ 讀取ADC結(jié)果ADC_Data = (ADC_Data >> 6) & 0x3ff; if(ADC_Data<50)PINSEL1 = 0x00000000;/ 設(shè)置管腳連接GPIOPINSEL2 = PINSEL2 & (0x08);/ P125:16連接GPIOIO1DIR = LED1;/ 設(shè)置LED1控制口為輸出while (1)IO1SET =

42、 LED1;/ LED1熄滅DelayNS(50);IO1CLR = LED1;/ LED1點亮DelayNS(50);lcd_mesg(0x88,IC_DAT4);if(ADC_Data>=1000)PINSEL1 = 0x00000000;/ 設(shè)置管腳連接GPIOPINSEL2 = PINSEL2 & (0x08);/ P125:16連接GPIOIO1DIR = LED1;/ 設(shè)置LED1控制口為輸出while (1)IO1SET = LED2;/ LED2熄滅DelayNS(50);IO1CLR = LED2;/ LED2點亮DelayNS(50);lcd_mesg(0x8

43、8,IC_DAT4);ADC_Data = ADC_Data * 2480;/ 參考電壓經(jīng)過3/4分壓ADC_Data = ADC_Data / 1024;IC_DAT20=' 'IC_DAT21=' 'IC_DAT22='U'IC_DAT23='1'IC_DAT24=':'IC_DAT25=ADC_Data/1000+0x30;IC_DAT26='.'IC_DAT27=ADC_Data%1000/100+0x30;IC_DAT28=ADC_Data%1000%100/10+0x30;IC_DAT2

44、9='v'IC_DAT210='0'lcd_mesg(0x80,IC_DAT1);lcd_mesg(0x90,IC_DAT2); AD0CR = (0<< 24);PINSEL1 = 1 << 26;AD0CR = (1 << 2)|/ SEL=8,選擇通道2 (Fpclk / 1000000 - 1) << 8)|/ CLKDIV=Fpclk/1000000-1,轉(zhuǎn)換時鐘為1MHz (0 << 16)|/ BURST=0,軟件控制轉(zhuǎn)換操作 (0 << 17)|/ CLKS=0, 使用11clock轉(zhuǎn)換 (1 << 21)| / PDN=1,正,常工作模式 (0 << 22)| / TEST1:0=00,正常工作模式 (1 << 24)|/ START=1,直接啟動ADC轉(zhuǎn)換 (0 << 27); / 直接啟動ADC轉(zhuǎn)換時,此位無效 ADC_Data = AD0DR;/ 讀取ADC結(jié)果,并清除DONE標(biāo)志位AD0CR |= 1 <

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論