




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
緒論在體育場、超市、商業(yè)應(yīng)用、銀行、證券、碼頭、商場、車站、郵政、電信等不同地方。LED顯示屏隨處可見。隨著科技的不斷發(fā)展,LED顯示屏逐漸向多元化方向發(fā)展,制造成本越來越低。但在實(shí)際應(yīng)用中,特別是當(dāng)大量顯示內(nèi)容需要實(shí)時(shí)更新時(shí),用戶通過上位機(jī)與單片機(jī)連接來修改軟件中的顯示內(nèi)容,既繁瑣又不方便。近年來,由于無線數(shù)據(jù)傳輸技術(shù)的快速發(fā)展,藍(lán)牙技術(shù)作為一種短距離無線通信技術(shù)得到了廣泛的應(yīng)用。與傳統(tǒng)有線電纜連接相比,具有便攜性強(qiáng)、適用范圍廣、安全性高、適用范圍廣的特點(diǎn)。因此,針對藍(lán)牙的優(yōu)勢,設(shè)計(jì)了一種LED顯示屏,不僅可以顯示漢字和圖案,還可以通過手機(jī)藍(lán)牙改變LED顯示屏的日期和時(shí)間,不僅可以避免成本較高的主機(jī)軟件和控制卡,還可以使其操作更加簡單。1.1研究現(xiàn)狀和發(fā)展趨勢1.1.1LED顯示屏的研究現(xiàn)狀隨著我國發(fā)光二極管顯示技術(shù)的穩(wěn)步發(fā)展,LED顯示的行業(yè)越來越多。不同行業(yè)的發(fā)展需求,推動(dòng)著LED顯示技術(shù)的發(fā)展。LED顯示技術(shù)的生產(chǎn)主要集中在華東和華南地區(qū),近年來,華北地區(qū)逐步也逐步開展LED顯示的生產(chǎn)。由于我國LED顯示屏技術(shù)逐漸成熟先進(jìn)、價(jià)格更加低廉,開始了LED顯示屏的對外出口,僅2014年LED顯示屏出口量就達(dá)到55億。光明的市場前景促使LED顯示屏不斷加強(qiáng)技術(shù)創(chuàng)新。控制和使用LED顯示屏有兩種方式。一種方式是電腦控制LED顯示屏,實(shí)時(shí)反映播放畫面或傳遞的一些信息。另一種方式是LED顯示屏不需要其他工具,而是根據(jù)自身存儲(chǔ)一些的信息或視頻進(jìn)行播放,以滿足客戶的需求。隨著信息技術(shù)的發(fā)展,LED顯示屏的控制有了不同的變化。一種是無線控制LED顯示屏的便捷方式,前提是播放信息或視頻時(shí)需要較強(qiáng)的WIFI信號,避免信號中斷對信息傳輸?shù)挠绊憽A硪环N方式是通過LED顯示屏連接互聯(lián)網(wǎng)來控制LED顯示屏,但是成本高,信號接收穩(wěn)定,一般不會(huì)有信號中斷。根據(jù)顯示模式,LED顯示器主要有三種類型。第一種是圖形顯示系統(tǒng),只在LED顯示屏上顯示圖形和文字,屬于最基本的LED顯示系統(tǒng),一般用于會(huì)議室的標(biāo)題顯示。二是圖像顯示屏系統(tǒng)。與第一種相比,這種顯示屏具有灰度,使顯示的圖像更加生動(dòng)自然。第三種是視頻顯示系統(tǒng),與前兩種相比,它的技術(shù)含量有了很大的提高。它可以接受視頻信號,顯示的圖像色彩豐富。是全彩LED顯示屏。從LED顯示屏的顯示方式可以看出,LED顯示屏的技術(shù)在不斷創(chuàng)新,在原有的基礎(chǔ)上增加了更多的元素,畫面感、色彩感、動(dòng)感越來越好。1.2.2LED顯示屏的發(fā)展趨勢在科研方面,我國的LED顯示技術(shù)雖然在不斷發(fā)展,但仍然存在很多不足。比如LED顯示技術(shù)中的高亮度純藍(lán)、純綠LED技術(shù)在國內(nèi)還處于空白期。因此,要加大對LED顯示屏的科研投入,提高LED顯示屏技術(shù)在國內(nèi)的競爭力。在控制技術(shù)創(chuàng)新上,LED顯示屏不僅需要技術(shù)升級和創(chuàng)新,還需要有相應(yīng)的產(chǎn)業(yè)鏈,才能同步發(fā)展,消除技術(shù)更新不及時(shí)帶來的一些問題。從LED顯示控制技術(shù)來看,LED顯示還需要一些網(wǎng)線、WiFi或藍(lán)牙來控制,以及一些客戶需要的其他技術(shù)控制,需要不斷的創(chuàng)新和發(fā)展,才能讓LED顯示更靈活的使用。在智能方面,隨著互聯(lián)網(wǎng)時(shí)代的到來,LED顯示屏已經(jīng)不再滿足于通過一些簡單的后臺(tái)操作或者存儲(chǔ)信息的自動(dòng)播放來傳遞消息。反而對LED顯示屏提出了更加智能化的要求,這就要求LED顯示器的技術(shù)研發(fā)向智能化、簡潔化方向發(fā)展,讓人們更方便快捷地使用LED顯示器。1.2藍(lán)牙LED通信背景藍(lán)牙技術(shù)是一種短距離無線數(shù)據(jù)通信,在10米半徑內(nèi),可以實(shí)現(xiàn)點(diǎn)對點(diǎn)或點(diǎn)到多點(diǎn)的無線數(shù)據(jù)和語音傳輸。安卓手機(jī)通過藍(lán)牙通訊設(shè)備接入微網(wǎng),可以隨時(shí)隨地與藍(lán)牙模塊進(jìn)行通訊。藍(lán)牙設(shè)備通信的原理是在相對較短的距離內(nèi)發(fā)送和接收無線電信號,設(shè)備通過藍(lán)牙芯片可以找到其他藍(lán)牙設(shè)備。當(dāng)兩臺(tái)連接成功時(shí)便可以通過藍(lán)牙進(jìn)行數(shù)據(jù)通信。1.2.1Android藍(lán)牙基本架構(gòu)藍(lán)牙廣泛應(yīng)用于各種消費(fèi)類電子產(chǎn)品和一些手持設(shè)備(如手機(jī)、平板電腦等),并提供短距離、低成本的無線數(shù)據(jù)通信。藍(lán)牙由許多協(xié)議組成,其中最重要的是模擬串口協(xié)議、服務(wù)發(fā)現(xiàn)協(xié)議和適配協(xié)議。藍(lán)牙協(xié)議中的軟硬件接口作為主控接口,可以訪問不同的設(shè)備。大部分手機(jī)都會(huì)自帶藍(lán)牙,利用藍(lán)牙與LED顯示屏進(jìn)行通信,使系統(tǒng)簡便,節(jié)省成本。1.2.2藍(lán)牙虛擬串口RFCOMM協(xié)議是比較簡單的傳輸協(xié)議,用來模擬有線鏈路。它使用基于歐洲電信標(biāo)準(zhǔn)化組織TS7.10的串行端口模擬協(xié)議,并基于適配協(xié)議模擬串行端口,為構(gòu)建在串行接口上的應(yīng)用程序提供接口環(huán)境。正是因?yàn)樗{(lán)牙技術(shù)的這個(gè)優(yōu)勢,使得本系統(tǒng)中的手機(jī)和藍(lán)牙模塊能夠很好的進(jìn)行通信。1.3LED顯示屏研究的意義LED顯示屏的發(fā)展歷史悠久,整個(gè)行業(yè)也在朝著多元化方向發(fā)展,傳統(tǒng)的LED的顯示屏在其形態(tài)和功能上已經(jīng)不能再滿足當(dāng)今快速發(fā)展的智能化時(shí)代,通過一些簡單的后臺(tái)操作或自動(dòng)播放存儲(chǔ)的信息來傳達(dá)信息已經(jīng)不能滿足人們的需求。因此,如何將LED顯示技術(shù)朝著智能化、簡潔化、便攜化的方向發(fā)展,成為一個(gè)亟待解決的問題。隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù)的發(fā)展,越來越多的可穿戴設(shè)備被開發(fā)和應(yīng)用。智能手環(huán)、智能手表、智能t恤等可穿戴設(shè)備不斷涌現(xiàn)。近年來,中國可穿戴設(shè)備市場持續(xù)增長。隨著人與物聯(lián)網(wǎng)交互技術(shù)的發(fā)展,可穿戴設(shè)備將成為一把智能鑰匙,連接人與物,實(shí)現(xiàn)人與智能設(shè)備的對接、交互和控制。近年來,顯示器與可穿戴技術(shù)相結(jié)合的可穿戴LED顯示器為LED顯示產(chǎn)業(yè)的發(fā)展提供了突破。可穿戴式LED顯示屏基于發(fā)熱低、節(jié)能、壽命長的特點(diǎn)而設(shè)計(jì),為商家廣告提供便利,使廣告更新穎;在安全防護(hù)領(lǐng)域,如LED救生衣、LED安全防護(hù)服、LED發(fā)光警示服、LED熒光輕裝背包、LED腰帶等產(chǎn)品層出不窮。1.4LED顯示屏研究目標(biāo)和內(nèi)容本文在傳統(tǒng)LED顯示屏顯示漢字和圖案的基礎(chǔ)上,通過手機(jī)藍(lán)牙更改LED顯示屏日期和時(shí)間。它是為了解決傳統(tǒng)LED顯示屏在更改時(shí)間及日期上需連接至計(jì)算機(jī)或間接通過計(jì)算機(jī)修改,給普通用戶帶來不便。本文對軟硬件模塊進(jìn)行了詳細(xì)介紹及分析設(shè)計(jì),C語言編寫程序并運(yùn)行后燒錄進(jìn)硬件系統(tǒng),根據(jù)電路原理圖焊接實(shí)物并調(diào)試成功。主要研究內(nèi)容如下:在硬件系統(tǒng)設(shè)計(jì)中,對STC89C52功能及優(yōu)點(diǎn)進(jìn)行了介紹,硬件系統(tǒng)分為單片機(jī)最小系統(tǒng)、16*16LED點(diǎn)陣模塊、藍(lán)牙模塊以及按鍵電路模塊,對各個(gè)模塊進(jìn)行介紹及各個(gè)模塊實(shí)現(xiàn)的具體功能進(jìn)行詳細(xì)闡述。軟件系統(tǒng)設(shè)計(jì)分為Keil程序開發(fā)環(huán)境和字模軟件的系統(tǒng)程序設(shè)計(jì),主程序、按鍵掃描電路和時(shí)鐘電路的軟件流程圖設(shè)計(jì),編寫、運(yùn)行程序。2硬件系統(tǒng)設(shè)計(jì)安卓手機(jī)作為上位機(jī),對顯示內(nèi)容進(jìn)行編輯和存儲(chǔ),通過藍(lán)牙通信模塊將顯示內(nèi)容和控制指令傳輸給單片機(jī)系統(tǒng)。單片機(jī)根據(jù)上位機(jī)傳送的內(nèi)容和指令對LED點(diǎn)陣顯示屏進(jìn)行解碼和擴(kuò)展,使顯示屏顯示相應(yīng)的內(nèi)容,并通過按鍵模塊改變顯示內(nèi)容。主控制器包括單片機(jī)最小系統(tǒng)、電源模塊、時(shí)鐘電路模塊、LED點(diǎn)陣屏模塊、藍(lán)牙模塊、按鍵電路組成,其結(jié)構(gòu)框圖如圖2-1所示:2.1單片機(jī)及其他器件介紹本設(shè)計(jì)采用單片機(jī)STC89C52控制顯示屏。89C52單片機(jī)主要由幾個(gè)基本部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM/EPROM)、I/O口(P0~P3口)、串口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)、特殊功能寄存器(SFR)。它具有51系列單片機(jī)的共同特點(diǎn)。它有40個(gè)引腳,包括4個(gè)8位I/O端口:P0、P1、P2、P3,共32個(gè)引腳;電源Vcc引腳、電源GND引腳、外部晶體振蕩器引腳XTAL1和XTAL2以及控制信號引腳RST、ALE、/PSEN和/EA。輸入/輸出端口:P0、P1、P2和P3。每個(gè)P端口有8位,其中P0端口為準(zhǔn)雙向端口。當(dāng)用作輸出端口時(shí),必須先將1寫入該端口。P0端口沒有內(nèi)部上拉電阻,所以在操作P0端口時(shí),需要在其外部電路中加入上拉電阻。P3港有第二個(gè)功能。P2端口可用于訪問16位地址的外部程序存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器。P2端口發(fā)送高位8位地址,P0端口提供低位8位地址,P0端口分時(shí)提供8位數(shù)據(jù)總線。控制信號引腳:RST、ALE、/PSEN和/EA。RST是單片機(jī)的復(fù)位引腳,外部硬件電路可以實(shí)現(xiàn)單片機(jī)的復(fù)位操作。ALE是數(shù)據(jù)鎖存使能信號引腳,在高電平有效。單片機(jī)訪問外部存儲(chǔ)器時(shí),ALE輸出信號作為控制信號鎖存低位8位地址。/PSEN是程序存儲(chǔ)許可輸出信號端子,主要用于片外存儲(chǔ)器的操作。/EA是外部程序存儲(chǔ)器的地址權(quán)限輸入/固化編程電壓輸入,主要用于訪問外部ROM。在實(shí)際應(yīng)用中,該引腳保持高電平。晶振連接引腳:XTAL1和XTAL2。當(dāng)需要連接振蕩晶體時(shí),晶體振蕩器連接在兩個(gè)引腳之間。如果需要外部時(shí)鐘電路,XTAL1輸入外部時(shí)鐘脈沖,XTAL2引腳懸空。電源引腳:Vcc是連接到+5V電壓源的電源端,GND是連接到電源地的接地端。單片機(jī)引腳圖如下圖2-2所示:74HC595是一款8位芯片,具有串行輸入和并行輸出。8位并行輸出為三態(tài)輸出,傳輸延遲短,支持高速串行連接。隨著串行輸入時(shí)鐘信號SCK的上升延遲,數(shù)據(jù)從串行數(shù)據(jù)端口輸入到內(nèi)部8位移位緩存器,原始移位緩存器的最后一位從串行數(shù)據(jù)輸出端輸出,可以方便地實(shí)現(xiàn)級聯(lián)。并行輸出緩沖器的數(shù)據(jù)讀取時(shí)鐘信號LCK具有上升延遲,并且八位并行輸出緩沖器將讀取八位移位緩沖器上的數(shù)據(jù)線輸出端的輸出。74HC138是一款3線8線解碼器。輸入端的數(shù)據(jù)從000變?yōu)?11,八個(gè)輸出端對應(yīng)的輸出端輸出低電平,其他輸出端輸出高電平,完成變量解碼。使能端的兩片74HC138可以組成4線和16線解碼器。DS1302是一款高性能、低功耗、RAM的實(shí)時(shí)時(shí)鐘電路。可以計(jì)時(shí)年、月、日、周、時(shí)、分、秒,具有閏年補(bǔ)償功能。工作電壓為2.0V~5.5V,DS1302的主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可以為斷電保護(hù)電源提供可編程充電功能,關(guān)閉充電功能。芯片組成的電路通過串行接口與單片機(jī)通信,與單片機(jī)的接口連接簡單地通過同步串行通信實(shí)現(xiàn)。控制和傳輸數(shù)據(jù)只需要三根線,而DS1302芯片為此設(shè)計(jì)提供了時(shí)間數(shù)據(jù)。2.2STC89C52單片機(jī)最小系統(tǒng)STC89C52單片機(jī)最小系統(tǒng)電路由復(fù)位電路、時(shí)鐘電路和電源電路。單片機(jī)最小系統(tǒng)原理圖如下圖2-3所示(1)VCC和GND為單片機(jī)的電源引腳,為單片機(jī)提供電源。(2)復(fù)位電路可以保證單片機(jī)在工作出現(xiàn)不穩(wěn)定或程序跑飛、死循環(huán)現(xiàn)象時(shí)等的象,使單片機(jī)重新初始化。復(fù)位的方式有手動(dòng)按鍵復(fù)位和上電自動(dòng)復(fù)位功能。系統(tǒng)上電復(fù)位按鍵接口采集到兩個(gè)高端信號后進(jìn)行手動(dòng)復(fù)位,就是非自動(dòng)的按鍵復(fù)位;系統(tǒng)檢測到的電壓由低電平上升到高電平的一段時(shí)間后,在這段時(shí)間過后,系統(tǒng)通過電阻與接地之間形成一條通路,然后自動(dòng)把高電平進(jìn)行拉低,使得單片機(jī)從高電位變?yōu)榈碗娢唬瑥亩褪墙o單片機(jī)自動(dòng)進(jìn)行上電復(fù)位。(3)時(shí)鐘電路由晶振Y1、瓷片電容C1和C2組成,為單片機(jī)提供工作的時(shí)序脈沖,可穩(wěn)定頻率并對振蕩頻率有微調(diào)作用。給控制芯片正常工作的時(shí)鐘信號,使得整個(gè)控制系統(tǒng)能正常工作,由于要保證控制系統(tǒng)能正常工作,提高工作效率,通常用11.0592MHZ晶振和30PF的電容進(jìn)行組合,電容可以幫助晶振起振,使得數(shù)字控制器上電以后可以正常工作。(4)JD1為單片機(jī)的下載接口。2.3電源電路設(shè)計(jì)本系統(tǒng)選擇5V直流電源作為系統(tǒng)總電源,為整個(gè)系統(tǒng)供電,電路簡單、穩(wěn)定。DC為電源的DC插座,可以直接接USB電源線,一端插在DC插座上,另外一端可以插在充電寶、手機(jī)充電器等等。LED為紅色LED燈,作為系統(tǒng)的指示燈,電阻為1K電阻,起到限流作用,保護(hù)LED燈,以防電流過大燒壞LED燈。SW為自鎖開關(guān),開關(guān)按下后,紅燈亮,此時(shí)系統(tǒng)電源5V直流輸出。開關(guān)再次按下后,紅燈滅,此時(shí)系統(tǒng)電源無5V電源輸出。2.4DS1302時(shí)鐘電路設(shè)計(jì)在本電路中,選擇32.768KHZ晶振為DS1302提供時(shí)鐘源,3V紐扣電池保證了DS1302掉電不丟失時(shí)間數(shù)據(jù),電阻均為上拉電阻,使得DS1302工作更穩(wěn)定。其電路原理圖如下圖2-4所示。2.316x16LED點(diǎn)陣屏模塊電路設(shè)計(jì)顯示屏的16×16點(diǎn)陣由4個(gè)8×8點(diǎn)陣模塊組成,第一和第二個(gè)8×8點(diǎn)陣行信號接口連接在一起,顯示字體上部;第三行信號接口連接第四個(gè)8×8點(diǎn)陣顯示字體下部,形成16×16點(diǎn)陣顯示屏。LED顯示屏有16排,每個(gè)74HC595可以控制8排顯示屏,所以需要兩個(gè)74HC595的芯片。74HC595將時(shí)鐘控制信號串聯(lián)在一起,前一個(gè)74HC595的Q7引腳連接到下一個(gè)74hc595的數(shù)據(jù)輸入端DS,使得并行輸出脈沖有效時(shí),所有列信號同時(shí)發(fā)出。兩個(gè)74HC138解碼器級聯(lián)驅(qū)動(dòng)16×16顯示屏的列。兩個(gè)74HC138解碼器的16個(gè)輸出端口連接到對應(yīng)的16×16LED漢字顯示屏的每一列,單片機(jī)的端口P2.0、P2.1、P2.2、P2.3、P2.4由軟件程序控制,實(shí)現(xiàn)LED顯示屏的列驅(qū)動(dòng)。列驅(qū)動(dòng)器芯片和行驅(qū)動(dòng)器芯片被同時(shí)控制。當(dāng)給出74HC595的鎖存信號時(shí),行驅(qū)動(dòng)芯片的輸出引腳輸出要顯示的一行數(shù)據(jù),然后顯示該行中的漢字。按照這個(gè)操作順序,從第一行到最后一行依次循環(huán)實(shí)現(xiàn)行掃描,可以顯示整個(gè)屏幕上的漢字。字體通常由專門的軟件生成,也可以手動(dòng)編譯,獲得的字體可以存儲(chǔ)在單片機(jī)中。要改變LED點(diǎn)陣顯示的內(nèi)容,只需改變單片機(jī)讀取的字體即可。16x16LED點(diǎn)陣屏模塊原理圖如圖2-6如下:2.6LY藍(lán)牙模塊電路設(shè)計(jì)手機(jī)上的藍(lán)牙模塊(主設(shè)備)首先搜索周圍可以搜索的藍(lán)牙設(shè)備(從設(shè)備),然后進(jìn)行匹配。匹配后可以在手機(jī)輸入主。手機(jī)通過藍(lán)牙APP向藍(lán)牙模塊發(fā)送日期和時(shí)間,主控制器接收藍(lán)牙模塊的信息,轉(zhuǎn)換成點(diǎn)陣信息,刷新LED點(diǎn)陣顯示面板。藍(lán)牙模塊接口電路圖如下圖2-7所示。2.7按鍵電路設(shè)計(jì)按鍵電路實(shí)現(xiàn)的是不同的按鍵下,LED顯示內(nèi)容不同。在本設(shè)計(jì)中,一共涉及了四種類型的按鍵。按下K1按鈕,顯示屏將顯示“歡迎使用”字幕,如無中斷,字幕將一直循環(huán);按下K2按鈕后,顯示屏將顯示日期,如無中斷,將一直循環(huán);按下K3按鈕后,顯示屏顯示時(shí)間,如無中斷,字體一直循環(huán)。任意時(shí)間按下K4按鈕,系統(tǒng)將刷屏,并定格于初始圖案。在本系統(tǒng)中,按鍵作為系統(tǒng)的輸入,起到了人機(jī)交互的樞紐作用。其電路原理圖如下圖2-8所示。3軟件系統(tǒng)的設(shè)計(jì)3.1系統(tǒng)程序設(shè)計(jì)3.1.1Keil程序開發(fā)環(huán)境本設(shè)計(jì)中單片機(jī)開發(fā)環(huán)境是Keil,Keil是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境,將這些部分組合在一起。其中Keil有以下特點(diǎn):(1)Keil軟件同時(shí)支持WINXP和WIN7等多種操作系統(tǒng),提供了豐富的庫函數(shù)和功能強(qiáng)大的開發(fā)工具。(2)Keil可以完成從編輯、編譯、到連接、調(diào)試的一套開發(fā)流程。Keil軟件界面如下圖3-1所示:3.1.2字模軟件設(shè)計(jì)LED顯示屏是點(diǎn)陣顯示方式,所以顯示漢字的時(shí)候需要提取漢字字模。漢字的點(diǎn)陣字模是從點(diǎn)陣字庫文件中提取出來的。在本設(shè)計(jì)中用PctoLCD2002來提取字模代碼,如輸入“加油”字樣,其結(jié)果如圖3-2所示:3.3軟件流程圖設(shè)計(jì)主程序的程序框圖如圖3-3所示:系統(tǒng)在LED顯示屏的初始化時(shí)間實(shí)現(xiàn)了“心形”模式、“歡迎使用”漢字、年、月、具體時(shí)間。漢字代碼預(yù)先存儲(chǔ)在單片機(jī)的程序存儲(chǔ)器中,程序運(yùn)行后的代碼將以數(shù)組的形式存儲(chǔ)在程序的初始化中。編程主要體現(xiàn)模塊化,每個(gè)功能用獨(dú)立的子功能編寫,然后主功能調(diào)用子程序?qū)崿F(xiàn)相應(yīng)的功能,其中子功能包括按鍵掃描功能和時(shí)鐘功能。程序首先初始化所有的宏定義和全局變量,以及ROM中存儲(chǔ)的數(shù)據(jù),然后初始化字體提取和DS1302,按照DS1302的工作順序讀取實(shí)時(shí)時(shí)鐘,并發(fā)送到LED顯示屏顯示。如果按下K4鍵,LED顯示屏初始化顯示“心形”圖案;按下K3鍵時(shí),LED顯示屏上顯示的“歡迎使用”內(nèi)容向左移動(dòng);如果按下K2鍵,發(fā)光二極管顯示屏顯示日期和月份;如果按下K4鍵,將顯示具體時(shí)間。3.3.1按鍵掃描電路的程序設(shè)計(jì)按鍵掃描電路的時(shí)序圖如圖3-4所示。鍵盤掃描程序主要在程序執(zhí)行的中間,主要功能是連續(xù)掃描鍵盤。如果按下一個(gè)鍵,程序?qū)⑥D(zhuǎn)到執(zhí)行判斷鍵值,并執(zhí)行相應(yīng)的程序。本程序段主要判斷密鑰的鍵值。當(dāng)按下K1-K4鍵時(shí),全局變量A的值分別賦值為1-4,這樣在執(zhí)行特定的鍵值時(shí),可以實(shí)時(shí)查詢?nèi)肿兞康淖兓梢灾袛喈?dāng)前的顯示狀態(tài),執(zhí)行被按下鍵的狀態(tài)顯示3.3.2實(shí)時(shí)時(shí)鐘電路的程序設(shè)計(jì)讀取時(shí)鐘是按照DS1302的時(shí)序圖,對時(shí)鐘進(jìn)行讀取的,并將讀取的時(shí)間或者日歷做數(shù)值轉(zhuǎn)換處理,轉(zhuǎn)換成十進(jìn)制數(shù),調(diào)用對應(yīng)的字模代碼,并送給LED顯示屏顯示。時(shí)鐘讀取的程序框圖如圖3-5所示:3.4程序編程調(diào)試運(yùn)行程序后,程序沒有出錯(cuò),運(yùn)行結(jié)果如3-6所示:4實(shí)物制作與調(diào)試4.1焊接元件焊接步驟為在認(rèn)真檢查電路和確保電路原理正確后,對原理圖中的元器件型號、參數(shù)、個(gè)數(shù)進(jìn)行清點(diǎn),用萬用表檢測電阻、二極管、三極管、電容,參數(shù)正確,按照焊接準(zhǔn)則“注意正負(fù),認(rèn)準(zhǔn)型號,一個(gè)模塊依次焊接,先小件后大件,焊一件測一件,測通路檢短路”進(jìn)行焊接,焊接完成后,再一次與原理圖對照,確認(rèn)無誤。元件焊接如圖4‐1所示:4.2系統(tǒng)調(diào)試系統(tǒng)調(diào)試分為APP安裝和硬件電路調(diào)試兩部分內(nèi)容。4.2.1APP安裝根據(jù)藍(lán)牙串口模塊下載藍(lán)牙串口助手APP,藍(lán)牙串口助手是一款基于RFCOMM藍(lán)牙串口服務(wù)的傳輸軟件,通過該軟件可以連接藍(lán)牙串口模塊進(jìn)行通信,實(shí)現(xiàn)手機(jī)串口連接。類似計(jì)算機(jī)的串口調(diào)試助手,是電子工程師的開發(fā)利器。該軟件的功能有:發(fā)現(xiàn)和連接藍(lán)牙串口模塊;接收和發(fā)送數(shù)據(jù);可選擇ASCI工碼顯示或HEX十六進(jìn)制顯示;發(fā)送十六進(jìn)制數(shù)據(jù);將串口接收到的數(shù)據(jù)保存成txt文件;對發(fā)送和接收的字節(jié)進(jìn)行計(jì)數(shù);按設(shè)置的時(shí)間間隔發(fā)送數(shù)據(jù)。4.2.2硬件電路調(diào)試調(diào)試過程如下:首先給設(shè)備供電,然后打開手機(jī)APP的藍(lán)牙串口控制界面,點(diǎn)擊按鈕“進(jìn)入藍(lán)牙串口助手”,點(diǎn)擊“連接設(shè)備”,若手機(jī)界面顯示為“已連接到:JDY-31-SPP”,則手機(jī)上顯示藍(lán)牙連接成功,則表示藍(lán)牙通信成功。則可在輸入框中輸入內(nèi)容,例如輸入:“*2021051912025503#”,表示的內(nèi)容為“2021年05月19日12時(shí)02分55秒周03”。調(diào)試結(jié)果如圖4-3所示:4.2.3功能本系統(tǒng)由STC89C52單片機(jī)、DS1302時(shí)鐘、16*16點(diǎn)陣屏模塊、藍(lán)牙模塊、按鍵及電源組成。通過運(yùn)用STC89C52單片機(jī)控制LED滾動(dòng)廣告屏顯示中文及日期、時(shí)間。1.接通電源后,LED顯示屏將自動(dòng)刷屏一次,并最終定格與一個(gè)心形圖案。2.按下K1按鈕,顯示屏將顯示“歡迎使用”字幕,如無中斷,字幕將一直循環(huán)。3.按下K2按鈕后,顯示屏將顯示日期,如無中斷,將一直循環(huán)。4.按下K3按鈕后,顯示屏顯示時(shí)間,如無中斷,字體一直循環(huán)。任意時(shí)間按下K4按鈕,系統(tǒng)將刷屏,并定格于初始圖案。5結(jié)論該系統(tǒng)在傳統(tǒng)LED顯示屏顯示漢字及圖案的基礎(chǔ)上,增加了手機(jī)藍(lán)牙控制LED顯示屏,修改顯示屏的日期及時(shí)間。目的是為了解決傳統(tǒng)LED點(diǎn)陣顯示屏需要連接電腦或由電腦間接改裝,給普通用戶帶來的不便。在本次設(shè)計(jì)中,根據(jù)傳統(tǒng)LED顯示屏顯示內(nèi)容的不便的角度進(jìn)行分析,從如何設(shè)計(jì)才能使其使用簡便的角度出發(fā),查閱相關(guān)的文獻(xiàn)資料后,確定了總體設(shè)計(jì)設(shè)計(jì)思路。然后完成軟硬件系統(tǒng)的模塊設(shè)計(jì)和編程,燒錄之后,通過焊接并調(diào)試實(shí)物。附錄附錄1:主程序代碼#include"main.h"#include<intrins.h>#include"ds1302.h"#include"delay.h"unsignedlongtime_2ms=0;sbitled=P2^7;//接口定義sbitkey4=P2^6;sbitkey3=P2^5;sbitkey2=P2^4;sbitkey1=P2^3;#defineDisplay_Num_Word1 //液晶能顯示的漢字個(gè)數(shù)unsignedcharDisplay_Buffer[2];//顯示緩存unsignedcharDisplay_Swap_Buffer[Display_Num_Word][32]={0};//顯示緩存 //顯示緩沖區(qū)bitShift_Bit=0; //位標(biāo)志bitFlag_Shift=0; //更新標(biāo)志unsignedcharTimer0_Count=0; //計(jì)數(shù)unsignedchartemp=0x80; //中間變量unsignedcharShift_Count=0;unsignedcharDisplay_Word_Count=0;//顯示計(jì)數(shù)#defineNum_Of_Word4 //漢字?jǐn)?shù)量unsignedcharxdataWord[Num_Of_Word][32]={0xff};unsignedcharcodeXueXiao[4][32]={0xFF,0xFF,0x03,0xFB,0xFA,0xB6,0xD5,0xEB,0xEF,0xD7,0xDB,0xBA,0x7E,0xFD,0xFB,0xF7,0x7F,0x7F,0x7F,0x03,0xFB,0xF7,0xBF,0xBF,0xBF,0x5F,0x5F,0xEF,0xEF,0xF7,0xFB,0xFD,/*"歡",0*/0xFF,0xDF,0xEC,0xED,0xFD,0xFD,0x0D,0xED,0xED,0xED,0xEC,0xED,0xEF,0xD7,0xB8,0xFF,0xFF,0x7F,0xC3,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0x4B,0xD7,0xDF,0xDF,0xDF,0x01,0xFF,/*"迎",1*/0xEF,0xEF,0xE0,0xDF,0xDF,0x98,0x9B,0x5B,0xD8,0xDF,0xDD,0xDE,0xDF,0xDE,0xDD,0xD3,0xBF,0xBF,0x01,0xBF,0xBF,0x03,0xBB,0xBB,0x03,0xBF,0xBF,0xBF,0x7F,0xBF,0xCF,0xF1,/*"使",2*/0xFF,0xC0,0xDE,0xDE,0xDE,0xC0,0xDE,0xDE,0xDE,0xC0,0xDE,0xDE,0xDE,0xBE,0xBE,0x7F,0xFF,0x07,0xF7,0xF7,0xF7,0x07,0xF7,0xF7,0xF7,0x07,0xF7,0xF7,0xF7,0xF7,0xD7,0xEF,/*"用",3*/};unsignedcharcodeNum0[16]={0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0",0*/};unsignedcharcodeNum1[16]={0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,/*"1",0*/};unsignedcharcodeNum2[16]={0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,/*"2",1*/};unsignedcharcodeNum3[16]={0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"3",2*/};unsignedcharcodeNum4[16]={0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,/*"4",3*/};unsignedcharcodeNum5[16]={0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"5",5*/};unsignedcharcodeNum6[16]={0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",6*/};unsignedcharcodeNum7[16]={0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,/*"7",7*/};unsignedcharcodeNum8[16]={0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",8*/};unsignedcharcodeNum9[16]={0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,/*"9",9*/};unsignedcharcodeMaoHao[16]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,/*":",0*/};unsignedcharcodeGang[16]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"-",0*/};unsignedcharcodexinxing[1][32]= //心形{0xFF,0xFF,0xFF,0xE1,0xC0,0x80,0x80,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0x03,0x01,0x01,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF,//心形};voidDisplayXin(unsignedchardat[][32]);xdataunsignedcharfirstin=0; //首次接收到標(biāo)志xdataunsignedchartab[20]; //串口數(shù)據(jù)暫存xdataunsignedcharCount=0; //串口接收計(jì)數(shù)xdataunsignedcharuartbusy=0; //串口判忙unsignedcharxdatatime_buf2[17];//更新時(shí)間變量unsignedcharSetFlag=0; //時(shí)間設(shè)置標(biāo)志unsignedlongtime_20ms=0;//系統(tǒng)時(shí)間計(jì)數(shù)bitReadTimeFlag=0;//定義讀時(shí)間標(biāo)志unsignedcharkeyFlag=0;//按鍵標(biāo)志unsignedi2;unsignedcharrekey;unsignedchartiquNum(unsignedcharNum,i);voidUART_Init(void);voidmain(){ unsignedchari; Init_Timer0(); //初始化定時(shí)器 UART_Init(); //初始化串口 Ds1302_Init(); //初始化時(shí)鐘//Ds1302_Write_Time(); Ds1302_Read_Time();//讀取時(shí)間參數(shù) for(i2=0;i2<16;i2++) { Word[0][i2]=tiquNum(time_buf1[4]%100/10,i2); //提取時(shí)間時(shí) Word[0][i2+16]=tiquNum(time_buf1[4]%10,i2); Word[1][i2]=MaoHao[i2]; //冒號 Word[1][i2+16]=tiquNum(time_buf1[5]/10,i2);//提取時(shí)間分 Word[2][i2]=tiquNum(time_buf1[5]%10,i2); Word[2][i2+16]=MaoHao[i2];//冒號 Word[3][i2]=tiquNum(time_buf1[6]/10,i2); //提取時(shí)間秒 Word[3][i2+16]=tiquNum(time_buf1[6]%10,i2); } Clear_Display(); while(1) { if(SetFlag==1)//如果接收到串口信息則更新時(shí)鐘 { for(i=0;i<8;i++) { time_buf1[i]=time_buf2[2*i]*10+time_buf2[2*i+1];//數(shù)據(jù)整合,如2個(gè)數(shù)1和5整合成15 } Ds1302_Write_Time();//接收更新的時(shí)間然后寫入ds1302 SetFlag=0;//時(shí)鐘信息更新后標(biāo)志位清零 } if((key1==0)||(key2==0)||(key3==0)||(key4==0))//檢測到按鍵按下 { if(rekey==0)//防止重復(fù)按下 { DelayMs(10); if(key1==0)//確認(rèn)按鍵按下 { rekey=1; //防止重復(fù) keyFlag=1; Shift_Bit=0; //初始化所有顯示參數(shù) Flag_Shift=0; //標(biāo)志清零 Timer0_Count=0;//定時(shí)計(jì)數(shù)清零//**Allnotescanbedeletedandmodified**// Shift_Count=0;//計(jì)數(shù)清零 Display_Word_Count=0; //顯示字?jǐn)?shù)清零 Clear_Display();//清屏 } elseif(key2==0) { rekey=1;//防止重復(fù) keyFlag=2; Shift_Bit=0; //初始化所有顯示參數(shù) Flag_Shift=0; //標(biāo)志清零 Timer0_Count=0;//定時(shí)計(jì)數(shù)清零 temp=0x80; //初始化中間變量 Shift_Count=0; //計(jì)數(shù)清零 Display_Word_Count=0; //顯示字?jǐn)?shù)清零 Clear_Display(); //清屏 } elseif(key3==0) { rekey=1;//防止重復(fù) keyFlag=3; Shift_Bit=0; //初始化所有顯示參數(shù) Flag_Shift=0; //標(biāo)志清零 Timer0_Count=0;//定時(shí)計(jì)數(shù)清零 temp=0x80; //初始化中間變量 Shift_Count=0;//計(jì)數(shù)清零 Display_Word_Count=0; //顯示字?jǐn)?shù)清零 Clear_Display();//清屏 } elseif(key4==0) { rekey=1; //防止重復(fù) keyFlag=0; Shift_Bit=0; //初始化所有顯示參數(shù) Flag_Shift=0; //標(biāo)志清零 Timer0_Count=0;//定時(shí)計(jì)數(shù)清零 temp=0x80; //初始化中間變量 Shift_Count=0; //計(jì)數(shù)清零 Display_Word_Count=0; //顯示字?jǐn)?shù)清零 Clear_Display(); //清屏 } ReadTimeFlag=1;//讀取時(shí)間 } } else {rekey=0;} //防止重復(fù)按下 if(ReadTimeFlag==1)//定時(shí)讀取ds1302定時(shí)時(shí)間到則標(biāo)志位置1,處理過時(shí)間參數(shù)標(biāo)志位清零 { ReadTimeFlag=0;//標(biāo)志位清零 Ds1302_Read_Time();//讀取時(shí)間參數(shù) if(keyFlag==1) { for(i2=0;i2<16;i2++) { Word[0][i2]=tiquNum(time_buf1[4]%100/10,i2); //時(shí) Word[0][i2+16]=tiquNum(time_buf1[4]%10,i2); Word[1][i2]=MaoHao[i2]; //: Word[1][i2+16]=tiquNum(time_buf1[5]/10,i2);//分 Word[2][i2]=tiquNum(time_buf1[5]%10,i2); Word[2][i2+16]=MaoHao[i2]; Word[3][i2]=tiquNum(time_buf1[6]/10,i2); //秒 Word[3][i2+16]=tiquNum(time_buf1[6]%10,i2); } } elseif(keyFlag==2) { for(i2=0;i2<16;i2++) { Word[0][i2]=tiquNum(time_buf1[1]%100/10,i2); //年 Word[0][i2+16]=tiquNum(time_buf1[1]%10,i2); Word[1][i2]=Gang[i2]; Word[1][i2+16]=tiquNum(time_buf1[2]%100/10,i2);//月 Word[2][i2]=tiquNum(time_buf1[2]%10,i2); Word[2][i2+16]=Gang[i2]; Word[3][i2]=tiquNum(time_buf1[3]%100/10,i2);//日 Word[3][i2+16]=tiquNum(time_buf1[3]%10,i2); } } elseif(keyFlag==3) { for(i2=0;i2<16;i2++) { Word[0][i2]= XueXiao[0][i2]; //顯示歡迎使用 Word[0][i2+16]= XueXiao[0][i2+16]; Word[1][i2]= XueXiao[1][i2]; Word[1][i2+16]= XueXiao[1][i2+16]; Word[2][i2]= XueXiao[2][i2]; Word[2][i2+16]= XueXiao[2][i2+16]; Word[3][i2]= XueXiao[3][i2]; Word[3][i2+16]= XueXiao[3][i2+16]; } } } if(keyFlag!=0) { Display(Display_Swap_Buffer);//顯示提取的數(shù)據(jù) if(Flag_Shift==1) { Flag_Shift=0; Display_Word_Count=Shift_Count/16; //計(jì)算當(dāng)前顯示第幾個(gè)字 Calc_Shift(); Shift_Count++; if(Shift_Count==(Num_Of_Word+1)*16) //移動(dòng)次數(shù) { Shift_Count=0; //達(dá)到移動(dòng)單位數(shù)從新計(jì)數(shù) } } } else { DisplayXin(xinxing); //顯示心形 } }}unsignedchartiquNum(unsignedcharNum,i) //提取自摸{ switch(Num) { case0:return(Num0[i]);break;//自摸0一下類似 case1:return(Num1[i]);break; case2:return(Num2[i]);break; case3:return(Num3[i]);break; case4:return(Num4[i]);break; case5:return(Num5[i]);break; case6:return(Num6[i]);break; case7:return(Num7[i]);break; case8:return(Num8[i]);break; case9:return(Num9[i]);break; default:break; } return(0);}//****************************************************//初始化定時(shí)器0//****************************************************voidInit_Timer0(){//**Allnotescanbedeletedandmodified**//TMOD|=0x10; //T0,工作模式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; //開啟定時(shí)器 ET0=1; //開啟定時(shí)器中斷 EA=1; //開啟總中斷 }//****************************************************//中斷函數(shù)//****************************************************voidTimer0()interrupt1{ TH0=(65536-5000)/256; TL0=(65536-5000)%256; TF0=0; Timer0_Count++; if(Timer0_Count>=10) //計(jì)數(shù)約50ms5ms一次10次 { Timer0_Count=0; //重新計(jì)數(shù) Flag_Shift=1; //標(biāo)志位置位 }}//************************************************************//num為字?jǐn)?shù)dat[][32]為字模的名稱//*************************************************************voidDisplayXin(unsignedchardat[][32]) { unsignedchari,j; for(i=0;i<16;i++) { LEDARRAY_G=1; //更新數(shù)據(jù)時(shí)候關(guān)閉顯示。等更新完數(shù)據(jù),打開138顯示行。防止重影。 Display_Buffer[0]=dat[0][i]; //填充要顯示的數(shù)據(jù) Display_Buffer[1]=dat[0][i+16]; Send(Display_Buffer[1]);//發(fā)送顯示數(shù)據(jù) Send(Display_Buffer[0]); LEDARRAY_LAT=1; //鎖存數(shù)據(jù) _nop_(); LEDARRAY_LAT=0; _nop_(); Scan_Line(i); //選擇第i行 LEDARRAY_G=0; for(j=0;j<100;j++); //延時(shí)一段時(shí)間,讓LED亮起來。 } }//************************************************************//計(jì)算移動(dòng)數(shù)據(jù),存在在緩沖器//************************************************************voidCalc_Shift(){ unsignedchari; for(i=0;i<16;i++) { if((Display_Swap_Buffer[0][16+i]&0x80)==0) //前8位 移位 { Display_Swap_Buffer[0][i]=(Display_Swap_Buffer[0][i]<<1)&0xfe; //最低位清零 } else { Display_Swap_Buffer[0][i]=(Display_Swap_Buffer[0][i]<<1)|0x01; //最低位置一 } if(Shift_Count%16<8&&Display_Word_Count<Num_Of_Word) { Shift_Bit=Word[Display_Word_Count][i]&temp; } elseif(Shift_Count%16<16&&Display_Word_Count<Num_Of_Word) { Shift_Bit=Word[Display_Word_Count][16+i]&temp; } else { Shift_Bit=1; //把字移出緩沖區(qū) } if(Shift_Bit==0) //后8位移位 { Display_Swap_Buffer[0][16+i]=(Display_Swap_Buffer[0][16+i]<<1)&0xfe; //最低位清零 } else { Shift_Bit= 1; Display_Swap_Buffer[0][16+i]=(Display_Swap_Buffer[0][16+i]<<1)|0x01; //最低位置一 } } temp=(temp>>1)&0x7f; if(temp==0x00) { temp=0x80; ReadTimeFlag=1; led=!led; }}//************************************************************//清空緩沖區(qū)//************************************************************voidClear_Display(){ unsignedchari,j; for(j=0;j<Display_Num_Word;j++) { for(i=0;i<32;i++) { Display_Swap_Buffer[j][i]=0xff; //0=顯示1=不顯示 } }}//************************************************************//num為字?jǐn)?shù)dat[][32]為字模的名稱//*************************************************************voidDisplay(unsignedchardat[][32]) { unsignedchari,j; for(i=0;i<16;i++) { LEDARRAY_G=1; //更新數(shù)據(jù)時(shí)候關(guān)閉顯示。等更新完數(shù)據(jù),打開138顯示行。防止重影。 Display_Buffer[0]=dat[0][i]; Display_Buffer[1]=dat[0][i+16];//**Allnotescanbedeletedandmodified**// LEDARRAY_LAT=1; //鎖存數(shù)據(jù) _nop_(); LEDARRAY_LAT=0; _nop_(); Scan_Line(i); //選擇第i行 LEDARRAY_G=0; for(j=0;j<100;j++); //延時(shí)一段時(shí)間,讓LED亮起來。 } }//****************************************************//掃描某一行//****************************************************voidScan_Line(unsignedcharm) //行掃描{ switch(m) { case0: LEDARRAY_D=0;LEDARRAY_C=0;LEDARRAY_B=0;LEDARRAY_A=0; break; case1: LEDARRAY_D=0;LEDARRAY_C=0;LEDARRAY_B=0;LEDARRAY_A=1; break; case2: LEDARRAY_D=0;LEDARRAY_C=0;LEDARRAY_B=1;LEDARRAY_A=0; break; case3: LEDARRAY_D=0;LEDARRAY_C=0;LEDARRAY_B=1;LEDARRAY_A=1; break; case4: LEDARRAY_D=0;LEDARRAY_C=1;LEDARRAY_B=0;LEDARRAY_A=0; break; case5: LEDARRAY_D=0;LEDARRAY_C=1;LEDARRAY_B=0;LEDARRAY_A=1; break; case6: LEDARRAY_D=0;LEDARRAY_C=1;LEDARRAY_B=1;LEDARRAY_A=0; break; case7: LEDARRAY_D=0;LEDARRAY_C=1;LEDARRAY_B=1;LEDARRAY_A=1; break; case8: LEDARRAY_D=1;LEDARRAY_C=0;LEDARRAY_B=0;LEDARRAY_A=0; break; case9: LEDARRAY_D=1;LEDARRAY_C=0;LEDARRAY_B=0;LEDARRAY_A=1; break; case10: LEDARRAY_D=1;LEDARRAY_C=0;LEDARRAY_B=1;LEDARRAY_A=0; break; case11: LEDARRAY_D=1;LEDARRAY_C=0;LEDARRAY_B=1;LEDARRAY_A=1; break; case12: LEDARRAY_D=1;LEDARRAY_C=1;LEDARRAY_B=0;LEDARRAY_A=0; break; case13: LEDARRAY_D=1;LEDARRAY_C=1;LEDARRAY_B=0;LEDARRAY_A=1; break; case14: LEDARRAY_D=1;LEDARRAY_C=1;LEDARRAY_B=1;LEDARRAY_A=0; break; case15: LEDARRAY_D=1;LEDARRAY_C=1;LEDARRAY_B=1;LEDARRAY_A=1; break; default:break; }}//****************************************************//發(fā)送數(shù)據(jù)//****************************************************voidSend(unsignedchardat){ unsignedchari; charj=0; LEDARRAY_CLK=0; _nop_(); LEDARRAY_LAT=0; _nop_(); for(i=0;i<8;i++) { if(dat&0x01) { LEDARRAY_DI=1; //置位根據(jù)模塊資料來 } else { LEDARRAY_DI=0; } LEDARRAY_CLK=1; //上升沿發(fā)送數(shù)據(jù) _nop_(); LEDARRAY_CLK=0; _nop_(); d
溫馨提示
- 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ù)員與生物工程企業(yè)合作協(xié)議
- 患者尿管護(hù)理規(guī)范與實(shí)施
- 冬春季傳染病防控指南
- 餐廳技術(shù)加盟協(xié)議書
- 被迫寫下婚前協(xié)議書
- 解除勞動(dòng)和解協(xié)議書
- 餐飲股東入股協(xié)議書
- 訓(xùn)練籃球安全協(xié)議書
- 飯?zhí)檬程贸邪鼌f(xié)議書
- 銷售總監(jiān)聘請協(xié)議書
- 知識(shí)圖譜構(gòu)建與應(yīng)用試題及答案
- 湖北省武漢市2025屆高三五月模擬訓(xùn)練英語試題(含答案無聽力原文及音頻)
- 基因編輯技術(shù)的臨床應(yīng)用與未來發(fā)展方向-洞察闡釋
- 靜脈輸液不良反應(yīng)應(yīng)急預(yù)案與處理流程
- 《論亞太局勢》課件
- 基于深度學(xué)習(xí)的日志異常檢測技術(shù)研究
- 大學(xué)生勞動(dòng)就業(yè)法律問題解讀(華東理工大學(xué))智慧樹知到見面課、章節(jié)測試、期末考試答案
- 水電站收購分析報(bào)告
- 水泥粉助磨劑項(xiàng)目可行性研究報(bào)告發(fā)改委立項(xiàng)模板
- 濟(jì)南公共交通集團(tuán)有限公司招聘筆試題庫2025
- 工貿(mào)行業(yè)重大安全生產(chǎn)事故隱患判定標(biāo)準(zhǔn)解讀課件
評論
0/150
提交評論