版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、濟(jì)南大學(xué)畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì)題 目 基于avr單片機(jī) 的led點(diǎn)陣屏的設(shè)計(jì) 學(xué) 院 專 業(yè) 班 級(jí) 學(xué) 生 學(xué) 號(hào) 指導(dǎo)教師 二一二年 六 月 八 日-38-濟(jì)南大學(xué)畢業(yè)設(shè)計(jì)摘 要 led顯示屏是一種由很多個(gè)發(fā)光二極管組成的點(diǎn)陣,通過(guò)控制半導(dǎo)體發(fā)光二極管的亮滅來(lái)顯示內(nèi)容的顯示屏。led顯示屏分為數(shù)碼顯示屏、圖文顯示屏和視頻顯示屏,都是由led矩陣塊組成。目前由于led顯示屏造價(jià)昂貴,主要應(yīng)用于比較高檔的場(chǎng)所,主要集中在城市的繁華場(chǎng)所。本文介紹了一款以avr單片機(jī)為控制器的led點(diǎn)陣顯示屏系統(tǒng)的設(shè)計(jì)。該系統(tǒng)可實(shí)現(xiàn)字母漢字的靜態(tài)顯示和動(dòng)態(tài)滾動(dòng)效果,并且可以通過(guò)外擴(kuò)接口級(jí)連的方式來(lái)擴(kuò)大顯示屏幕的尺寸以達(dá)
2、到增加顯示內(nèi)容的目的。系統(tǒng)采用pc機(jī)作為上位機(jī),上位機(jī)向單片機(jī)發(fā)送控制命令和上位機(jī)所存儲(chǔ)的字模數(shù)據(jù),avr 單片機(jī)接收字模數(shù)據(jù)并處理pc機(jī)的控制命令,由顯示驅(qū)動(dòng)模塊驅(qū)動(dòng)一個(gè)1616分辨率的led點(diǎn)陣顯示屏的掃描顯示。pc機(jī)與單片機(jī)之間的通信采用rs232c通信標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)。該系統(tǒng)只占用了單片機(jī)少量的i /o口和內(nèi)存,為系統(tǒng)留下了功能擴(kuò)展的空間。關(guān)鍵字:led點(diǎn)陣顯示屏,avr單片機(jī),595驅(qū)動(dòng),串口通信 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 我國(guó)現(xiàn)狀11.1.3 led顯示屏的市場(chǎng)前景1第2章 方案論證與選擇22.1 系統(tǒng)硬件方案設(shè)計(jì)22.1.1 通信系統(tǒng)22.1.2 led點(diǎn)陣顯示屏3
7、2.1.3 led點(diǎn)陣屏的驅(qū)動(dòng)方式32.1.4 硬件設(shè)計(jì)方案42.2 系統(tǒng)軟件方案52.2.1 單片機(jī)編程語(yǔ)言52.2.2 系統(tǒng)軟件編譯器介紹62.2.3 上位機(jī)控制傳輸軟件62.2.4 下載軟件7第3章 系統(tǒng)硬件設(shè)計(jì)73.1 硬件系統(tǒng)的總體設(shè)計(jì)83.2 avr單片機(jī)最小系統(tǒng)設(shè)計(jì)83.2.1 串口通信電路設(shè)計(jì)83.2.2 復(fù)位電路設(shè)計(jì)93.2.3 單片機(jī)的下載口103.2.4 avr單片機(jī)的時(shí)鐘電路113.2.5 avr單片機(jī)最小系統(tǒng)113.3 led點(diǎn)陣屏設(shè)計(jì)及驅(qū)動(dòng)電路設(shè)計(jì)123.3.1 驅(qū)動(dòng)電路設(shè)計(jì)133.3.2 行驅(qū)動(dòng)電路設(shè)計(jì)133.3.3 列驅(qū)動(dòng)電路設(shè)計(jì)153.4 led點(diǎn)陣屏設(shè)計(jì)16
8、第4章 系統(tǒng)軟件設(shè)計(jì)184.1 主程序設(shè)計(jì)184.2 顯示程序設(shè)計(jì)194.2.1 顯示驅(qū)動(dòng)程序的設(shè)計(jì)194.2.2 點(diǎn)陣數(shù)據(jù)的獲取194.2.3 串口通信程序的設(shè)計(jì)20第5章 系統(tǒng)制作與調(diào)試235.1 系統(tǒng)硬件部分的調(diào)試235.1.1 短路與虛焊檢測(cè)235.1.2 上電測(cè)試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)運(yùn)行樣式31附錄3:系統(tǒng)程序部分代碼32濟(jì)南大學(xué)畢業(yè)設(shè)計(jì)第1章 緒論1.1 課題背景1.1.1 選題背景l(fā)ed點(diǎn)陣顯示屏是八十年代后期迅速風(fēng)靡全球的新型信息顯示媒體,顯示屏
9、由幾萬(wàn)幾十萬(wàn)個(gè)半導(dǎo)體發(fā)光二極管點(diǎn)陣像素均勻排列組成。利用不同的制作材料可以制造不同發(fā)光顏色的led像素點(diǎn)。目前應(yīng)用最廣泛的是紅色、綠色、黃色。而藍(lán)色和綠色led顯示屏的開(kāi)發(fā)已經(jīng)達(dá)到了實(shí)用階段。led顯示屏可以顯示變化的字母、數(shù)字、文字、圖形圖像,不僅可以用于室內(nèi)裝飾還可以用于室外環(huán)境,具有投影儀、電視墻、液晶顯示屏都無(wú)法比擬的優(yōu)點(diǎn)。在短短的十幾來(lái)年中,led顯示屏就以其功耗小、亮度高、能夠承受各種惡劣氣候而得到了廣泛的應(yīng)用。led顯示屏的發(fā)展前景極為廣闊,目前正朝著更高亮度、更高的發(fā)光密度、更高的發(fā)光均勻性、更高耐氣候性、可靠性、全色化的方向發(fā)展。led顯示屏的應(yīng)用涉及到社會(huì)經(jīng)濟(jì)的方方面面,主
10、要應(yīng)用的場(chǎng)合有:(1)車站的買票公告欄(2)廣場(chǎng)的led電視直播(3)銀行的交易信息及利率等信息的顯示(4)商店超市的廣告牌等等。1.1.2 我國(guó)現(xiàn)狀 自led顯示屏誕生至今,我國(guó)在led顯示屏領(lǐng)域的研究,在國(guó)際上還是名列前茅的。目前各種形式的led屏幕在我國(guó)都有生產(chǎn),其中最流行的彩色led顯示屏做的很突出,這種顯示屏主要用在廣場(chǎng)跟街頭的城市電視中?,F(xiàn)在一些電腦的顯示器也開(kāi)始采用了led顯示技術(shù),應(yīng)該來(lái)說(shuō)在這方面,我也沒(méi)有落后于別的國(guó)家,聯(lián)想研制的新型筆記本,很多采用了led顯示技術(shù),突破了原來(lái)的lcd顯示,這種筆記本電腦的顯示屏亮度更高,功耗更低,可謂是理想的選擇。相信在未來(lái)的中國(guó)將會(huì)有更多
11、的電子產(chǎn)品采用led顯示技術(shù)。1.1.3 led顯示屏的市場(chǎng)前景由于led顯示技術(shù)也是最新興起的技術(shù),目前l(fā)ed顯示技術(shù)的發(fā)展還是比較迅速,其中大多數(shù)用于商家的廣告牌,晚上在城市的街道,到處可以看見(jiàn)led顯示屏的影子。led顯示技術(shù)是跟信息技術(shù)緊密相連的,信息技術(shù)的發(fā)展必定會(huì)帶動(dòng)led顯示技術(shù)的進(jìn)步,在不久的將來(lái),也將會(huì)出現(xiàn)更多的電子產(chǎn)品采用led顯示??梢詫l(fā)光二極管做的更小,這樣生產(chǎn)出來(lái)的led顯示屏的分辨率會(huì)更高。第2章 方案論證與選擇2.1 系統(tǒng)硬件方案設(shè)計(jì)大多數(shù)的led顯示屏都在戶外,所以對(duì)屏幕的材質(zhì)硬件的質(zhì)量要求非常的高。為方便檢修和維護(hù)硬件電路設(shè)計(jì),常常采用模塊化的設(shè)計(jì)方法。硬件
12、的設(shè)計(jì)采用模塊化設(shè)計(jì),既要滿足模塊本身功能要求又要能夠和整個(gè)系統(tǒng)兼容。如圖2.1所示,根據(jù)顯示系統(tǒng)的功能特點(diǎn),從而確定系統(tǒng)硬件由控制部分,顯示屏部分,通信系統(tǒng)及上位機(jī)四部分組成。上位機(jī)通過(guò)通信串口部分向主控芯片發(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è)計(jì)要滿足要求就是穩(wěn)定、快速、簡(jiǎn)單易實(shí)現(xiàn)。因?yàn)樵谕ǔG闆r下顯示屏和上位機(jī)之間的傳輸距離不會(huì)很遠(yuǎn),所以對(duì)通信距離的要求不是很高,采用rs232標(biāo)準(zhǔn)就可以。計(jì)算機(jī)通信的方式主要有并行通信
13、和串行通信兩種方式。 (1)并行通信 計(jì)算機(jī)并行通信時(shí),數(shù)據(jù)是一起發(fā)送的。一起發(fā)送的數(shù)據(jù)位數(shù)就是并行通信的寬度,這個(gè)寬度可以是一個(gè)字節(jié)也可以是一個(gè)字。并行傳輸?shù)乃俣容^快,因?yàn)榭梢砸黄饌魉秃芏嗟奈粩?shù),但是并行傳輸?shù)某杀竞芨?,故在遠(yuǎn)距離傳輸時(shí),我們選用串行通信。(2)串行通信串行通信每次只可以發(fā)送一位數(shù)據(jù),所有的數(shù)據(jù)信號(hào)都是在一條數(shù)據(jù)線上發(fā)送的,所以只需要很少幾根線就可以進(jìn)行,串行通信的速度低,但傳送的距離長(zhǎng),因此串行通信適用于長(zhǎng)距離而速度要求不是很嚴(yán)格的場(chǎng)合。在串行通信時(shí),數(shù)據(jù)是一位一位按順序進(jìn)行的,而計(jì)算機(jī)內(nèi)部的數(shù)據(jù)是并行進(jìn)行處理的。因此,當(dāng)計(jì)算機(jī)向外發(fā)送數(shù)據(jù)時(shí),必須將計(jì)算機(jī)內(nèi)部的并行數(shù)據(jù)轉(zhuǎn)換
14、為串行數(shù)據(jù)再發(fā)送。反之,當(dāng)計(jì)算機(jī)接收數(shù)據(jù)時(shí),又必須將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)進(jìn)行處理。這種轉(zhuǎn)換可以由硬件來(lái)實(shí)現(xiàn)也可以由軟件實(shí)現(xiàn)。如果僅用軟件實(shí)現(xiàn)又會(huì)增加cpu的負(fù)擔(dān),降低其利用率,故目前常通常采用硬件實(shí)現(xiàn)。通用異步接收/發(fā)送器,簡(jiǎn)稱uart(universal asynchromous receeiver/trabsnitter)是完成這一功能的硬件電路。在avr單片機(jī)芯片中,uart已經(jīng)集成在單片機(jī)內(nèi),作為其組成部分,構(gòu)成一個(gè)串口。 綜上所述,在本系統(tǒng)中將采用uart來(lái)實(shí)現(xiàn)單片機(jī)與上位機(jī)之間的通信,由于串口已經(jīng)集成在了單片機(jī)的內(nèi)部,故只需設(shè)置相關(guān)寄存器就可以使用串口了。2.1.2 led點(diǎn)陣顯
15、示屏顯示部分有可以顯示漢字的顯示屏和對(duì)顯示屏進(jìn)行驅(qū)動(dòng)的底層硬件電路。由于單片機(jī)的i/o口有限且計(jì)算機(jī)io口的驅(qū)動(dòng)能力不是很強(qiáng),故不能直接用單片機(jī)的i/o口來(lái)驅(qū)動(dòng)led顯示屏,所以需要對(duì)單片機(jī)io口進(jìn)行擴(kuò)展來(lái)增加單片機(jī)并行輸出和驅(qū)動(dòng)能力。led顯示屏是由一個(gè)一個(gè)的發(fā)光二極管組成的點(diǎn)陣構(gòu)成的,要構(gòu)成大尺寸的led顯示屏就需要很多的發(fā)光二極管。構(gòu)成led屏幕的方法有兩種,一是由單個(gè)的發(fā)光二極管逐點(diǎn)連接起來(lái)構(gòu)成的,如圖2.2所示;二是選用一些由單個(gè)發(fā)光二極管構(gòu)成的led點(diǎn)陣單元模塊來(lái)構(gòu)成較大的led點(diǎn)陣模塊。目前市場(chǎng)上普遍采用的點(diǎn)陣單元模塊有88、1616幾種。這兩種屏幕構(gòu)成方法各有自己的優(yōu)缺點(diǎn),單個(gè)
16、發(fā)光二極管構(gòu)成顯示屏優(yōu)點(diǎn)是當(dāng)某個(gè)發(fā)光二極管出現(xiàn)問(wèn)題時(shí)只需更換一個(gè)二極管便可以正常工作,檢修的成本較低,缺點(diǎn)在于連接線路較為復(fù)雜;而點(diǎn)陣模塊構(gòu)成的方法卻正好與之相反,采用點(diǎn)陣模塊構(gòu)成顯示屏節(jié)約了大量的連線,但是一旦某個(gè)發(fā)光二極管出現(xiàn)問(wèn)題時(shí),與其同在一個(gè)模塊的所有l(wèi)ed都必須被更換,這樣就加大了維修的成本。兩種方法相比較,本系統(tǒng)中采用模塊點(diǎn)陣的方法,這樣可以避免較為復(fù)雜的連線。為了避免點(diǎn)陣模塊的缺點(diǎn),在本系統(tǒng)中選用8x8led點(diǎn)陣的基礎(chǔ)單元模塊,這樣一段某個(gè)發(fā)光二極管出現(xiàn)問(wèn)題,我們只需更換一個(gè)8x8的點(diǎn)陣模塊,若選用16x16的單元模塊,則更換的成本太高了。2.1.3 led點(diǎn)陣屏的驅(qū)動(dòng)方式 le
17、d點(diǎn)陣的驅(qū)動(dòng)方式有兩種:恒流驅(qū)動(dòng)方式和非恒流驅(qū)動(dòng)方式。在非恒流驅(qū)動(dòng)方式中,可以將74hc595輸出的數(shù)據(jù)直接接到點(diǎn)陣屏上,即用74hc595輸出的電流來(lái)驅(qū)動(dòng)顯示屏,但有74hc595輸出電流有限,不能驅(qū)動(dòng)很多的發(fā)光二極管同時(shí)點(diǎn)亮,所以當(dāng)一排點(diǎn)亮很多二極管時(shí),會(huì)出現(xiàn)跟其他排亮度不一的現(xiàn)象。恒流驅(qū)動(dòng)是將74hc164的輸出接到三極管基極,三極管的發(fā)射極接到電源上,集電極接到led顯示屏幕上。圖 2.2 led點(diǎn)陣圖一個(gè)1616的led顯示屏行和列各有16支引腳,我們不能直接用單片機(jī)來(lái)驅(qū)動(dòng)顯示屏,因?yàn)閱纹瑱C(jī)的io口驅(qū)動(dòng)能力很弱,而且直接接到單片機(jī)上,會(huì)占用大量的io口。在單片機(jī)驅(qū)動(dòng)led顯示屏?xí)r,常
18、采用io口擴(kuò)展的方式,在這里我們采用74hc595、74hc164來(lái)進(jìn)行io 口擴(kuò)展,這樣只需要占用少量的io口便可以驅(qū)動(dòng)顯示屏了。由于74hc595芯片輸出的電流只有30ma,所以不能驅(qū)動(dòng)很多的發(fā)光二極管同時(shí)發(fā)光,這樣我們需要在每個(gè)芯片的輸出端口加上功放電路,這樣我們就可以同時(shí)點(diǎn)亮很多的發(fā)光二極管,這就是led顯示屏的恒流驅(qū)動(dòng)。但是,采用恒流驅(qū)動(dòng)的方式,對(duì)于電源的要求也相應(yīng)的提高了,要求電源必須能夠提供足夠的電流,來(lái)驅(qū)動(dòng)大量的發(fā)光二極管同時(shí)發(fā)光。2.1.4 硬件設(shè)計(jì)方案最終方案如圖2.3所示,在這里,我們讓pc機(jī)作為上位機(jī),在pc機(jī)上運(yùn)行串口調(diào)試助手,通過(guò)此軟件來(lái)實(shí)現(xiàn)上位機(jī)與單片機(jī)之間的通信
19、。在上位機(jī)中,存儲(chǔ)著字模數(shù)據(jù)和控制數(shù)據(jù)顯示的方式的控制指令。首先上位機(jī)將字模數(shù)據(jù)發(fā)送到單片機(jī)內(nèi),單片機(jī)接受到字模數(shù)據(jù),通過(guò)譯碼電路,將字模數(shù)據(jù)還原出來(lái),利用這些01字符串來(lái)控制發(fā)光二極管的亮滅,從而在點(diǎn)陣屏幕上顯示出內(nèi)容。題目將以此涉及方案為指導(dǎo)展開(kāi)具體的硬件電路設(shè)計(jì)。圖2.3 硬件設(shè)計(jì)方案2.2 系統(tǒng)軟件方案軟件的設(shè)計(jì)除了滿足系統(tǒng)的功能外,還必須滿足容易讀寫(xiě),方便下載和編譯的特點(diǎn)。在系統(tǒng)設(shè)計(jì)目標(biāo)和硬件總體結(jié)構(gòu)確定的情況下,系統(tǒng)程序可以由主程序,顯示驅(qū)動(dòng)程序和各種特效顯示程序,串口通信程序三個(gè)主要部分組成。具體結(jié)構(gòu)如圖2.4所示。圖2.4 軟件功能結(jié)構(gòu)框圖程序的編寫(xiě)需要借助編輯編輯器和編譯軟件
20、,本系統(tǒng)中采用iccavr這個(gè)集成開(kāi)發(fā)環(huán)境來(lái)編寫(xiě)編譯程序,編譯完成后還需要下載軟件將編譯生成的hex文件下載到單片機(jī)中執(zhí)行。編寫(xiě)程序之前首先選擇一種合適的程序設(shè)計(jì)語(yǔ)言以及配套的編輯器和編譯軟件。最后還需要選擇與所選單片機(jī)相適應(yīng)的下載器和下載軟件,來(lái)把程序執(zhí)行生成的hex文件下載到單片機(jī)中。2.2.1 單片機(jī)編程語(yǔ)言在單片機(jī)開(kāi)發(fā)領(lǐng)域所用的主流編程語(yǔ)言為匯編語(yǔ)言和c語(yǔ)言。兩種語(yǔ)言相比較各有優(yōu)點(diǎn)。匯編語(yǔ)言(assembly language)是面向特定機(jī)器的程序設(shè)計(jì)語(yǔ)言,是一種功能很強(qiáng)的程序設(shè)計(jì)語(yǔ)言,匯編語(yǔ)言是直接控制計(jì)算機(jī)的硬件來(lái)執(zhí)行的,所以它對(duì)編程人員的要求好高,程序員要充分的了解所使用的單片機(jī)
21、的硬件架構(gòu)及組成特性。匯編語(yǔ)言具有執(zhí)行速度快,占內(nèi)存空間少等優(yōu)點(diǎn),所以它一般用在對(duì)于時(shí)間空間要求比較嚴(yán)格的場(chǎng)合,在平時(shí)我們開(kāi)發(fā)單片機(jī)程序時(shí),一般都用不到。匯編語(yǔ)言對(duì)于機(jī)器的依賴性較強(qiáng),在一種型號(hào)的單片機(jī)上編寫(xiě)的匯編程序不能移植到另一型號(hào)的單片機(jī)上,這就限制了它的應(yīng)用。c語(yǔ)言是一種高級(jí)程序設(shè)計(jì)語(yǔ)言,c語(yǔ)言經(jīng)過(guò)若干年的使用,可以證明其強(qiáng)大性,c語(yǔ)言最初是用來(lái)開(kāi)發(fā)unix操作系統(tǒng),在c語(yǔ)言在其編譯效率、執(zhí)行速度等方面顯示出了強(qiáng)大的優(yōu)越性,這就擴(kuò)大了它的使用范圍。c語(yǔ)言相比于其他程序設(shè)計(jì)語(yǔ)言,最大的特點(diǎn)是可以直接控制硬件,這是java、c#等高級(jí)語(yǔ)言多沒(méi)有的特性,它兼顧了高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言
22、的特點(diǎn),其執(zhí)行速率也是很快的。所以c語(yǔ)言成為了嵌入式開(kāi)發(fā)領(lǐng)域的主流語(yǔ)言。另外,c語(yǔ)言還是一種結(jié)構(gòu)化語(yǔ)言,在c語(yǔ)言中最基本的單元就是函數(shù),我們可以把功能接近的代碼,放在一個(gè)函數(shù)中,這樣我們的程序就成為了由一個(gè)個(gè)函數(shù)組成的整體,在主函數(shù)中我們可以調(diào)用相應(yīng)的函數(shù)來(lái)實(shí)現(xiàn)某種功能,c語(yǔ)言的這種特點(diǎn)使其很容易調(diào)試、修改。在c語(yǔ)言中,有很多的庫(kù)函數(shù),如果在我們的程序中要實(shí)現(xiàn)某種功能,而這種功能在函數(shù)庫(kù)中已經(jīng)得以實(shí)現(xiàn),那么我們就可以將這個(gè)函數(shù)庫(kù)直接包含在我們的程序中,可以減少我們自己多要編寫(xiě)的代碼量。綜合比較了兩種語(yǔ)言,在本系統(tǒng)設(shè)計(jì)中,我們采用c語(yǔ)言作為程序設(shè)計(jì)語(yǔ)言。2.2.2 系統(tǒng)軟件編譯器介紹用c語(yǔ)言編寫(xiě)
23、好的程序不能直接被單片機(jī)所執(zhí)行,要想讓c語(yǔ)言控制單片機(jī)運(yùn)行,需要對(duì)c語(yǔ)言程序進(jìn)行編譯,所以編譯程序是不可缺少的。支持avr用c語(yǔ)言編程的編譯器主要有:iccavr編譯器和avrstudio編譯器。目前在單片機(jī)開(kāi)發(fā)中普遍都是使用iccavr來(lái)進(jìn)行編譯。因此軟件設(shè)計(jì)最終方案為采用c語(yǔ)言為編程語(yǔ)言,iccavr為編譯工具按照控制、通信、顯示等幾個(gè)功能模塊來(lái)編寫(xiě)程序。2.2.3 上位機(jī)控制傳輸軟件本系統(tǒng)采用pc機(jī)作為上位機(jī),這樣對(duì)該系統(tǒng)的控制就變得簡(jiǎn)單了,因?yàn)閜c機(jī)可以直觀的反應(yīng)單片機(jī)的狀態(tài)。本系統(tǒng)中上位機(jī)的作用是存儲(chǔ)字模數(shù)據(jù)并控制單片機(jī)的顯示,通過(guò)通信系統(tǒng)將控制指令傳送到單片機(jī)中控制led的顯示。l
24、ed點(diǎn)陣屏的顯示一般有存儲(chǔ)顯示和實(shí)時(shí)顯示兩種。存儲(chǔ)顯示是將要顯示數(shù)據(jù)的字模通過(guò)串口由上位機(jī)發(fā)送到單片機(jī)內(nèi),單片機(jī)接到上位機(jī)發(fā)來(lái)的數(shù)據(jù),再接受上位機(jī)的控制信息便可以在led顯示屏上顯示了。實(shí)時(shí)顯示即上位機(jī)屏幕上顯示的內(nèi)容會(huì)同步的顯示到單片機(jī)多控制的led顯示屏上。兩種顯示方法相比較:實(shí)時(shí)顯示對(duì)于硬件的要求較高,對(duì)于通信系統(tǒng)的要求很高,上位機(jī)需要不斷的將更新的數(shù)據(jù)發(fā)動(dòng)到led屏幕上,通信開(kāi)銷交大,此種顯示方式多用于廣場(chǎng)的新聞播報(bào)顯示屏。存儲(chǔ)顯示不要求有較高的傳輸速率,對(duì)硬件要求不是很高,多用于需要較長(zhǎng)時(shí)間在顯示屏上顯示信息的場(chǎng)合,上位機(jī)將數(shù)據(jù)發(fā)送到單片機(jī)后,單片機(jī)便可以將其長(zhǎng)期的顯示在屏幕上了。本
25、系統(tǒng)設(shè)計(jì)中,對(duì)于實(shí)時(shí)性要求不是很好,另外,從成本方面考慮,選用存儲(chǔ)顯示來(lái)設(shè)計(jì)系統(tǒng)。2.2.4 下載軟件 avr單片機(jī)的下載軟件主要有:avrfighter ,mucode,avrstudio。avrstudio在下載程序時(shí),不方便設(shè)置熔絲位,而avrfighter ,mucode可以方便直觀的設(shè)置avr的熔絲位,所以本系統(tǒng)采用avrfighter作為下載軟件。第3章 系統(tǒng)硬件設(shè)計(jì)在第二章中,討論過(guò)不同的軟硬件設(shè)計(jì)方案,選擇了最有效的方案,在本章中詳細(xì)設(shè)計(jì)系統(tǒng)的硬件,其中包括avr單片機(jī)最小系統(tǒng)的設(shè)計(jì),串口通信硬件設(shè)計(jì),isp下載口設(shè)計(jì),jtag調(diào)試口設(shè)計(jì),led點(diǎn)陣屏幕設(shè)計(jì),led驅(qū)動(dòng)電路設(shè)計(jì)
26、。3.1 硬件系統(tǒng)的總體設(shè)計(jì)本系統(tǒng)采用avr單片機(jī)為核心控制器件,用四塊8*8點(diǎn)陣相連組成16*16點(diǎn)陣屏,作為顯示部分,用兩片74hc595作為列驅(qū)動(dòng)控制,用74ls164作為行驅(qū)動(dòng)控制,系統(tǒng)硬件總體方框圖如圖3.1所示。單片機(jī)74hc595列驅(qū)動(dòng)74hc164行驅(qū)動(dòng)led點(diǎn)陣模塊時(shí)鐘電路復(fù)位電路圖 3.1 系統(tǒng)硬件總體框圖3.2 avr單片機(jī)最小系統(tǒng)設(shè)計(jì) avr單片機(jī)最小系統(tǒng)包括uart串口,avr芯片,復(fù)位電路,時(shí)鐘電路,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è)計(jì)在串口通信設(shè)計(jì)中,我們選用uart與上位機(jī)進(jìn)行通信,串行通信可分為同步串行通信與異步串行通信。同步串行通信的代表有spi、iic,這種通信的最顯著特點(diǎn)是,收發(fā)方有相同的時(shí)鐘來(lái)協(xié)調(diào)雙方的發(fā)送。異步串行通信的代表是uart,在這種通信方式里,我們沒(méi)有統(tǒng)一的時(shí)鐘來(lái)協(xié)調(diào)收發(fā)方。收發(fā)方數(shù)據(jù)一致性的保證是波特率,在這種發(fā)送方式中,每個(gè)數(shù)據(jù)幀的格式是一位起始位,后跟若干數(shù)據(jù)位,奇偶校驗(yàn)位,停止位。數(shù)據(jù)位的位數(shù)我們可以在配置寄存器中進(jìn)行設(shè)置,而選用奇偶校
28、驗(yàn)也可以在配置寄存器中進(jìn)行設(shè)置,這樣就可以保證了數(shù)據(jù)發(fā)送的正確性質(zhì)了。 串口通信電路原理圖如圖3.1所示,在db9中只用到3跟線,其中第五管腳接地,第二管腳接到max232的第14管腳,在max232中11管腳輸入的數(shù)據(jù)經(jīng)過(guò)電平轉(zhuǎn)換從14管腳發(fā)送出去,傳送到上位機(jī)中,其中11管腳接單片機(jī)的串口發(fā)送端。db9的第3管腳接到單片機(jī)的13管腳上,上位機(jī)發(fā)送的數(shù)據(jù)通過(guò)13管腳進(jìn)行電平轉(zhuǎn)換,從max232的第12管腳發(fā)送出去,傳送到單片機(jī)的串口接收端。圖3.1 串口通信電路原理圖3.2.2 復(fù)位電路設(shè)計(jì)復(fù)位電路是確保單片機(jī)最小系統(tǒng)中不可缺少的一部分,當(dāng)單片機(jī)上電后,單片機(jī)會(huì)自動(dòng)運(yùn)行存儲(chǔ)在flash中的程
29、序,當(dāng)程序出現(xiàn)問(wèn)題時(shí)候,我們希望程序重新開(kāi)始執(zhí)行,那么我們會(huì)使用到復(fù)位,單片機(jī)重新開(kāi)始執(zhí)行程序,我們會(huì)在自小系統(tǒng)中設(shè)置一個(gè)按鍵,當(dāng)手按下,單片機(jī)會(huì)自動(dòng)復(fù)位,這種復(fù)位叫做上電復(fù)位。另一種復(fù)位是上電復(fù)位,但我們打開(kāi)電源時(shí)候,單片機(jī)會(huì)自動(dòng)復(fù)位,從flash開(kāi)始處,執(zhí)行程序。復(fù)位電路工作原理如圖3.3所示,當(dāng)系統(tǒng)上電時(shí),電流經(jīng)過(guò)10k電阻和10uf電容,系統(tǒng)導(dǎo)通,此時(shí)在電容的正極上是低電平,而avr單片機(jī)是低電平復(fù)位,所以此時(shí)單片機(jī)復(fù)位。在上電過(guò)程中,電容有個(gè)充放電的過(guò)程,所以上電后瞬間電容又放電。此電路中還有手動(dòng)復(fù)位的功能,當(dāng)按下按鍵時(shí),電流經(jīng)過(guò)10k電阻,又經(jīng)過(guò)1k電阻,電路導(dǎo)通,此時(shí)在10k電阻
30、兩端有個(gè)很大的壓降,10k電阻reset端為低電平,單片機(jī)復(fù)位。圖3.2 復(fù)位電路3.2.3 單片機(jī)的下載口 在pc機(jī)上寫(xiě)好的程序要下載到單片機(jī)里才能控制單片機(jī)的io口輸出高低電平,從而控制led點(diǎn)陣屏亮滅。對(duì)于avr單片機(jī)來(lái)說(shuō),可以有兩種下載程序的方法,一種通過(guò)isp在線下載,一種通過(guò)jtag仿真調(diào)試,在調(diào)試后程序自動(dòng)下載到單片機(jī)里,同時(shí)jtag仿真調(diào)試可以很方便的找出程序中的錯(cuò)誤,有利于調(diào)試,所以在的最小系統(tǒng)中也加入了jtag口。 isp下載口的電路原理圖如圖3.3所示,接口的2管腳接vcc,4、6、8、10管腳接gnd ,在下載器上可以通過(guò)跳線設(shè)置通過(guò)下載線給單片機(jī)供電,接口的第3管腳懸
31、空,1、5、7、9接到單片機(jī)的程序下載口上,這樣通過(guò)下載器就可以向單片機(jī)里下載程序了。圖3.3 isp下載口jtag仿真調(diào)試口電路原理圖如圖3.4所示,其中1、3、5、9分別接到單片機(jī)的jtag調(diào)試口,在avrstudio開(kāi)發(fā)環(huán)境中,可以通過(guò)jtag仿真調(diào)試逐句執(zhí)行程序語(yǔ)句來(lái)觀察單片機(jī)控制的led顯示屏的現(xiàn)象還幫助調(diào)試。同時(shí)也可以用仿真調(diào)試器來(lái)給系統(tǒng)供電。圖3.4 jtag下載口3.2.4 avr單片機(jī)的時(shí)鐘電路對(duì)于avr單片機(jī)來(lái)說(shuō),片內(nèi)已經(jīng)集成了晶振,可以采用外部晶振提供時(shí)鐘源,也可以通過(guò)設(shè)置單片機(jī)的熔絲位來(lái)改用內(nèi)部晶振。但是,在系統(tǒng)對(duì)時(shí)鐘要求嚴(yán)格的場(chǎng)合應(yīng)選用外部晶振。在本系統(tǒng)中,由于要用到
32、串口通信,在串口通信中要用波特率來(lái)保持上位機(jī)跟單片機(jī)傳輸數(shù)據(jù)的一致。所以的系統(tǒng)采用外部晶振的工作方式。如圖3.5為單片機(jī)的時(shí)鐘電路。圖3.5 時(shí)鐘電路3.2.5 avr單片機(jī)最小系統(tǒng)avr單片機(jī)最小系統(tǒng)是單片機(jī)能夠正常工作時(shí),所需要連接的最少管腳數(shù),一般avr單片機(jī)要能夠工作需要接電源、地、晶振、下載口。圖3.6為avr單片機(jī)的最小系統(tǒng)原理圖,在本系統(tǒng)中,由于采用了74hc595芯片及74hc164芯片實(shí)現(xiàn)串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),所以在的系統(tǒng)中只用到少量的io口,這樣其他的io口可以用來(lái)控制其他的外設(shè),達(dá)到減少io口的目的。在畫(huà)原理圖的過(guò)程中,我大量的使用了網(wǎng)絡(luò)標(biāo)號(hào),網(wǎng)絡(luò)標(biāo)號(hào)相同的結(jié)點(diǎn)可以正常
33、的連接起來(lái),這樣可以避免在畫(huà)電路原理圖時(shí),采用大量的連線。采用網(wǎng)絡(luò)標(biāo)號(hào)可以達(dá)到模塊化的目的,這樣畫(huà)較為復(fù)雜的電路原理圖時(shí),可以很整潔清晰的表達(dá)出來(lái)。也有利于原理圖的糾錯(cuò),避免了復(fù)雜難看的線路連接網(wǎng)絡(luò)。其實(shí),avr單片機(jī)內(nèi)部已經(jīng)集成了很多外圍設(shè)備接口,在avr單片機(jī)內(nèi)部集成了晶振,所以在avr最小系統(tǒng)中可以不畫(huà)外圍晶振,最簡(jiǎn)單的avr最小系統(tǒng)只需要兩根電源線,4根程序下載線。由于在本系統(tǒng)中,我們用到了串口,所以需要設(shè)置波特率,那么對(duì)于時(shí)鐘源的精確度就有要求了。所以我們采用外部晶振的方式,采用11.9582m的晶振來(lái)為系統(tǒng)提供電源。圖 3.6 avr單片機(jī)最小系統(tǒng)3.3 led點(diǎn)陣屏設(shè)計(jì)及驅(qū)動(dòng)電路
34、設(shè)計(jì)3.3.1 驅(qū)動(dòng)電路設(shè)計(jì) 本系統(tǒng)中采用兩片74hc595和兩片74hc164將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),在led點(diǎn)陣屏設(shè)計(jì)時(shí),采用三極管來(lái)驅(qū)動(dòng)顯示屏,這樣可以是每個(gè)二極管的亮度都達(dá)到飽和。圖3.7為三極管組成的驅(qū)動(dòng)電路。在電路中,采用的是pnp 型三極管,三極管的基極接到74hc164的輸出端,發(fā)射極接到電源,集電極接到led點(diǎn)陣屏上,這樣當(dāng)74hc164某個(gè)管腳輸出低電平時(shí),其對(duì)應(yīng)的三極管導(dǎo)通,電流通過(guò)三極管流到led點(diǎn)陣屏,點(diǎn)亮相應(yīng)的二極管。當(dāng)74hc164輸出高電平時(shí),其對(duì)應(yīng)的三極管不能導(dǎo)通,所驅(qū)動(dòng)的發(fā)光二極管不會(huì)被點(diǎn)亮。這樣就能很好的控制發(fā)光二極管的亮滅了。圖3.7 三極管驅(qū)動(dòng)電路3
35、.3.2 行驅(qū)動(dòng)電路設(shè)計(jì) 在行驅(qū)動(dòng)電路中,采用2片74hc164來(lái)擴(kuò)展io口,74hc164的輸出通過(guò)4.7k的電阻接到三極管的基極。圖3.8為74hc164的管腳圖。 圖3.8 74hc16474hc164是一種串入并出的芯片,在本設(shè)計(jì)中,將芯片的1、2管腳接在一起,使1、2管腳成為線與的關(guān)系,數(shù)據(jù)從1、2管腳串行進(jìn)入芯片,時(shí)鐘線接在第8管腳,在每個(gè)時(shí)鐘周期的上升沿,串行數(shù)據(jù)寫(xiě)入芯片內(nèi),在8個(gè)時(shí)鐘周期后,數(shù)據(jù)就并行的從芯片輸出。同時(shí),芯片的第13管腳,也是芯片的級(jí)聯(lián)管腳,可以將第13管腳接到下一片芯片的輸入端,這樣就可以輸出16位并行數(shù)據(jù)了。圖3.9為本設(shè)計(jì)中74hc164的級(jí)聯(lián)圖,本系統(tǒng)中
36、用單片機(jī)的io口模擬芯片輸入的數(shù)字時(shí)鐘,通過(guò)io口不斷的拉高拉低來(lái)實(shí)現(xiàn)時(shí)鐘的效果,在每次的上升沿?cái)?shù)據(jù)就寫(xiě)入到了芯片內(nèi),16個(gè)上升沿后,16位數(shù)據(jù)就在io口準(zhǔn)備好了,輸出到16個(gè)三極管的基極,為低電平的io口所對(duì)應(yīng)的三極管導(dǎo)通,三極管驅(qū)動(dòng)相應(yīng)的發(fā)光二極管點(diǎn)亮。 圖 3.9 74hc164級(jí)聯(lián)效果圖3.3.3 列驅(qū)動(dòng)電路設(shè)計(jì)在列驅(qū)動(dòng)電路里,用了兩片74hc595來(lái)擴(kuò)展io口,74hc595芯片的功能類似于74hc164,但74hc595芯片帶有鎖存功能,在時(shí)鐘引腳上,每來(lái)一個(gè)上升沿,串行數(shù)據(jù)就向高位移位,待8為數(shù)據(jù)都準(zhǔn)備好時(shí),在鎖存時(shí)鐘引腳上來(lái)一個(gè)上升沿,就打開(kāi)鎖存端口,并行數(shù)據(jù)發(fā)出。74hc59
37、5輸出端接在限流電阻端,限流電阻另一端接在了led點(diǎn)陣屏幕上。圖3.10為74hc595的引腳圖。圖3.10 74hc595管腳圖其中第14管腳為數(shù)據(jù)輸入管腳,第9管腳為級(jí)聯(lián)管腳,本設(shè)計(jì)中將兩片595芯片級(jí)聯(lián)起來(lái),當(dāng)?shù)臀恍酒瑵M八位時(shí),通過(guò)級(jí)聯(lián)端口向高位移位,第11管腳為595芯片的時(shí)鐘輸入端,每次在11管腳上產(chǎn)生一個(gè)上升沿時(shí),串行數(shù)據(jù)就向前移動(dòng)一位,第12管腳為595芯片的數(shù)據(jù)鎖存端,當(dāng)在12管腳上產(chǎn)生上升沿時(shí),鎖存輸出打開(kāi),595中的數(shù)據(jù)并行輸出。第13管腳為595的使能端,在本設(shè)計(jì)中,直接將13管腳接低電平,即595芯片一直處于使能狀態(tài)。第10管腳為芯片的擦除引腳,當(dāng)在第10管腳加低電平時(shí)
38、,就將595芯片內(nèi)部存儲(chǔ)的數(shù)據(jù)擦除,在本設(shè)計(jì)中,不需要擦除芯片,所以直接將第10管腳接高電平。圖3.11為74hc595的級(jí)聯(lián)連接,在本設(shè)計(jì)中用單片機(jī)的pa1口作為芯片的時(shí)鐘信號(hào)輸入端,利用單片機(jī)的io口輸出高低電平來(lái)模擬時(shí)鐘信號(hào),單片機(jī)的pa2口接到芯片的鎖存控制端,通過(guò)io口輸出的高低電平來(lái)實(shí)現(xiàn)上升沿。圖3.11 74hc595級(jí)聯(lián)圖3.4 led點(diǎn)陣屏設(shè)計(jì) 在本設(shè)計(jì)中,采用的是8x8的led點(diǎn)陣來(lái)拼成一個(gè)16x16的點(diǎn)陣屏,將4片8x8led點(diǎn)陣相同的列與相同的行連接起來(lái),形成一個(gè)16x16的點(diǎn)陣屏幕。圖3.12為8x8點(diǎn)陣的引腳圖。圖3.12 8x8led點(diǎn)陣引腳圖圖中為共陽(yáng)型led點(diǎn)
39、陣,左邊的一列引腳為led點(diǎn)陣的行信號(hào)輸入引腳,上面一行為led點(diǎn)陣的列信號(hào)輸入引腳。當(dāng)在某一行輸入引腳輸入高電平,某一列輸入引腳輸入低電平時(shí),相應(yīng)的行列交錯(cuò)點(diǎn)的發(fā)光二極管將被點(diǎn)亮。我們將4個(gè)8x8led點(diǎn)陣對(duì)應(yīng)的引腳連接起來(lái),就形成了16x16點(diǎn)陣。如圖3.13所示。圖3.13 16x16led點(diǎn)陣引腳圖第4章 系統(tǒng)軟件設(shè)計(jì)4.1 主程序設(shè)計(jì)系統(tǒng)控制程序采用c語(yǔ)言編寫(xiě),按照模塊化程序設(shè)計(jì)的思想來(lái)設(shè)計(jì)。首先分析程序所要實(shí)現(xiàn)的功能,程序要實(shí)現(xiàn)pc機(jī)與單片機(jī)的串口通信,led顯示屏的靜態(tài)顯示與動(dòng)態(tài)顯示三大功能。串口程序接收上位機(jī)數(shù)據(jù),交給主程序處理后再通過(guò)顯示控制程序選擇不同的顯示方式進(jìn)行顯示。
40、主程序的工作流程如圖4.1所示:圖4.1 主程序流程圖程序開(kāi)始時(shí)首先必須對(duì)單片機(jī)進(jìn)行初始化,其中包括:各io口功能的設(shè)定,中斷初始化,串行通信方式的選擇和波特率的設(shè)定等。單片機(jī)上電后,首先進(jìn)入主程序,在主程序中,調(diào)用串口程序,待上位機(jī)的指令通過(guò)串口發(fā)送到單片機(jī),且單片機(jī)接受完指令時(shí),主程序開(kāi)始調(diào)用顯示程序,將信息顯示在led顯示屏上。4.2 顯示程序設(shè)計(jì)4.2.1 顯示驅(qū)動(dòng)程序的設(shè)計(jì)顯示驅(qū)動(dòng)程序是顯示部分的核心,顯示驅(qū)動(dòng)程序有行驅(qū)動(dòng)程序跟列驅(qū)動(dòng)程序組成,行驅(qū)動(dòng)程序主要是74hc164芯片的驅(qū)動(dòng)程序,列驅(qū)動(dòng)程序主要是對(duì)74hc595芯片的驅(qū)動(dòng)。對(duì)于行驅(qū)動(dòng)程序,第一次將第一位輸出為0,這樣相應(yīng)的三
41、極管導(dǎo)通led點(diǎn)陣的第一行被陽(yáng)極為高電平,這樣第一行所有陰極被置為低電平的二極管點(diǎn)亮。在下一個(gè)脈沖到來(lái)時(shí),74hc164芯片內(nèi)的數(shù)據(jù)向高位移位,同時(shí)在程序中讓低位補(bǔ)1,這樣第2行的二極管的陽(yáng)極置為高電平,同樣,第二行所有陰極被置為低電平的二極管將被點(diǎn)亮。對(duì)于列驅(qū)動(dòng)程序,單片機(jī)移位輸入的是顯示內(nèi)容的字模數(shù)據(jù),將數(shù)據(jù)移位16次后,在74hc595芯片的數(shù)據(jù)鎖存端給一個(gè)上升沿,將16位并行數(shù)據(jù)全部輸出。注意在這里,我們輸入到595芯片內(nèi)的數(shù)據(jù)是要顯示信息的字模的反碼,因?yàn)榱袙呙璩绦驅(qū)?yīng)的是二極管的陰極,在行掃描程序中,我們已經(jīng)給了二極管的陽(yáng)極高電平,所以在列掃描程序中應(yīng)該給出低電平才能點(diǎn)亮相應(yīng)的發(fā)光
42、二極管。圖4.2為led顯示屏顯示的動(dòng)態(tài)掃描過(guò)程。圖4.2 led顯示的動(dòng)態(tài)掃描過(guò)程 第一次在第一行輸出高電平,同時(shí)列輸出的是字模數(shù)據(jù)在第一行對(duì)應(yīng)的字節(jié)的反碼,第二次在第二行輸出高電平,同時(shí)列輸出的是字模數(shù)據(jù)在第二行對(duì)應(yīng)的字節(jié)的反碼。以此類推,直到第16行掃描結(jié)束,又回到第一行繼續(xù)掃描。4.2.2 點(diǎn)陣數(shù)據(jù)的獲取 對(duì)于一些簡(jiǎn)單的字母或者漢字,我們可以在16x16的表格上寫(xiě)出0、1的點(diǎn)陣數(shù)據(jù)獲取要顯示信息的字模,但是當(dāng)我們要顯示的文字很多時(shí),這樣非常麻煩。在這里介紹一種去字模的軟件pctolcd,在這里我們輸入要顯示的漢字字母等信息,點(diǎn)擊獲取字模就可以得到我們需要顯示的內(nèi)容的字模。圖4.3為取字
43、模軟件的界面。在軟件中,設(shè)置好字寬字高字體等信息后,點(diǎn)擊獲取字模就可以得到字模數(shù)據(jù)了,非常方便。圖4.3 pctolcd界面4.2.3 串口通信程序的設(shè)計(jì) 系統(tǒng)采用串行中斷的方式進(jìn)行通信。avr單片機(jī)的中斷源兩種類型:一類是外部中斷源;另一類是內(nèi)部中斷源,包括三個(gè)定時(shí)器/計(jì)數(shù)器(t0和t1)的溢出中斷和串行口的接收和發(fā)送中斷。avr單片機(jī)設(shè)置了4個(gè)專用寄存器用于中斷控制,分別為定時(shí)器控制寄存器(tcon),串行口中斷控制器(scon),中斷允許控制寄存器(ie),中斷優(yōu)先級(jí)控制寄存器(ip)。編程時(shí)通過(guò)設(shè)置其狀態(tài)來(lái)管理中斷系統(tǒng)。總中斷分中斷在編寫(xiě)中斷程序時(shí)首先是將中斷控制寄存器(ie)初始化,
44、其控制位分布如表。ea為中斷允許總控制位,ea=1時(shí)cpu開(kāi)中斷;ea=0時(shí),cpu屏蔽所有中斷,只有打開(kāi)總中斷,所有模塊的終端才會(huì)起作用,et、es、ex1、et0、ex0為對(duì)應(yīng)的定時(shí)器/計(jì)數(shù)器1中斷、串行口中斷、外部中斷1中斷、外部中斷0中斷、定時(shí)器/計(jì)數(shù)器0中斷的中斷允許位,對(duì)應(yīng)位為1時(shí)允許其中斷,對(duì)應(yīng)位為0時(shí),禁止其中斷。有些讀者可能搞不懂總中斷與其他中斷的關(guān)系,圖4.4做了形象的描述。圖4.4 總中斷與分中斷的關(guān)系表 4.1 中斷允許寄存器格式d7d6d5d4d3d2d1d0eaeset1ex1et0ex0 在系統(tǒng)初始化時(shí)設(shè)定中斷允許寄存器初值為0xff,指令為 ie=0xff。設(shè)置
45、串口工作方式1,波特率9600,計(jì)算可得計(jì)數(shù)器初值的十六進(jìn)制表示為0xfd。通信協(xié)議如表4.2所示:表4.2 串行通信協(xié)議格式數(shù)據(jù)結(jié)構(gòu)第1個(gè)字節(jié)第2至第33個(gè)字節(jié)第34個(gè)字節(jié)內(nèi)容起始標(biāo)志位s顯示數(shù)據(jù)控制指令作用判斷是否開(kāi)始接收數(shù)據(jù)led的顯示內(nèi)容控制led顯示方式 具體串口中斷程序流程圖如圖4.5所示,在主程序中先進(jìn)行了串行中斷的初始化,初始化內(nèi)容包括了串行工作方式選擇,波特率的設(shè)定,計(jì)數(shù)初值的設(shè)定。程序開(kāi)始進(jìn)入中斷等待,當(dāng)pc機(jī)向單片機(jī)發(fā)送數(shù)據(jù)時(shí)產(chǎn)生中斷接收允許位ri置1,將sbuf(緩沖寄存器)中的值輸入到暫存器中進(jìn)行數(shù)據(jù)處理。首先判斷數(shù)據(jù)是否設(shè)定的起始標(biāo)志位s如果是則開(kāi)始接收起始位后的3
46、3個(gè)字節(jié),不是則中斷返回繼續(xù)等待。接收到第34個(gè)字節(jié)后便將收到的數(shù)據(jù)發(fā)送回pc機(jī)進(jìn)行驗(yàn)證比較。所有的程序編寫(xiě)完成后都必須經(jīng)過(guò)編譯才能燒寫(xiě)到單片機(jī)中運(yùn)行。為了減小程序的修改和優(yōu)化難度,按照模塊化編程的思想,將各個(gè)功能寫(xiě)入到一個(gè)模塊中,每完成一個(gè)模塊就用總程序調(diào)用測(cè)試,測(cè)試通過(guò)則繼續(xù)編寫(xiě)下一個(gè)模塊。各子模塊編譯沒(méi)有錯(cuò)誤后再輸入單片機(jī)進(jìn)行驗(yàn)證。這兩項(xiàng)都通過(guò)后,再將所有的程序整合到一起,進(jìn)行集成測(cè)試,測(cè)試通過(guò)則完成了該系統(tǒng)的軟件設(shè)計(jì)。中斷開(kāi)始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ì)完成后,必須對(duì)其進(jìn)行實(shí)物測(cè)試,本系統(tǒng)的測(cè)試包括:硬件測(cè)試、軟件測(cè)試、軟硬件集成測(cè)試。檢查系統(tǒng)的各項(xiàng)功能是否得以實(shí)現(xiàn)。5.1 系統(tǒng)硬件部分的調(diào)試硬件調(diào)試主要是各芯片的輸出輸入電壓是否符合設(shè)計(jì)要求和調(diào)試各部分的焊接是否合格,最后測(cè)試各硬件部分能否完成設(shè)計(jì)功能。因此把硬件調(diào)試按照以下四部分分步來(lái)進(jìn)行:(1)用萬(wàn)用表檢測(cè)所用的電路是否導(dǎo)通,整個(gè)板子是否存在虛焊及其短路;(2)用萬(wàn)用表檢測(cè)每個(gè)芯片的電源端與接地端的電壓是否符合芯片對(duì)電源的要求;(3)測(cè)試單片機(jī)的程序下載口能否正常工作;(4)測(cè)試單片機(jī)與上位機(jī)之間的串口通信功能能否實(shí)現(xiàn)。由于整個(gè)系統(tǒng)的顯示功能需要應(yīng)用程序的配合,所以在硬件調(diào)
48、試部分只測(cè)試單片機(jī)的各個(gè)管腳的電平及是否存在虛焊,整個(gè)系統(tǒng)的顯示功能部分的測(cè)試放在系統(tǒng)聯(lián)合調(diào)試部分來(lái)完成。5.1.1 短路與虛焊檢測(cè) 此項(xiàng)測(cè)試中,工具是多用電表,利用多用電表的報(bào)警功能,測(cè)試各個(gè)連接點(diǎn)是否連接好,如果連接無(wú)縫,則萬(wàn)用表會(huì)發(fā)出聲響提示連接無(wú)誤。這樣就檢測(cè)出了電路中不存在虛焊。再用萬(wàn)用表測(cè)試芯片相鄰的管腳,看看是否發(fā)出警報(bào),發(fā)出警報(bào)證明系統(tǒng)存在短路,需要用電烙鐵占松香進(jìn)行清除。5.1.2 上電測(cè)試本系統(tǒng)設(shè)計(jì)中是采用usb電源供電,輸出電壓為5v。系統(tǒng)中所用到的單片機(jī)、74hc595芯片、74hc164芯片的工作電壓都是5v,所以在本系統(tǒng)中所有的芯片都是采用相同的電源進(jìn)行供電。 上電
49、后首先要觀察整個(gè)電路是否有發(fā)熱、冒煙的現(xiàn)象。經(jīng)過(guò)長(zhǎng)時(shí)間的測(cè)試觀察發(fā)現(xiàn)電路工作正常,沒(méi)有上述現(xiàn)象產(chǎn)生。接著,將萬(wàn)用表的旋鈕調(diào)到直流電壓檔位,測(cè)試各個(gè)芯片的電源端與接地端的電壓范圍,經(jīng)過(guò)測(cè)試,發(fā)現(xiàn)電壓范圍大致都在4.8v至5.12v之間,所以芯片的工作電壓正常。5.1.3 串口調(diào)試串口作為上位機(jī)與單片機(jī)通信的部分,是整個(gè)系統(tǒng)的關(guān)鍵部分,所以必須認(rèn)真測(cè)試。測(cè)試串口時(shí),串口的連接如圖5.1所示,將max232芯片的第9管腳之直接與第10管腳端接,這樣表示上位機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù)未經(jīng)過(guò)單片機(jī)而直接從發(fā)送口又發(fā)送給了上位機(jī),在串口調(diào)試助手中,不斷的向單片機(jī)發(fā)送不同的數(shù)據(jù),觀察串口調(diào)試助手能不能將數(shù)據(jù)原封不動(dòng)的
50、收回。圖 5.1 串口部分的測(cè)試5.2 系統(tǒng)軟件調(diào)試方法由于在上一步中已經(jīng)進(jìn)行了硬件測(cè)試,所以在這里開(kāi)始軟件的測(cè)試。編寫(xiě)好各個(gè)芯片的驅(qū)動(dòng)程序后,開(kāi)始編寫(xiě)應(yīng)用程序,在應(yīng)用程序中調(diào)用底層的驅(qū)動(dòng)程序,進(jìn)行動(dòng)態(tài)的顯示。為了精確的定位軟件的出錯(cuò)點(diǎn),在這里分模塊測(cè)試,先測(cè)試led顯示部分,這是系統(tǒng)最主要的功能,在主程序中調(diào)用顯示程序,觀察顯示效果,經(jīng)過(guò)多次測(cè)試,發(fā)現(xiàn)顯示程序沒(méi)有問(wèn)題。接著,開(kāi)始串口程序的測(cè)試,由于在硬件測(cè)試中已經(jīng)將串口的發(fā)送端與接收端進(jìn)行短接,所以在這里就不用測(cè)試max232芯片的工作狀態(tài)了。測(cè)試串口通信程序的正確性,不但需要連接單片機(jī)與上位機(jī),而且還需要串口調(diào)試工具協(xié)助程序的調(diào)試。在這里
51、,我們選用串口調(diào)試助手來(lái)協(xié)助我們調(diào)試串口程序,串口調(diào)試助手的界面如圖5.2所示。在串口調(diào)試助手中,選擇好與單片機(jī)通信的上位機(jī)的com口,設(shè)置好通信的波特率,選擇有無(wú)校驗(yàn)位,設(shè)置好數(shù)據(jù)位與停止位的位數(shù)。下面就可以開(kāi)始串口程序的調(diào)試了,由于在本系統(tǒng)設(shè)計(jì)中,只需要上位機(jī)向單片機(jī)發(fā)送控制指令及字模數(shù)據(jù),而不需要上位機(jī)讀取單片機(jī)的狀態(tài),所以在本系統(tǒng)的串口調(diào)試中,我們只檢測(cè)串口的接受數(shù)據(jù)的功能。串口調(diào)試助手的設(shè)置如下圖所示,我們選擇上位機(jī)的com1口,通信的波特率設(shè)置為9600,不設(shè)置校驗(yàn)位,數(shù)據(jù)幀的格式為數(shù)據(jù)位為8位,1位停止位,選擇以十六進(jìn)制的格式發(fā)動(dòng)數(shù)據(jù),以十六進(jìn)制格式顯示數(shù)據(jù),發(fā)送的一串?dāng)?shù)據(jù)以aa
52、開(kāi)頭,當(dāng)單片機(jī)接收到以aa開(kāi)頭的一串?dāng)?shù)據(jù)時(shí),將aa以后的數(shù)據(jù)提取出來(lái)發(fā)動(dòng)到上位機(jī)來(lái),我們送的數(shù)據(jù)是aa 11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff,單片機(jī)接收到這串?dāng)?shù)據(jù)后,將aa以后的一串?dāng)?shù)據(jù)發(fā)送回來(lái),在串口調(diào)試助手中顯示為11223344556677889900aabbccddeeff11223344556677889900aabbccddeeff,由于我們?cè)O(shè)置的是以十六進(jìn)制的格式發(fā)送數(shù)據(jù),以十六進(jìn)制的格式接受數(shù)據(jù),所以上位機(jī)接受到的數(shù)據(jù)位正確格式的數(shù)據(jù)。在這里,一定設(shè)置好波特率,這里設(shè)置的波特率一定要跟我
53、們?cè)诖谕ㄐ懦绦蚶镌O(shè)置的波特率一致,因?yàn)楫惒酱型ㄐ艣](méi)有統(tǒng)一的時(shí)鐘線來(lái)協(xié)調(diào)發(fā)送方跟接受方,它僅靠著波特率來(lái)協(xié)調(diào)發(fā)送方跟接收方的一致。如果串口調(diào)試助手中的波特率,跟程序中設(shè)置的不一致,那么在串口調(diào)試助手這里,我們將會(huì)看到單片機(jī)發(fā)送給上位機(jī)的是亂碼。 圖5.2 串口調(diào)試助手調(diào)試情況5.3 系統(tǒng)軟硬件調(diào)試及結(jié)果 經(jīng)過(guò)硬件調(diào)試與軟件調(diào)試,我們可以證明硬件電路連接的正確性,排除系統(tǒng)存在虛焊的情況;經(jīng)過(guò)對(duì)串口的軟硬件調(diào)試,可以證明系統(tǒng)串口在硬件上連接無(wú)誤,同時(shí)在軟件上,也可以正常運(yùn)行。下面我們重點(diǎn)調(diào)試led點(diǎn)陣顯示屏幕,檢查屏幕有無(wú)壞處。(1)檢查屏幕的好壞,我們首先要編寫(xiě)一個(gè)逐行掃描的程序,讓此程序從點(diǎn)
54、陣屏的第一行開(kāi)始逐行的向下掃描,掃描到第十六行,觀察有無(wú)發(fā)光二極管沒(méi)有被點(diǎn)亮。結(jié)果發(fā)現(xiàn)第一塊led點(diǎn)陣單元有倆兩個(gè)發(fā)光二極管沒(méi)有點(diǎn)亮,因?yàn)樵谥暗臏y(cè)試中由于沒(méi)有接限流電阻,導(dǎo)致直接在發(fā)光二極管的兩端加5v電壓,燒壞了連個(gè)二極管。更換led顯示單元,每行的led都會(huì)被點(diǎn)亮。(2)通過(guò)上一步檢測(cè),可以保證屏幕沒(méi)有問(wèn)題,每個(gè)led像素點(diǎn)都可以發(fā)光。現(xiàn)在開(kāi)始測(cè)試我們之前編寫(xiě)的顯示程序,顯示程序分為動(dòng)態(tài)滾動(dòng)顯示和靜態(tài)顯示。靜態(tài)顯示在led點(diǎn)陣屏上只顯示一個(gè)漢字,通過(guò)反復(fù)測(cè)試,發(fā)現(xiàn)靜態(tài)顯示功能可以正常實(shí)現(xiàn)。動(dòng)態(tài)滾動(dòng)效果是讓現(xiàn)實(shí)的內(nèi)容從左到右,從上到下,從下到上滾動(dòng)顯示,通過(guò)測(cè)試,滾動(dòng)效果沒(méi)有問(wèn)題。這一部測(cè)試可以斷定整個(gè)系統(tǒng)的驅(qū)動(dòng)電路與顯示屏沒(méi)有問(wèn)題。(3)在上一步中我們證明了系統(tǒng)的屏幕顯示漢字沒(méi)有問(wèn)題,并且在之前的測(cè)試中,我們證明了串口的軟硬件結(jié)構(gòu)都沒(méi)有問(wèn)題。在這里,我們開(kāi)始測(cè)試串口控制led顯示的功能能否得以實(shí)現(xiàn)。在串口調(diào)試助手中,我們發(fā)送控制led屏幕顯示的控制代碼,觀察能否通過(guò)串口有效的控制led點(diǎn)陣屏的顯示。通過(guò)發(fā)送控制代碼,我們發(fā)現(xiàn)led點(diǎn)陣屏幕能夠被控制,我們可以通過(guò)上位機(jī)來(lái)控制顯示內(nèi)容的移動(dòng)情況,同時(shí)可以控制移動(dòng)的速度。結(jié)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 線上美術(shù)如何做課程設(shè)計(jì)
- 精準(zhǔn)脫貧課程設(shè)計(jì)
- 引流服務(wù)合同范例
- 武漢學(xué)院《電機(jī)學(xué)課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)療貸款協(xié)議范本
- 合同糾紛原告所在地管轄的情形3篇
- 農(nóng)產(chǎn)品化肥與種子銷售協(xié)議3篇
- 員工離職和解協(xié)議編寫(xiě)3篇
- 啤酒制造轉(zhuǎn)讓合同范例
- 地塊交易協(xié)議3篇
- 2024年高考真題-生物(江蘇卷) 含答案
- 2024年保育師考試測(cè)試題庫(kù)及答案
- 電商企業(yè)審計(jì)風(fēng)險(xiǎn)分析-以京東為例
- 器官捐獻(xiàn)合作協(xié)議書(shū)范文模板
- 廣東省東莞市2025屆物理高一上期末學(xué)業(yè)水平測(cè)試試題含解析
- 地方政府應(yīng)急物資采購(gòu)供應(yīng)協(xié)議2024年版
- 糖尿病患者體重管理專家共識(shí)(2024版)解讀
- 2023-2024學(xué)年初三物理第一學(xué)期期末模擬試題和答案
- 一元二次方程基礎(chǔ)練習(xí)50題含詳細(xì)答案
- 李白杜甫酒詩(shī)
- 軍事理論(上海公安學(xué)院)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論