




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
綜合實踐 項目名稱 基于單片機的光立方設(shè)計 專業(yè)班級 學(xué)生姓名 指導(dǎo)教師 年 月 日 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 I 摘 要 本課程設(shè)計制作出一個三維立體顯示圖案的 LED 光立方。主要采用 8*8*8 led 組 成的模式。距離是 14cm*14cm*20cm(長.寬.高),主要分為三個模塊:主控模塊、驅(qū) 動模塊、顯示模塊;我們所做的光立方驅(qū)動電路,主控電路等都是純手工焊接。采用 的主控芯片 32K STC89C58 芯片,驅(qū)動電路是采用我們常用的 74HC574 數(shù)字芯片。光立 方工作過程中,通過程序?qū)﹄娐返目刂?,可以?LED 組成的立方體上顯示出各種圖形。 軟件采用自上而下的模塊化設(shè)計思想,使系統(tǒng)朝著分布式、小型化方向發(fā)展,增強系 統(tǒng)的可擴展性和運行的穩(wěn)定性。 關(guān)鍵詞關(guān)鍵詞:LED 光立方; 74HC574; 51單片機 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 II ABSTRACT This design produced a three-dimensional pattern of the LED light cube. This product can not only like a light-emitting diode dot matrix display plane static or dynamic screen can also display three-dimensional static or dynamic images,and to break the traditional program.While increasing the display patterns and three-dimensional effect can be widely used to display and decorative display for future progress and development to guide the direction,light cube display more visual effects than the light-emitting diode dot matrix,and the picture is more rich colorful. With a combination of graphics and characters more perfect display characteristics. The design is STC89C58 MCU core controller,eight D edge flip-flop 74HC574 (tri-state) expansion I/O port completion of the hardware circuit design. Programmed by software to control the data is downloaded to the MCU to complete the designs of the show. This design software is a top-down modular design,the system moving in the direction of distributed,small development,enhance the stability of the systems scalability and running. Keywords: :52single-chip;74HC573latch;8*8*8 LED; 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 III 目 錄 摘 要.I ABSTRACT.II 第 1 章 緒論.1 1.1 目的與要求.1 1.2 電路的設(shè)計與元件的選擇.1 1.2.1 電路設(shè)計.1 1.2.2 元件的選擇.2 第 2 章 電路工作原理.3 2.1 設(shè)計原理.3 2.2 模塊與控制器接口.3 第 3 章 方案選擇.5 3.1 電源的選擇.5 3.2 3D 顯示核心控制器.5 3.2.1 單片機.5 3.2.2 DSP 芯片.5 3.2.3 EDA.6 3.3 I/O 口擴展芯片的選擇.6 3.4 LED 發(fā)光顯示二級管.6 3.4.1 按顏色分類.7 3.4.2 按使用場合分類.7 3.4.3 按發(fā)光點直徑分類.7 第 4 章 焊接.8 4.1 焊接前準(zhǔn)備工作.8 4.2 焊接.8 第 5 章 程序設(shè)計的選擇與分析.10 5.1 單片機 C 語言主要特點.10 5.2 單片機 C 語言與標(biāo)準(zhǔn) C 語言的區(qū)別.10 5.3 數(shù)據(jù)類型的選用.11 5.4 算法設(shè)計問題.11 5.5 數(shù)據(jù)存儲器的分配.12 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 IV 5.6 單片機 C 語言與匯編語言的混合編程.12 5.7 程序分析選擇.14 第 6 章 電路調(diào)試與總結(jié).15 參考文獻(xiàn).16 附錄 程序代碼.17 致謝.23 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 1 第 1 章 緒論 1.1 目的與要求 (1)目的:轉(zhuǎn)眼間我們學(xué)習(xí)單片機已經(jīng)有大半學(xué)期了,也是到了期末的考試時間 了,感到安慰的是不用考試,但是要做一個實物,做這個實物的目的是主要回顧我們 學(xué)習(xí)的單片機知識和提高我們的焊接和其他的動手實操能力(包括了數(shù)字電路和模擬 電路的知識) 。 (2)要求:要有自主創(chuàng)新,其中我們的開關(guān)是采用觸摸型開關(guān),只要由一個 I/O 口 和 VCC 組成。 1.2 電路的設(shè)計與元件的選擇 1.2.1 電路設(shè)計 主要分為三個模塊分別是主控模塊,驅(qū)動模塊,顯示模塊。其中 P1 位一個觸摸型 的開關(guān),C3 為去耦電容防止高頻干擾。 驅(qū)動電路:在驅(qū)動電路上,每個鎖存芯片的電源端都加了一個瓷片電容,主要的 作用是防止高頻干擾 顯示電路:所有的燈的負(fù)端都是接在一起的,下面的每一組都是控制光立方的一 個面,控制的是光立方的豎起來的面,而橫著的面由圖 3 的 74LS138 控制。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 2 1.2.2 元件的選擇 (1)由于光立方的程序量比較大,而且要求相對比較高,因此經(jīng)過考慮之后我們 決定用 51 系列的增強型芯片 STC89C58,選擇的理由:STC89C58RD+是單時鐘/機器 周期(IT)的單片機,采集速度較普通 51 單片機快 8 一 12 倍,此外,較寬的電壓范圍(5.5 一 3.3V)增強了系統(tǒng)的適應(yīng)性。 (2)串行移位芯片采用 74LS138,它還有亮度調(diào)整功能,通過調(diào)節(jié) R_EXT 端的 電阻大小或者 PWM,就可輕松做到亮度可控。層切換是通過 3-8 線譯碼器 74HC138 可代換芯片:74138 系列。對控制器輸出的層信號譯碼,然后通過 P 溝道 MOS 管放大 后驅(qū)動 LED 光立方一層的二極管陽極,此時對應(yīng)移位后的并行數(shù)據(jù)就被顯示出來了。 然后通過協(xié)調(diào)層的數(shù)據(jù)和層的選通,動態(tài)顯示后就能做到立體控制與顯示。 (3)由于在剛剛接觸鎖存器的時候,就接觸了 74HC574,對它的使用也比較成 熟,因此在驅(qū)動部分使用了熟悉的 74HC574,其優(yōu)點有: 1.高阻態(tài);就是輸出既不是高電平,也不是低電平,而是高阻抗的狀態(tài);在這種狀態(tài)下, 可以多個芯片并聯(lián)輸出 2.數(shù)據(jù)鎖存;當(dāng)輸入的數(shù)據(jù)消失時,在芯片的輸出端,數(shù)據(jù)仍然保持 3.數(shù)據(jù)緩沖; 加強驅(qū)動能力 4.這 8 片 74LM574 構(gòu)成了 64 位的靜態(tài)顯示,可顯示一層的圖像也就是一個二維 畫面。 (4)LED 燈的選擇,出于外觀和整體的形狀美觀,我們放棄我們經(jīng)常用的草帽 型 LED,采用的是方形高亮的 LED 燈 由于草帽的光發(fā)散比較厲害容易影響視角效果,從而使用方形的,同時方形的也 比較聚光。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 3 第 2 章 電路工作原理 2.1 設(shè)計原理 每層的 LED 排序如上圖 D0,D1,D2,D3D62,D63 分別為 64 個 LED 陣列實際排序 方式,也就是光立方的俯視圖,對應(yīng)下圖分別是其數(shù)據(jù)信號 Error!Error!Error!0,Error!Error!Error!1,Error!Error!Error!2,Error!Error!Err or!3Error!Error!Error!62,Error!Error!Error!63; “光立方”是由 8 層這樣布局的 LED 組成,每層位置排列全部一致 每層 LED 的所有正極全部接到一起,然后連接 138 的行掃描驅(qū)動電路,通過 138 譯碼確定使能哪一層 數(shù)組 OUT0代表光立方從第一層 D0 到第八層 D0 的數(shù)據(jù),以此類推數(shù)組 OUT1 代表光立方從第一層 D1 到第八層 D1 的數(shù)據(jù)。這樣數(shù)組中就包含了光立方完整的一幀 數(shù)據(jù)。 OUT0的位 0 表示光立方的 D0 的所在第一層數(shù)據(jù)(1 為點亮 0 為熄滅) ,同樣 OUT0的位 1 也就是第 2 層的數(shù)據(jù)。 2.2 模塊與控制器接口 VCC:電源 5V 可做處理器電源 GND:電路地線公共地 EN:當(dāng)模塊的層掃描信號完成后,使能該信號,低電平有效,必須在下次掃描信 Y Y 軸軸 X X 軸軸 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 4 號切換前終止使能 C,B,A:為層掃描切換,000 為第 1 層,001 為第 2 層,010 為第 3 層,011 為第 4 層,100 為第 5 層,101 為第 6 層,110 為第 7 層,111 為第 8 層。 CLK:為串行移位總線的時鐘時序 LE:寄存器輸出脈沖,將此時移位寄存器數(shù)據(jù)傳輸?shù)捷敵黾拇嫫?DS: SDI 為串行移位總線的數(shù)據(jù)時序時鐘上升沿鎖存數(shù)據(jù) 電源:接 5V 電源。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 5 第 3 章 方案選擇 3.1 電源的選擇 方案一:采用普通干電池作為 LED 系統(tǒng)的電源,由于點陣系統(tǒng)耗電量較大,點陣 系統(tǒng)一般懸掛在高處上,一直不停的工作。使用干電池需經(jīng)常換電池,不符合節(jié)約型 社會的要求。 方案二:采用一塊 LM7805 三端集成穩(wěn)壓器。把市電經(jīng)變壓器降壓輸入電路,而 后整流送到 LM7805 三端穩(wěn)壓器穩(wěn)壓輸出作為工作電壓。不僅功率上可以滿足系統(tǒng)需 要,不需要更換電源,并且比較輕便,使用更加安全可靠。 方案三:采用 5V 電源的移動充電寶。 基于以上分析,決定選取 5V 電源的移動充電寶供電電源。 3.2 3D 顯示核心控制器 控制部分是整個系統(tǒng)的核心部分,其功能可以實現(xiàn)與上位機通信接收上位機發(fā)送 的數(shù)據(jù)和控制指令經(jīng)處理過后控制顯示屏顯示內(nèi)容。其常用的電子設(shè)計方法有單片機、 DSP、及 EDA 技術(shù)。 3.2.1 單片機 單片機是集成了 CPU,ROM,RAM 和 I/ O 口的微型計算機。它有很強的接口性 能,非常適合于工業(yè)控制,因此又叫微控制器(MCU)。單片機品種齊全,型號多樣 CPU 從 8,16,32 到 64 位,多采用 RISC 技術(shù),片上 I/O 非常豐富,有的單片機集 成有 A/ D, “ 看門狗” ,PWM,顯示驅(qū)動,函數(shù)發(fā)生器,鍵盤控制等。它們的價格也 高低不等,這樣極大地滿足了開發(fā)者的選擇自由。除此之外單片機還具有低電壓和低 功耗的特點。隨著超大規(guī)模集成電路的發(fā)展,單片機在便攜式產(chǎn)品中大有用武之地。 3.2.2 DSP 芯片 DSP 又叫數(shù)字信號處理器。顧名思義,DSP 主要用于數(shù)字信號處理領(lǐng)域,非常適 合高密度,重復(fù)運算及大數(shù)據(jù)容量的信號處理?,F(xiàn)在已經(jīng)廣泛應(yīng)用于通信、便攜式計 算機和便攜式儀表、雷達(dá)、圖像、航空、家用電器、醫(yī)療設(shè)備等領(lǐng)域。 DSP 區(qū)別于一 般微處理器的另一重要標(biāo)志是硬件乘法器以及特殊指令,一般微處理器用軟件實現(xiàn)乘 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 6 法,逐條執(zhí)行指令,速度慢。DSP 依靠硬件乘法器單周期完成乘法運算,而且還具有 專門的信號處理指令。它的強大數(shù)據(jù)處理能力和高運行速度,是最值得稱道的兩大特 色。芯片內(nèi)置 544 字的高速 SRAM。外部可尋址 64K 字程序/數(shù)據(jù)及 I/O,令周期在 25ns50ns 之間,實時性處理比 16 位單片機快 2 倍以上,可取代一般的單片機。 3.2.3 EDA EDA(即 Electronic Design Automation) 即電子設(shè)計自動化,它是以計算機為工具, 在 EDA 軟件平臺上,對用硬件描述語言 HDL 完成的設(shè)計文件自動地邏輯編譯、邏 輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至對于特定目標(biāo) 芯片進行適配編譯、邏輯影射和編程下載等。而且 MCU 和 DSP 都是通過串行執(zhí)行指 令來實現(xiàn)特定功能,不可避免低速,而 FPGA/CPLD 則可實現(xiàn)硬件上的并行工作,在 實時測控和高速應(yīng)用領(lǐng)域前景廣闊;另一方面,F(xiàn)PGA/CPLP 器件在功能開發(fā)上是軟件 實現(xiàn)的,但物理機制卻和純硬件電路一樣,十分可靠。 基于以上分析,三種設(shè)計方式相比較各有優(yōu)點且都能夠?qū)崿F(xiàn)控制功能,但單片機 的技術(shù)門檻較低開發(fā)成本也較低非常適合初學(xué)者進行學(xué)習(xí)和鍛煉使用。現(xiàn)在市場上常 用的單片機主要有 MCS-52、AVR、ARM、PIC 等。其中應(yīng)用最廣泛的單片機首推 Intel 的 52 系列,由于產(chǎn)品硬件結(jié)構(gòu)合理,指令系統(tǒng)規(guī)范,加之生產(chǎn)歷史“悠久” ,有 先入為主的優(yōu)勢常作為單片機學(xué)習(xí)的教材。所以決定選取 52 系列單片機作為控制部分 的核心器件。 3.3 I/O 口擴展芯片的選擇 方案一:選取串口輸入并口輸出芯片 74LS164,雖然 I/O 口使用較少,由于本次 設(shè)計共需要 72 路 I/O 口,列驅(qū)動電路就需要 8 塊 74LS164。顯示數(shù)據(jù)是先后順序給送 去的,顯示會有延遲,而 LED 動態(tài)顯示的刷新的時間控制大約 10ms,實時性差,效 果不好。 方案二:74HC573 跟 74LS573 的管腳一樣。器件的輸入是和標(biāo)準(zhǔn) CMOS 輸出兼 容的;加上拉電阻,他們能和 HC/ALSTTL 輸出兼容。當(dāng)鎖存使能端為高時,這些器 件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同步) 。當(dāng)鎖存使能變低時,符合建立時間 和保持時間的數(shù)據(jù)會被鎖存。8 塊 74HC573 共用 64 個 I/O 口,數(shù)據(jù)可以并行寫入芯片, 延遲時間少,滿足設(shè)計要求。 綜合以上比較,決定選取 74HC573 作為列線驅(qū)動 IO 口擴展芯片。 3.4 LED 發(fā)光顯示二級管 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 7 LED 是一種固體光源,當(dāng)它兩端加上正向電壓時就可以發(fā)光。采用不同的材料, 可制成不同顏色的發(fā)光二極管。作為一種新的光源,廣受歡迎而得以快速發(fā)展。從而 在各種各樣的傳媒信息的宣傳中得以體現(xiàn)。簡述其分類方法如下。 3.4.1 按顏色分類 單基色顯示屏:單一顏色(紅色、綠色、黃色、藍(lán)色等等) 。 雙基色顯示屏:紅和綠雙基色,256 級灰度、可以顯示 65536 種顏色。 全彩色顯示屏:紅、綠、藍(lán)三基色,256 級灰度的全彩色顯示屏可以顯示一千六 百多萬種顏色。 3.4.2 按使用場合分類 室內(nèi)顯示屏:發(fā)光點較小,一般 3mm-8mm,顯示面積一般零點幾至十幾平 方米。 室外顯示屏:面積一般幾十平方米至幾百平方米,亮度高,可在陽光下工作,具 有防風(fēng)、防雨、防水功能。 3.4.3 按發(fā)光點直徑分類 室內(nèi)屏:3mm、3。75mm、5mm。 室外屏:10mm、12mm、16mm、19mm、21mm、26mm。 基于以上分析結(jié)果,加上由于成本和控制的難易程度,決定選取單色 3mm 綠光 LED 作為本次設(shè)計顯示色彩,亮度高,顯示效果很好。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 8 第 4 章 焊接 4.1 焊接前準(zhǔn)備工作 準(zhǔn)備好烙鐵、焊錫絲、鉗子等工具,以及 LED。LED 的正負(fù)極很好判別,長的引 腳為+,短的為-。LED 最好選用直徑 3mm 的 LED,推薦選綠色。長腳的 LED 可以省 很多工作量。實際測量長腳是 29mm,短腳為 27mm,由于 LED 光立方板子燈的間距 決定了,每個 LED 的間距是 20mm。這樣長短引腳都符合這個尺寸。由于所有 LED 框架焊接好后,一旦有 LED 損壞更換難度很大,所以焊接前要測試所有 LED,用一 般數(shù)字顯示萬用表打到二極管量程,用萬用表紅表筆接長引腳,黑的接短引腳。LED 正常發(fā)光并且亮度基本一致,這樣的 LED 就是好的,否則是壞燈。如果為了確保可靠 也可以焊接好一層后測試 LED 是否能點亮。 4.2 焊接 將 8 個 LED 焊接為一組,可以通過 2 種方法完成。 方法一:需要用鉗子將 LED 的正極扭彎,這個彎,一定要小,正好露出 LED 外圍 打彎正合適,LED 的正極折彎后留下的引腳長度必須大于 LED 的間距 20mm,以確保 有足夠的重合位 LED 燈腳全部折好后,就可以焊接了,為了方便焊接可以在萬能板上 面鉆幾個 2mm 的孔,間距為 8 個洞洞置以便焊接。焊接細(xì)節(jié),將一個 LED 正極的引 腳靠近到另一個 LED 正極的打彎處,然后上焊錫焊接,焊接要光亮可靠,有一定機械 強度。這樣將全部 LED 焊接成 8 個一組的 LED 燈排待用。焊接時避免用過多助焊劑, 要不會粘到 LED 表面,影響外觀。焊機避免正負(fù) 2 極短路。注意每一層的二極管都是 共陰的。 方法二:需要借助一個工藝設(shè)備,這個東西可以自己動手制作,用這個輔助焊接 當(dāng)然要容易些。焊接方法也是一樣的,將一個 LED 正極的引腳靠近到另一個 LED 正 極的打彎處,然后上焊錫焊接,焊接要光亮可靠,有一定機械強度。這樣將全部 LED 焊接成 8 個一組的 LED 燈排待用。焊接小經(jīng)驗,由于 LED 燈腳有一定彈性,一個 LED 的引腳靠近到另一個 LED 正極的打彎處時,一松手就又彈遠(yuǎn)了,所以建議焊接 時多掰一點,掰過了之后利用彈性將兩個要焊接的引腳 靠進,這樣焊接會容易許多。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 9 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 10 第 5 章 程序設(shè)計的選擇與分析 作為一種結(jié)構(gòu)化的程序設(shè)計語言,C 語言的特點就是可以使你盡量少地對硬件進 行操作,具有很強的功能性、結(jié)構(gòu)性和可移植性,常常被優(yōu)選作為單片機系統(tǒng)的編程 語言。但是基于單片機的 C 語言和標(biāo)準(zhǔn) C 語言有很大區(qū)別,如何結(jié)合單片機的系統(tǒng)資 源,用 C 語言開發(fā)符合實際工程需要的單片機系統(tǒng),對用編程者來說具有十分重要的 意義。 5.1 單片機 C 語言主要特點 用 C 編寫程序比匯編更符合人們的思考習(xí)慣,開發(fā)者可以擺脫與硬件無必要的接 觸,更專心的考慮功能和算法而不是考慮一些細(xì)節(jié)問題,這樣就減少了開發(fā)和調(diào)試的 時間。C 語言具有良好的程序結(jié)構(gòu),適用于模塊化程序設(shè)計,因此采用 C 語言設(shè)計單片 機應(yīng)用系統(tǒng)程序時,首先要盡可能地采用結(jié)構(gòu)化的程序設(shè)計方法,將功能模塊化,由 不同的模塊完成不同的功能1,這樣可使整個應(yīng)用系統(tǒng)程序結(jié)構(gòu)清晰,易于調(diào)試和維 護。不同的功能模塊,分別指定相應(yīng)的入口參數(shù)和出口參數(shù),對于一些要重復(fù)調(diào)用的 程序一般把其編成函數(shù),這樣可以減少程序代碼的長度,又便于整個程序的管理,還 可增強可讀性和移植性。 在實際單片機程序設(shè)計中,程序結(jié)構(gòu)一般均采用如下結(jié)構(gòu): #include /*頭文件說明部份*/ unsigned char x1,x2; /*全局變量聲明部份*/ Function1( ) /*功能函數(shù)定義部份*/ main() inti,j; /* 整型變量聲明部份*/ Function1(); /* 功能函數(shù)說明部份*/ 5.2 單片機 C 語言與標(biāo)準(zhǔn) C 語言的區(qū)別 由于現(xiàn)在越來越多的產(chǎn)品都采用單片機開發(fā),所完成的計算和控制工作也日趨復(fù) 雜,但是單片機系統(tǒng)是一種資源十分有限的系統(tǒng),這主要表現(xiàn)在程序存儲器資源的不 足,因此在程序設(shè)計時如何使用好這些有限的資源就顯得十分重要。用 C 語言編程雖 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 11 然具有許多的優(yōu)點,但是生成的代碼相對要長,要是編程技術(shù)不好,生成的代碼甚至 有可能比匯編語言生成的代碼長幾倍,因此對編程者來說,應(yīng)該注意到單片機 C 語言 和一般意義上的標(biāo)準(zhǔn) C 語言的區(qū)別,對程序進行適當(dāng)?shù)膬?yōu)化。 5.3 數(shù)據(jù)類型的選用 單片機 C 語言編程不同于一般的 C 語言編程的顯著的一個特點,就是要和程序存 儲器資源結(jié)合起來,雖然其提供的數(shù)據(jù)據(jù)類型十分豐富,但是只有 bit 和 char 等數(shù)據(jù) 類型是是機器語言直接支持的數(shù)據(jù)類型,用此類數(shù)據(jù)類型的語句所生成的代碼較短; 而其它的數(shù)據(jù)類型如整型、浮點型等數(shù)據(jù)要有一定的內(nèi)部程序或內(nèi)部函數(shù)的支持,相 對來說用該類數(shù)據(jù)類型的語句生成的代碼要長。有些 C 語言程序表面上看起來十分的 簡單,但在在實際編譯時,生成的代碼卻相當(dāng)長。因此我們要按照實際需要,合理地 選用數(shù)據(jù),可以大大的減少所生成的代碼長度。例如在 S52 中每種數(shù)據(jù)類型變量所占 用存儲器字節(jié)數(shù)和經(jīng)編譯后生成的代碼長度如表 1 所示: 通過表 1 我們知道,不同的數(shù)據(jù)類型所生成的機器代碼長度相差很多,相同類型 的數(shù)據(jù)類型有無符號對機器代碼長度也有影響。在程序編譯時生成機器代碼長的數(shù)據(jù) 類型的優(yōu)先級越高,不同的數(shù)據(jù)類型在進行程序運算時要轉(zhuǎn)化為高優(yōu)先級的的數(shù)據(jù)類 型,相應(yīng)的代碼長度也會增長2。因此我們應(yīng)盡可能地使用 bit,char 等機器語言直接 支持的數(shù)據(jù)類型,無符號數(shù)的變量應(yīng)聲明為無符號數(shù),盡可能地減少程序中使用的數(shù) 據(jù)類型的種類。 5.4 算法設(shè)計問題 單片機 C 語言和標(biāo)準(zhǔn) C 語言存在著很大差別,在計算機上進行 C 語言程序設(shè)計時 由于不必考慮程序代碼的長短,只需考慮程序功能實現(xiàn),但是在單片機上進行 C 語言 程序設(shè)計就必須考慮系統(tǒng)的硬件資源。有時并不是程序的算法越簡單、長度越短越好, 因為有一些算法要調(diào)用一些內(nèi)部的子程序和函數(shù),生成的機器代碼長度非常長。不同 的算法對程序代碼長度影響十分大,因此在進行程序設(shè)計時,就盡量采用程序生成代 碼短的算法,在不影響程序功能實現(xiàn)的情況下可以采用一些優(yōu)化算法2。 在單片機 C 語言編譯成機器代碼時,不同的運算生成的機器代碼的長度相差很大, 盡可能地減少程序中對某種數(shù)據(jù)類型的運算種類,越復(fù)雜的數(shù)據(jù)類型效果越明顯。在進 行數(shù)據(jù)計算時,在一定的精度范圍內(nèi),可以用一些近似的計算來完成一些運算,既不損 失精度又能減少大量的代碼。比如:用邏輯 AND/充電 Loop: JB P3.6,AD_END ;開始計數(shù)匹配 INC A CJNE A,#100,Loop AD_END: CLR P3.7; 放電 CJNE A,#100,Ret_Val ;看結(jié)果是否有溢出,有溢出說明結(jié)果不對 SJMP Con_OV;返回值 Ret_Val:DEC A MOV R7, A; A/D 轉(zhuǎn)換的結(jié)果保存在 R7 中,傳遞給主程序 Con_OV: RET END 單片機 C 程序: include unsigned char AD(unsigned char);/在 C 程序中聲明匯編模數(shù)轉(zhuǎn)換子程序 void timer0(void) interrupt 1 using 1 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 14 unsigned char x; x=AD(); /在 C 程序中調(diào)用匯編程序 Main /主程序 在以上程序中,函數(shù)的返回值為一無符號字符型數(shù),根據(jù)調(diào)用規(guī)則,返回值在 R7 中,這樣才可保證數(shù)據(jù)的傳遞不出錯。另外,在調(diào)用過程中,必須注意寄存器的入棧。 這樣在以后用到 A/D 轉(zhuǎn)換時,在 C 語言中調(diào)用匯編語言子程序 AD()即可。 5.7 程序分析選擇 C 語言具有很強的功能性和結(jié)構(gòu)性,可以縮短單片機控制系統(tǒng)的開發(fā)周期,而且 易于調(diào)試和維護,已經(jīng)成為目前單片機語言中最流行的編程語言。所以本設(shè)計選取 C 語言作為編輯語言。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 15 第 6 章 電路調(diào)試與總結(jié) 完工以后抱著很激動的心情,編寫了調(diào)試的程序,主要是檢查全部的燈是否會亮, 但是單把程序燒寫進去之后,發(fā)現(xiàn)有兩列沒有點亮,還好兩列的都在邊上,進而如果 換燈也相對容易,我們用排除法來檢查電路,首先是檢查燈的線路是否虛焊,斷路, 果真有一列的是斷路了,把它接上后這一列也亮了,還剩下另外一列,我們用同樣的 方法來做,從驅(qū)動電路到顯示的都沒有問題,而且在輸入那一列的電壓也正常,我們 就想不通了,是什么原因呢?我們懷疑是不是有燈壞了,我們又一個一個的檢查了這 一列燈,但是全部都會亮,經(jīng)過很細(xì)心的檢查,發(fā)現(xiàn)有一個燈的亮度和其他的燈亮度 完全不同,相對比較暗,于是我們把它換了下來,接上另外一個,果然是哪個燈的問 題,原來是由于燈的阻抗很大,把那一列的電平都拉低了,使燈無法亮起來 ,在電路 的調(diào)試中就出現(xiàn)了這些的問題,相對來說還是不錯的。 經(jīng)過這次的課程項目設(shè)計,我們更明確了團隊合作的是要領(lǐng)和精神,再次再一次 感謝老師對我們的幫助,在以后我們會做的更好。 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 16 參考文獻(xiàn) 1張毅坤,陳善久,裘雪紅. 單片微型計算機原理及應(yīng)用.西安電子科技大學(xué)出 版社.2008 年 5 月 2 華成英,童詩白. 模擬電子技術(shù)基礎(chǔ).高等教育出版社,2007 年 8 月 3 趙輝,劉印華 . PROTEL 99 電子線路 CAD.北京郵電大學(xué)出版社.2008 年 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 17 附錄 程序代碼 #include #define uchar unsigned char uchar t,i,k,a,s; sbit d1=P04; sbit d2=P06; sbit q0=P00; sbit q1=P01; sbit q2=P02; sbit q3=P03; sbit key=P05; void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=11;y0;y-); void yi() P0=0 xff;d1=0;d2=1;P2=0 xa5;delay(8);P2=0 xb5;delay(8);P2=0 xc5;delay(8);P2=0 xd5;de lay(8);P2=0 xe5;delay(8);P2=0 xf5;delay(8); void er() P0=0 xff;d1=1;d2=0; P2=0 x00;delay(8);P2=0 x03;delay(8);P2=0 x04;delay(8);P2=0 x07;delay(8);P2=0 x0e;dela y(8); P2=0 x0e;delay(8);P2=0 x0f;delay(8); d1=0;d2=1; 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 18 P2=0 x00;delay(8);P2=0 x10;delay(8);P2=0 x20;delay(8);P2=0 x30;delay(8);P2=0 x50;dela y(8);P2=0 x90;delay(8); P2=0 xa0;delay(8);P2=0 xc0;delay(8);P2=0 xf0;delay(8); void san() P0=0 xff;d1=1;d2=0; P2=0 x00;delay(8);P2=0 x03;delay(8);P2=0 x04;delay(8);P2=0 x07;delay(8);P2=0 x0e;dela y(8); d1=0;d2=1; P2=0 x00;delay(8);P2=0 x10;delay(8);P2=0 x20;delay(8);P2=0 x30;delay(8);P2=0 x40;dela y(8);P2=0 x50;delay(8);P2=0 x90;delay(8); P2=0 xa0;delay(8);P2=0 xc0;delay(8);P2=0 xf0;delay(8); void si() P0=0 xff;d1=1;d2=0; P2=0 x00;delay(8);P2=0 x01;delay(8);P2=0 x02;delay(8);P2=0 x03;delay(8);P2=0 x07;dela y(8); d1=0;d2=1; P2=0 x00;delay(8);P2=0 x10;delay(8);P2=0 x20;delay(8);P2=0 x30;delay(8);P2=0 x40;dela y(8);P2=0 x50;delay(8);P2=0 xc0;delay(8); void qi() P0=0 xff;d1=1;d2=0; P2=0 x03;delay(8);P2=0 x04;delay(8); d1=0;d2=1; P2=0 x00;delay(8);P2=0 x10;delay(8);P2=0 x20;delay(8);P2=0 x30;delay(8);P2=0 x40;dela y(8);P2=0 x50;delay(8);P2=0 xf0;delay(8); void ba() P0=0 xff;d1=1;d2=0; P2=0 x00;delay(8);P2=0 x01;delay(8);P2=0 x02;delay(8);P2=0 x03;delay(8);P2=0 x04;dela y(8);P2=0 x07;delay(8);P2=0 x0e;delay(8); 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方設(shè)計 19 P2=0 x0e;delay(8);P2=0 x0f;delay(8); d1=0;d2=1; P2=0 x00;delay(8);P2=0 x10;delay(8);P2=0 x20;delay(8);P2=0 x30;delay(8);P2=0 x40;dela y(8);P2=0 x50;delay(8);P2=0 x90;delay(8); P2=0 xa0;delay(8);P2=0 xc0;delay(8);P2=0 xf0;delay(8); void jiu() P0=0 xff;d1=1;d2=0; P2=0 x00;delay(8);P2=0 x01;delay(8);P2=0 x02;delay(8);P2=0 x03;delay(8);P2=0 x04;dela y(8);P2=0 x07;delay(8);P2=0 x0e;delay(8); P2=0 x0e;delay(8); d1=0;d2=1; P2=0 x00;delay(8);P2=0 x10;delay(8);P2=0 x20;delay(8);P2=0 x30;delay(8);P2=0 x40;dela y(8);P2=0 x50;delay(8);P2=0 x90;delay(8); P2=0 xa0;delay(8);P2=0 xc0;delay(8);P2=0 xf0;delay(8); void bayiqi() switch(t) case 0: P0=0 xff;P2=0 xfe;ba();break;delay(1); case 1: P2=0 xfd;ba();break;delay(1); case 2: P2=0 xfb;ba();break;delay(1); case 3: P2=0 xf7;ba();break;delay(1); case 4: P2=0 xef;ba();break;delay(1); case 5: P2=0 xf7;ba();break;delay(1); case 6: P2=0 xfb;ba();break;delay(1); case 7: P2=0 xfd;ba();break;delay(1); case 8: P2=0 xfe;ba();break;delay(1); case 9: P2=0 xfe;yi();break;delay(1); case 10: P2=0 xfd;yi();break;delay(1); case 11: P2=0 xfb;yi();break;delay(1); case 12: P2=0 xf7;yi();break;delay(1); case 13: P2=0 xef;yi();break;delay(1); case 14: P2=0 xf7;yi();break;delay(1); 班級班級 姓名姓名 基于單片機的光立方設(shè)計基于單片機的光立方
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中文言文教學(xué)現(xiàn)狀與《先秦諸子選讀》教材教學(xué)研究問卷調(diào)查
- 皰疹性咽峽炎的臨床護理
- 腦外傷關(guān)系護理要點
- 急性早幼粒細(xì)胞白血病的臨床護理
- 郵儲銀行ai面試題目及答案
- 應(yīng)屆生校招:國企會計崗位面試題目及答案
- 銀行招考法律試題及答案
- 醫(yī)院護工面試題庫及答案
- 專業(yè)育嬰師培訓(xùn)及實習(xí)協(xié)議
- 婚姻忠誠度保障與重大疾病保險合同
- 怎樣申請公開物業(yè)前期合同
- 教務(wù)管理系統(tǒng)調(diào)研報告
- 2024年上海市中考英語口語復(fù)習(xí)-交際應(yīng)答
- 畢業(yè)論文-絞肉機的設(shè)計
- 2024年西安交通大學(xué)少年班初試數(shù)學(xué)試題真題(答案詳解)
- 新人教版七年級數(shù)學(xué)上冊期末測試卷及答案【全面】
- 武漢市2024屆高中畢業(yè)生四月調(diào)研考試(四調(diào))政治試卷(含答案)
- 第七章-瀝青課件
- 全新版《大學(xué)英語》綜合教程-第一冊-教案
- 2024年01月青海大學(xué)附屬醫(yī)院招考聘用116人預(yù)選筆試近6年高頻考題難、易錯點薈萃答案帶詳解附后
- 企業(yè)采購管理手冊(大全)
評論
0/150
提交評論