




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上智能流量計(jì)設(shè)計(jì)制作與調(diào)試說明書電子1411班姓 名:龔亞輝學(xué) 號:12016年12月08日專心-專注-專業(yè)目 錄1. 緒 論1.1(智能)流量計(jì)的發(fā)展現(xiàn)狀隨著儀器儀表和信息管理的高度自動(dòng)化,以計(jì)算機(jī)為核心的信息處理與過程控制相結(jié)合的智能儀器系統(tǒng)應(yīng)運(yùn)而生。智能儀器是計(jì)算機(jī)技術(shù)與測試技術(shù)相結(jié)合的產(chǎn)物,是含有微計(jì)算機(jī)或微處理器的測量儀器。由于他擁有對數(shù)據(jù)的存儲(chǔ)、運(yùn)算、邏輯判斷和自動(dòng)化操作等功能,具有一定的智能作用,因而被稱為智能儀器。智能儀器的出現(xiàn),極大地?cái)U(kuò)充了傳統(tǒng)儀器的應(yīng)用范圍。智能儀器憑借其體積小、功能強(qiá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代及升級實(shí)現(xiàn)了進(jìn)一步的提高。特別是多參數(shù)的在線實(shí)時(shí)測控和自動(dòng)化測控,不論是穩(wěn)定性、可靠性,還是高適應(yīng)性、多功能性及低消耗等等提供了巨大的發(fā)展空間和動(dòng)力。讓智能儀表的信息交換更為迅速。1.2本次設(shè)計(jì)主要任務(wù)本次課程設(shè)計(jì)中以智能儀表為背景,將研究設(shè)計(jì)并制作一臺智能流量計(jì),主要研究內(nèi)容是對流量進(jìn)行檢測,主要由流量傳感器采集流量信息,然后經(jīng)過LM331芯片將采集的信息轉(zhuǎn)換為頻率信號,再由單片機(jī)內(nèi)部AD轉(zhuǎn)換器將頻率信號
3、轉(zhuǎn)換為電壓信號傳給單片機(jī),單片機(jī)在軟件系統(tǒng)的控制下,通過算法將電壓信號變成實(shí)際流量值,并通過OLED屏顯示出來。其中,硬件電路的搭接是本設(shè)計(jì)的重點(diǎn),控制系統(tǒng)軟件的設(shè)計(jì)是本課題的核心。硬件電路部分,采用STC15單片機(jī),CH40、LM331、LM358等構(gòu)成單片機(jī)控制系統(tǒng)的主體部分。通過脈沖流量傳感器,溫度傳感器進(jìn)行輸入,測量瞬時(shí)流量和累計(jì)流量。一些其他的功能,如設(shè)置參數(shù),OLED顯示,定時(shí)休屏等功能。系統(tǒng)軟件設(shè)計(jì)部分,分別對AD轉(zhuǎn)換控制,OLED顯示,按鍵設(shè)置,休屏鍵等程序進(jìn)行了設(shè)計(jì),并且設(shè)計(jì)了主程序和流量控制計(jì)算程序。2.智能流量計(jì)硬件設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì)為了適應(yīng)現(xiàn)代對儀表功能的需求,可以
4、智能化的檢測水流量,并且實(shí)時(shí)在屏幕上動(dòng)態(tài)顯示數(shù)據(jù)的目的,因此我們設(shè)計(jì)利用了STC15單片機(jī)來完成。這個(gè)系統(tǒng)可以實(shí)現(xiàn)瞬時(shí)流量的檢測,還有累計(jì)流量,溫度的檢測。當(dāng)單片機(jī)接受到水流量發(fā)出的信號,STC15單片機(jī)就會(huì)下達(dá)指令。水流量的情況傳輸?shù)絺鞲衅髦?,通過STC15單片機(jī)進(jìn)行處理掃描到的水流量脈沖數(shù),然后在OLED上顯示出水流量的數(shù)據(jù)。本方案利用Keilc軟件使用C語言進(jìn)行程序設(shè)計(jì),Altium Designer軟件實(shí)現(xiàn)電路和PCB的設(shè)計(jì)。STC15單片機(jī)流量處理電路按鍵電路溫度處理電路下載電路電源電路OLED顯示 2.2電源電路設(shè)計(jì) 此系統(tǒng)可以通過三種方式分別供電,一種是有USB端口連接上位機(jī)直接
5、通電5V電源,另外一種則是采用外部4.8v10v供電,通過REG1117-5芯片轉(zhuǎn)換為穩(wěn)定的5V電源給系統(tǒng)供電,還有一種則是通過干電池作為系統(tǒng)的備用電源,在沒有外接電源時(shí)使用。電路中有5V供電后,再由正向低壓降穩(wěn)壓器AMS1117-3.3將5V電源轉(zhuǎn)為3.3V給相應(yīng)的電路供電。電路圖如下。2.3主控電路設(shè)計(jì)單片機(jī)是把微處理器、存儲(chǔ)器、I/O接口。定時(shí)器/計(jì)數(shù)器、串行接口、中斷系統(tǒng)和其它電路組合在單個(gè)芯片組合完成的單片計(jì)算機(jī),單片機(jī)作為微型計(jì)算機(jī)的一個(gè)分支,是基于測控領(lǐng)域的發(fā)展而誕生和發(fā)展的。在我國使用最多的是Intel公司的C51系列單片機(jī)。而本次電路我們使用了STC15F2K60S2單片機(jī),
6、這款單片機(jī)不需要外部晶振和外部復(fù)位電路,可省掉外部EEPROM,利用IAP/ISP技術(shù),可以實(shí)現(xiàn)在線編程,無需編程器/仿真器,內(nèi)部有2K字節(jié)SRAM,雙串口,兩個(gè)獨(dú)立串口,高速10位8通道A/D轉(zhuǎn)換器等豐富的功能。它與C51相比,STC15F2K61S2其優(yōu)點(diǎn)是,省去晶振、復(fù)位電路,內(nèi)部以高可靠,高精度集成了,這個(gè)非常實(shí)用,做板的時(shí)候能很簡潔,也省了很多事情,再也不用為了更換晶振什么的發(fā)愁。對于此次課題設(shè)計(jì)來使用,它的外設(shè)比較豐富,在線仿真ADC/DAC/PWM/E2PROM等基本滿足智能流量計(jì)功能的需求。2.4流量檢測電路設(shè)計(jì)流量檢測部分采用水流量傳感器,如圖1所示,它的組成部分塑料閥體 、
7、水流轉(zhuǎn)子組件和霍爾傳感器組成。它裝在熱水器進(jìn)水端,用于檢測進(jìn)水流量,當(dāng)水通過水流轉(zhuǎn)子組件時(shí),磁性轉(zhuǎn)子轉(zhuǎn)動(dòng)并且轉(zhuǎn)速隨著流量變化而變化,霍爾傳感器輸出相應(yīng)脈沖信號,反饋給LM331芯片,這款芯片是由美國NS公司生產(chǎn)的性能價(jià)格比較高的集成芯片,精密頻率電壓轉(zhuǎn)換器 ,就是由它將水流量傳感器輸出的脈沖值由于頻率轉(zhuǎn)換為模擬量電壓值,反饋給STC15F2K61S2芯片內(nèi)部ADC轉(zhuǎn)換器,然后通過算法求出單位流量并顯示在OLED屏上。課題任務(wù)中最重要的是水流量的測量。通過水流量傳感器的數(shù)據(jù)采集,根據(jù)不同的水流量傳感器的參數(shù)可以得出單片機(jī)在運(yùn)算時(shí)的數(shù)據(jù)。水流量傳感器一般在零下10攝氏度到55攝氏度的環(huán)境溫度下可正
8、常運(yùn)行。在電路和傳感器正常工作的情況下,我們根據(jù)LM331芯片和水流量傳感器提供的技術(shù)文檔得出了以下兩個(gè)核心算法,這個(gè)也是我們整個(gè)電路能否實(shí)現(xiàn)正常測量的關(guān)鍵部分。1.f0=1/(t1+t2)=VL/(RLIRt1)2.頻率計(jì)算=常數(shù)7.5*單位流量(L/min)*時(shí)間(秒) 圖(1).流量傳感器 2.5按鍵與顯示電路設(shè)計(jì)為了實(shí)現(xiàn)水流量計(jì)的智能化,還有對減少電能的消耗增加使用壽命,在電路中我們增加了三個(gè)按鍵,分別用于控制OLED屏幕的點(diǎn)亮和休屏、進(jìn)入設(shè)置模式,對參數(shù)進(jìn)行修改。對于OLED屏幕的控制我們采用1min鐘自動(dòng)息屏,同時(shí)可以用按鍵喚醒,在屏幕亮的過程中也可以通過按鍵進(jìn)行息屏,自動(dòng)息屏的時(shí)
9、間通過按鍵進(jìn)入設(shè)置模式進(jìn)行修改,休屏?xí)r間范圍在19分鐘之間。當(dāng)然,通過進(jìn)入設(shè)置模式還可以設(shè)置儀表常數(shù)、儀表編號,在實(shí)際產(chǎn)品出廠的時(shí)候可以得到應(yīng)用。顯示電路我們采用0.96寸OLED顯示屏模塊,OLED由于同時(shí)具備自發(fā)光,不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。這款分辨率為128*64,與單片機(jī)通訊采用SPI通訊。SPI通訊由串行時(shí)鐘(SCLK)、串行數(shù)據(jù)輸出(SDO)、串行數(shù)據(jù)輸入(SDI)。SPI總線可以實(shí)現(xiàn)多個(gè)SPI設(shè)備互相連接。提供SPI串行時(shí)鐘的SPI設(shè)備為SPI主機(jī)或主設(shè)
10、備(Master),其他設(shè)備為SPI從機(jī)或從設(shè)備(Slave)。主從設(shè)備間可以實(shí)現(xiàn)全雙工通信,當(dāng)有多個(gè)從設(shè)備時(shí),還可以增加一條從設(shè)備選擇線。SPI通訊相當(dāng)于I2C和UART而言實(shí)現(xiàn)簡單,有時(shí)鐘協(xié)議。3.智能流量計(jì)軟件設(shè)計(jì)3.1 程序結(jié)構(gòu)說明軟件總的設(shè)計(jì)要求需要OLED顯示瞬時(shí)流量、累計(jì)流量及其溫度,并且能在設(shè)置中設(shè)置相關(guān)參數(shù),調(diào)整息屏?xí)r間。水流量的測量為0.25秒讀取一個(gè)流量值。OLED屏開機(jī)在第一行顯示瞬時(shí)流量、第二行為累計(jì)流量、第三行為溫度,在無按鍵操作的話默認(rèn)1分鐘后息屏。設(shè)置界面由按鍵控制。進(jìn)去設(shè)置界面后屏幕不需息屏,其中的參數(shù)值則通過另一個(gè)按鍵控制。整個(gè)程序中結(jié)構(gòu)較為簡單,但其中也有
11、幾個(gè)重要而且比較費(fèi)腦筋的子程序,包括水測量程序、水流量數(shù)據(jù)的計(jì)算與轉(zhuǎn)換、溫度數(shù)據(jù)轉(zhuǎn)換等程序。在程序中可以分為4個(gè)主要模塊:水流量模塊,溫度模塊,OLED顯示模塊,設(shè)置模塊。如圖為總體流程圖。系統(tǒng)初始化流量測量溫度測量息屏?xí)r間判斷YNK3鎖屏鍵操作屏幕常亮屏幕息屏按鍵判斷無按鍵操作K2按鍵操作K1按鍵設(shè)置程序顯示測量數(shù)值界面顯示設(shè)置界面3.2 OLED顯示程序設(shè)計(jì)本課題采用的是STC15單片機(jī)為控制核心,由中景園電子提供的0.96寸OLED模塊為顯示輸出設(shè)備,如圖2所示,在Keil環(huán)境下編寫OLED顯示模塊驅(qū)動(dòng)程序,并下載Hex文件至單片機(jī),從而實(shí)現(xiàn)OLED顯示系統(tǒng)設(shè)計(jì)。由于所采用的OLED不帶
12、字庫,因此無論是顯示圖形還是顯示漢字,均需通過取模軟件進(jìn)行編碼,然后按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è)計(jì)本次課題我們采用的是STC15單片機(jī),此款單片機(jī)內(nèi)置有高速10位8通道A/D轉(zhuǎn)換器,它就是把模擬信號轉(zhuǎn)換成數(shù)字信號,采用逐次逼近型進(jìn)行轉(zhuǎn)換。我們將選用P1.4、P1.5為流量傳感器和溫度傳感器的模擬量輸入端,其中流量傳感器先由LM331轉(zhuǎn)換為電壓信號,單片機(jī)的內(nèi)部ADC轉(zhuǎn)換器再將其由電壓信號轉(zhuǎn)換為數(shù)字量進(jìn)行計(jì)算得出實(shí)際流量值,而溫度傳感器的轉(zhuǎn)
13、換就相對比較簡單,通過電橋電路和LM358芯片輸入一個(gè)模擬量電壓,再由單片機(jī)進(jìn)行AD轉(zhuǎn)換為為數(shù)字量進(jìn)行計(jì)算。下圖為AD轉(zhuǎn)換的程序框圖系統(tǒng)初始化選擇通道,允許AD轉(zhuǎn)換讀取溫度傳感器輸入電壓讀取LM331輸入電壓讀取寄存器參數(shù)N轉(zhuǎn)換是否結(jié)束Y讀取轉(zhuǎn)換值數(shù)據(jù)處理3.4 流量運(yùn)算程序設(shè)計(jì)我們這次使用的水流量傳感器也可以稱為脈沖流量傳感器,內(nèi)部核心實(shí)質(zhì)上是一對霍爾元件,通過當(dāng)水通過水流轉(zhuǎn)子組件時(shí),磁性轉(zhuǎn)子轉(zhuǎn)動(dòng)并且轉(zhuǎn)速隨著流量變化而變化,霍爾傳感器輸出相應(yīng)脈沖信號,反饋給控制器。通過流量傳感器的技術(shù)文檔我們可知,此款傳感器輸出的脈沖頻率與實(shí)際流量值的關(guān)系為 “頻率=常數(shù)7.5*單位流量(L/min)*時(shí)間
14、(秒)”。而我們電路中采用的是先將頻率轉(zhuǎn)換為模擬量電壓值,此過程是由LM331芯片完成,這款芯片是美國NS公司生產(chǎn)的性能價(jià)格比較高的集成芯片,可用作精密頻率電壓轉(zhuǎn)換器,通過查閱資料我們可知輸入芯片和輸出電壓值的關(guān)系量為“f0=1/(t1+t2)=VL/(RLIRt1)”,從它的公式不難看出輸出電壓的精準(zhǔn)度與芯片外部電路有很大關(guān)系,所以在硬件設(shè)計(jì)上要很仔細(xì)。通過這兩個(gè)算法得出的實(shí)際流量值,我們使用定時(shí)器0.25秒讀取一個(gè)值,再將這個(gè)值除以240得到每秒的流量值,通過累加便實(shí)現(xiàn)了累計(jì)流量的功能。下圖為流量運(yùn)算程序框圖讀取AD轉(zhuǎn)換值計(jì)算瞬時(shí)流量值計(jì)算溫度值系統(tǒng)初始化計(jì)算累計(jì)流量值4.電路制作調(diào)試4.
15、1電路制作與調(diào)試本次硬件設(shè)計(jì)我們使用的是Altium Designer16軟件進(jìn)行設(shè)計(jì),并對PCB板進(jìn)行排版。在這個(gè)過程中的重點(diǎn)難點(diǎn)在與硬件電路的設(shè)計(jì),各個(gè)芯片的外部電路的搭建,還有在進(jìn)行PCB排版是每個(gè)元器件的封裝的繪制。在電路設(shè)計(jì)初期我們首先需要知道電路所需要實(shí)現(xiàn)的功能,然后根據(jù)功能去選擇相對適合的單片機(jī),以及實(shí)現(xiàn)各功能所需要使用的傳感器及其芯片。對電路需要有大致的設(shè)計(jì)框架,然后查找每個(gè)芯片典型的外部電路,并在此基礎(chǔ)上加以改進(jìn)。在對PCB排版時(shí),我們需要注意的是每個(gè)元器件的封裝尺寸,都要去網(wǎng)上查閱資料,防止在焊接時(shí)才發(fā)現(xiàn)封裝不對,而導(dǎo)致無法焊接或焊接困難,這個(gè)部分也是PCB排版中很重要的一
16、部分。當(dāng)然還要注意的是每個(gè)元器件放置的位置要根據(jù)實(shí)際情況進(jìn)行安排,如USB口、電源接口需要放置在板子邊緣等。在完成PCB的排版和制作后,接下來的就是焊接,這里我們將使用的是電烙鐵,在這個(gè)步驟中特別需要注意,元器件不要焊錯(cuò)正反、焊點(diǎn)不要虛焊,對于芯片不宜焊接時(shí)間過長,以免燙燒芯片等。在調(diào)試部分我們采用分塊調(diào)試法,分布調(diào)試就是把總體電路按功能分成若干個(gè)模塊,對每個(gè)模塊分別進(jìn)行調(diào)試。模塊的調(diào)試順序是按信號的流向,一塊一塊地進(jìn)行,逐步擴(kuò)大調(diào)試范圍,最后完成總調(diào)。實(shí)施分塊調(diào)試法有兩種方式,一種是邊安裝邊調(diào)試,即按信號流向組裝一模塊就調(diào)試一模塊,然后再繼續(xù)組裝其他模塊。另一種是總體電路一次組裝完畢后,再分
17、塊調(diào)試。4.2程序調(diào)試在這次課程設(shè)計(jì)中,我們首先對系統(tǒng)的整體功能進(jìn)行了構(gòu)思,然后用結(jié)構(gòu)化分析方法進(jìn)行分析,將整個(gè)系統(tǒng)清楚的劃分為幾個(gè)模塊,再根據(jù)每個(gè)模塊的功能編寫。代碼。而且盡可能的將模塊細(xì)分,最后在進(jìn)行函數(shù)的調(diào)用。我們在函數(shù)的編寫過程中,我們不僅用到了for循環(huán)、while循環(huán),還用到了函數(shù)之間的調(diào)用。由于是分工編寫代碼,所以顯示程序,AD程序,設(shè)置程序等都是子程序,最后需要將每個(gè)子程序代碼放到一起進(jìn)行調(diào)試。整個(gè)過程中我們使用的是KEIL4,進(jìn)行編程。當(dāng)然程序不是一次性就可以完成的,需要一個(gè)功能一個(gè)功能的調(diào)試?yán)奂?,首先我們先編寫的是OLED顯示程序,在保證OLED正常顯示的前提下,對于AD程
18、序進(jìn)行編寫,讓流量和溫度正常顯示在OLED上,之后就是對設(shè)置模式的編寫,足步往下,步步深入。在每次編寫好之后都要生成HEX 文件,把得到HEX 文件就可以下載到STC15 中了。這里要簡單的說下,打開下載軟件后,在打開的對話框里選擇好單片機(jī)的型號即IAP15F2K61S2,接下來將STC 系統(tǒng)板和電腦用USB 連接,選擇好端口和波特率,因?yàn)槲覀兊陌遄佑欣鋯?dòng),所以直接點(diǎn)擊下載即可。5.總結(jié)實(shí)訓(xùn)是每一位大學(xué)生必須擁有的一段經(jīng)歷,它使我們在實(shí)踐中增強(qiáng)專業(yè)技能,讓我們學(xué)到了很多在課堂上根本就學(xué)不到的知識,增長了操作能力,把理論和實(shí)踐結(jié)合,讓我們以后更好地服務(wù)社會(huì)打下了堅(jiān)實(shí)的基礎(chǔ)。在這3周的實(shí)訓(xùn)中,雖
19、然實(shí)習(xí)的時(shí)間很短,但對我來說,收獲是很大的。這次實(shí)訓(xùn)讓我深深地感覺到自己所學(xué)知識儲(chǔ)備的不足,我們在學(xué)校學(xué)習(xí)的是理論上的東西,但是在實(shí)際設(shè)計(jì)實(shí)物的時(shí)候,實(shí)踐和經(jīng)驗(yàn)就顯得更為重要,只有掌握更多實(shí)用的技能,積累更多的工作經(jīng)驗(yàn),才能提高工作效率與質(zhì)量。在做這次設(shè)計(jì)時(shí),我還通過互聯(lián)網(wǎng)參考了許許多多出色的設(shè)計(jì)者分享的經(jīng)驗(yàn),學(xué)以致用,把好的經(jīng)驗(yàn)吸取到我的設(shè)計(jì)中來使用。通過這次設(shè)計(jì),更加加深了我在大學(xué)三年當(dāng)中學(xué)到的軟件和硬件概念的理解,對我的專業(yè)知識也進(jìn)行了一次鞏固和加深印象,同時(shí)也加深了我在實(shí)際研究問題的能力。這在我以后的學(xué)習(xí)生活中也會(huì)有很大的作用,使我深深的意識到,做事必須老老實(shí)實(shí),一步一個(gè)腳印,抓好基礎(chǔ)
20、,研究好理論的重要性。這次設(shè)計(jì)是用C語言來編寫的程序。在編寫的過程當(dāng)中,我通過學(xué)習(xí)互聯(lián)網(wǎng)的許多資料,對整體的程序完成了一個(gè)完整的計(jì)劃,遇到錯(cuò)誤的地方及時(shí)更正,通過不斷努力達(dá)到設(shè)計(jì)的要求。在這一過程中遇到了些問題,比如存儲(chǔ)空間如何節(jié)省,這就要求自己對各個(gè)芯片元件的掌握程度要很高,通過不懈的學(xué)習(xí),最終完成了程序的設(shè)計(jì)。這也是一個(gè)鍛煉的過程。附錄一 電路原理圖附錄二 印刷電路板圖附錄三 電路成品圖 附錄四 實(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(); /休眠時(shí)間pingmu(); /點(diǎn)亮關(guān)閉屏幕判斷AD(); /AD轉(zhuǎn)換yunxing(); /運(yùn)行時(shí)間liangmiao(); /休眠子程序 OLED_ShowCHinese(0,0,0);/瞬OLED_Sh
23、owCHinese(18,0,1);/時(shí)OLED_ShowCHinese(36,0,2);/流OLED_ShowCHinese(54,0,3);/量 /兩個(gè)字符間加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);/計(jì)OLED_ShowCHinese(
24、36,2,6);/流OLED_ShowCHinese(54,2,7);/量OLED_ShowString(72,2,:);/:OLED_ShowNum(80,2,leiji00/,1,16); / 起點(diǎn)坐標(biāo)x,起點(diǎn)坐標(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);/運(yùn)OLED_ShowCHinese(18,6,29);/行OLED_ShowCHinese(36,6,17);/時(shí)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;/時(shí)鐘 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自動(dòng)休眠和喚醒子程序/*/#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; /開啟屏幕,同時(shí)開啟定時(shí)器else if (k=0 | b=0) /判斷是否在點(diǎn)亮是關(guān)屏 OLED_Display_Off();miao=0;TR1=0;b=0;k=0; /關(guān)閉屏幕,同時(shí)關(guān)閉定時(shí)器,清零標(biāo)記位 void timer_1() interrupt 3 TL1 = 0xB0; /設(shè)置定時(shí)初值 TH1 = 0x3C; /設(shè)置定時(shí)初值i+;q+; if(i=20 ) i=0; miao+; yx+; if(miao=g)/休眠時(shí)間 miao=0; b=0; void dingshichu()TMOD = 0x10;/設(shè)置定時(shí)器模式TL1 = 0xB0;/
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 移動(dòng)根目錄權(quán)限管理-洞察闡釋
- 高效Markdown編輯工具-洞察闡釋
- 虛擬現(xiàn)實(shí)中的敘事構(gòu)建-洞察闡釋
- 電位差計(jì)項(xiàng)目投資風(fēng)險(xiǎn)評估報(bào)告
- 民宿運(yùn)營管理方案
- 性別與身體認(rèn)知-洞察闡釋
- 福州科技職業(yè)技術(shù)學(xué)院《數(shù)據(jù)管理與數(shù)據(jù)保護(hù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 杭州電子科技大學(xué)信息工程學(xué)院《學(xué)校管理的藝術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安文理學(xué)院《管弦重奏》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱醫(yī)科大學(xué)《德語讀寫》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年四川省成都市中考語文真題(解析版)
- 北京市2024年高招本科普通批錄取投檔線
- 2025年黑龍江、吉林、遼寧、內(nèi)蒙古高考物理真題(解析版)
- 民航招飛初選試題及答案
- 2025年電子商務(wù)法律法規(guī)考試試題及答案
- 國開2025年《資源與運(yùn)營管理》形考任務(wù)1-4答案
- 2025年安全生產(chǎn)考試題庫(危險(xiǎn)化學(xué)品安全)危險(xiǎn)化學(xué)品安全操作規(guī)范應(yīng)用試題
- T/CIQA 74-2024人工智能(AI)鑒定通用規(guī)范
- 學(xué)習(xí)解讀《水利水電建設(shè)工程驗(yàn)收規(guī)程》SLT223-2025課件
- 應(yīng)急第一響應(yīng)人理論考試試卷(含答案)
- 病例對照研究設(shè)計(jì)和實(shí)施步驟
評論
0/150
提交評論