基于AVR單片機(jī)的LED點陣屏設(shè)計_第1頁
基于AVR單片機(jī)的LED點陣屏設(shè)計_第2頁
基于AVR單片機(jī)的LED點陣屏設(shè)計_第3頁
基于AVR單片機(jī)的LED點陣屏設(shè)計_第4頁
基于AVR單片機(jī)的LED點陣屏設(shè)計_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、濟(jì)南大學(xué)畢業(yè)設(shè)計畢業(yè)設(shè)計題 目 基于avr單片機(jī) 的led點陣屏的設(shè)計 學(xué) 院 專 業(yè) 班 級 學(xué) 生 學(xué) 號 指導(dǎo)教師 二一二年 六 月 八 日-38-濟(jì)南大學(xué)畢業(yè)設(shè)計摘 要 led顯示屏是一種由很多個發(fā)光二極管組成的點陣,通過控制半導(dǎo)體發(fā)光二極管的亮滅來顯示內(nèi)容的顯示屏。led顯示屏分為數(shù)碼顯示屏、圖文顯示屏和視頻顯示屏,都是由led矩陣塊組成。目前由于led顯示屏造價昂貴,主要應(yīng)用于比較高檔的場所,主要集中在城市的繁華場所。本文介紹了一款以avr單片機(jī)為控制器的led點陣顯示屏系統(tǒng)的設(shè)計。該系統(tǒng)可實現(xiàn)字母漢字的靜態(tài)顯示和動態(tài)滾動效果,并且可以通過外擴(kuò)接口級連的方式來擴(kuò)大顯示屏幕的尺寸以達(dá)

2、到增加顯示內(nèi)容的目的。系統(tǒng)采用pc機(jī)作為上位機(jī),上位機(jī)向單片機(jī)發(fā)送控制命令和上位機(jī)所存儲的字模數(shù)據(jù),avr 單片機(jī)接收字模數(shù)據(jù)并處理pc機(jī)的控制命令,由顯示驅(qū)動模塊驅(qū)動一個1616分辨率的led點陣顯示屏的掃描顯示。pc機(jī)與單片機(jī)之間的通信采用rs232c通信標(biāo)準(zhǔn)來實現(xiàn)。該系統(tǒng)只占用了單片機(jī)少量的i /o口和內(nèi)存,為系統(tǒng)留下了功能擴(kuò)展的空間。關(guān)鍵字:led點陣顯示屏,avr單片機(jī),595驅(qū)動,串口通信 abstract led matrix display is a kind of display that is composed of a lot of semiconductor light

3、 emitting diodes usually red light.emitting diodes which show character by the led on and off. led display is divided into digital display, graphic display and video display, which is composed by led matrix. because of high price of the led matrix , now it is mainly used in relatively luxury places.

4、 this paper introduces a design of the led lattice display system base on mcu avr .the system can display in both chinese and english characters of the show and from top to bottom and move around the magic show. and can be cascaded to expand the screen size to achieve increased content purposes. the

5、 pc sends control commands and displays code to microcontroller, avr receives control commands from pc and shows the code, driver module drives a 1616.resolution led lattice leds panel display scan showed. communication between pc and the microcontroller using rs.232c communications standards. in ad

6、dition, the system will take up only a small amount of the mcu i/o and memory,so that the system has functional space for expansion.key words: led matrix, avr, 595 driver, uart 目 錄摘 要iabstracti第1章 緒論11.1 課題背景11.1.1 選題背景11.1.2 我國現(xiàn)狀11.1.3 led顯示屏的市場前景1第2章 方案論證與選擇22.1 系統(tǒng)硬件方案設(shè)計22.1.1 通信系統(tǒng)22.1.2 led點陣顯示屏3

7、2.1.3 led點陣屏的驅(qū)動方式32.1.4 硬件設(shè)計方案42.2 系統(tǒng)軟件方案52.2.1 單片機(jī)編程語言52.2.2 系統(tǒng)軟件編譯器介紹62.2.3 上位機(jī)控制傳輸軟件62.2.4 下載軟件7第3章 系統(tǒng)硬件設(shè)計73.1 硬件系統(tǒng)的總體設(shè)計83.2 avr單片機(jī)最小系統(tǒng)設(shè)計83.2.1 串口通信電路設(shè)計83.2.2 復(fù)位電路設(shè)計93.2.3 單片機(jī)的下載口103.2.4 avr單片機(jī)的時鐘電路113.2.5 avr單片機(jī)最小系統(tǒng)113.3 led點陣屏設(shè)計及驅(qū)動電路設(shè)計123.3.1 驅(qū)動電路設(shè)計133.3.2 行驅(qū)動電路設(shè)計133.3.3 列驅(qū)動電路設(shè)計153.4 led點陣屏設(shè)計16

8、第4章 系統(tǒng)軟件設(shè)計184.1 主程序設(shè)計184.2 顯示程序設(shè)計194.2.1 顯示驅(qū)動程序的設(shè)計194.2.2 點陣數(shù)據(jù)的獲取194.2.3 串口通信程序的設(shè)計20第5章 系統(tǒng)制作與調(diào)試235.1 系統(tǒng)硬件部分的調(diào)試235.1.1 短路與虛焊檢測235.1.2 上電測試235.1.3 串口調(diào)試245.2 系統(tǒng)軟件調(diào)試方法245.3 系統(tǒng)軟硬件調(diào)試及結(jié)果26結(jié) 論27參考文獻(xiàn)28致 謝29附錄1:系統(tǒng)pcb30附錄2 系統(tǒng)運行樣式31附錄3:系統(tǒng)程序部分代碼32濟(jì)南大學(xué)畢業(yè)設(shè)計第1章 緒論1.1 課題背景1.1.1 選題背景l(fā)ed點陣顯示屏是八十年代后期迅速風(fēng)靡全球的新型信息顯示媒體,顯示屏

9、由幾萬幾十萬個半導(dǎo)體發(fā)光二極管點陣像素均勻排列組成。利用不同的制作材料可以制造不同發(fā)光顏色的led像素點。目前應(yīng)用最廣泛的是紅色、綠色、黃色。而藍(lán)色和綠色led顯示屏的開發(fā)已經(jīng)達(dá)到了實用階段。led顯示屏可以顯示變化的字母、數(shù)字、文字、圖形圖像,不僅可以用于室內(nèi)裝飾還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏都無法比擬的優(yōu)點。在短短的十幾來年中,led顯示屏就以其功耗小、亮度高、能夠承受各種惡劣氣候而得到了廣泛的應(yīng)用。led顯示屏的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高的發(fā)光密度、更高的發(fā)光均勻性、更高耐氣候性、可靠性、全色化的方向發(fā)展。led顯示屏的應(yīng)用涉及到社會經(jīng)濟(jì)的方方面面,主

10、要應(yīng)用的場合有:(1)車站的買票公告欄(2)廣場的led電視直播(3)銀行的交易信息及利率等信息的顯示(4)商店超市的廣告牌等等。1.1.2 我國現(xiàn)狀 自led顯示屏誕生至今,我國在led顯示屏領(lǐng)域的研究,在國際上還是名列前茅的。目前各種形式的led屏幕在我國都有生產(chǎn),其中最流行的彩色led顯示屏做的很突出,這種顯示屏主要用在廣場跟街頭的城市電視中。現(xiàn)在一些電腦的顯示器也開始采用了led顯示技術(shù),應(yīng)該來說在這方面,我也沒有落后于別的國家,聯(lián)想研制的新型筆記本,很多采用了led顯示技術(shù),突破了原來的lcd顯示,這種筆記本電腦的顯示屏亮度更高,功耗更低,可謂是理想的選擇。相信在未來的中國將會有更多

11、的電子產(chǎn)品采用led顯示技術(shù)。1.1.3 led顯示屏的市場前景由于led顯示技術(shù)也是最新興起的技術(shù),目前l(fā)ed顯示技術(shù)的發(fā)展還是比較迅速,其中大多數(shù)用于商家的廣告牌,晚上在城市的街道,到處可以看見led顯示屏的影子。led顯示技術(shù)是跟信息技術(shù)緊密相連的,信息技術(shù)的發(fā)展必定會帶動led顯示技術(shù)的進(jìn)步,在不久的將來,也將會出現(xiàn)更多的電子產(chǎn)品采用led顯示。可以將發(fā)光二極管做的更小,這樣生產(chǎn)出來的led顯示屏的分辨率會更高。第2章 方案論證與選擇2.1 系統(tǒng)硬件方案設(shè)計大多數(shù)的led顯示屏都在戶外,所以對屏幕的材質(zhì)硬件的質(zhì)量要求非常的高。為方便檢修和維護(hù)硬件電路設(shè)計,常常采用模塊化的設(shè)計方法。硬件

12、的設(shè)計采用模塊化設(shè)計,既要滿足模塊本身功能要求又要能夠和整個系統(tǒng)兼容。如圖2.1所示,根據(jù)顯示系統(tǒng)的功能特點,從而確定系統(tǒng)硬件由控制部分,顯示屏部分,通信系統(tǒng)及上位機(jī)四部分組成。上位機(jī)通過通信串口部分向主控芯片發(fā)送控制指令和顯示內(nèi)容字模數(shù)據(jù),主控芯片執(zhí)行顯示指令,將需要顯示內(nèi)容的字模數(shù)據(jù)轉(zhuǎn)換為二極管的亮滅,從而顯示出內(nèi)容。pc機(jī)led顯示屏 通信系統(tǒng)avr單片機(jī)圖2.1 系統(tǒng)硬件結(jié)構(gòu)2.1.1 通信系統(tǒng) 通信部分的設(shè)計要滿足要求就是穩(wěn)定、快速、簡單易實現(xiàn)。因為在通常情況下顯示屏和上位機(jī)之間的傳輸距離不會很遠(yuǎn),所以對通信距離的要求不是很高,采用rs232標(biāo)準(zhǔn)就可以。計算機(jī)通信的方式主要有并行通信

13、和串行通信兩種方式。 (1)并行通信 計算機(jī)并行通信時,數(shù)據(jù)是一起發(fā)送的。一起發(fā)送的數(shù)據(jù)位數(shù)就是并行通信的寬度,這個寬度可以是一個字節(jié)也可以是一個字。并行傳輸?shù)乃俣容^快,因為可以一起傳送很多的位數(shù),但是并行傳輸?shù)某杀竞芨?,故在遠(yuǎn)距離傳輸時,我們選用串行通信。(2)串行通信串行通信每次只可以發(fā)送一位數(shù)據(jù),所有的數(shù)據(jù)信號都是在一條數(shù)據(jù)線上發(fā)送的,所以只需要很少幾根線就可以進(jìn)行,串行通信的速度低,但傳送的距離長,因此串行通信適用于長距離而速度要求不是很嚴(yán)格的場合。在串行通信時,數(shù)據(jù)是一位一位按順序進(jìn)行的,而計算機(jī)內(nèi)部的數(shù)據(jù)是并行進(jìn)行處理的。因此,當(dāng)計算機(jī)向外發(fā)送數(shù)據(jù)時,必須將計算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換

14、為串行數(shù)據(jù)再發(fā)送。反之,當(dāng)計算機(jī)接收數(shù)據(jù)時,又必須將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)進(jìn)行處理。這種轉(zhuǎn)換可以由硬件來實現(xiàn)也可以由軟件實現(xiàn)。如果僅用軟件實現(xiàn)又會增加cpu的負(fù)擔(dān),降低其利用率,故目前常通常采用硬件實現(xiàn)。通用異步接收/發(fā)送器,簡稱uart(universal asynchromous receeiver/trabsnitter)是完成這一功能的硬件電路。在avr單片機(jī)芯片中,uart已經(jīng)集成在單片機(jī)內(nèi),作為其組成部分,構(gòu)成一個串口。 綜上所述,在本系統(tǒng)中將采用uart來實現(xiàn)單片機(jī)與上位機(jī)之間的通信,由于串口已經(jīng)集成在了單片機(jī)的內(nèi)部,故只需設(shè)置相關(guān)寄存器就可以使用串口了。2.1.2 led點陣顯

15、示屏顯示部分有可以顯示漢字的顯示屏和對顯示屏進(jìn)行驅(qū)動的底層硬件電路。由于單片機(jī)的i/o口有限且計算機(jī)io口的驅(qū)動能力不是很強(qiáng),故不能直接用單片機(jī)的i/o口來驅(qū)動led顯示屏,所以需要對單片機(jī)io口進(jìn)行擴(kuò)展來增加單片機(jī)并行輸出和驅(qū)動能力。led顯示屏是由一個一個的發(fā)光二極管組成的點陣構(gòu)成的,要構(gòu)成大尺寸的led顯示屏就需要很多的發(fā)光二極管。構(gòu)成led屏幕的方法有兩種,一是由單個的發(fā)光二極管逐點連接起來構(gòu)成的,如圖2.2所示;二是選用一些由單個發(fā)光二極管構(gòu)成的led點陣單元模塊來構(gòu)成較大的led點陣模塊。目前市場上普遍采用的點陣單元模塊有88、1616幾種。這兩種屏幕構(gòu)成方法各有自己的優(yōu)缺點,單個

16、發(fā)光二極管構(gòu)成顯示屏優(yōu)點是當(dāng)某個發(fā)光二極管出現(xiàn)問題時只需更換一個二極管便可以正常工作,檢修的成本較低,缺點在于連接線路較為復(fù)雜;而點陣模塊構(gòu)成的方法卻正好與之相反,采用點陣模塊構(gòu)成顯示屏節(jié)約了大量的連線,但是一旦某個發(fā)光二極管出現(xiàn)問題時,與其同在一個模塊的所有l(wèi)ed都必須被更換,這樣就加大了維修的成本。兩種方法相比較,本系統(tǒng)中采用模塊點陣的方法,這樣可以避免較為復(fù)雜的連線。為了避免點陣模塊的缺點,在本系統(tǒng)中選用8x8led點陣的基礎(chǔ)單元模塊,這樣一段某個發(fā)光二極管出現(xiàn)問題,我們只需更換一個8x8的點陣模塊,若選用16x16的單元模塊,則更換的成本太高了。2.1.3 led點陣屏的驅(qū)動方式 le

17、d點陣的驅(qū)動方式有兩種:恒流驅(qū)動方式和非恒流驅(qū)動方式。在非恒流驅(qū)動方式中,可以將74hc595輸出的數(shù)據(jù)直接接到點陣屏上,即用74hc595輸出的電流來驅(qū)動顯示屏,但有74hc595輸出電流有限,不能驅(qū)動很多的發(fā)光二極管同時點亮,所以當(dāng)一排點亮很多二極管時,會出現(xiàn)跟其他排亮度不一的現(xiàn)象。恒流驅(qū)動是將74hc164的輸出接到三極管基極,三極管的發(fā)射極接到電源上,集電極接到led顯示屏幕上。圖 2.2 led點陣圖一個1616的led顯示屏行和列各有16支引腳,我們不能直接用單片機(jī)來驅(qū)動顯示屏,因為單片機(jī)的io口驅(qū)動能力很弱,而且直接接到單片機(jī)上,會占用大量的io口。在單片機(jī)驅(qū)動led顯示屏?xí)r,常

18、采用io口擴(kuò)展的方式,在這里我們采用74hc595、74hc164來進(jìn)行io 口擴(kuò)展,這樣只需要占用少量的io口便可以驅(qū)動顯示屏了。由于74hc595芯片輸出的電流只有30ma,所以不能驅(qū)動很多的發(fā)光二極管同時發(fā)光,這樣我們需要在每個芯片的輸出端口加上功放電路,這樣我們就可以同時點亮很多的發(fā)光二極管,這就是led顯示屏的恒流驅(qū)動。但是,采用恒流驅(qū)動的方式,對于電源的要求也相應(yīng)的提高了,要求電源必須能夠提供足夠的電流,來驅(qū)動大量的發(fā)光二極管同時發(fā)光。2.1.4 硬件設(shè)計方案最終方案如圖2.3所示,在這里,我們讓pc機(jī)作為上位機(jī),在pc機(jī)上運行串口調(diào)試助手,通過此軟件來實現(xiàn)上位機(jī)與單片機(jī)之間的通信

19、。在上位機(jī)中,存儲著字模數(shù)據(jù)和控制數(shù)據(jù)顯示的方式的控制指令。首先上位機(jī)將字模數(shù)據(jù)發(fā)送到單片機(jī)內(nèi),單片機(jī)接受到字模數(shù)據(jù),通過譯碼電路,將字模數(shù)據(jù)還原出來,利用這些01字符串來控制發(fā)光二極管的亮滅,從而在點陣屏幕上顯示出內(nèi)容。題目將以此涉及方案為指導(dǎo)展開具體的硬件電路設(shè)計。圖2.3 硬件設(shè)計方案2.2 系統(tǒng)軟件方案軟件的設(shè)計除了滿足系統(tǒng)的功能外,還必須滿足容易讀寫,方便下載和編譯的特點。在系統(tǒng)設(shè)計目標(biāo)和硬件總體結(jié)構(gòu)確定的情況下,系統(tǒng)程序可以由主程序,顯示驅(qū)動程序和各種特效顯示程序,串口通信程序三個主要部分組成。具體結(jié)構(gòu)如圖2.4所示。圖2.4 軟件功能結(jié)構(gòu)框圖程序的編寫需要借助編輯編輯器和編譯軟件

20、,本系統(tǒng)中采用iccavr這個集成開發(fā)環(huán)境來編寫編譯程序,編譯完成后還需要下載軟件將編譯生成的hex文件下載到單片機(jī)中執(zhí)行。編寫程序之前首先選擇一種合適的程序設(shè)計語言以及配套的編輯器和編譯軟件。最后還需要選擇與所選單片機(jī)相適應(yīng)的下載器和下載軟件,來把程序執(zhí)行生成的hex文件下載到單片機(jī)中。2.2.1 單片機(jī)編程語言在單片機(jī)開發(fā)領(lǐng)域所用的主流編程語言為匯編語言和c語言。兩種語言相比較各有優(yōu)點。匯編語言(assembly language)是面向特定機(jī)器的程序設(shè)計語言,是一種功能很強(qiáng)的程序設(shè)計語言,匯編語言是直接控制計算機(jī)的硬件來執(zhí)行的,所以它對編程人員的要求好高,程序員要充分的了解所使用的單片機(jī)

21、的硬件架構(gòu)及組成特性。匯編語言具有執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點,所以它一般用在對于時間空間要求比較嚴(yán)格的場合,在平時我們開發(fā)單片機(jī)程序時,一般都用不到。匯編語言對于機(jī)器的依賴性較強(qiáng),在一種型號的單片機(jī)上編寫的匯編程序不能移植到另一型號的單片機(jī)上,這就限制了它的應(yīng)用。c語言是一種高級程序設(shè)計語言,c語言經(jīng)過若干年的使用,可以證明其強(qiáng)大性,c語言最初是用來開發(fā)unix操作系統(tǒng),在c語言在其編譯效率、執(zhí)行速度等方面顯示出了強(qiáng)大的優(yōu)越性,這就擴(kuò)大了它的使用范圍。c語言相比于其他程序設(shè)計語言,最大的特點是可以直接控制硬件,這是java、c#等高級語言多沒有的特性,它兼顧了高級語言的特點,又具有匯編語言

22、的特點,其執(zhí)行速率也是很快的。所以c語言成為了嵌入式開發(fā)領(lǐng)域的主流語言。另外,c語言還是一種結(jié)構(gòu)化語言,在c語言中最基本的單元就是函數(shù),我們可以把功能接近的代碼,放在一個函數(shù)中,這樣我們的程序就成為了由一個個函數(shù)組成的整體,在主函數(shù)中我們可以調(diào)用相應(yīng)的函數(shù)來實現(xiàn)某種功能,c語言的這種特點使其很容易調(diào)試、修改。在c語言中,有很多的庫函數(shù),如果在我們的程序中要實現(xiàn)某種功能,而這種功能在函數(shù)庫中已經(jīng)得以實現(xiàn),那么我們就可以將這個函數(shù)庫直接包含在我們的程序中,可以減少我們自己多要編寫的代碼量。綜合比較了兩種語言,在本系統(tǒng)設(shè)計中,我們采用c語言作為程序設(shè)計語言。2.2.2 系統(tǒng)軟件編譯器介紹用c語言編寫

23、好的程序不能直接被單片機(jī)所執(zhí)行,要想讓c語言控制單片機(jī)運行,需要對c語言程序進(jìn)行編譯,所以編譯程序是不可缺少的。支持avr用c語言編程的編譯器主要有:iccavr編譯器和avrstudio編譯器。目前在單片機(jī)開發(fā)中普遍都是使用iccavr來進(jìn)行編譯。因此軟件設(shè)計最終方案為采用c語言為編程語言,iccavr為編譯工具按照控制、通信、顯示等幾個功能模塊來編寫程序。2.2.3 上位機(jī)控制傳輸軟件本系統(tǒng)采用pc機(jī)作為上位機(jī),這樣對該系統(tǒng)的控制就變得簡單了,因為pc機(jī)可以直觀的反應(yīng)單片機(jī)的狀態(tài)。本系統(tǒng)中上位機(jī)的作用是存儲字模數(shù)據(jù)并控制單片機(jī)的顯示,通過通信系統(tǒng)將控制指令傳送到單片機(jī)中控制led的顯示。l

24、ed點陣屏的顯示一般有存儲顯示和實時顯示兩種。存儲顯示是將要顯示數(shù)據(jù)的字模通過串口由上位機(jī)發(fā)送到單片機(jī)內(nèi),單片機(jī)接到上位機(jī)發(fā)來的數(shù)據(jù),再接受上位機(jī)的控制信息便可以在led顯示屏上顯示了。實時顯示即上位機(jī)屏幕上顯示的內(nèi)容會同步的顯示到單片機(jī)多控制的led顯示屏上。兩種顯示方法相比較:實時顯示對于硬件的要求較高,對于通信系統(tǒng)的要求很高,上位機(jī)需要不斷的將更新的數(shù)據(jù)發(fā)動到led屏幕上,通信開銷交大,此種顯示方式多用于廣場的新聞播報顯示屏。存儲顯示不要求有較高的傳輸速率,對硬件要求不是很高,多用于需要較長時間在顯示屏上顯示信息的場合,上位機(jī)將數(shù)據(jù)發(fā)送到單片機(jī)后,單片機(jī)便可以將其長期的顯示在屏幕上了。本

25、系統(tǒng)設(shè)計中,對于實時性要求不是很好,另外,從成本方面考慮,選用存儲顯示來設(shè)計系統(tǒng)。2.2.4 下載軟件 avr單片機(jī)的下載軟件主要有:avrfighter ,mucode,avrstudio。avrstudio在下載程序時,不方便設(shè)置熔絲位,而avrfighter ,mucode可以方便直觀的設(shè)置avr的熔絲位,所以本系統(tǒng)采用avrfighter作為下載軟件。第3章 系統(tǒng)硬件設(shè)計在第二章中,討論過不同的軟硬件設(shè)計方案,選擇了最有效的方案,在本章中詳細(xì)設(shè)計系統(tǒng)的硬件,其中包括avr單片機(jī)最小系統(tǒng)的設(shè)計,串口通信硬件設(shè)計,isp下載口設(shè)計,jtag調(diào)試口設(shè)計,led點陣屏幕設(shè)計,led驅(qū)動電路設(shè)計

26、。3.1 硬件系統(tǒng)的總體設(shè)計本系統(tǒng)采用avr單片機(jī)為核心控制器件,用四塊8*8點陣相連組成16*16點陣屏,作為顯示部分,用兩片74hc595作為列驅(qū)動控制,用74ls164作為行驅(qū)動控制,系統(tǒng)硬件總體方框圖如圖3.1所示。單片機(jī)74hc595列驅(qū)動74hc164行驅(qū)動led點陣模塊時鐘電路復(fù)位電路圖 3.1 系統(tǒng)硬件總體框圖3.2 avr單片機(jī)最小系統(tǒng)設(shè)計 avr單片機(jī)最小系統(tǒng)包括uart串口,avr芯片,復(fù)位電路,時鐘電路,isp下載口,jtag仿真調(diào)試接口,電源供電接口。在串口通信中采用max232芯片作為電平轉(zhuǎn)換芯片,avr單片采用的是ttl電平:+5v代表邏輯1,0v代表邏輯0而pc

27、機(jī)采用的是rs232電平,+15v代表邏輯0,.15v代表邏輯1,與單片機(jī)的邏輯電平不一致,所以采用max232芯片進(jìn)行電平轉(zhuǎn)換。3.2.1 串口通信電路設(shè)計在串口通信設(shè)計中,我們選用uart與上位機(jī)進(jìn)行通信,串行通信可分為同步串行通信與異步串行通信。同步串行通信的代表有spi、iic,這種通信的最顯著特點是,收發(fā)方有相同的時鐘來協(xié)調(diào)雙方的發(fā)送。異步串行通信的代表是uart,在這種通信方式里,我們沒有統(tǒng)一的時鐘來協(xié)調(diào)收發(fā)方。收發(fā)方數(shù)據(jù)一致性的保證是波特率,在這種發(fā)送方式中,每個數(shù)據(jù)幀的格式是一位起始位,后跟若干數(shù)據(jù)位,奇偶校驗位,停止位。數(shù)據(jù)位的位數(shù)我們可以在配置寄存器中進(jìn)行設(shè)置,而選用奇偶校

28、驗也可以在配置寄存器中進(jìn)行設(shè)置,這樣就可以保證了數(shù)據(jù)發(fā)送的正確性質(zhì)了。 串口通信電路原理圖如圖3.1所示,在db9中只用到3跟線,其中第五管腳接地,第二管腳接到max232的第14管腳,在max232中11管腳輸入的數(shù)據(jù)經(jīng)過電平轉(zhuǎn)換從14管腳發(fā)送出去,傳送到上位機(jī)中,其中11管腳接單片機(jī)的串口發(fā)送端。db9的第3管腳接到單片機(jī)的13管腳上,上位機(jī)發(fā)送的數(shù)據(jù)通過13管腳進(jìn)行電平轉(zhuǎn)換,從max232的第12管腳發(fā)送出去,傳送到單片機(jī)的串口接收端。圖3.1 串口通信電路原理圖3.2.2 復(fù)位電路設(shè)計復(fù)位電路是確保單片機(jī)最小系統(tǒng)中不可缺少的一部分,當(dāng)單片機(jī)上電后,單片機(jī)會自動運行存儲在flash中的程

29、序,當(dāng)程序出現(xiàn)問題時候,我們希望程序重新開始執(zhí)行,那么我們會使用到復(fù)位,單片機(jī)重新開始執(zhí)行程序,我們會在自小系統(tǒng)中設(shè)置一個按鍵,當(dāng)手按下,單片機(jī)會自動復(fù)位,這種復(fù)位叫做上電復(fù)位。另一種復(fù)位是上電復(fù)位,但我們打開電源時候,單片機(jī)會自動復(fù)位,從flash開始處,執(zhí)行程序。復(fù)位電路工作原理如圖3.3所示,當(dāng)系統(tǒng)上電時,電流經(jīng)過10k電阻和10uf電容,系統(tǒng)導(dǎo)通,此時在電容的正極上是低電平,而avr單片機(jī)是低電平復(fù)位,所以此時單片機(jī)復(fù)位。在上電過程中,電容有個充放電的過程,所以上電后瞬間電容又放電。此電路中還有手動復(fù)位的功能,當(dāng)按下按鍵時,電流經(jīng)過10k電阻,又經(jīng)過1k電阻,電路導(dǎo)通,此時在10k電阻

30、兩端有個很大的壓降,10k電阻reset端為低電平,單片機(jī)復(fù)位。圖3.2 復(fù)位電路3.2.3 單片機(jī)的下載口 在pc機(jī)上寫好的程序要下載到單片機(jī)里才能控制單片機(jī)的io口輸出高低電平,從而控制led點陣屏亮滅。對于avr單片機(jī)來說,可以有兩種下載程序的方法,一種通過isp在線下載,一種通過jtag仿真調(diào)試,在調(diào)試后程序自動下載到單片機(jī)里,同時jtag仿真調(diào)試可以很方便的找出程序中的錯誤,有利于調(diào)試,所以在的最小系統(tǒng)中也加入了jtag口。 isp下載口的電路原理圖如圖3.3所示,接口的2管腳接vcc,4、6、8、10管腳接gnd ,在下載器上可以通過跳線設(shè)置通過下載線給單片機(jī)供電,接口的第3管腳懸

31、空,1、5、7、9接到單片機(jī)的程序下載口上,這樣通過下載器就可以向單片機(jī)里下載程序了。圖3.3 isp下載口jtag仿真調(diào)試口電路原理圖如圖3.4所示,其中1、3、5、9分別接到單片機(jī)的jtag調(diào)試口,在avrstudio開發(fā)環(huán)境中,可以通過jtag仿真調(diào)試逐句執(zhí)行程序語句來觀察單片機(jī)控制的led顯示屏的現(xiàn)象還幫助調(diào)試。同時也可以用仿真調(diào)試器來給系統(tǒng)供電。圖3.4 jtag下載口3.2.4 avr單片機(jī)的時鐘電路對于avr單片機(jī)來說,片內(nèi)已經(jīng)集成了晶振,可以采用外部晶振提供時鐘源,也可以通過設(shè)置單片機(jī)的熔絲位來改用內(nèi)部晶振。但是,在系統(tǒng)對時鐘要求嚴(yán)格的場合應(yīng)選用外部晶振。在本系統(tǒng)中,由于要用到

32、串口通信,在串口通信中要用波特率來保持上位機(jī)跟單片機(jī)傳輸數(shù)據(jù)的一致。所以的系統(tǒng)采用外部晶振的工作方式。如圖3.5為單片機(jī)的時鐘電路。圖3.5 時鐘電路3.2.5 avr單片機(jī)最小系統(tǒng)avr單片機(jī)最小系統(tǒng)是單片機(jī)能夠正常工作時,所需要連接的最少管腳數(shù),一般avr單片機(jī)要能夠工作需要接電源、地、晶振、下載口。圖3.6為avr單片機(jī)的最小系統(tǒng)原理圖,在本系統(tǒng)中,由于采用了74hc595芯片及74hc164芯片實現(xiàn)串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),所以在的系統(tǒng)中只用到少量的io口,這樣其他的io口可以用來控制其他的外設(shè),達(dá)到減少io口的目的。在畫原理圖的過程中,我大量的使用了網(wǎng)絡(luò)標(biāo)號,網(wǎng)絡(luò)標(biāo)號相同的結(jié)點可以正常

33、的連接起來,這樣可以避免在畫電路原理圖時,采用大量的連線。采用網(wǎng)絡(luò)標(biāo)號可以達(dá)到模塊化的目的,這樣畫較為復(fù)雜的電路原理圖時,可以很整潔清晰的表達(dá)出來。也有利于原理圖的糾錯,避免了復(fù)雜難看的線路連接網(wǎng)絡(luò)。其實,avr單片機(jī)內(nèi)部已經(jīng)集成了很多外圍設(shè)備接口,在avr單片機(jī)內(nèi)部集成了晶振,所以在avr最小系統(tǒng)中可以不畫外圍晶振,最簡單的avr最小系統(tǒng)只需要兩根電源線,4根程序下載線。由于在本系統(tǒng)中,我們用到了串口,所以需要設(shè)置波特率,那么對于時鐘源的精確度就有要求了。所以我們采用外部晶振的方式,采用11.9582m的晶振來為系統(tǒng)提供電源。圖 3.6 avr單片機(jī)最小系統(tǒng)3.3 led點陣屏設(shè)計及驅(qū)動電路

34、設(shè)計3.3.1 驅(qū)動電路設(shè)計 本系統(tǒng)中采用兩片74hc595和兩片74hc164將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),在led點陣屏設(shè)計時,采用三極管來驅(qū)動顯示屏,這樣可以是每個二極管的亮度都達(dá)到飽和。圖3.7為三極管組成的驅(qū)動電路。在電路中,采用的是pnp 型三極管,三極管的基極接到74hc164的輸出端,發(fā)射極接到電源,集電極接到led點陣屏上,這樣當(dāng)74hc164某個管腳輸出低電平時,其對應(yīng)的三極管導(dǎo)通,電流通過三極管流到led點陣屏,點亮相應(yīng)的二極管。當(dāng)74hc164輸出高電平時,其對應(yīng)的三極管不能導(dǎo)通,所驅(qū)動的發(fā)光二極管不會被點亮。這樣就能很好的控制發(fā)光二極管的亮滅了。圖3.7 三極管驅(qū)動電路3

35、.3.2 行驅(qū)動電路設(shè)計 在行驅(qū)動電路中,采用2片74hc164來擴(kuò)展io口,74hc164的輸出通過4.7k的電阻接到三極管的基極。圖3.8為74hc164的管腳圖。 圖3.8 74hc16474hc164是一種串入并出的芯片,在本設(shè)計中,將芯片的1、2管腳接在一起,使1、2管腳成為線與的關(guān)系,數(shù)據(jù)從1、2管腳串行進(jìn)入芯片,時鐘線接在第8管腳,在每個時鐘周期的上升沿,串行數(shù)據(jù)寫入芯片內(nèi),在8個時鐘周期后,數(shù)據(jù)就并行的從芯片輸出。同時,芯片的第13管腳,也是芯片的級聯(lián)管腳,可以將第13管腳接到下一片芯片的輸入端,這樣就可以輸出16位并行數(shù)據(jù)了。圖3.9為本設(shè)計中74hc164的級聯(lián)圖,本系統(tǒng)中

36、用單片機(jī)的io口模擬芯片輸入的數(shù)字時鐘,通過io口不斷的拉高拉低來實現(xiàn)時鐘的效果,在每次的上升沿數(shù)據(jù)就寫入到了芯片內(nèi),16個上升沿后,16位數(shù)據(jù)就在io口準(zhǔn)備好了,輸出到16個三極管的基極,為低電平的io口所對應(yīng)的三極管導(dǎo)通,三極管驅(qū)動相應(yīng)的發(fā)光二極管點亮。 圖 3.9 74hc164級聯(lián)效果圖3.3.3 列驅(qū)動電路設(shè)計在列驅(qū)動電路里,用了兩片74hc595來擴(kuò)展io口,74hc595芯片的功能類似于74hc164,但74hc595芯片帶有鎖存功能,在時鐘引腳上,每來一個上升沿,串行數(shù)據(jù)就向高位移位,待8為數(shù)據(jù)都準(zhǔn)備好時,在鎖存時鐘引腳上來一個上升沿,就打開鎖存端口,并行數(shù)據(jù)發(fā)出。74hc59

37、5輸出端接在限流電阻端,限流電阻另一端接在了led點陣屏幕上。圖3.10為74hc595的引腳圖。圖3.10 74hc595管腳圖其中第14管腳為數(shù)據(jù)輸入管腳,第9管腳為級聯(lián)管腳,本設(shè)計中將兩片595芯片級聯(lián)起來,當(dāng)?shù)臀恍酒瑵M八位時,通過級聯(lián)端口向高位移位,第11管腳為595芯片的時鐘輸入端,每次在11管腳上產(chǎn)生一個上升沿時,串行數(shù)據(jù)就向前移動一位,第12管腳為595芯片的數(shù)據(jù)鎖存端,當(dāng)在12管腳上產(chǎn)生上升沿時,鎖存輸出打開,595中的數(shù)據(jù)并行輸出。第13管腳為595的使能端,在本設(shè)計中,直接將13管腳接低電平,即595芯片一直處于使能狀態(tài)。第10管腳為芯片的擦除引腳,當(dāng)在第10管腳加低電平時

38、,就將595芯片內(nèi)部存儲的數(shù)據(jù)擦除,在本設(shè)計中,不需要擦除芯片,所以直接將第10管腳接高電平。圖3.11為74hc595的級聯(lián)連接,在本設(shè)計中用單片機(jī)的pa1口作為芯片的時鐘信號輸入端,利用單片機(jī)的io口輸出高低電平來模擬時鐘信號,單片機(jī)的pa2口接到芯片的鎖存控制端,通過io口輸出的高低電平來實現(xiàn)上升沿。圖3.11 74hc595級聯(lián)圖3.4 led點陣屏設(shè)計 在本設(shè)計中,采用的是8x8的led點陣來拼成一個16x16的點陣屏,將4片8x8led點陣相同的列與相同的行連接起來,形成一個16x16的點陣屏幕。圖3.12為8x8點陣的引腳圖。圖3.12 8x8led點陣引腳圖圖中為共陽型led點

39、陣,左邊的一列引腳為led點陣的行信號輸入引腳,上面一行為led點陣的列信號輸入引腳。當(dāng)在某一行輸入引腳輸入高電平,某一列輸入引腳輸入低電平時,相應(yīng)的行列交錯點的發(fā)光二極管將被點亮。我們將4個8x8led點陣對應(yīng)的引腳連接起來,就形成了16x16點陣。如圖3.13所示。圖3.13 16x16led點陣引腳圖第4章 系統(tǒng)軟件設(shè)計4.1 主程序設(shè)計系統(tǒng)控制程序采用c語言編寫,按照模塊化程序設(shè)計的思想來設(shè)計。首先分析程序所要實現(xiàn)的功能,程序要實現(xiàn)pc機(jī)與單片機(jī)的串口通信,led顯示屏的靜態(tài)顯示與動態(tài)顯示三大功能。串口程序接收上位機(jī)數(shù)據(jù),交給主程序處理后再通過顯示控制程序選擇不同的顯示方式進(jìn)行顯示。

40、主程序的工作流程如圖4.1所示:圖4.1 主程序流程圖程序開始時首先必須對單片機(jī)進(jìn)行初始化,其中包括:各io口功能的設(shè)定,中斷初始化,串行通信方式的選擇和波特率的設(shè)定等。單片機(jī)上電后,首先進(jìn)入主程序,在主程序中,調(diào)用串口程序,待上位機(jī)的指令通過串口發(fā)送到單片機(jī),且單片機(jī)接受完指令時,主程序開始調(diào)用顯示程序,將信息顯示在led顯示屏上。4.2 顯示程序設(shè)計4.2.1 顯示驅(qū)動程序的設(shè)計顯示驅(qū)動程序是顯示部分的核心,顯示驅(qū)動程序有行驅(qū)動程序跟列驅(qū)動程序組成,行驅(qū)動程序主要是74hc164芯片的驅(qū)動程序,列驅(qū)動程序主要是對74hc595芯片的驅(qū)動。對于行驅(qū)動程序,第一次將第一位輸出為0,這樣相應(yīng)的三

41、極管導(dǎo)通led點陣的第一行被陽極為高電平,這樣第一行所有陰極被置為低電平的二極管點亮。在下一個脈沖到來時,74hc164芯片內(nèi)的數(shù)據(jù)向高位移位,同時在程序中讓低位補(bǔ)1,這樣第2行的二極管的陽極置為高電平,同樣,第二行所有陰極被置為低電平的二極管將被點亮。對于列驅(qū)動程序,單片機(jī)移位輸入的是顯示內(nèi)容的字模數(shù)據(jù),將數(shù)據(jù)移位16次后,在74hc595芯片的數(shù)據(jù)鎖存端給一個上升沿,將16位并行數(shù)據(jù)全部輸出。注意在這里,我們輸入到595芯片內(nèi)的數(shù)據(jù)是要顯示信息的字模的反碼,因為列掃描程序?qū)?yīng)的是二極管的陰極,在行掃描程序中,我們已經(jīng)給了二極管的陽極高電平,所以在列掃描程序中應(yīng)該給出低電平才能點亮相應(yīng)的發(fā)光

42、二極管。圖4.2為led顯示屏顯示的動態(tài)掃描過程。圖4.2 led顯示的動態(tài)掃描過程 第一次在第一行輸出高電平,同時列輸出的是字模數(shù)據(jù)在第一行對應(yīng)的字節(jié)的反碼,第二次在第二行輸出高電平,同時列輸出的是字模數(shù)據(jù)在第二行對應(yīng)的字節(jié)的反碼。以此類推,直到第16行掃描結(jié)束,又回到第一行繼續(xù)掃描。4.2.2 點陣數(shù)據(jù)的獲取 對于一些簡單的字母或者漢字,我們可以在16x16的表格上寫出0、1的點陣數(shù)據(jù)獲取要顯示信息的字模,但是當(dāng)我們要顯示的文字很多時,這樣非常麻煩。在這里介紹一種去字模的軟件pctolcd,在這里我們輸入要顯示的漢字字母等信息,點擊獲取字模就可以得到我們需要顯示的內(nèi)容的字模。圖4.3為取字

43、模軟件的界面。在軟件中,設(shè)置好字寬字高字體等信息后,點擊獲取字模就可以得到字模數(shù)據(jù)了,非常方便。圖4.3 pctolcd界面4.2.3 串口通信程序的設(shè)計 系統(tǒng)采用串行中斷的方式進(jìn)行通信。avr單片機(jī)的中斷源兩種類型:一類是外部中斷源;另一類是內(nèi)部中斷源,包括三個定時器/計數(shù)器(t0和t1)的溢出中斷和串行口的接收和發(fā)送中斷。avr單片機(jī)設(shè)置了4個專用寄存器用于中斷控制,分別為定時器控制寄存器(tcon),串行口中斷控制器(scon),中斷允許控制寄存器(ie),中斷優(yōu)先級控制寄存器(ip)。編程時通過設(shè)置其狀態(tài)來管理中斷系統(tǒng)??傊袛喾种袛嘣诰帉懼袛喑绦驎r首先是將中斷控制寄存器(ie)初始化,

44、其控制位分布如表。ea為中斷允許總控制位,ea=1時cpu開中斷;ea=0時,cpu屏蔽所有中斷,只有打開總中斷,所有模塊的終端才會起作用,et、es、ex1、et0、ex0為對應(yīng)的定時器/計數(shù)器1中斷、串行口中斷、外部中斷1中斷、外部中斷0中斷、定時器/計數(shù)器0中斷的中斷允許位,對應(yīng)位為1時允許其中斷,對應(yīng)位為0時,禁止其中斷。有些讀者可能搞不懂總中斷與其他中斷的關(guān)系,圖4.4做了形象的描述。圖4.4 總中斷與分中斷的關(guān)系表 4.1 中斷允許寄存器格式d7d6d5d4d3d2d1d0eaeset1ex1et0ex0 在系統(tǒng)初始化時設(shè)定中斷允許寄存器初值為0xff,指令為 ie=0xff。設(shè)置

45、串口工作方式1,波特率9600,計算可得計數(shù)器初值的十六進(jìn)制表示為0xfd。通信協(xié)議如表4.2所示:表4.2 串行通信協(xié)議格式數(shù)據(jù)結(jié)構(gòu)第1個字節(jié)第2至第33個字節(jié)第34個字節(jié)內(nèi)容起始標(biāo)志位s顯示數(shù)據(jù)控制指令作用判斷是否開始接收數(shù)據(jù)led的顯示內(nèi)容控制led顯示方式 具體串口中斷程序流程圖如圖4.5所示,在主程序中先進(jìn)行了串行中斷的初始化,初始化內(nèi)容包括了串行工作方式選擇,波特率的設(shè)定,計數(shù)初值的設(shè)定。程序開始進(jìn)入中斷等待,當(dāng)pc機(jī)向單片機(jī)發(fā)送數(shù)據(jù)時產(chǎn)生中斷接收允許位ri置1,將sbuf(緩沖寄存器)中的值輸入到暫存器中進(jìn)行數(shù)據(jù)處理。首先判斷數(shù)據(jù)是否設(shè)定的起始標(biāo)志位s如果是則開始接收起始位后的3

46、3個字節(jié),不是則中斷返回繼續(xù)等待。接收到第34個字節(jié)后便將收到的數(shù)據(jù)發(fā)送回pc機(jī)進(jìn)行驗證比較。所有的程序編寫完成后都必須經(jīng)過編譯才能燒寫到單片機(jī)中運行。為了減小程序的修改和優(yōu)化難度,按照模塊化編程的思想,將各個功能寫入到一個模塊中,每完成一個模塊就用總程序調(diào)用測試,測試通過則繼續(xù)編寫下一個模塊。各子模塊編譯沒有錯誤后再輸入單片機(jī)進(jìn)行驗證。這兩項都通過后,再將所有的程序整合到一起,進(jìn)行集成測試,測試通過則完成了該系統(tǒng)的軟件設(shè)計。中斷開始ynnn接收到第34位?接收起始位后33位數(shù)據(jù)y起始位s將第2位起的32位數(shù)據(jù)發(fā)回pc機(jī)接收串口數(shù)據(jù)ri=1?中斷返回y圖4.5 串口程序的調(diào)試第5章 系統(tǒng)制作與

47、調(diào)試在系統(tǒng)設(shè)計完成后,必須對其進(jìn)行實物測試,本系統(tǒng)的測試包括:硬件測試、軟件測試、軟硬件集成測試。檢查系統(tǒng)的各項功能是否得以實現(xiàn)。5.1 系統(tǒng)硬件部分的調(diào)試硬件調(diào)試主要是各芯片的輸出輸入電壓是否符合設(shè)計要求和調(diào)試各部分的焊接是否合格,最后測試各硬件部分能否完成設(shè)計功能。因此把硬件調(diào)試按照以下四部分分步來進(jìn)行:(1)用萬用表檢測所用的電路是否導(dǎo)通,整個板子是否存在虛焊及其短路;(2)用萬用表檢測每個芯片的電源端與接地端的電壓是否符合芯片對電源的要求;(3)測試單片機(jī)的程序下載口能否正常工作;(4)測試單片機(jī)與上位機(jī)之間的串口通信功能能否實現(xiàn)。由于整個系統(tǒng)的顯示功能需要應(yīng)用程序的配合,所以在硬件調(diào)

48、試部分只測試單片機(jī)的各個管腳的電平及是否存在虛焊,整個系統(tǒng)的顯示功能部分的測試放在系統(tǒng)聯(lián)合調(diào)試部分來完成。5.1.1 短路與虛焊檢測 此項測試中,工具是多用電表,利用多用電表的報警功能,測試各個連接點是否連接好,如果連接無縫,則萬用表會發(fā)出聲響提示連接無誤。這樣就檢測出了電路中不存在虛焊。再用萬用表測試芯片相鄰的管腳,看看是否發(fā)出警報,發(fā)出警報證明系統(tǒng)存在短路,需要用電烙鐵占松香進(jìn)行清除。5.1.2 上電測試本系統(tǒng)設(shè)計中是采用usb電源供電,輸出電壓為5v。系統(tǒng)中所用到的單片機(jī)、74hc595芯片、74hc164芯片的工作電壓都是5v,所以在本系統(tǒng)中所有的芯片都是采用相同的電源進(jìn)行供電。 上電

49、后首先要觀察整個電路是否有發(fā)熱、冒煙的現(xiàn)象。經(jīng)過長時間的測試觀察發(fā)現(xiàn)電路工作正常,沒有上述現(xiàn)象產(chǎn)生。接著,將萬用表的旋鈕調(diào)到直流電壓檔位,測試各個芯片的電源端與接地端的電壓范圍,經(jīng)過測試,發(fā)現(xiàn)電壓范圍大致都在4.8v至5.12v之間,所以芯片的工作電壓正常。5.1.3 串口調(diào)試串口作為上位機(jī)與單片機(jī)通信的部分,是整個系統(tǒng)的關(guān)鍵部分,所以必須認(rèn)真測試。測試串口時,串口的連接如圖5.1所示,將max232芯片的第9管腳之直接與第10管腳端接,這樣表示上位機(jī)發(fā)送過來的數(shù)據(jù)未經(jīng)過單片機(jī)而直接從發(fā)送口又發(fā)送給了上位機(jī),在串口調(diào)試助手中,不斷的向單片機(jī)發(fā)送不同的數(shù)據(jù),觀察串口調(diào)試助手能不能將數(shù)據(jù)原封不動的

50、收回。圖 5.1 串口部分的測試5.2 系統(tǒng)軟件調(diào)試方法由于在上一步中已經(jīng)進(jìn)行了硬件測試,所以在這里開始軟件的測試。編寫好各個芯片的驅(qū)動程序后,開始編寫應(yīng)用程序,在應(yīng)用程序中調(diào)用底層的驅(qū)動程序,進(jìn)行動態(tài)的顯示。為了精確的定位軟件的出錯點,在這里分模塊測試,先測試led顯示部分,這是系統(tǒng)最主要的功能,在主程序中調(diào)用顯示程序,觀察顯示效果,經(jīng)過多次測試,發(fā)現(xiàn)顯示程序沒有問題。接著,開始串口程序的測試,由于在硬件測試中已經(jīng)將串口的發(fā)送端與接收端進(jìn)行短接,所以在這里就不用測試max232芯片的工作狀態(tài)了。測試串口通信程序的正確性,不但需要連接單片機(jī)與上位機(jī),而且還需要串口調(diào)試工具協(xié)助程序的調(diào)試。在這里

51、,我們選用串口調(diào)試助手來協(xié)助我們調(diào)試串口程序,串口調(diào)試助手的界面如圖5.2所示。在串口調(diào)試助手中,選擇好與單片機(jī)通信的上位機(jī)的com口,設(shè)置好通信的波特率,選擇有無校驗位,設(shè)置好數(shù)據(jù)位與停止位的位數(shù)。下面就可以開始串口程序的調(diào)試了,由于在本系統(tǒng)設(shè)計中,只需要上位機(jī)向單片機(jī)發(fā)送控制指令及字模數(shù)據(jù),而不需要上位機(jī)讀取單片機(jī)的狀態(tài),所以在本系統(tǒng)的串口調(diào)試中,我們只檢測串口的接受數(shù)據(jù)的功能。串口調(diào)試助手的設(shè)置如下圖所示,我們選擇上位機(jī)的com1口,通信的波特率設(shè)置為9600,不設(shè)置校驗位,數(shù)據(jù)幀的格式為數(shù)據(jù)位為8位,1位停止位,選擇以十六進(jìn)制的格式發(fā)動數(shù)據(jù),以十六進(jìn)制格式顯示數(shù)據(jù),發(fā)送的一串?dāng)?shù)據(jù)以aa

52、開頭,當(dāng)單片機(jī)接收到以aa開頭的一串?dāng)?shù)據(jù)時,將aa以后的數(shù)據(jù)提取出來發(fā)動到上位機(jī)來,我們送的數(shù)據(jù)是aa 11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff,單片機(jī)接收到這串?dāng)?shù)據(jù)后,將aa以后的一串?dāng)?shù)據(jù)發(fā)送回來,在串口調(diào)試助手中顯示為11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff,由于我們設(shè)置的是以十六進(jìn)制的格式發(fā)送數(shù)據(jù),以十六進(jìn)制的格式接受數(shù)據(jù),所以上位機(jī)接受到的數(shù)據(jù)位正確格式的數(shù)據(jù)。在這里,一定設(shè)置好波特率,這里設(shè)置的波特率一定要跟我

53、們在串口通信程序里設(shè)置的波特率一致,因為異步串行通信沒有統(tǒng)一的時鐘線來協(xié)調(diào)發(fā)送方跟接受方,它僅靠著波特率來協(xié)調(diào)發(fā)送方跟接收方的一致。如果串口調(diào)試助手中的波特率,跟程序中設(shè)置的不一致,那么在串口調(diào)試助手這里,我們將會看到單片機(jī)發(fā)送給上位機(jī)的是亂碼。 圖5.2 串口調(diào)試助手調(diào)試情況5.3 系統(tǒng)軟硬件調(diào)試及結(jié)果 經(jīng)過硬件調(diào)試與軟件調(diào)試,我們可以證明硬件電路連接的正確性,排除系統(tǒng)存在虛焊的情況;經(jīng)過對串口的軟硬件調(diào)試,可以證明系統(tǒng)串口在硬件上連接無誤,同時在軟件上,也可以正常運行。下面我們重點調(diào)試led點陣顯示屏幕,檢查屏幕有無壞處。(1)檢查屏幕的好壞,我們首先要編寫一個逐行掃描的程序,讓此程序從點

54、陣屏的第一行開始逐行的向下掃描,掃描到第十六行,觀察有無發(fā)光二極管沒有被點亮。結(jié)果發(fā)現(xiàn)第一塊led點陣單元有倆兩個發(fā)光二極管沒有點亮,因為在之前的測試中由于沒有接限流電阻,導(dǎo)致直接在發(fā)光二極管的兩端加5v電壓,燒壞了連個二極管。更換led顯示單元,每行的led都會被點亮。(2)通過上一步檢測,可以保證屏幕沒有問題,每個led像素點都可以發(fā)光。現(xiàn)在開始測試我們之前編寫的顯示程序,顯示程序分為動態(tài)滾動顯示和靜態(tài)顯示。靜態(tài)顯示在led點陣屏上只顯示一個漢字,通過反復(fù)測試,發(fā)現(xiàn)靜態(tài)顯示功能可以正常實現(xiàn)。動態(tài)滾動效果是讓現(xiàn)實的內(nèi)容從左到右,從上到下,從下到上滾動顯示,通過測試,滾動效果沒有問題。這一部測試可以斷定整個系統(tǒng)的驅(qū)動電路與顯示屏沒有問題。(3)在上一步中我們證明了系統(tǒng)的屏幕顯示漢字沒有問題,并且在之前的測試中,我們證明了串口的軟硬件結(jié)構(gòu)都沒有問題。在這里,我們開始測試串口控制led顯示的功能能否得以實現(xiàn)。在串口調(diào)試助手中,我們發(fā)送控制led屏幕顯示的控制代碼,觀察能否通過串口有效的控制led點陣屏的顯示。通過發(fā)送控制代碼,我們發(fā)現(xiàn)led點陣屏幕能夠被控制,我們可以通過上位機(jī)來控制顯示內(nèi)容的移動情況,同時可以控制移動的速度。結(jié)

溫馨提示

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

評論

0/150

提交評論