基于STC15單片機的智能流量計_第1頁
基于STC15單片機的智能流量計_第2頁
基于STC15單片機的智能流量計_第3頁
基于STC15單片機的智能流量計_第4頁
基于STC15單片機的智能流量計_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上智能流量計設(shè)計制作與調(diào)試說明書電子1411班姓 名:龔亞輝學(xué) 號:12016年12月08日專心-專注-專業(yè)目 錄1. 緒 論1.1(智能)流量計的發(fā)展現(xiàn)狀隨著儀器儀表和信息管理的高度自動化,以計算機為核心的信息處理與過程控制相結(jié)合的智能儀器系統(tǒng)應(yīng)運而生。智能儀器是計算機技術(shù)與測試技術(shù)相結(jié)合的產(chǎn)物,是含有微計算機或微處理器的測量儀器。由于他擁有對數(shù)據(jù)的存儲、運算、邏輯判斷和自動化操作等功能,具有一定的智能作用,因而被稱為智能儀器。智能儀器的出現(xiàn),極大地擴充了傳統(tǒng)儀器的應(yīng)用范圍。智能儀器憑借其體積小、功能強、功耗低等優(yōu)勢,迅速地在家用電器、科研單位和工業(yè)企業(yè)中得到了廣泛的

2、應(yīng)用。 行業(yè)中涉及產(chǎn)品很多,從技術(shù)的發(fā)展形式來看,儀器儀表的智能化是不可逆轉(zhuǎn)的趨勢,數(shù)字技術(shù)應(yīng)用在儀表之中,不僅僅使它的性能以及精度得到了很快的提升,然而伴隨著現(xiàn)場總線的出現(xiàn)為儀表的更新?lián)Q代及升級實現(xiàn)了進一步的提高。特別是多參數(shù)的在線實時測控和自動化測控,不論是穩(wěn)定性、可靠性,還是高適應(yīng)性、多功能性及低消耗等等提供了巨大的發(fā)展空間和動力。讓智能儀表的信息交換更為迅速。1.2本次設(shè)計主要任務(wù)本次課程設(shè)計中以智能儀表為背景,將研究設(shè)計并制作一臺智能流量計,主要研究內(nèi)容是對流量進行檢測,主要由流量傳感器采集流量信息,然后經(jīng)過LM331芯片將采集的信息轉(zhuǎn)換為頻率信號,再由單片機內(nèi)部AD轉(zhuǎn)換器將頻率信號

3、轉(zhuǎn)換為電壓信號傳給單片機,單片機在軟件系統(tǒng)的控制下,通過算法將電壓信號變成實際流量值,并通過OLED屏顯示出來。其中,硬件電路的搭接是本設(shè)計的重點,控制系統(tǒng)軟件的設(shè)計是本課題的核心。硬件電路部分,采用STC15單片機,CH40、LM331、LM358等構(gòu)成單片機控制系統(tǒng)的主體部分。通過脈沖流量傳感器,溫度傳感器進行輸入,測量瞬時流量和累計流量。一些其他的功能,如設(shè)置參數(shù),OLED顯示,定時休屏等功能。系統(tǒng)軟件設(shè)計部分,分別對AD轉(zhuǎn)換控制,OLED顯示,按鍵設(shè)置,休屏鍵等程序進行了設(shè)計,并且設(shè)計了主程序和流量控制計算程序。2.智能流量計硬件設(shè)計2.1系統(tǒng)總體設(shè)計為了適應(yīng)現(xiàn)代對儀表功能的需求,可以

4、智能化的檢測水流量,并且實時在屏幕上動態(tài)顯示數(shù)據(jù)的目的,因此我們設(shè)計利用了STC15單片機來完成。這個系統(tǒng)可以實現(xiàn)瞬時流量的檢測,還有累計流量,溫度的檢測。當(dāng)單片機接受到水流量發(fā)出的信號,STC15單片機就會下達(dá)指令。水流量的情況傳輸?shù)絺鞲衅髦?,通過STC15單片機進行處理掃描到的水流量脈沖數(shù),然后在OLED上顯示出水流量的數(shù)據(jù)。本方案利用Keilc軟件使用C語言進行程序設(shè)計,Altium Designer軟件實現(xiàn)電路和PCB的設(shè)計。STC15單片機流量處理電路按鍵電路溫度處理電路下載電路電源電路OLED顯示 2.2電源電路設(shè)計 此系統(tǒng)可以通過三種方式分別供電,一種是有USB端口連接上位機直接

5、通電5V電源,另外一種則是采用外部4.8v10v供電,通過REG1117-5芯片轉(zhuǎn)換為穩(wěn)定的5V電源給系統(tǒng)供電,還有一種則是通過干電池作為系統(tǒng)的備用電源,在沒有外接電源時使用。電路中有5V供電后,再由正向低壓降穩(wěn)壓器AMS1117-3.3將5V電源轉(zhuǎn)為3.3V給相應(yīng)的電路供電。電路圖如下。2.3主控電路設(shè)計單片機是把微處理器、存儲器、I/O接口。定時器/計數(shù)器、串行接口、中斷系統(tǒng)和其它電路組合在單個芯片組合完成的單片計算機,單片機作為微型計算機的一個分支,是基于測控領(lǐng)域的發(fā)展而誕生和發(fā)展的。在我國使用最多的是Intel公司的C51系列單片機。而本次電路我們使用了STC15F2K60S2單片機,

6、這款單片機不需要外部晶振和外部復(fù)位電路,可省掉外部EEPROM,利用IAP/ISP技術(shù),可以實現(xiàn)在線編程,無需編程器/仿真器,內(nèi)部有2K字節(jié)SRAM,雙串口,兩個獨立串口,高速10位8通道A/D轉(zhuǎn)換器等豐富的功能。它與C51相比,STC15F2K61S2其優(yōu)點是,省去晶振、復(fù)位電路,內(nèi)部以高可靠,高精度集成了,這個非常實用,做板的時候能很簡潔,也省了很多事情,再也不用為了更換晶振什么的發(fā)愁。對于此次課題設(shè)計來使用,它的外設(shè)比較豐富,在線仿真ADC/DAC/PWM/E2PROM等基本滿足智能流量計功能的需求。2.4流量檢測電路設(shè)計流量檢測部分采用水流量傳感器,如圖1所示,它的組成部分塑料閥體 、

7、水流轉(zhuǎn)子組件和霍爾傳感器組成。它裝在熱水器進水端,用于檢測進水流量,當(dāng)水通過水流轉(zhuǎn)子組件時,磁性轉(zhuǎn)子轉(zhuǎn)動并且轉(zhuǎn)速隨著流量變化而變化,霍爾傳感器輸出相應(yīng)脈沖信號,反饋給LM331芯片,這款芯片是由美國NS公司生產(chǎn)的性能價格比較高的集成芯片,精密頻率電壓轉(zhuǎn)換器 ,就是由它將水流量傳感器輸出的脈沖值由于頻率轉(zhuǎn)換為模擬量電壓值,反饋給STC15F2K61S2芯片內(nèi)部ADC轉(zhuǎn)換器,然后通過算法求出單位流量并顯示在OLED屏上。課題任務(wù)中最重要的是水流量的測量。通過水流量傳感器的數(shù)據(jù)采集,根據(jù)不同的水流量傳感器的參數(shù)可以得出單片機在運算時的數(shù)據(jù)。水流量傳感器一般在零下10攝氏度到55攝氏度的環(huán)境溫度下可正

8、常運行。在電路和傳感器正常工作的情況下,我們根據(jù)LM331芯片和水流量傳感器提供的技術(shù)文檔得出了以下兩個核心算法,這個也是我們整個電路能否實現(xiàn)正常測量的關(guān)鍵部分。1.f0=1/(t1+t2)=VL/(RLIRt1)2.頻率計算=常數(shù)7.5*單位流量(L/min)*時間(秒) 圖(1).流量傳感器 2.5按鍵與顯示電路設(shè)計為了實現(xiàn)水流量計的智能化,還有對減少電能的消耗增加使用壽命,在電路中我們增加了三個按鍵,分別用于控制OLED屏幕的點亮和休屏、進入設(shè)置模式,對參數(shù)進行修改。對于OLED屏幕的控制我們采用1min鐘自動息屏,同時可以用按鍵喚醒,在屏幕亮的過程中也可以通過按鍵進行息屏,自動息屏的時

9、間通過按鍵進入設(shè)置模式進行修改,休屏?xí)r間范圍在19分鐘之間。當(dāng)然,通過進入設(shè)置模式還可以設(shè)置儀表常數(shù)、儀表編號,在實際產(chǎn)品出廠的時候可以得到應(yīng)用。顯示電路我們采用0.96寸OLED顯示屏模塊,OLED由于同時具備自發(fā)光,不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。這款分辨率為128*64,與單片機通訊采用SPI通訊。SPI通訊由串行時鐘(SCLK)、串行數(shù)據(jù)輸出(SDO)、串行數(shù)據(jù)輸入(SDI)。SPI總線可以實現(xiàn)多個SPI設(shè)備互相連接。提供SPI串行時鐘的SPI設(shè)備為SPI主機或主設(shè)

10、備(Master),其他設(shè)備為SPI從機或從設(shè)備(Slave)。主從設(shè)備間可以實現(xiàn)全雙工通信,當(dāng)有多個從設(shè)備時,還可以增加一條從設(shè)備選擇線。SPI通訊相當(dāng)于I2C和UART而言實現(xiàn)簡單,有時鐘協(xié)議。3.智能流量計軟件設(shè)計3.1 程序結(jié)構(gòu)說明軟件總的設(shè)計要求需要OLED顯示瞬時流量、累計流量及其溫度,并且能在設(shè)置中設(shè)置相關(guān)參數(shù),調(diào)整息屏?xí)r間。水流量的測量為0.25秒讀取一個流量值。OLED屏開機在第一行顯示瞬時流量、第二行為累計流量、第三行為溫度,在無按鍵操作的話默認(rèn)1分鐘后息屏。設(shè)置界面由按鍵控制。進去設(shè)置界面后屏幕不需息屏,其中的參數(shù)值則通過另一個按鍵控制。整個程序中結(jié)構(gòu)較為簡單,但其中也有

11、幾個重要而且比較費腦筋的子程序,包括水測量程序、水流量數(shù)據(jù)的計算與轉(zhuǎn)換、溫度數(shù)據(jù)轉(zhuǎn)換等程序。在程序中可以分為4個主要模塊:水流量模塊,溫度模塊,OLED顯示模塊,設(shè)置模塊。如圖為總體流程圖。系統(tǒng)初始化流量測量溫度測量息屏?xí)r間判斷YNK3鎖屏鍵操作屏幕常亮屏幕息屏按鍵判斷無按鍵操作K2按鍵操作K1按鍵設(shè)置程序顯示測量數(shù)值界面顯示設(shè)置界面3.2 OLED顯示程序設(shè)計本課題采用的是STC15單片機為控制核心,由中景園電子提供的0.96寸OLED模塊為顯示輸出設(shè)備,如圖2所示,在Keil環(huán)境下編寫OLED顯示模塊驅(qū)動程序,并下載Hex文件至單片機,從而實現(xiàn)OLED顯示系統(tǒng)設(shè)計。由于所采用的OLED不帶

12、字庫,因此無論是顯示圖形還是顯示漢字,均需通過取模軟件進行編碼,然后按SPI協(xié)議,將對應(yīng)的編碼按照所確定的地址模式寫入對應(yīng)的CDDRAM中。系統(tǒng)初始化OLED初始化OLED清屏調(diào)用顯示字符OLED顯示圖(2).0.96寸OLED屏3.3 A/D轉(zhuǎn)換程序設(shè)計本次課題我們采用的是STC15單片機,此款單片機內(nèi)置有高速10位8通道A/D轉(zhuǎn)換器,它就是把模擬信號轉(zhuǎn)換成數(shù)字信號,采用逐次逼近型進行轉(zhuǎn)換。我們將選用P1.4、P1.5為流量傳感器和溫度傳感器的模擬量輸入端,其中流量傳感器先由LM331轉(zhuǎn)換為電壓信號,單片機的內(nèi)部ADC轉(zhuǎn)換器再將其由電壓信號轉(zhuǎn)換為數(shù)字量進行計算得出實際流量值,而溫度傳感器的轉(zhuǎn)

13、換就相對比較簡單,通過電橋電路和LM358芯片輸入一個模擬量電壓,再由單片機進行AD轉(zhuǎn)換為為數(shù)字量進行計算。下圖為AD轉(zhuǎn)換的程序框圖系統(tǒng)初始化選擇通道,允許AD轉(zhuǎn)換讀取溫度傳感器輸入電壓讀取LM331輸入電壓讀取寄存器參數(shù)N轉(zhuǎn)換是否結(jié)束Y讀取轉(zhuǎn)換值數(shù)據(jù)處理3.4 流量運算程序設(shè)計我們這次使用的水流量傳感器也可以稱為脈沖流量傳感器,內(nèi)部核心實質(zhì)上是一對霍爾元件,通過當(dāng)水通過水流轉(zhuǎn)子組件時,磁性轉(zhuǎn)子轉(zhuǎn)動并且轉(zhuǎn)速隨著流量變化而變化,霍爾傳感器輸出相應(yīng)脈沖信號,反饋給控制器。通過流量傳感器的技術(shù)文檔我們可知,此款傳感器輸出的脈沖頻率與實際流量值的關(guān)系為 “頻率=常數(shù)7.5*單位流量(L/min)*時間

14、(秒)”。而我們電路中采用的是先將頻率轉(zhuǎn)換為模擬量電壓值,此過程是由LM331芯片完成,這款芯片是美國NS公司生產(chǎn)的性能價格比較高的集成芯片,可用作精密頻率電壓轉(zhuǎn)換器,通過查閱資料我們可知輸入芯片和輸出電壓值的關(guān)系量為“f0=1/(t1+t2)=VL/(RLIRt1)”,從它的公式不難看出輸出電壓的精準(zhǔn)度與芯片外部電路有很大關(guān)系,所以在硬件設(shè)計上要很仔細(xì)。通過這兩個算法得出的實際流量值,我們使用定時器0.25秒讀取一個值,再將這個值除以240得到每秒的流量值,通過累加便實現(xiàn)了累計流量的功能。下圖為流量運算程序框圖讀取AD轉(zhuǎn)換值計算瞬時流量值計算溫度值系統(tǒng)初始化計算累計流量值4.電路制作調(diào)試4.

15、1電路制作與調(diào)試本次硬件設(shè)計我們使用的是Altium Designer16軟件進行設(shè)計,并對PCB板進行排版。在這個過程中的重點難點在與硬件電路的設(shè)計,各個芯片的外部電路的搭建,還有在進行PCB排版是每個元器件的封裝的繪制。在電路設(shè)計初期我們首先需要知道電路所需要實現(xiàn)的功能,然后根據(jù)功能去選擇相對適合的單片機,以及實現(xiàn)各功能所需要使用的傳感器及其芯片。對電路需要有大致的設(shè)計框架,然后查找每個芯片典型的外部電路,并在此基礎(chǔ)上加以改進。在對PCB排版時,我們需要注意的是每個元器件的封裝尺寸,都要去網(wǎng)上查閱資料,防止在焊接時才發(fā)現(xiàn)封裝不對,而導(dǎo)致無法焊接或焊接困難,這個部分也是PCB排版中很重要的一

16、部分。當(dāng)然還要注意的是每個元器件放置的位置要根據(jù)實際情況進行安排,如USB口、電源接口需要放置在板子邊緣等。在完成PCB的排版和制作后,接下來的就是焊接,這里我們將使用的是電烙鐵,在這個步驟中特別需要注意,元器件不要焊錯正反、焊點不要虛焊,對于芯片不宜焊接時間過長,以免燙燒芯片等。在調(diào)試部分我們采用分塊調(diào)試法,分布調(diào)試就是把總體電路按功能分成若干個模塊,對每個模塊分別進行調(diào)試。模塊的調(diào)試順序是按信號的流向,一塊一塊地進行,逐步擴大調(diào)試范圍,最后完成總調(diào)。實施分塊調(diào)試法有兩種方式,一種是邊安裝邊調(diào)試,即按信號流向組裝一模塊就調(diào)試一模塊,然后再繼續(xù)組裝其他模塊。另一種是總體電路一次組裝完畢后,再分

17、塊調(diào)試。4.2程序調(diào)試在這次課程設(shè)計中,我們首先對系統(tǒng)的整體功能進行了構(gòu)思,然后用結(jié)構(gòu)化分析方法進行分析,將整個系統(tǒng)清楚的劃分為幾個模塊,再根據(jù)每個模塊的功能編寫。代碼。而且盡可能的將模塊細(xì)分,最后在進行函數(shù)的調(diào)用。我們在函數(shù)的編寫過程中,我們不僅用到了for循環(huán)、while循環(huán),還用到了函數(shù)之間的調(diào)用。由于是分工編寫代碼,所以顯示程序,AD程序,設(shè)置程序等都是子程序,最后需要將每個子程序代碼放到一起進行調(diào)試。整個過程中我們使用的是KEIL4,進行編程。當(dāng)然程序不是一次性就可以完成的,需要一個功能一個功能的調(diào)試?yán)奂樱紫任覀兿染帉懙氖荗LED顯示程序,在保證OLED正常顯示的前提下,對于AD程

18、序進行編寫,讓流量和溫度正常顯示在OLED上,之后就是對設(shè)置模式的編寫,足步往下,步步深入。在每次編寫好之后都要生成HEX 文件,把得到HEX 文件就可以下載到STC15 中了。這里要簡單的說下,打開下載軟件后,在打開的對話框里選擇好單片機的型號即IAP15F2K61S2,接下來將STC 系統(tǒng)板和電腦用USB 連接,選擇好端口和波特率,因為我們的板子有冷啟動,所以直接點擊下載即可。5.總結(jié)實訓(xùn)是每一位大學(xué)生必須擁有的一段經(jīng)歷,它使我們在實踐中增強專業(yè)技能,讓我們學(xué)到了很多在課堂上根本就學(xué)不到的知識,增長了操作能力,把理論和實踐結(jié)合,讓我們以后更好地服務(wù)社會打下了堅實的基礎(chǔ)。在這3周的實訓(xùn)中,雖

19、然實習(xí)的時間很短,但對我來說,收獲是很大的。這次實訓(xùn)讓我深深地感覺到自己所學(xué)知識儲備的不足,我們在學(xué)校學(xué)習(xí)的是理論上的東西,但是在實際設(shè)計實物的時候,實踐和經(jīng)驗就顯得更為重要,只有掌握更多實用的技能,積累更多的工作經(jīng)驗,才能提高工作效率與質(zhì)量。在做這次設(shè)計時,我還通過互聯(lián)網(wǎng)參考了許許多多出色的設(shè)計者分享的經(jīng)驗,學(xué)以致用,把好的經(jīng)驗吸取到我的設(shè)計中來使用。通過這次設(shè)計,更加加深了我在大學(xué)三年當(dāng)中學(xué)到的軟件和硬件概念的理解,對我的專業(yè)知識也進行了一次鞏固和加深印象,同時也加深了我在實際研究問題的能力。這在我以后的學(xué)習(xí)生活中也會有很大的作用,使我深深的意識到,做事必須老老實實,一步一個腳印,抓好基礎(chǔ)

20、,研究好理論的重要性。這次設(shè)計是用C語言來編寫的程序。在編寫的過程當(dāng)中,我通過學(xué)習(xí)互聯(lián)網(wǎng)的許多資料,對整體的程序完成了一個完整的計劃,遇到錯誤的地方及時更正,通過不斷努力達(dá)到設(shè)計的要求。在這一過程中遇到了些問題,比如存儲空間如何節(jié)省,這就要求自己對各個芯片元件的掌握程度要很高,通過不懈的學(xué)習(xí),最終完成了程序的設(shè)計。這也是一個鍛煉的過程。附錄一 電路原理圖附錄二 印刷電路板圖附錄三 電路成品圖 附錄四 實現(xiàn)功能演示附錄五 程序清單主程序/*/#include stc15.h#include oled.h#include bmp.h#include xiumian.h#include Set.h#

21、include AD.hunsigned char z;unsigned int leiji00;unsigned int yx1;void xiumiansj() g=xiumianshijian*60;void liangmiao() if(q=5) q=0; z=(j*)/(/18); leiji00=(z*10000/240)+leiji00; void yunxing() if(yx=60) yx=0; if(+yx1=24) yx=0; int main(void) u8 t; OLED_Init();/初始化OLED OLED_Clear() ; t= ; dingshichu(

22、); OLED_DrawBMP(0,0,128,8,BMP1); delay_ms(600); OLED_Clear();while(1) shezhianjian(); /設(shè)置按鍵判斷 /OLED_Clear(); if(c=0) OLED_Clear(); while(c=0)shezhianjian(); /設(shè)置按鍵判斷 anjian(); /熄屏按鍵判斷 xiumiansj(); /休眠時間pingmu(); /點亮關(guān)閉屏幕判斷AD(); /AD轉(zhuǎn)換yunxing(); /運行時間liangmiao(); /休眠子程序 OLED_ShowCHinese(0,0,0);/瞬OLED_Sh

23、owCHinese(18,0,1);/時OLED_ShowCHinese(36,0,2);/流OLED_ShowCHinese(54,0,3);/量 /兩個字符間加18OLED_ShowString(72,0,:);/: /兩列之間加2 OLED_ShowNum(80,0,z/10,1,16); OLED_ShowString(91,0,.) ; OLED_ShowNum(94,0,z%10,1,16);OLED_ShowString(114,0,L); OLED_ShowCHinese(0,2,4);/累OLED_ShowCHinese(18,2,5);/計OLED_ShowCHinese(

24、36,2,6);/流OLED_ShowCHinese(54,2,7);/量OLED_ShowString(72,2,:);/:OLED_ShowNum(80,2,leiji00/,1,16); / 起點坐標(biāo)x,起點坐標(biāo)y, 數(shù)值,數(shù)字的位數(shù) ,字體大小OLED_ShowNum(88,2,leiji00/10000%10,1,16); OLED_ShowString(100,2,.) ; OLED_ShowNum(105,2,leiji00/1000%10,1,16);OLED_ShowString(114,2,L); OLED_ShowCHinese(0,4,8);/溫OLED_ShowCHi

25、nese(18,4,9);/度OLED_ShowString (36,4,:);/:OLED_ShowNum(80,4,1,1,16);OLED_ShowNum(88,4,3,1,16); OLED_ShowString(96,4,.) ; OLED_ShowNum(101,4,4,1,16); OLED_ShowCHinese(110,4,10);/OLED_ShowCHinese(0,6,28);/運OLED_ShowCHinese(18,6,29);/行OLED_ShowCHinese(36,6,17);/時OLED_ShowCHinese(54,6,18);/間OLED_ShowStr

26、ing(72,6,:);/:OLED_ShowNum(80,6,yx1/10,1,16);OLED_ShowNum(88,6,yx1%10,1,16);OLED_ShowString(100,6,:) ; OLED_ShowNum(108,6,yx/10,1,16);OLED_ShowNum(116,6,yx%10,1,16); else OLED_Clear();while(c=1 | c=2 | c=3 ) /設(shè)置按鍵判斷 shezhianjian(); shezhixianshi(); /設(shè)置屏幕顯示 OLED顯示初始化子程序/*/#include stc15.h#ifndef _OLE

27、D_H#define _OLED_H #define u8 unsigned char #define u32 unsigned int #define OLED_CMD 0/寫命令#define OLED_DATA 1/寫數(shù)據(jù)#define OLED_MODE 0sbit OLED_CS=P23; /片選sbit OLED_RST =P25;/復(fù)位sbit OLED_DC =P24;/數(shù)據(jù)/命令控制sbit OLED_SCL=P27;/時鐘 D0(SCLK?sbit OLED_SDIN=P26;/D1(MOSI) 數(shù)據(jù)#define OLED_CS_Clr() OLED_CS=0#defin

28、e OLED_CS_Set() OLED_CS=1#define OLED_RST_Clr() OLED_RST=0#define OLED_RST_Set() OLED_RST=1#define OLED_DC_Clr() OLED_DC=0#define OLED_DC_Set() OLED_DC=1#define OLED_SCLK_Clr() OLED_SCL=0#define OLED_SCLK_Set() OLED_SCL=1#define OLED_SDIN_Clr() OLED_SDIN=0#define OLED_SDIN_Set() OLED_SDIN=1;/OLED模式設(shè)

29、置/0:4線串行模式/1:并行8080模式#define SIZE 16#define XLevelL0x02#define XLevelH0x10#define Max_Column128#define Max_Row64#defineBrightness0xFF #define X_WIDTH 128#define Y_WIDTH 64 /-OLED端口定義- void delay_ms(unsigned int ms); /OLED控制用函數(shù)void OLED_WR_Byte(u8 dat,u8 cmd); void OLED_Display_On(void);void OLED_Dis

30、play_Off(void); void OLED_Init(void);void OLED_Clear(void);void OLED_DrawPoint(u8 x,u8 y,u8 t);void OLED_Fill(u8 x1,u8 y1,u8 x2,u8 y2,u8 dot);void OLED_ShowChar(u8 x,u8 y,u8 chr);void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size2);void OLED_ShowString(u8 x,u8 y, u8 *p); void OLED_Set_Pos(unsigned c

31、har x, unsigned char y);void OLED_ShowCHinese(u8 x,u8 y,u8 no);void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP);#endif圖片庫程序/*/#ifndef _BMP_H#define _BMP_Hunsigned char code BMP1 =0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

32、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

33、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

34、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0F,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x3F,0x7F,0xFF,0xFF,0x7

35、F,0x7F,0x47,0x0F,0x7F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x0F,0x0F,0x07,0x07,0x47,0x07,0x0F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x0F,0x1F,0x7F,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

36、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0x63,0x11,0x01,0x00,0xC0,0xD8,0x03,0x01,0xF1,0xF9,0x00,0x00,0xF9,0xFF,0xFF,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0x01,0x19,0x24,0x00,0x00,0x00,0x32,0x1C,0x00,0x80,0xF8,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

37、F,0x07,0xC7,0xFE,0x3E,0x0E,0xEE,0x24,0xE0,0x20,0x20,0xE2,0x12,0x90,0xE2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xF3,0xF3,0xF3,0x8B,0x01,0x40,0x00,0x00,0x00,0x00,0x01,0x81,0xE1,0xF9,0xF8,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xE3,0x03,0x03,0xE3,0x7F,0x37,0xE3,0xE3,0xE3,0xE3,0x00,0x00,0xE0,0xF

38、1,0xF1,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFC,0xFE,0xFF,0xF0,0xE0,0xF9,0xFC,0xFC,0xFE,0xFF,0xFF,0xFE,0xFC,0xF9,0xF3,0xF3,0xF0,0xF0,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF8,0xF1,0xF3,0xE3,0xE3,0xE3,0xE3,0xF

39、3,0xF1,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF1,0xF0,0xFC,0xF7,0xF1,0xF8,0xFF,0xF8,0xFC,0xFF,0xF0,0xE7,0xE7,0xE7,0xE7,0xE0,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xCF,0xE9,0xE0,0xE0,0xE0,0xE0,0xE4,0xE4,0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF0,0xF8,0xFC,0xF

40、F,0xFF,0xFF,0xFF,0xFF,0xC0,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

41、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x1F,0x1F,0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0x1F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

42、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

43、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x18,0x1C,0x1E,0x9F,0x9F,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xF8,0x00,0x00,0x01,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

44、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

45、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF8,0xF0,0xE0,0xC0,0xC3,0xC7,0x87,0x8F,0x8F,0x87,0x87,0xC3,0xC3,0xE0,0xF0,0xF8,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

46、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

47、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

48、F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;#enif自動休眠和喚醒子程序/*/#ifndef _xiumian_H#define

49、 _xiumian_H#include stc15.h#include oled.hsbit k1=P46;unsigned int i;unsigned int g;unsigned int q;bit k=1;bit b=1;unsigned int miao=0;unsigned int yx;void anjian() if(k1 = 0) /低電平有效 delay_ms(80); /檢測到按鍵 if(k1 = 0) while(k1); /直到松開按鍵 k=k; b=b; void pingmu() if(k=1 & b=1) /判斷是否在關(guān)屏?xí)r喚醒 OLED_Display_On();TR1=1; /開啟屏幕,同時開啟定時器else if (k=0 | b=0) /判斷是否在點亮是關(guān)屏 OLED_Display_Off();miao=0;TR1=0;b=0;k=0; /關(guān)閉屏幕,同時關(guān)閉定時器,清零標(biāo)記位 void timer_1() interrupt 3 TL1 = 0xB0; /設(shè)置定時初值 TH1 = 0x3C; /設(shè)置定時初值i+;q+; if(i=20 ) i=0; miao+; yx+; if(miao=g)/休眠時間 miao=0; b=0; void dingshichu()TMOD = 0x10;/設(shè)置定時器模式TL1 = 0xB0;/

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論