單片機應用技術課件-002_第1頁
單片機應用技術課件-002_第2頁
單片機應用技術課件-002_第3頁
單片機應用技術課件-002_第4頁
單片機應用技術課件-002_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《單片機應用技術》項目2數(shù)碼管顯示系統(tǒng)設計瀘州職業(yè)技術學院機電工程系《單片機應用技術》精品課程組《單片機應用技術》項目2數(shù)碼管顯示系統(tǒng)設計瀘州職業(yè)技術學1本講主要內容4相關知識1教學目標2工作任務3項目實踐5能力拓展6項目考核本講主要內容4相關知識1教學目標2工作任務3項目實踐21、終極目標:制作一個數(shù)碼管循環(huán)顯示數(shù)字0-9的單片機控制系統(tǒng)。2、促成目標:(1)掌握單片機查表程序的設計方法;(2)掌握單片機的LED顯示接口電路工作原理及其應用;(3)掌單片機LED顯示接口的程序設計方法;(4)初步掌握單片機應用系統(tǒng)分析和軟硬件設計的基本方法,建立單片機系統(tǒng)設計的基本概念;【教學目標】1、終極目標:【教學目標】3

在數(shù)碼管上循環(huán)顯示數(shù)字0-9,時間間隔為0.2秒?!竟ぷ魅蝿铡俊竟ぷ魅蝿铡?【活動一】總體設計1.系統(tǒng)組成本系統(tǒng)功能由硬件和軟件兩大部份協(xié)調完成,硬件部分主要完成信息的顯示;軟件主要完成信號的處理及控制功能等。本系統(tǒng)的硬件采用模塊化設計,以AT89S52單片機為核心,與數(shù)碼管接口電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個模塊:AT89S52主控模塊、數(shù)碼管顯示模塊等。其中AT89S52主要完成外圍硬件的控制以及一些運算功能,數(shù)碼管顯示模塊完成字符、數(shù)字的顯示功能。系統(tǒng)組成方框圖如圖2.1所示。【項目實踐】【活動一】總體設計1.系統(tǒng)組成【項目實踐】5

單片機數(shù)碼管顯示電路復位電路時鐘電路電源電路

圖2.1數(shù)碼管顯示系統(tǒng)組成方框圖【項目實踐】單數(shù)碼管顯示電路復位電路時鐘電路電源電路6

應用軟件采用模塊化設計方法。該系統(tǒng)軟件主要由主程序、延時子程序等模塊組成,系統(tǒng)軟件結構框圖如圖2.2所示。延時子程序主程序圖2.2系統(tǒng)軟件結構框圖【項目實踐】

72.系統(tǒng)工作原理數(shù)碼管由8個發(fā)光二極管構成,可以用來顯示數(shù)字、字符等,它在家電及工業(yè)控制中有著很廣泛的應用,例如用來顯示溫度、數(shù)量、重量、日期、時間等,具有顯示醒目、直觀的有點,如圖2.3所示。

圖2.3數(shù)碼管實物圖【項目實踐】2.系統(tǒng)工作原理圖2.3數(shù)碼管實物圖【項目實踐】8數(shù)碼管實際上是由7個發(fā)光管組成“8”字形構成的,加上小數(shù)點就是8個。這些段分別由字母a、b、c、d、e、f、g、dp來表示。當數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,以形成我們眼睛看到的字樣。例如:顯示一個“3”字,那么應當是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。數(shù)碼管的內部結構如圖2.4所示,其中COM引腳為公共端,用來控制數(shù)碼管顯示的打開或關閉,即起到“使能”作用。根據(jù)公共端接法的不同,數(shù)碼管又分為共陰極和共陽極兩種結構,分別如圖2.4(b)和圖2.4(c)所示。共陽極就是將8個LED的陽極連接到一起組成公共端COM,接正極,當相應字段為低電平“0”時,可以點亮該字段;當相應字段為高電平“1”時,該字段不亮。共陰極就是將8個LED的陰極連接到一起組成公共端COM,接負極,當相應字段為高電平“1”時,可以點亮該字段;當相應字段為低電平“0”時,該字段不亮。【項目實踐】數(shù)碼管實際上是由7個發(fā)光管組成“8”字形構成9圖2.4數(shù)碼管內部結構圖【項目實踐】圖2.4數(shù)碼管內部結構圖【項目實踐】10【活動二】硬件設計1.主控模塊設計本項目采用ATMEL公司生產的AT89S52單片機,主控模塊的具體設計參見項目1。2.數(shù)碼管顯示模塊設計本項目中選用8段共陽極數(shù)碼管,數(shù)碼管的a、b、c、d、e、f、g、dp段分別與單片機P0口的P0.5、P0.3、P0.1、P0.0、P0.4、P0.6、P0.7、P0.2相連,用來控制顯示數(shù)字的形狀。數(shù)碼管的公共使能端COM連接三極管C8550的集電極,三極管C8550主要用于信號的放大,以驅動數(shù)碼管工作。三極管8550的基極通過限流電阻接到單片機P2口的P2.0,通過控制三極管C8550基極電平來打開或關閉數(shù)碼管的顯示,起到“使能作用”。三極管C8550的集電極接+5V電源。數(shù)碼管顯示模塊與單片機的接口電路如圖2.5所示?!卷椖繉嵺`】【活動二】硬件設計【項目實踐】11圖2.5數(shù)碼管顯示模塊與單片機的接口電路原理圖【項目實踐】圖2.5數(shù)碼管顯示模塊與單片機的接口電路原理圖【項目實踐】121.算法設計對于數(shù)碼管而言,要想顯示數(shù)字或字母,首先應該選中該數(shù)碼管,然后相應字段被點亮。例如:顯示一個“3”字,那么應當是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。對于共陽極數(shù)碼管,對應到單片機的P0口,P0.7為低電平“0”,P0.6為高電平“1”,P0.5為低電平“0”,P0.4為高電平“1”,P0.3為低電平“0”,P0.2為高電平“1”,P0.1為低電平“0”,P0.0為低電平“0”,即當把01010100(54H)送給P0口時,可以顯示“3”字。其他數(shù)字的顯示依此類推,那么可以列出數(shù)碼管顯示數(shù)字的段碼表如表2.1所示?!卷椖繉嵺`】【項目實踐】【活動三】軟件設計【項目實踐】【項目實踐】【活動三】軟件設計13

表2.1數(shù)碼管顯示數(shù)字的段碼表段名稱GFAEBDPCD對應段碼對應引腳P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0數(shù)字01000010084H數(shù)字111110101F5H數(shù)字20100011046H數(shù)字30101010054H數(shù)字40010010135H數(shù)字5000111001CH數(shù)字6000011000CH數(shù)字711010101D5H數(shù)字80000010004H數(shù)字90001010014H【項目實踐】表2.1數(shù)碼管顯示數(shù)字的段碼表段名稱14如表2.1所示,由于數(shù)碼管顯示的數(shù)字“0~9”的字型碼“84H、0F5H、46H、54H、35H、1CH、0CH、0D5H、04H、14H”沒有規(guī)律可循,只能采用查表的方式來完成我們所需的要求。在程序設計中可以設計一個變量,每隔一定時間在“0~9”之間變化,然后按照這個數(shù)據(jù)去查找段碼表,把查到的數(shù)據(jù)送到P0口。所謂表格是指在程序中定義的一串有序的常數(shù),如平方表、字形碼表、鍵碼表等。因為程序一般都是固化在程序存儲器(通常是只讀存儲器ROM類型)中,因此可以說表格是預先定義在程序的數(shù)據(jù)區(qū)中,然后和程序一起固化在ROM中的一串常數(shù)。在程序設計中,有時需要預先把非線性數(shù)據(jù)以表格的形式存放在存儲器中,然后使用程序讀出,這種能讀出數(shù)據(jù)表格的程序就稱為查表程序。查表程序的關鍵是表格的定義和如何實現(xiàn)查表。表格的定義可以用偽指令DB來實現(xiàn),查表的實現(xiàn)可以用指令MOVCA,@A+PC或者MOVCA,@A+DPTR來實現(xiàn)?!卷椖繉嵺`】如表2.1所示,由于數(shù)碼管顯示的數(shù)字“0~915按照數(shù)字0-9的順序,把每個數(shù)字的字型編碼按順序排列好,再用偽指令DB建立表格,最后利用指令MOVCA,@A+PC或者MOVCA,@A+DPTR來實現(xiàn)查表。建立的表格的程序代碼如下所示:TABLE:DB84H,0F5H,46H,54H,35H,1CH,0CH,0D5H,04H,14H2.數(shù)據(jù)結構設計單片機的P0口用于控制數(shù)碼管所要顯示的字形;P2口P2.0用于控制三極管8550是否導通,從而實現(xiàn)對數(shù)碼管的片選;工作寄存器R1為數(shù)碼管數(shù)據(jù)表索引寄存器;數(shù)據(jù)指針DPTR為數(shù)碼管字型碼的基址寄存器;工作寄存器R5、R6、R7為延時子程序的循環(huán)變量。【項目實踐】按照數(shù)字0-9的順序,把每個數(shù)字的字型編碼按163.程序設計(1)主程序設計主程序主要完成硬件初始化、子程序調用等功能。①初始化設置數(shù)碼管使能信號有效,即P2.0=0;將數(shù)碼管數(shù)據(jù)表索引寄存器R1賦初值00H。②字符顯示在查表時首先用MOVA,R1指令將存放在R1中的索引值送給累加器A,將數(shù)據(jù)表的表首地址TABLE送給數(shù)據(jù)指針DPTR,然后用查表指令MOVCA,@A+DPTR取出數(shù)碼管顯示數(shù)據(jù),DPTR的值加上A的值即為所取數(shù)據(jù)的地址,將該地址中的數(shù)據(jù)送給A;接著把A的值送給用于控制數(shù)碼管顯示字形的P0口,即可在數(shù)碼管上顯示相應的數(shù)字。調用延時子程序是使數(shù)碼管能夠穩(wěn)定顯示相應的數(shù)字。最后數(shù)碼管數(shù)據(jù)表索引寄存器R1加1,為下一個數(shù)字的顯示做準備。【項目實踐】3.程序設計【項目實踐】17

③查表結束判斷對數(shù)碼管數(shù)據(jù)表索引寄存器R1的值進行判斷是否為結束碼0AH,應用比較轉移指令CJNER1,#10,NEXT來判斷數(shù)字0—9是否顯示完。若未顯示完則程序轉移至標號NEXT的指令處執(zhí)行,將存放在R1中的索引值送給累加器A,將數(shù)據(jù)表的表首地址TABLE送給數(shù)據(jù)指針DPTR,然后用查表指令MOVCA,@A+DPTR取出數(shù)碼管顯示數(shù)據(jù),為下一個數(shù)字的顯示做準備;若顯示完則順序執(zhí)行,將跳轉至主程序開始,重新將數(shù)碼管數(shù)據(jù)表索引寄存器R1賦初值00H。從而實現(xiàn)數(shù)字0-9的循環(huán)顯示。主程序設計流程圖如圖2.6所示。【項目實踐】③查表結束判斷主程序設計流程18設置數(shù)碼管字型碼變址寄存器初值R1=0開始調用延時子程序YR1=10?N根據(jù)R1的值查表查表獲得的數(shù)據(jù)送P0R1+1→R1數(shù)碼管使能信號有效,P2.0=0圖2.6主程序設計流程圖【項目實踐】設置數(shù)碼管字型碼變址寄存器初值R1=0開始調用延19(2)延時子程序模塊設計延時子程序模塊設計請參考項目1。4.匯編語言源程序;****************************************************************;功能:主程序;****************************************************************

ORG0000HMOVP2,#0FEH;P2.0用于控制數(shù)碼管的片選START:MOVR1,#00H;R1為數(shù)碼管字型碼的變址寄存器NEXT:MOVA,R1;把字型碼的變址地址送給累加器AMOVDPTR,#TABLE;取得表首地址MOVCA,@A+DPTR;查表,取得顯示的字型碼MOVP0,A;P0用于數(shù)碼管的字位口控制LCALLDELAY200ms;調用延時子程序INCR1;下一個字型碼的變址寄存器CJNER1,#10,NEXT;判斷0—9是否顯示完畢LJMPSTART;循環(huán)顯示【項目實踐】(2)延時子程序模塊設計4.匯編語言源20;****************************************************************;功能:延時子程序;****************************************************************DELAY200ms:MOVR5,#20LOOP1:MOVR6,#20LOOP2:MOVR7,#230DJNZR7,$DJNZR6,LOOP2DJNZR5,LOOP1RET【項目實踐】;*****************************21;*******************************************************************;功能:;LED字段碼表;********************************************************************;8字LED的連接方法;P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0;G,F(xiàn)AEBHCDTABLE:DB84H,0F5H,46H,54H,35H,1CH,0CH,0D5H,04H,14HEND【項目實踐】【項目實踐】225.C語言源程序#include<AT89X51.H>unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};unsignedchardispcount;voiddelay02s(void){unsignedchari,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}【項目實踐】5.C語言源程序【項目實踐】23voidmain(void){P2=0xfe;while(1){for(dispcount=0;dispcount<10;dispcount++){P0=table[dispcount];delay02s();}}}【項目實踐】voidmain(void)【項目實踐】24系統(tǒng)仿真調試過程參見項目1?!卷椖繉嵺`】【活動四】系統(tǒng)仿真調試【項目實踐】【活動四】系統(tǒng)仿真調試25一、數(shù)碼管基本知識顯示器是最常用的輸出設備。特別是發(fā)光二級管顯示器(LED:LightEmittingDiode)和液晶顯示器(LCD),由于結構簡單、價格便宜、接口容易,得到廣泛的應用,尤其在單片機系統(tǒng)中大量使用。本項目主要介紹發(fā)光二級管顯示器(LED)與單片機的接口設計和相應的程序設計。液晶顯示器(LCD)與單片機的接口設計請參見項目6。【相關知識】【相關知識】261.數(shù)碼管的結構數(shù)碼管由8個發(fā)光二極管(以下簡稱字段)構成,通過不同的組合可用來顯示數(shù)字0~9、字符A~F、H、L、P、、U、符號“-”及小數(shù)點“.”。數(shù)碼管的外形結構如圖2.7(a)所示,數(shù)碼管又分為共陰極和共陽極兩種結構,分別如圖2.7(b)和圖2.7(c)所示。所謂共陰極,即是將所有LED的陰極連接到一起,而共陽極則相反,所有的陽極被連接到了一起。但不管哪種結構,其顯示設計的原理基本相同,唯一的是其驅動的電路的設計有所差異,一般共陰極采用推(Push)電流的方式來驅動,而共陽極結構則采用拉(Pull)電流的方式來驅動?!鞠嚓P知識】1.數(shù)碼管的結構【相關知識】27圖2.7數(shù)碼管的外形結構圖【相關知識】圖2.7數(shù)碼管的外形結構圖【相282.數(shù)碼管工作原理共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起。通常,公共陽極接高電平(一般接電源),其他管腳接段驅動電路輸出端。當某段驅動電路的輸出端為低電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能吸收額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。3.數(shù)碼管的字形編碼

要使數(shù)碼管顯示出相應的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應的字形編碼。對照圖2.7,字型碼各位定義為:數(shù)據(jù)線D0與a字段對應,D1與b字段對應……,依次類推。如使用共陽極數(shù)碼管,數(shù)據(jù)為0表示對應字段亮,數(shù)據(jù)為1表示對應字段暗;如使用共陰極數(shù)碼管,數(shù)據(jù)為0表示對應字段暗,數(shù)據(jù)為1表示對應字段亮。如要顯示“0”,共陽極數(shù)碼管的字型編碼應為11000000B(即C0H);共陰極數(shù)碼管的字型編碼應為00111111B(即3FH)。依次類推,可求得數(shù)碼管字形編碼見表2.2。【相關知識】2.數(shù)碼管工作原理【相關知識】29表2.2數(shù)碼管字型編碼表【相關知識】

30【相關知識】【相關知識】314.LED數(shù)碼管顯示方式

根據(jù)LED顯示的硬件設計方法的不同,LED顯示驅動分為靜態(tài)法和動態(tài)法兩種方法。(1)LED的靜態(tài)顯示方式所謂靜態(tài)顯示驅動法,即是指每一個LED燈分別對應一個獨立的I/O驅動口;其點亮和關閉由該I/O來對其進行控制,互不干擾。對于I/O驅動能力弱的MCU,必須增加外部的驅動芯片或驅動三極管等器件。LED顯示器工作在靜態(tài)方式時,其公共端應接到一個固定的電平(共陰極接低電平,共陽極接高電平)。如圖2.8所示為兩位共陽極LED數(shù)碼管與單片機連接?!鞠嚓P知識】4.LED數(shù)碼管顯示方式【相關知識】32

此種設計一般應用在對單個LED的驅動或LED數(shù)量較少,且所選的MCUI/O比較充裕的情況下。比如一些項目的LED指示燈、產品的設計中只有一個7-段LED碼需要顯示等。由于每一個LED均由獨立的I/O口來控制,因此此種顯示驅動的軟件設計比較簡單明了,無需特別的處理,在需要點亮和關閉時設置相應的I/O輸出口的電平即可(即“0”或“1”,具體須根據(jù)驅動電路的設計來決定)?!鞠嚓P知識】此種設計一般應用在對單個LED的驅動或LED數(shù)33圖2.8LED靜態(tài)顯示電路【相關知識】圖2.8LED靜態(tài)顯示電路【相關知識】34優(yōu)點:電路設計簡單,編程簡單,而且LED的亮度控制容易,只需在驅動端增加相應的電流調節(jié)電阻即可方便地實現(xiàn)亮度的調節(jié)(對于存在獨立驅動的設計,還可以通過調整驅動電壓來達到亮度的調節(jié))。缺點:由于每一個LED燈需要一個I/O口,因此對I/O口的需求較大,不易實現(xiàn)大數(shù)量的LED驅動和顯示,擴展性能差?!鞠嚓P知識】優(yōu)點:電路設計簡單,編程簡單,而且LED的亮度35(2)LED的動態(tài)顯示方式在LED的位數(shù)比較多時,采用靜態(tài)顯示方式,要占用大量的I/O,硬件電路比較復雜,為了簡化電路,降低成本,可采用動態(tài)顯示方式。所謂動態(tài)顯示就是一位一位地輪流點亮各位顯示器(掃描),對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的點亮既跟點亮時的導通電流有關,也跟點亮時間和間隔時間的比例有關。調整電流和時間的參數(shù),可實現(xiàn)亮度較高較穩(wěn)定的顯示。若顯示器的位數(shù)不大于8位,則控制顯示器公共極電位只需一個I/O口(稱為掃描口),控制各位顯示器所顯示的字形也需一個8位口(稱為段數(shù)據(jù)口)。動態(tài)顯示的硬件接法是將所有LED顯示器的段選線并在一起,接到一個8位的I/O接口上,而位選線則分開接到各自的控制I/O線上?!鞠嚓P知識】(2)LED的動態(tài)顯示方式【相關知識】36各LED的段選線是并到一起的,如果不加控制,在送顯示字模時各LED會顯示同樣的內容,為解決這一問題,應使LED在每一個時間段內只顯示一位,在此期間只使一位LED的位選線有效,則在此期間內只有一位LED顯示,而其他LED不顯示,通過程序或硬件電路控制,各LED在一個顯示周期內分別顯示一段時間,當一個顯示周期足夠短時(小于100ms),由于人眼的視覺暫留特性,使人感覺每個LED總在亮。這種方式稱動態(tài)掃描顯示方式,完成這種功能可由軟件也可由硬件完成。圖2.9是用MCS-51單片機設計的一個5位共陰極LED動態(tài)顯示電路。8位共陽極顯示器和單片機的接口邏輯如圖2.9所示。P0端口接動態(tài)數(shù)碼管的字形碼筆段(段數(shù)據(jù)口),P2端口接動態(tài)數(shù)碼管的數(shù)位選擇端(掃描口)?!鞠嚓P知識】各LED的段選線是并到一起的,如果不加控制,在37

圖2.9LED動態(tài)顯示電路【相關知識】圖2.9LED動態(tài)顯示電路【相關38二、項目相關的指令1.定義字節(jié)指令偽指令DB指令格式:標號:DB字節(jié)常數(shù)表或ASCII碼字符表功能:從指定的地址單元開始定義若干個字節(jié)的數(shù)值或ASCII碼字符,各數(shù)據(jù)之間用逗號分隔,常用于定義一個數(shù)據(jù)表格存入程序存儲器。在表示ASCII碼字符時需要在字符上加單引號,標號表示數(shù)據(jù)表的首地址。【相關知識】二、項目相關的指令【相關知識】39

【例如】下面的DB指令從0100H單元開始定義了一個10個字節(jié)的數(shù)據(jù)表。

ORG0100HTAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHDB定義的數(shù)據(jù)表一行可以寫多個數(shù)據(jù),當一行寫不下要分行時,在下一行也必須用DB偽指令開頭。數(shù)據(jù)表首地址為0100H,那么標號TAB=0100H,定義了10個字節(jié)數(shù)據(jù),(0100H)=3FH,(0101H)=06H,(0102H)=5BH,以此類推,(0109H)=6FH。

2.16位數(shù)據(jù)傳送指令

MOVDPTR,#data16;DPTR←data16這是51單片機唯一的一條16位數(shù)據(jù)傳送指令,其功能是將16位立即數(shù)送入數(shù)據(jù)指針DPTR。【相關知識】【例如】下面的DB指令從0100H單元開始定義了403.程序存儲器傳送指令

MOVCA,@A+PC;PC←PC+1,A←(A+PC)MOVCA,@A+DPTR;A←(A+DPTR)這兩條指令都是一字節(jié)指令,并且都為變址尋址方式,其尋址范圍為64KB。程序存儲器傳送指令的助記符是在MOV的后面加C,“C”是Code的第一個字母,是代碼的意思。這兩條指令用于訪問程序存儲器中的數(shù)據(jù)表格,因此可以把它們看成是查表專用指令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論