單片機原理及接口技術全套教學課件_第1頁
單片機原理及接口技術全套教學課件_第2頁
單片機原理及接口技術全套教學課件_第3頁
單片機原理及接口技術全套教學課件_第4頁
單片機原理及接口技術全套教學課件_第5頁
已閱讀5頁,還剩301頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單原及接片理口技術機第1章緒論.pptx第2章單片機學習必要工具.pptx第3章51單片機C語言基礎知識.pptx第4章顯示器件原理及應用實現(xiàn).pptx第5章鍵盤檢測原理及應用.pptx第6章中斷.pptx第7章串行口通訊及應用.pptx第8章單總線通信協(xié)議與典型電路應用.pptx第9章SPI通信協(xié)議與典型電路應用.pptx第10章IIC通信協(xié)議與典型電路應用.pptx全套可編輯PPT課件12第一章

緒論01單片機概述02單片機預備知識PrincipleandinterfacetechnologyofMicrocomputer01單片機概述?什么是單片機單片機是一種集成電路芯片(也稱為微控制器,嵌入式控制器),是采用超大規(guī)模集成電路技術把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領域廣泛應用。與通用的計算機不同,單片機的指令功能是按照工業(yè)控制的要求設計的,因此它又被稱為微控制器(MicroControllerUnit)。隨著集成電路技術的發(fā)展,單片機片內(nèi)集成的功能越來越強大,并朝著SOC(片上系統(tǒng))方向發(fā)展。近幾年單片機以其體積微小,價格低廉,可靠性高,廣泛應用于工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、智能化儀器儀表、通信設備及日常消費類產(chǎn)品等。單片機技術開發(fā)和應用水平已成為衡量一個國家工業(yè)化發(fā)展水平的標志之一。1.1單片機的特點1.2單片機作為微型計算機的一個分支,與一般的微型計算機沒有本質(zhì)上的區(qū)別,同樣具有快速、精確、記憶功能和邏輯判斷能力等特點。但單片機是集成在一塊芯片上的微型計算機,它與一般的微型計算機相比,在硬件結構和指令設置上均有獨到之處,主要特點有:1、體積小,重量輕;價格低,功能強;電源單一,功耗低;可靠性高,抗干擾能力強。這是單片機得到迅速普及和發(fā)展的主要原因。同時由于它的功耗低,使后期投入成本也大大降低。2、使用方便靈活、通用性強。由于單片機本身就構成一個最小系統(tǒng),只要根據(jù)不同的控制對象作相應的改變即可,因而它具有很強的通用性。3、目前大多數(shù)單片機采用哈佛(Harvard)結構體系。單片機的數(shù)據(jù)存儲器空間和程序存儲器空間相互獨立。單片機主要面向測控對象,通常有大量的控制程序和較少的隨機數(shù)據(jù),將程序和數(shù)據(jù)分開,使用較大容量的程序存儲器來固化程序代碼,使用少量的數(shù)據(jù)存儲器來存取隨機數(shù)據(jù)。程序在只讀存儲器ROM中運行,不易受外界侵害,可靠性高。4、突出控制功能的指令系統(tǒng)。單片機的指令系統(tǒng)中有大量的單字節(jié)指令,以提高指令運行速度和操作效率;有豐富的位操作指令,滿足了對開關量控制的要求;有豐富的轉(zhuǎn)移指令,包括有無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令。5、較低的處理速度和較小的存儲容量。因為單片機是一種小而全的微型機系統(tǒng),它是犧牲運算速度和存儲容量來換取其體積小、功耗低等特色。單片機應用1.3單片機計算機技術的快速發(fā)展是基于集成電路技術發(fā)展而來的,價格也越來越得到廣大用戶接受,因此在工業(yè)生產(chǎn)等領域中得到了廣泛應用。其系列在逐漸發(fā)展變化,功能也越來越強大;單片機目前被視為嵌入式微控制器,它最明顯的優(yōu)勢就是可以嵌入到各種儀器、設備中,這一點是巨型機不可能做到的。由于單片機所具有的顯著優(yōu)點,它已成為科技領域的有力工具,人類生活的得力助手。它的應用遍及各個領域,主要表現(xiàn)在以下幾個方面:1、單片機在智能儀表中的應用。單片機作為微處理器在智能儀器儀表中的應用,就是將一些部件的功能集中整合在一塊芯片中,使得計算機系統(tǒng)看起來不是很復雜,形成了完整的單片計算機的應用系統(tǒng),由于其體積小等特點,使儀器儀表的測量功能大為擴展,方便了維護工作,自檢與測量互不干擾。例如:數(shù)字濾波,數(shù)字濾波是通過數(shù)字設備的算法來處理信號,將某個頻段的信號經(jīng)過篩選濾除出去,得到新的信號,通過對單片機的有效控制,提高了可利用信號的使用價值,以平滑加工的形式對信號進行采樣,消除噪聲等各種干擾因素,使系統(tǒng)運行更加可靠。2、單片機在機電一體化產(chǎn)品中的應用。基于單片機技術的機電一體化技術,自動化水平明顯提高,機電一體化的水平更趨于穩(wěn)定和徹底。同時,隨著單片機的廣泛運用,使機電一體化技術更具智能化特征。例如,微機控制的機床、機器人等。單片機在機電一體化產(chǎn)品中的應用,極大地提高了設備的智能化,提高了處理能力和處理效率,而且無需占用很大的空間和復雜的設備。3、單片機在實時控制中的應用。單片機具有較強的實時數(shù)據(jù)處理能力和控制功能,可滿足大多數(shù)實時控制系統(tǒng),使系統(tǒng)保持在最佳工作狀態(tài),提高系統(tǒng)的工作效率和產(chǎn)品質(zhì)量;同時,它的快速響應性和可靠性使得單片機廣泛地用于各種實時控制系統(tǒng)中。例如,在工業(yè)測控、航空航天、尖端武器、機器人等各種實時控制系統(tǒng)中,都可以用單片機作為控制器。4、單片機在分布式系統(tǒng)中的應用。由于單片機具有通信距離遠、實時性強、抗干擾能力強、通訊接口簡單、成本低等優(yōu)點,在比較復雜的分布式控制系統(tǒng)中以單片機為核心,單片機在這種系統(tǒng)中往往作為一個下位機,安裝在系統(tǒng)的節(jié)點上,對現(xiàn)場信息進行實時的測量和控制。例如各部件獨立控制的機器人,常常采用RS-232C轉(zhuǎn)RS-485,實現(xiàn)一對多控制。5、單片機在日常生活中的應用。隨著單片機集成度的提高、價格的降低,其已經(jīng)滲透進我們?nèi)粘I畹姆椒矫婷?;例如,手機、洗衣機、電冰箱、電子玩具、收錄機等家用電器配上單片機后,提高了智能化程度,增加了功能,倍受人們喜愛。單片機使人類生活更加方便、舒適、豐富多彩。綜上所述,單片機已成為計算機發(fā)展和應用的一個重要方面。單片機的知識可以在很多場合得以應用,學好單片機可以更好的融入現(xiàn)代化生活。單片機的發(fā)展單片機作為微型計算機的一個重要分支,應用廣,發(fā)展快。如果將8位單片機的推出作為起點,那么單片機的發(fā)展歷史大致可分為以下幾個階段:孕育階段(1971-1976):1971年Intel公司研制出世界上第一個4位的微處理器;Intel公司的霍夫研制成功世界上第一塊4位微處理器芯片Intel4004,標志著第一代微處理器問世,微處理器和微機時代從此開始。因發(fā)明微處理器,霍夫被英國《經(jīng)濟學家》雜志列為“二戰(zhàn)以來最有影響力的7位科學家”之一。第一階段(1976-1978):單片機的初級階段。以Intel公司的MCS-48為代表。MCS-48的推出是在工控領域的探索,參與這一探索的公司還有Motorola、Zilog等,都取得了滿意的效果。這是SCM的誕生年代,“單片機”一詞即由此而來。這個系列的單片機內(nèi)集成有8位CPU、I/O接口、8位定時器/計數(shù)器,尋址范圍不大于4K字節(jié),簡單的中斷功能,無串行接口。1.4第二階段(1978-1982):單片機的完善階段。Intel公司在MCS-48基礎上推出了完善的、典型的單片機系列MCS一51。它在以下幾個方面奠定了典型的通用總線型單片機體系結構:完善的外部總線,MCS-51設置了經(jīng)典的8位單片機的總線結構,包括8位數(shù)據(jù)總線、16位地址總線、控制總線及具有多機通信功能的串行通信接口;CPU外圍功能單元的集中管理模式;體現(xiàn)工控特性的位地址空間及位操作方式;指令系統(tǒng)趨于完善,并且增加了許多突出控制功能的指令。第三階段(1982-1992):8位單片機的鞏固發(fā)展及16位單片機的推出階段,也是單片機向微控制器發(fā)展的階段。Intel公司推出的MCS-96系列單片機,將一些用于測控系統(tǒng)的模數(shù)轉(zhuǎn)換器、程序運行監(jiān)視器、脈寬調(diào)制器等納入片中,體現(xiàn)了單片機的微控制器特征。隨著MCS-51系列的廣泛應用,許多廠商競相使用8051為內(nèi)核,將許多測控系統(tǒng)中使用的電路、接口、多通道AD轉(zhuǎn)換部件、可靠性技術等應用到單片機中,增強了外圍電路的功能,強化了智能控制的特征。第四階段(1993-現(xiàn)在):微控制器的全面發(fā)展階段。隨著單片機在各個領域全面深入地發(fā)展和應用,出現(xiàn)了高速、大尋址范圍、強運算能力的8位/16位/32位通用型單片機,以及小型廉價的專用型單片機。單片機的發(fā)展方向目前,現(xiàn)在可以說單片機是百花齊放的時期,世界上各大芯片制造公司都推出了自己的單片機,從8位、16位到32位,數(shù)不勝數(shù),應有盡有,它們各具特色,互成互補,為單片機的應用提供廣闊的天地,單片機發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等方面發(fā)展。1、低功耗CMOS化。CMOS電路具有許多優(yōu)點,如極寬的工作電壓范圍,極佳的低功耗及功耗管理特性等,MCS-51系列的8031推出時的功耗達630mW,而現(xiàn)在的單片機普遍都在100mW左右,現(xiàn)在的各個單片機制造商基本都采用了CMOS(互補金屬氧化物半導體工藝)。80C51就采用了HMOS(即高密度金屬氧化物半導體工藝)和CHMOS(互補高密度金屬氧化物半導體工藝)。CMOS雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗,電池供電的應用場合。所以這種工藝將是今后一段時期單片機發(fā)展的主要途徑。1.52、多功能集成化和微型化?,F(xiàn)在單片機開始將中央處理器(CPU)、隨機存取數(shù)據(jù)存儲(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口,中斷系統(tǒng)、定時電路、時鐘電路、A/D轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗)、有些單片機將LCD(液晶)驅(qū)動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的集成型單片機芯片。此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構成的系統(tǒng)正朝微型化方向發(fā)展。3、片內(nèi)存儲器的改進與發(fā)展。目前新型的單片機一般在片內(nèi)集成兩種類型的存儲器:一種是隨機讀寫存儲器(常用的為SRAM,StaticRandomAccessMemory,靜態(tài)RAM),作為臨時數(shù)據(jù)存儲器存放工作數(shù)據(jù)用;另一種是只讀存儲器ROM(ReadOnlyMemory),作為程序存儲器存放系統(tǒng)控制程序和固定不變的數(shù)據(jù)。片內(nèi)存儲器的改進與發(fā)展的方向是擴大容量、數(shù)據(jù)的易寫和保密等。4、以串行總線方式為主的外圍擴展。在很長一段時間里,通用型單片機通過三總線結構擴展外圍器件成為單片機應用的主流結構。隨著低價位0TP(OneTimeProgramble)及各種特殊類型片內(nèi)程序存儲器的發(fā)展,加之處圍接口不斷進入片內(nèi),推動了單片機“單片”應用結構的發(fā)展。特別是I2C、SPI等串行總線的引入,可以使單片機的引腳設計得更少,單片機系統(tǒng)結構更加簡化及規(guī)范化。5、單片機向片上系統(tǒng)SOC的發(fā)展。SOC(SystemOnChip)是一種高度集成化、固件化的芯片級集成技術,其核心思想是把除了無法集成的某些外部電路和機械部分之外的所有電子系統(tǒng)電路全部集成在一片芯片中?,F(xiàn)在一些新型的單片機已經(jīng)是SOC的雛形,在一片芯片中集成了各種類型和更大容量的存儲器,更多性能完善和強大的功能電路接口,這使得原來需要幾片甚至十幾片芯片組成的系統(tǒng),現(xiàn)在只用一片就可以實現(xiàn)。其優(yōu)點是不僅減小了系統(tǒng)的體積和成本,而且大大提高了系統(tǒng)硬件的可靠性和穩(wěn)定性。單片機預備知識02數(shù)制及其轉(zhuǎn)換2.1二進制數(shù)的運算電子計算機一般采用二進制數(shù)。二進制數(shù)只有0和1兩個基本數(shù)字,容易通過開關兩個狀態(tài)實現(xiàn)。二進制數(shù)的運算公式:十進制和二進制間的轉(zhuǎn)換十進制數(shù)轉(zhuǎn)換成二進制將十進制整數(shù)轉(zhuǎn)換成二進制整數(shù)時,只要將它一次一次地被2除,得到的余數(shù)(從最后一個余數(shù)讀起)就是二進制表示的數(shù)。二進制數(shù)轉(zhuǎn)換成十進制數(shù)將一個二進制數(shù)的整數(shù)轉(zhuǎn)換成十進制數(shù),只要將它的最后一位乘以2n-1,最后第二位乘以2n-2......以此類推(n為二進制位數(shù)),然后將各項相加就得到用十進制表示的數(shù)。例:(101011)2=1×2?+0×2?+1×23+0×22+1×21+1×20=(44)10;如果將一個帶有小數(shù)的二進制數(shù),轉(zhuǎn)換成十進制數(shù),小數(shù)點后的第一位乘以2-1,第二位乘以2-2,以此類推,小數(shù)點前的轉(zhuǎn)換方法與整數(shù)轉(zhuǎn)換方法相同,然后將各項相加就得到用十進制表示的數(shù)。例:(100001.101)2:=1×25+0×24+0×23+0×22+0×21+1×20+1×2-1+0×2-2+1×2-3=(33.625)10 不同進制數(shù)的轉(zhuǎn)換二進制數(shù)和八進制數(shù)互換:二進制數(shù)轉(zhuǎn)換成八進制數(shù)時,只要從小數(shù)點位置開始,向左或向右每三位二進制劃分為一組(不足三位時可補0),然后寫出每一組二進制數(shù)所對應的八進制數(shù)碼即可。例:將二進制數(shù)(10110001.111)轉(zhuǎn)換成八進制數(shù):二進制數(shù)(10110001.111)2轉(zhuǎn)換成八進制數(shù)是(261.7)8。反過來,將每位八進制數(shù)分別用三位二進制數(shù)表示,就可完成八進制數(shù)和二進制數(shù)的轉(zhuǎn)換。二進制數(shù)和十六進制數(shù)互換:二進制數(shù)轉(zhuǎn)換成十六進制數(shù)時,只要從小數(shù)點位置開始,向左或向右每四位二進制劃分為一組(不足四位時可補0),然后寫出每一組二進制數(shù)所對應的十六進制數(shù)碼即可。例:將二進制數(shù)(11011100110.1101)轉(zhuǎn)換成十六進制數(shù):二進制數(shù)(11011100110.1101)2轉(zhuǎn)換成十六進制數(shù)是(6E6.D)16。反過來,將每位十六進制數(shù)分別用三位二進制數(shù)表示,就可完成十六進制數(shù)和二進制數(shù)的轉(zhuǎn)換。八進制數(shù)、十六進制數(shù)和十進制數(shù)的轉(zhuǎn)換:這三者轉(zhuǎn)換時,可把二進制數(shù)作為媒介,先把代轉(zhuǎn)換的數(shù)轉(zhuǎn)換成二進制數(shù),然后將二進制數(shù)轉(zhuǎn)換成要求轉(zhuǎn)換的數(shù)制形式。BCD碼和ASCII碼2.21、BCD碼(BinaryCodedDecimal)計算機內(nèi)部以二進制的表示為基礎,但在日常生活和工作中,我們習慣的卻是十進制。怎樣來解決這一矛盾呢?有兩種方法可供選擇。一種方法是采用“十轉(zhuǎn)二”和“二轉(zhuǎn)十”的程序。輸入十進制后用“十轉(zhuǎn)二”把其轉(zhuǎn)換為二進制,在計算機內(nèi)運算,輸出時用“二轉(zhuǎn)十”的程序把二進制轉(zhuǎn)換為十進制,以方便人們的使用。另一種方法是直接采用“二一十”進制,BCD碼就是“二一十”進制,即用二進制代碼表示的十進制數(shù)。顧名思義,它既是逢十進一,又是一組二進制代碼。用4位二進制代碼表示十進制的一位數(shù),一個字節(jié)可以表示兩個十進制數(shù),稱為壓縮的BCD碼,如10000111表示87;也可以用一個字節(jié)表示一位十進制的數(shù),這種BCD稱為非壓縮的BCD碼,如00000111表示十進制的7。多進制與BCD碼的對應關系見表1-1。2、ASCII碼(AmericanStandardCodeforInformationInterchange)由于計算機中使用的是二進制數(shù),所以計算機中使用的字母、字符也要用特定的二進制表示。目前普遍采用的是ASCII碼。它采用7位二進制編碼表示128個字符,其中包括數(shù)碼0~9以及英文字母等可打印的字符,見表1-2??梢?,在計算機中一個字節(jié)可以表示一個英文字母。由于單個的漢字太多,所以要用兩個字節(jié)才能表示一個漢字,目前也有國標的漢字計算機編碼表——漢碼表。從表中可以查到“6”的ASCII碼為“36H”,“R”的ASCII碼為“52H”。電平2.3常用電平簡介常用的邏輯電平有TTL、CMOS、LVTTL、ECL、PECL、GTL;RS232、RS422、LVDS等。其中TTL和CMOS的邏輯電平按典型電壓可分為四類:5V系列(5VTTL和5VCMOS)、3.3V系列,2.5V系列和1.8V系列。5VTTL(Transister-Transister-Logic,晶體管一晶體管邏輯)和5VCMOS(ComplementaryMetalOxideSemiconductor,互補金屬氧化物半導體邏輯電平)是通用的邏輯電平。3.3V及以下的邏輯電平被稱為低電壓邏輯電平,常用的為LVTTL電平。TTL電平與CMOS電平的區(qū)別TTL電平是5V,CMOS電平一般是12V。5V的電平不能觸發(fā)CMOS電路,12V的電平會損壞TTL電路,因此兩者不能互相兼容匹配。TTL電平:輸出L:<0.4v,>2.4V。輸入L:<0.8v,>2.0VTTL。即:器件輸出低電平要小于0.4V,高電平要大于2.4V。輸入,低于0.8V就認為是0,高于2.0就認為是1。CMOS電平:輸出L:<0.1,Vcc>0.9Vcc。輸入L:<0.3Vcc,>0.7Vcc。即:器件輸出低電平要小于0.1Vcc,高電平要高于0.9Vcc。輸入:低于0.3Vcc就認為是0,高于0.7Vcc就認為是1。TTL和CMOS轉(zhuǎn)換常用的方法有晶體管或OC/OD器件結合上拉電阻進行電平轉(zhuǎn)換,將一個雙極型三極管(MOSFET)或OC/OD器件,C/D極接一個上拉電阻到正電源,輸入電平很靈活,輸出電平大致就是正電源電平。74xHCT系列芯片升壓(3.3V→5V)凡是輸入與5VTTL電平兼容的5VCMOS器件都可以用作3.3V→5V電平轉(zhuǎn)換。這是由于3.3VCMOS的電平剛好和5VTTL電平兼容(巧合),而CMOS的輸出電平總是接近電源電平的。超限輸入降壓法(5V→3.3V,3.3V→1.8V,...),凡是允許輸入電平超過電源的邏輯器件,都可以用作降低電平。這里的“超限”是指超過電源,許多較古老的器件都不允許輸入電壓超過電源,但越來越多的新器件取消了這個限制(改變了輸入級保護電路)。例如,74AHC/VHC系列芯片,其datasheets明確注明“輸入電壓范圍為0~5.5V”,如果采用3.3V供電,就可以實現(xiàn)5V→3.3V電平轉(zhuǎn)換。如何學習單片機03單片機是一門實用技術,學習它的目的是增強能力,根據(jù)教學團隊近二十年教學經(jīng)驗,總結了單片機的學習方法是:一個目標,四個過程。學習單片機的目標就是:通過單片機實驗實訓鍛煉,增強自身實力,獲尋就業(yè)方向。學習單片機的四個過程是:鸚鵡學舌、照葫蘆畫瓢、借力打力和理實結合。第一步:鸚鵡學舌。大家剛開始接觸單片機的時候,屬于單片機行業(yè)的新生兒。單片機的樣子,單片機外圍的各種器件,單片機內(nèi)部的各種結構,單片機使用C語言的編程方法,初學者可能都沒有見過,腦子里全無概念。沒關系,有些概念和方法你不理解也沒有關系,甚至不需要你去理解,你只需要跟著我去鸚鵡學舌式的學習,第一遍學習某一節(jié)課的內(nèi)容時,對于程序,大家就可以完全跟著抄下來,甚至抄兩三遍,過一段你會發(fā)現(xiàn),好多東西你也認識了,好多概念你也慢慢的理解清楚了,你也能大概看懂別人的小程序了,切忌覺得自己看會了,而簡單復制粘貼。第二步:照葫蘆畫瓢。很多同學學習的時候喜歡看,看網(wǎng)絡流傳的視頻,看網(wǎng)絡貼吧的程序,甚至看別人的程序,都能看懂,覺得自己就會了,等到自己寫程序的時候,感覺就是老鼠啃天,不知道從哪里下手了,這是初學者很容易犯的“眼高手低”的毛病,所以第二步的內(nèi)容就非常重要了。課程團隊的要求是,每一位同學,在學完了當前課的內(nèi)容,把第一步順利完成以后,然后關掉視頻教程,關掉源代碼,自己通過看電路圖和查找非源代碼的其他任何資料,把當節(jié)課課程團隊寫的程序代碼重新默寫出來,邊寫邊多少理解那么一點點,不是純粹的背誦,應該說是背誦加理解的結合體。甚至學過幾節(jié)課以后,可以回頭把前邊曾經(jīng)這樣實現(xiàn)過的課程,再按照這種方法做一遍。千萬不要認為這一步?jīng)]必要,這一步是你能否真正學會單片機的一個關鍵,在學完本教程之前,每一課內(nèi)容都要這樣做,如果每一個程序你都能夠完美的完成,那么可以說,當節(jié)課的內(nèi)容,百分之七八十你已經(jīng)掌握了。第三步:借力打力。單片機技術的最大特點就是可以通過修改程序來實現(xiàn)不同的功能,因此舉一反三的能力就必不可少了。每一節(jié)課的例程后邊,課程團隊一般都會布置幾個作業(yè),大家盡量去獨立完成這個作業(yè)。在完成這個作業(yè)的過程中,都可以參考課程團隊的程序思路,在這個基礎上通過動腦思考去構建你自己的程序框架,最終將程序完成。在工程師實際產(chǎn)品研發(fā)的時候,很多種情況下也是如此。比如一個產(chǎn)品,我們?nèi)绻麖牧闫鸩降脑挘赡軙吆芏鄰澛?,遭遇很多前人已曾遭遇過的挫折,所以我們通常的做法是尋找購買幾款同類產(chǎn)品,然后先研究他們的各自優(yōu)缺點,學習他們的長處,然后在同類產(chǎn)品基礎上再來設計我們自己的產(chǎn)品,這就是“他山之石,可以攻玉”。初學者在學習的時候,往往遇到的問題很多,你應該想到,你遇到的問題,可能前輩們早就遇到過了,所以遇到問題后,不要慌張,首先利用谷歌或者百度這些搜索引擎在網(wǎng)上搜一下,要做什么新東西,先去網(wǎng)上找相關資料了解一下,不管是編程還是硬件設計,多多參考別人的東西,只要把別人的東西分析明白了,自己用起來了,也就成為自己的知識了。第四步:理實結合。當大家把所有的課程都按照前邊三步完成后,這個時候不妨再把書打開,再看看書,經(jīng)過了自己的實戰(zhàn)經(jīng)歷,再看書的時候,對很多知識點會有一種恍然大悟的感覺。甚至視頻教程、書籍都可以反復看幾遍,可能有的知識點當時學習的時候不明白,過了一段時間,回過頭來再學習的時候,一下就明白了。單片機學習的準備工作04第一:足夠的信心、恒心和耐心。首先,心態(tài)上藐視它。通過教學和實訓工作,很多同學做出來小車,超聲波測距,甚至做出來機器人。單片機在邏輯上的關系,只有小學的水平,不復雜。只要認真踏實堅持學下去,肯定能學好這么技術。其次,過程上重視它。很多網(wǎng)絡教程吹噓十天八天就學會了,這是不現(xiàn)實的,更是不可能的,如果一個技術很簡單就被學會,那么很多人都會這個技術,肯定也沒什么前途和錢途。那究竟多久能學會呢?如果每天2個小時左右的學習時間,大概1~3個月可以入門。入門的概念是給你一個單片機開發(fā)任務,你起碼知道要努力的方向和解決問題的大概方法了。第二:實用的教材和視頻教程。要學習單片機這門技術,良好的教材和教程必不可少。單片機方面,除了本教材而外,推薦學習《新概念51單片機C語言教程入門、提高、開發(fā)、拓展全攻略(第2版))》教材和相關視頻教程,如果C語言基礎不好,最好能再有一本純C語言的教材,推薦學習《學習零基礎學C語言》。第三:電腦一臺、單片機開發(fā)板一塊。電腦,是學習單片機必不可少的工具,因為編寫程序,查閱資料都得用到。開發(fā)板,這也必須。學校實驗室有開發(fā)板,可以借一個,也可以自行購置,開發(fā)板需要和教材或者教程相適應,本教材提倡的是使用仿真軟件Proteus對單片機及周邊硬件進行模擬仿真,對開發(fā)板使用率不高。這也是本次編寫本教材的特點之一。但是并不代表不動手就能學好單片機,拿起烙鐵焊電路,動手寫程序,才是單片機學習的終極目標。1、什么是單片機?它與一般的計算機有何區(qū)別?2、簡述單片機的發(fā)展歷史,目前單片機主要朝哪幾個方面發(fā)展?3、單片機的主要應用是哪幾個方面?請舉一些你知道的例子?4、單片機內(nèi)部采用什么數(shù)制?為什么在計算機硬件編程中常用十六進制?5、什么是ASCII碼?寫出0-9,a-z和A-Z的ASCII碼。6、什么是電平?7、你應該如何學習單片機?習題05單原及接片理口技術機42第二章

單片機學習和開發(fā)必要工具01硬件方面必要開發(fā)工具02單片機開發(fā)軟件方面必要工具03習題PrincipleandinterfacetechnologyofMicrocomputer萬用表工具簡介萬用表(也稱作多用表、復用表等)是單片機開發(fā)最基本也最不可或缺的測量工具。它的基本功能包括:測量交直流電壓、交直流電流、電阻阻值,檢測二極管極性,測試電路通斷等。有些高檔一點的還會包含電容容值測量、三極管測試、脈沖頻率測量等。萬用表大體可分為兩類:指針萬用表和數(shù)字萬用表,目前,指針萬用表基本上已經(jīng)被淘汰了,數(shù)字萬用表是當今的絕對主流。圖2-1是為兩種數(shù)字萬用表,功能完全一致,推薦使用右圖所示萬用表。1.1萬用表工具使用下面就以圖2-1所示數(shù)字萬用表為例,來講解萬用表的使用方法。萬用表配有兩支表筆,表筆通常都是一只黑色、一只紅色,黑色表筆要插到標有“COM”的黑色插孔里,而紅色表筆根據(jù)測量項目的不同,插到不同的插孔:測量小電流(≤200mA)信號時插到“mA”插孔,測量大電流(大于200mA)信號時插到“20A”插孔,其余測量項目均插到標有“VΩ”的插孔。1.2示波器工具簡介示波器就是顯示波形的機器,它還被譽為“電子工程師的眼睛”。它的核心功能就是為了把被測信號的實際波形顯示在屏幕上,它的發(fā)展同樣經(jīng)歷了模擬和數(shù)字兩個時代,目前,數(shù)字示波器應用場景大于模擬示波器,如圖2-2所示為數(shù)字示波器。1.3示波器工具使用1.4要使用示波器,首先也得把它和被測系統(tǒng)相連,用的是示波器探頭,如右圖所示。示波器一般都會有2個或4個通道(通常都會標有1~4的數(shù)字,而多余的那個探頭插座是外部觸發(fā),一般用不到它),它們的低位是等同的,可以隨便選擇,把探頭插到其中一個通道上,探頭另一頭的小夾子連接被測系統(tǒng)的參考地(這里一定要注意一個問題:示波器探頭上的夾子是與大地即三插插頭上的地線直接連通的,所以如果被測系統(tǒng)的參考地與大地之間存在電壓差的話,將會導致示波器或被測系統(tǒng)的損壞),探針接觸被測點,這樣示波器就可以采集到該點的電壓波形了(普通的探頭不能用來測量電流,要測電流得選擇專門的電流探頭)。單片機開發(fā)軟件方面必要工具02KeiluVision4簡介2.1KeiluVision4是一個優(yōu)秀的軟件集成開發(fā)環(huán)境,它支持眾多不一樣公司的MCS-51架核的芯片。uVision4IDE基于Windows的開發(fā)平臺,包含一個高效的編輯器、一個項目管理器和一個MAKE工具。利用本工具可以用來編譯C源代碼,匯編源程序,連接和重定位目標文件和庫文件,創(chuàng)建HEX文件調(diào)試目標程序。KeiluVision4使用方法2.2雙擊桌面上的KeiluVision4快捷圖標,或者單擊屏幕左下方的“開始”→“程序”→“KeiluVision4”,進入KeiluVision4集成環(huán)境,KeiluVision4啟動界面示意圖如圖2-6所示。1、啟動KeiluVision4KeiluVision4界面提供一個菜單和一個工具條(可以快速選擇命令按鈕)以及源代碼的顯示窗口、對話框和信息顯示。KeiluVision4的工作界面如圖2-7所示。2、建立項目單擊“Project”菜單,在彈出的下拉式菜單中選擇“NewuVisionProject”,如圖2-6所示。接著彈出一個標準Windows文件對話窗口,選擇自定義工程路徑,如圖2-9所示,在“文件名”中輸入您的第一個程序項目名稱,這里我們用“Pr_LED”,路徑和文件名可以根據(jù)自己想法自定義,只要符合Windows文件規(guī)則的文件名都行?!氨4妗焙蟮奈募U展名為uv4,這是KeiluVision4項目文件擴展名,以后可以直接單擊此文件打開先前所做的項目。點擊“OK”→選擇“是”完成上面步驟后,項目文件就建立成功了,界面如圖2-11所示。下面我們就可以開始創(chuàng)建程序文件了。選擇所要的單片機,這里我們選擇常用的Atmel公司的AT89S51,界面如圖2-10所示。3、創(chuàng)建或修改程序接下來我們要在項目中創(chuàng)建新的程序文件或加入一個已存在的程序文件;創(chuàng)建新的程序文件具體操作:單擊“File”→“New”命令,或者單擊工具欄的新建文件圖標。加入一個已存在的程序文件具體操作:單擊“File”→“Open”命令,打開一個舊文件或按快捷鍵<Crl>+<0>或工具欄中的工具按鈕,就會打開一個已存在的程序文件文字編輯窗口等待我們編輯程序。上述兩種情況都能得到如圖2-11所示界面,到此就可以開始編寫對應的程序文件了。4、保存程序當程序編寫完成,選擇“File”→“Save”命令,或按快捷鍵<Ctrl>+<S>或保存圖標進行保存。若是新文件,一般在編寫程序之前保存一次并對程序進行命名,用C語言編寫后綴應為.c,將文件保存在項目所在的目錄中,這時編寫程序單詞才會有不同的顏色,說明Keil的語法檢查生效了,此時屏幕如圖2-12所示。完成上面步驟后,即可進行程序文件的加載了。5、加載程序如圖2-13,在屏幕左邊的SourceGroup1文件夾圖標上右擊鼠標,彈出快捷菜單,選擇其中某一命令,可執(zhí)行相關操作,選中“AddexistingFilestoGroup‘SourceGroup1’”,選擇剛剛保存的文件,按“Add”按鈕,關閉對話框,程序文件已加到項目中了。工程建立好以后,還要對工程進行進一步的設置,以滿足要求。首先單擊左邊Project窗口的Target1,然后執(zhí)行菜單命令“Project”→“OptionforTarget“Targetl”或快捷操作同時按下“Alt”+“F7”,即出現(xiàn)對工程設置的對話框如圖2-14所示。仿真軟件Proteus簡介和特點2.3Proteus具有和其他EDA工具一樣的原理圖編輯、印刷電路板(PCB)設計及電路仿真功能,最大的特色是其電路仿真的交互化和可視化,如圖2-1所示。通過Proteus軟件的VSM(虛擬仿真模式),用戶可以對模擬電路、數(shù)字電路、模數(shù)混合電路、單片機及外圍元器件等電子線路進行系統(tǒng)仿真,Proteus軟件由ISIS和ARES兩部分構成,其中ISIS是一款便捷的電子系統(tǒng)原理設計和仿真平臺軟件,ARES是一款高級的PCB布線編輯軟件。 Proteus軟件的性能特點:1、智能原理圖設計;2、豐富的器件庫:超過8000種元器件,可方便地創(chuàng)建新元件;3、智能的器件搜索:通過模糊搜索可以快速定位所需要的器件;4、智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間;5、支持總線結構:使用總線器件和總線布線使電路設計簡明清晰;6、可輸出高質(zhì)量圖紙:通過個性化設置,可以生成印刷質(zhì)量的BMP圖紙,可以方便地供Word、PowerPoint等多種文檔使用。 完善的仿真功能:1、混合仿真:基于工業(yè)標準SPICE3F5,實現(xiàn)數(shù)字/模擬電路的混合仿真。2、超過6000個仿真器件:可以通過內(nèi)部原型或使用廠家的SPICE文件自行設計仿真器件,也在不斷地發(fā)布新的仿真器件,還可導人第三方發(fā)布的仿真器件。3、豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖形發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、IIC調(diào)試器等。4、生動的仿真顯示:用色點顯示引腳的數(shù)字電平,導線以不同顏色表示其對地電壓大小,結合動態(tài)器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動。?高級圖形仿真功能:基于圖標的分析可以精確分析電路的多項指標,包括工作點、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等,還可以進行一致性分析。5、獨特的單片機協(xié)同仿真功能:支持主流的CPU類型,如ARM7、8051/51、AVR、PIC10/12、PIC16/18、HC11、BasicStamp等,CPU類型隨著版本升級還在繼續(xù)增加。 6、支持通用外設模型,如字符LCD模塊、圖形LCD模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS232虛擬終端、電子溫度計等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機串口和外部電路實現(xiàn)雙向異步串行通信。7、實時仿真支持UART/USART/EUSART仿真、中斷仿真、SPIVI2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。 8、實用的PCB設計平臺仿真軟件ProteusISIS的使用方法2.4ProteusISIS設計界面介紹三大窗口:編輯窗口、器件工具窗口和瀏覽窗口兩大菜單:主菜單和輔助工具菜單主菜單:文件菜單、編輯菜單、瀏覽菜單、工具菜單、設計菜單、圖表分析菜單、調(diào)試菜單、庫操作菜單、模板菜單、系統(tǒng)菜單和幫助菜單,ProteusISIS設計界面示意圖如圖2-20所示。1、簡述示波器的使用方法和步驟?2、簡述萬用表的使用方法和步驟?3、單片機最小系統(tǒng)包含哪些組成部分?4、試著講述如何使用KEIL軟件建立一個項目且編寫和運行程序。5、試著講述如何使用Proteus軟件建立一個項目且與KEILC結合運行程序。習題03單原及接片理口技術機64第三章

51單片機C語言基礎知識01C語言變量與常量02定時器/計數(shù)器03中斷、定時器/計數(shù)器應用編程04習題PrincipleandinterfacetechnologyofMicrocomputer常量常量是指固定值,其數(shù)值在程序運行過程中不改變,分為數(shù)值型常量(包括整型常量和實型常量)、字符型常量、符號常量三類。1、整型常量整型常量是指直接使用的整型常數(shù),如0、128、-128等,有十進制、八進制、十六進制三種類型的整數(shù)。2、實型常量實型常量是浮點型的常量,由整數(shù)和小數(shù)部分構成,有兩種表示方式。3、字符型常量字符型常量有兩種,一種是字符常量,一種是字符串常量。1.1變量變量是在程序運行過程中其值可以變化的量,可以存儲任意數(shù)據(jù)類型的值。在程序中一般用含有一定意義的方式來表示變量名。變量名是由字母開始的字母、數(shù)字、下劃線組成,且區(qū)分大小寫。C語言中的變量類型有整型變量、實型變量和字符型變量。1、整型變量整型變量是存儲整型數(shù)值的變量,分為基本整型(int),占4個字節(jié);短整型(shortint),占2個字節(jié);長整型(longint),占4個字節(jié)。2、實型變量實型變量是存儲實型數(shù)值的變量,實型數(shù)值由整數(shù)和小數(shù)兩部分組成。在C語言中又可分為單精度和雙精度兩種類型。3、字符型變量字符型變量是用來存儲字符常量的變量。將一個字符常量存儲到一個字符變量中,實際上是將該字符的ASCII碼值存儲到內(nèi)存單元中。字符型常量的關鍵字是char,占1個字節(jié)。1.2運算符與表達式02運算符2.1運算符用于數(shù)據(jù)和變量的操作,包括算術運算符、關系運算符、邏輯運算符、賦值運算符、遞增遞減運算符、條件運算符、位運算符以及特殊運算符。表達式2.2C語言的表達式由操作符和操作數(shù)組成,通過運算返回結果值。運算順序是根據(jù)運算符的優(yōu)先級別,較高優(yōu)先級的運算符先計算,相同優(yōu)先級的運算符根據(jù)級別按“從左到右”或“從右到左”的順序計算。C語言中運算符的優(yōu)先級別從高到低排列情況如下:括號()、數(shù)組元素引用[]、成員運算符->;一元加+、一元減-、遞增++、遞減--、邏輯非!、指針引用*、地址符&、長度運算符sizeof、類型轉(zhuǎn)換(type);乘法×、除法/、取模%;加法+、減法-;小于<、小于等于<=、大于>、大于等于>=;等于==、不等于!=;邏輯與&&、邏輯或||;條件運算符?:;賦值運算符=;逗號運算符,等。程序結構03順序結構3.1順序結構是指程序中的語句是按照從上到下的順序逐行排列,程序的執(zhí)行是按語句的排列順序進行,是最簡單的程序設計。完成順序結構程序設計的語句包括:賦值語句、復合語句、函數(shù)調(diào)用語句等。選擇結構3.2選擇結構的程序設計中使用了用于條件判斷的語句,增加程序功能,增強了程序的邏輯性和靈活性。實現(xiàn)選擇結構的有if語句、if…else語句、switch語句、條件運算符語句和goto語句等。switch語句3.3若選項很多的情況,多次嵌套使用if…else語句的層數(shù)就很多,程序比較冗余,代碼可讀性不好,此類情況可采用switch多路判斷語句輕松實現(xiàn)。循環(huán)結構3.4程序除了在運行時根據(jù)判斷、檢驗條件做出相應的選擇,還可以反復執(zhí)行某一段指令代碼,直到滿足某個條件為止。這種重復的執(zhí)行過程即成為循環(huán)。C語言的循環(huán)語句有while語句、do…while語句、for語句三種。一個完整的循環(huán)過程包括這樣幾個部分,一是需要設置并初始化條件變量,二是具體運行的循環(huán)體中語句塊,三是用指定的值測試條件變量,以判斷是否再次運行循環(huán)體,四是設置變量的改變值。數(shù)組04數(shù)組是C語言的一種常用構造類數(shù)據(jù)類型,是指具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合,數(shù)組中的一個數(shù)據(jù)項稱為一個數(shù)組元素,每一個數(shù)組元素由數(shù)組名及下標唯一表示,這是描述數(shù)組的基本要素。一維數(shù)組4.11、一維數(shù)組的定義:定義一維數(shù)組的一般形式為:類型名數(shù)組名[常量表達式];其中,類型名指定了數(shù)組中每一個元素的類型,可以是int、char、float、double等基本數(shù)據(jù)類型,也可以是C語言中的構造類型,比如結構體類型、枚舉類型等,還可以是通過typedef定義的數(shù)據(jù)類型。2、一維數(shù)組的引用數(shù)組遵循先定義后引用的原則,C語言中只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。引用數(shù)組元素時要指明數(shù)組名和數(shù)組下標,引用形式為:數(shù)組名[下標]3、一維數(shù)組的初始化定義數(shù)組時給數(shù)組元素賦值,即為數(shù)組的初始化。其一般形式為:類型說明符數(shù)組名[整型常量或常量表達式]={初始化列表}二維數(shù)組4.2二維數(shù)組的定義二維數(shù)組定義的一般形式為:類型名數(shù)組名[常量或常量表達式1][常量或常量表達式2];類型說明符、數(shù)組名和常量表達式的意義與一維數(shù)組相同;常量或常量表達式1稱為行下標,常量或常量表達式2稱為列下標。二維數(shù)組的引用二維數(shù)組也只能逐個引用元素,不能引用整個數(shù)組,其引用一般形式為:數(shù)組名[行下標][列下標]注意引用時行下表和列下標的范圍,不能越界引用。二維數(shù)組的初始化(1)分行初始化初始化的一般形式為:類型名數(shù)組名[常量表達式1][常量表達式2]={{第0行元素初值表},{第1行元素初值表}…};其中每一對花括號內(nèi)的值賦給一行元素,并且數(shù)據(jù)與數(shù)據(jù)之間用逗號分隔。(2)按排列順序給各數(shù)組元素初始化初始化的一般形式為:類型名數(shù)組名[常量表達式1][常量表達式2]={初值表};初值表中的數(shù)值按照二維數(shù)組中元素的排列順序直接給出,數(shù)據(jù)之間仍然用逗號分隔。(3)對部分元素初始化分行初始化和按排列順序初始化都可以實現(xiàn)對二維數(shù)組的部分元素進行初始化。系統(tǒng)默認將未被賦值的數(shù)組元素值置為0。多維數(shù)組4.3C語言支持多維數(shù)組,多維數(shù)組的定義與二維數(shù)組相同,只是下標更多,n維數(shù)組定義的一般形式為:數(shù)據(jù)類型數(shù)組名[常量表達式1][常量表達式2]…[常量表達式n];例如,inta1[3][4][10];floata1[3][6][4][5];其中a1是一個三維數(shù)組,共有120個整型數(shù)組元素;a2是一個四位數(shù)組,共含有360個浮點型數(shù)組元素。字符數(shù)組4.4字符數(shù)組的定義一般形式為:char數(shù)組名[常量表達式];例如,charcArray[5];定義了一個字符數(shù)組cArray,包含5個字符型的元素,cArray[0]~cArray[4]。字符數(shù)組的引用字符數(shù)組的引用與其他類型數(shù)據(jù)的引用一樣,也是通過數(shù)組名加下標的形式實現(xiàn)。例如,引用上面定義的數(shù)組cArray,cArray[0]、cArray[1]、cArray[2]、cArray[3]、cArray[4]。字符數(shù)組的初始化對字符數(shù)組的初始化操作有以下兩種方式。(1)逐個字符初始化一般形式為:char數(shù)組名[數(shù)組長度]={字符初值表};(2)利用字符串給字符數(shù)組初始化字符串是用雙引號括起來的一串字符,C語言中的字符串是看作字符數(shù)組來處理的,因此可以用字符串來給定義的字符數(shù)組初始化。其一般形式為:char數(shù)組名[數(shù)組長度]={字符串常量};或為:char數(shù)組名[數(shù)組長度]=字符串常量;函數(shù)05函數(shù)是C語言程序中的基本單元,是執(zhí)行某特定任務的代碼塊。函數(shù)的定義5.1函數(shù)要在定義中完成其特定的功能,才能被其他函數(shù)進行調(diào)用。函數(shù)定義的基本形式如下:返回值類型函數(shù)名(參數(shù)列表){函數(shù)體;}其中第一行為函數(shù)頭,是函數(shù)的人口;返回值類型為函數(shù)最后返回的值的所屬類型,若函數(shù)沒有返回值可省略返回值類型或者用void表示;函數(shù)名為標識符,用于表示該函數(shù);函數(shù)名后面一對括號中的參數(shù)列表是這個函數(shù)的形式參數(shù),可以是一個或多個參數(shù)構成,多個形參之間用逗號分隔,也可以為空(括號不能省略)。函數(shù)的調(diào)用5.2對定義好的函數(shù)進行使用的過程即為函數(shù)的調(diào)用。函數(shù)調(diào)用的基本形式為:函數(shù)名(實參列表);實參列表中的參數(shù)個數(shù)、數(shù)據(jù)類型必須與函數(shù)對應的形參一致,強制類型轉(zhuǎn)換除外。調(diào)用函數(shù)通過實參,實現(xiàn)與被調(diào)用函數(shù)之間的參數(shù)傳遞。函數(shù)的調(diào)用可以是函數(shù)語句調(diào)用,可以是在表達式中調(diào)用、也可以是函數(shù)參數(shù)的調(diào)用。函數(shù)的參數(shù)5.3函數(shù)的參數(shù)有形式參數(shù)和實際參數(shù)之分。在定義函數(shù)時,函數(shù)名后面括號中的變量名稱為形式參數(shù);在調(diào)用函數(shù)時,函數(shù)名后面括號中的變量名為實際參數(shù)。函數(shù)的調(diào)用即為主調(diào)函數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù),并實現(xiàn)被調(diào)用函數(shù)的函數(shù)體功能。調(diào)用函數(shù)間參數(shù)的傳遞有兩種不同方式,一是值傳遞,一是地址傳遞。值傳遞是單向傳遞,當函數(shù)形參的數(shù)據(jù)類型為基本數(shù)據(jù)類型,主調(diào)函數(shù)在調(diào)用時給形參分配存儲單元,把實參具體的值傳遞給形參,在調(diào)用結束后,形參的存儲單元被釋放,而形參值的任何變化都不會影響到實參的值,實參的存儲單元仍保留并維持數(shù)值不變;當函數(shù)形參的數(shù)據(jù)類型為地址類型時,如數(shù)組、指針等,函數(shù)參數(shù)傳遞為地址傳遞方式;此時,形參接收到的是實參變量的地址,即指向?qū)崊⒌拇鎯卧?;形參在取得該首地址之后,與實參共同擁有一段內(nèi)存空間,形參的變化也就是實參的變化。函數(shù)的嵌套調(diào)用5.4函數(shù)的定義是互相獨立的,一個函數(shù)體內(nèi)不能包含另一個函數(shù)的定義,但是在一個函數(shù)體中允許調(diào)用另一個函數(shù),即函數(shù)的嵌套調(diào)用。函數(shù)的遞歸調(diào)用5.5在函數(shù)內(nèi)直接或間接調(diào)用該函數(shù)本身稱為函數(shù)的遞歸調(diào)用。遞歸調(diào)用程序?qū)嶋H上是一種“大事化小,小事化了”的設計方法,是程序設計中的一種基本技術。將復雜問題一步步化簡為能夠?qū)崿F(xiàn)的小問題,小問題與復雜問題有共同的特征或性質(zhì),只是規(guī)模大大縮小了,這樣的問題都可以通過函數(shù)的遞歸調(diào)用來實現(xiàn)。局部變量與全局變量5.6前一節(jié)函數(shù)的遞歸調(diào)用之所以能夠?qū)崿F(xiàn),是因為函數(shù)在其每個執(zhí)行過程內(nèi)都有自己的形式參數(shù)和局部變量數(shù)據(jù)的副本,這些數(shù)據(jù)副本和函數(shù)的其他執(zhí)行過程不產(chǎn)生任何關系。那什么稱之為局部變量?局部變量和全局變量是根據(jù)代碼的作用域來區(qū)分的。作用域是在程序中可見性的范圍,包括局部作用域和全局作用域。局部變量具有局部作用域,全局變量具有全局作用域。結構體06在解決具體問題時,經(jīng)常需要用一組關系密切但是類型不相同的數(shù)據(jù)來描述一個實體。比如要管理班級學生的成績,學生的信息數(shù)據(jù)包括學號、姓名、性別、成績等,這些信息的數(shù)據(jù)類型不完全相同,但是都屬于同一個學生的數(shù)據(jù)信息,是一個整體。C語言中構造了一種結構體類型,用來表示集不同數(shù)據(jù)類型于一體的一種數(shù)據(jù)類型。結構體的聲明6.1結構體類型聲明一般形式為:struct結構體名{成員列表};其中,struct是結構體類型的關鍵字;結構體名必須符合標識符的命名規(guī)則;大括號內(nèi)的成員列表由多個成員的定義組成;大括號后以分號結束該結構體類型的聲明。結構體變量的定義6.2由于結構體是根據(jù)具體問題自行定義的類型,因此結構體類型變量的定義相比其他基本數(shù)據(jù)類型變量的定義,形式更加靈活,一般有以下三種定義方式。先聲明結構體類型,再定義變量定義的形式如下:struct結構體名變量名表;聲明結構體類型的同時定義變量將結構體類型的聲明和變量定義代碼結合在一起,一般形式如下:struct結構體名{成員列表}變量名表;直接定義結構體類型變量一般形式如下:struct{成員列表}變量名表;這是一種無名的結構體類型變量定義方式,在結構體聲明中不給出結構體名,而是直接定義結構體的變量。這種方式中沒有顯示給出結構體名,所以除了形式中的變量名表外,不能再定義其他結構體變量。結構體變量的引用6.3結構體變量在定義后可以直接引用,在引用時要注意以下幾點。 引用的是結構體變量成員結構體中各個成員的數(shù)據(jù)類型不一定相同,因此不能直接整體引用結構體變量,一般是引用結構體變量的成員。在沒有結構體嵌套定義情況下,引用結構體變量成員的一般形式為:結構體變量名.成員名其中“.”為結構體成員運算符,它的優(yōu)先級別在所有運算符中為最高。這樣引用的結構體成員相當于成員對應數(shù)據(jù)類型的一個普通變量。結構體嵌套定義的引用當有結構體嵌套定義,通過變量引用結構體變量成員時要連用多個成員運算符訪問到最底層成員(又叫基本成員),只有基本成員才能直接存放數(shù)據(jù),其一般形式為:結構體變量名.結構體成員名.….結構體成員名.基本成員名結構體變量的運算對結構體變量的賦值只能對其成員進行賦值,例外的是當兩個結構體變量所有成員的類型都完全一致時,也可以兩個結構體變量之間整體賦值;結構體變量的成員可以像普通變量一樣參與各種運算。結構體變量的初始化6.4結構體類型和其他基本數(shù)據(jù)類型一樣,可以在定義結構體變量時直接指定初始值,進行初始化操作。例如:structstudentstu1={110036,”LiHua”,’F’,89.6};上面語句定義了結構體student的變量stu1,同時直接在變量后使用等號,再將其成員對應的值放在一對大括號里進行初始化。需要注意的是初始化數(shù)據(jù)必須與結構體變量的各成員順序一一對應。若是嵌套的結構體變量,初始化仍然是對變量的各個基本成員賦初值。1、什么是C語言?C語言的特點是什么?2、為什么在單片機編程中藥使用C語言?3、C語言的變量有哪些,在單片機中常用的變量是哪些?4、C語言程序的結構有哪些,請寫程序代碼一一舉例說明?5、什么是數(shù)組,數(shù)組在單片機編程中如何使用?6、什么是結構體,結構體在單片機編程中如何使用?習題07單原及接片理口技術機101第四章

顯示器件原理及應用實現(xiàn)01LED數(shù)碼管的顯示原理及應用028×8點陣顯示及應用03LCD1602顯示原理及應用04習題PrincipleandinterfacetechnologyofMicrocomputer顯示器件原理及應用實現(xiàn)顯示器件屬于計算機的輸出設備,也是人機交互的重要組件,可以通過顯示相關信息來說明單片機系統(tǒng)的狀態(tài)。單片機系統(tǒng)的顯示器件通常有LED數(shù)碼管、8×8的點陣、字符點陣液晶1602等。01LED數(shù)碼管的顯示原理及應用LED數(shù)碼管的結構及編碼LED數(shù)碼管的結構LED數(shù)碼管(LEDSegmentDisplays)由多個發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個筆劃,公共電極。數(shù)碼管實際上是由七個發(fā)光管組成8字形構成的,加上小數(shù)點就是8個,這些段分別由字母a、b、c、d、e、f、g、Dp來表示。也稱為8段數(shù)碼管。LED數(shù)碼管外形及引腳分布如圖4-1。1.1根據(jù)8段數(shù)碼管的公共端連接的是高電平還是低電平將LED數(shù)碼管分為兩大類,一類是共陰極接法,另一類是共陽極接法。共陰極就是8段的顯示字碼共用一個電源的負極,可以用高電平點亮對應的段;共陽極就是8段的顯示字碼共用一個電源的正極,可以用低電平點亮對應的段??梢酝ㄟ^控制其中各段LED的亮滅來顯示相應的數(shù)字、字母或符號。共陰極與共陽極數(shù)碼管的內(nèi)部結構如圖4-2。單片機系統(tǒng)中還常使用7段數(shù)碼管,它與8段數(shù)碼管唯一不同的是沒有小數(shù)點這一段,也就是沒有8段數(shù)碼管的Dp部分。數(shù)碼管的編碼要使數(shù)碼管顯示出相應的數(shù)字或字符,必須使數(shù)碼管的各段輸入與數(shù)字或字符對應的高低電平,為了方便單片機的控制,我們將單片機數(shù)據(jù)口輸出的高低電平進行相應的字形編碼。對照表4-1,字型碼各位定義為:數(shù)據(jù)線D0與a字段對應,D1與b字段對應……,依此類推。如使用共陽極數(shù)碼管,數(shù)據(jù)為0表示對應字段亮,數(shù)據(jù)為1表示對應字段暗;如使用共陰極數(shù)碼管,數(shù)據(jù)為0表示對應字段暗,數(shù)據(jù)為1表示對應字段亮。如要顯示“0”,需要點亮a、b、c、d、e、f段的發(fā)光二極管,共陽極數(shù)碼管需要給這些段輸入低電平,g、Dp段輸入高電平,于是共陽極數(shù)碼管顯示“0”的字型編碼應為:11000000B(即C0H);而共陰極數(shù)碼管需要給這些段輸入高電平,其它不顯示的g、Dp段輸入低電平,于是共陰極數(shù)碼管顯示“0”的字型編碼應為:00111111B(即3FH)。其它要顯示的字符類推可以得到相應的編碼。8段數(shù)碼管顯示字符的編碼如表4-2。7段數(shù)碼管的編碼與8段數(shù)碼管類似。LED數(shù)碼管顯示方式單片機系統(tǒng)可以像數(shù)字電路一樣用硬件(加相應的硬件驅(qū)動芯片)來驅(qū)動數(shù)碼管顯示,但為了控制方便與節(jié)約成本,單片機系統(tǒng)常采用軟件的方式來驅(qū)動數(shù)碼管。數(shù)碼管要正常顯示只需要單片機輸出相應的段碼,從而就可以讓數(shù)碼管顯示出需要顯示的字符。根據(jù)數(shù)碼管的驅(qū)動方式不同,可以分為靜態(tài)顯示方式和動態(tài)顯示方式。1.2靜態(tài)顯示方式靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應的發(fā)光二極管恒定導通或恒定截止。這種顯示方式的各位數(shù)碼管相互獨立,公共端恒定接地(共陰極)或接正電源(共陽極),其連接電路如圖4-3。每個數(shù)碼管的8個字段分別與單片機的一個8位I/O口地址相連,I/O口只要有段碼輸出,相應字符即顯示出來,并保持不變,直到I/O口輸出新的段碼。采用靜態(tài)顯示方式,較小的電流即可獲得較高的亮度,且占用CPU時間少,編程簡單,顯示便于監(jiān)測和控制,但由于每個數(shù)碼管的8個字段分別與單片機的一個8位I/O口地址相連,所以在需要多個數(shù)碼管顯示時占用的口線多,硬件電路復雜,成本高,只適合于顯示位數(shù)較少的場合。動態(tài)顯示方式動態(tài)顯示是指一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描。通常將各位數(shù)碼管的段選線相應并聯(lián)在一起,由一個8位的I/O口控制;各位的位選線(公共陰極或陽極)由另外的I/O口線控制,其連接電路如圖4-4。動態(tài)方式顯示時,各數(shù)碼管分時輪流選通。要使其穩(wěn)定顯示,必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應的段碼。依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示需要要顯示的字符。雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留現(xiàn)象以及發(fā)光二極管的余輝效應,只要每位顯示間隔的時間足夠短就可以給人以同時顯示的感覺。一般每位數(shù)碼管的點亮時間為1~2ms,數(shù)碼管的位數(shù)越多,每位點亮的時間相對就較短。如果每位掃描的時間太長,就會看到數(shù)碼管的各位顯示的字符有明顯地閃爍。在使用多位數(shù)碼管顯示時,采用動態(tài)顯示方式比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示方式簡單,但由于是分時顯示各位數(shù)碼管,其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時單片機要依次掃描,需要占用CPU的時間較多。LED數(shù)碼管顯示應用1.3例1

電路如圖4-5,在數(shù)碼管上間隔一段時間循環(huán)顯示0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F十六個字符。元件清單如表4-3所示。解:首先要確定數(shù)碼管的類型,根據(jù)4-5的電路圖數(shù)碼管,可以看出數(shù)碼管公共端接的是電源,因此得出是共陽極數(shù)碼管。要顯示0~F字符就需要根據(jù)表4-2共陽極數(shù)碼管的段碼列舉出來,將其保存到一個一維數(shù)組,方便調(diào)用,流程如圖4-6,仿真結果如圖4-7、4-8、4-9、4-10。解電路如圖4-11,在8位數(shù)碼管上顯示2018.10.23,元件清單如表4-4所示。例2解:由圖4-11可以看出,用了兩個74LS373鎖存器分別控制8位數(shù)碼管的段選控制端和位選控制端。根據(jù)數(shù)字電路的知識,74LS373鎖存器正常工作時,輸入端輸入什么信號,輸出端就得到什么信號。U2鎖存器接在單片機的P0口上,U3鎖存器接在單片機的P3口上,因此屬于單片機動態(tài)顯示的連接方法,要用動態(tài)顯示的方法來驅(qū)動這8位數(shù)碼管。同時,由于74LS373鎖存器可以承受較大的電流,所以可以較好地保護單片機的I/O口。其次本例有小數(shù)點的顯示,而由于題目上每一位顯示的數(shù)字是固定不變的,小數(shù)點的位置也是固定的,所以可以在段編碼中直接加上小數(shù)點就行。而實際過程中數(shù)碼管顯示的各位數(shù)都有可能在變化,因此先將要顯示的數(shù)字轉(zhuǎn)化到暫存數(shù)組中,小數(shù)點的顯示放到數(shù)碼管顯示時根據(jù)顯示的位置來合理安排。圖中電路的接法可以看出8段數(shù)碼管為共陰極數(shù)碼管。對于共陰極數(shù)碼管要點亮小數(shù)點,由于采用的是最高位來控制小數(shù)點的點亮,所以高位必須為高電平才能點亮,只需數(shù)字的編碼或上0x80就能實現(xiàn)帶小數(shù)點的數(shù)字顯示。其流程如圖4-12,仿真結果如圖4-13。解電路如圖4-14,用延時方式在數(shù)碼管(共陰極)上實現(xiàn)顯示0.00~59.99s的秒表,要求每10ms數(shù)碼管的顯示變化一次,秒的十位為0時不顯示。元件清單如表4-5。例3解:該題與例2類似,但是該題數(shù)字10ms要變化一次,為了減少變量,因此我們只用一個計數(shù)器每10ms加一次的值。根據(jù)題秒的十位為0時,這時高位的0不顯示,也就是要將顯示秒的十位上的數(shù)碼管不顯示,可以將共陰極數(shù)碼管不顯示的編碼也放到數(shù)組中去。同時秒的個位的位置有小數(shù)點,在顯示方法上可以借用例2的方法,其流程如圖4-15,仿真結果如圖4-16。解8×8點陣顯示及應用028×8點陣的顯示原理2.18×8點陣的實際外觀圖如圖4-17(a),一共64個發(fā)光點構成,上下兩排引腳,每排8個,一共16個。有的點陣后面標有第一腳,有的沒有標,現(xiàn)在大家習慣跟IC的管腳順序一樣,讀法是第1腳一般在側面有字的那一面,字是正向時左邊第一腳為1,然后按逆時針排序至16腳。賣家所說8×8點陣的共陰或者共陽確切的說應該是行共陰或者行共陽,內(nèi)部結構如圖4-17(b)、(c)所示。點陣LED一般采用掃描方式顯示,實際運用主要有兩種方式:行掃描方式和列掃描方式。使用行掃描和列掃描時,則頻率必須大于16×8=128Hz,周期小于7.8ms即可符合視覺暫留要求。點陣LED的掃描方式有點類似于數(shù)碼管的動態(tài)顯示,行掃描方式就是先將某一行置高電平(或低電平),然后所有的列置低電平(或高電平)來點亮對應的LED;列掃描方式就是先將某一列置低電平(或高電平),然后所有的行置高電平(或低電平)來點亮對應的LED。對于共陽型的8×8點陣當對應的某一行置高電平,某一列置低電平,則相應的二極管就亮;對于共陰型的8×8點陣當對應的某一行置低電平,某一列置高電平,則相應的二極管就亮。此外一次驅(qū)動一列或一行(8顆LED)時需外加驅(qū)動電路提高電流,否則電流太小LED亮度就會不足。8×8點陣的字模代碼2.2

為了弄清楚漢字的點陣組成規(guī)律,我們先來通過列(豎柱)掃描方法獲取漢字的代碼。先將8行分成4位的上、下兩部分,下為高4位,上為低4位,把發(fā)光的象素位編為1(圖4-18與圖4-19中的黑色的點),不發(fā)光的象素位編為0(圖4-18與圖4-19中的白色的點)。根據(jù)這個規(guī)律,圖4-18中五的十六進制編碼為:0x42,0x4A,0x4A,0x7E,0x4A,0x7A,0x42,0x00。其次,我們又通過行(橫柱)掃描方法來獲取漢字的代碼。先將8列分成4位的左、右兩部分,右為高4位,左為低4位,把發(fā)光的象素位編為1,不發(fā)光的象素位編為0,根據(jù)這個規(guī)律,圖4-19中→的編碼為:0x00,0x08,0x18,0x3f,0x7f,0x3f,0x18,0x08。每一個字由8行8列的點陣組成顯示,可以把每一個點理解為一個象素,而把每一個字的字形理解為一幅圖像。事實上8×8點陣不僅可以顯示漢字,也可以顯示在64象素范圍內(nèi)的任何圖形,如圖4-18與圖4-19。當然也可以直接使用漢字庫中的編碼來點亮需要顯示的漢字。8×8點陣顯示應用2.3例1

在8×8點陣上顯示“王”字符,電路如圖4-20所示,元件清單如表4-6。解:根據(jù)點陣掃描顯示原理,可以知道點陣的顯示類似于前面的數(shù)碼管動態(tài)顯示,數(shù)碼管的段碼對應于點陣的行,數(shù)碼管的位碼對應于點陣的列。74HC573鎖存器與74LS373鎖存器的功能基本一樣,使用方法相同??梢宰远x畫出點陣顯示“王”的圖形如圖4-21所示,對于行共陽點陣,列為低電平,行為高電平點亮相應發(fā)光二極管,把發(fā)光的象素位編為1,不發(fā)光的象素位編為0,根據(jù)列掃描方式編碼原理,于是得到代碼為:0x82,0x92,0x92,0xfe,0x92,0x92,0x82,0x00;根據(jù)行掃描方式編碼原理,于是得到代碼為:0x00,0x7f,0x08,0x08,0x3e,0x08,0x08,0x7f(此時要點亮相應的LED,必須對前面的編碼要逐位取反)。由于圖4-20中選用的點陣為共陰型,對于共陰點陣,行為低電平,列為高點亮,才能點亮相應的LED。根據(jù)行掃描方式編碼原理,黑色圓點為點亮的LED,由于列信號為高電平才能點亮,所以把發(fā)光LED的像素編為1,得到的代碼為:0x00,0x7f,0x08,0x08,0x3e,0x08,0x08,0x7f。根據(jù)列掃描方式編碼原理,黑色圓點為點亮的LED,由于行信號為低電平才能點亮,所以把發(fā)光LED的像素編為0,得到的代碼為:0x7d,0x6d,0x6d,0x01,0x6d,0x6d,0x7d,0xff;若是此時仍把發(fā)光LED(黑色部分)的像素編為1,得到的代碼為:0x82,0x92,0x92,0xfe,0x92,0x92,0x82,0x00,相當于對前面的每個代碼進行逐位取反(編程時要對得到的代碼依次取反才能點亮相應的LED)。流程如圖4-22,仿真結果如圖4-23列掃描方式與圖4-24行掃描方式所示。解在8×8點陣上顯示“→”字符,其點陣圖如圖4-18所示,讓其從圖上的位置向右移動出點陣,如此循環(huán)下去。電路如圖4-20,元件清單如表4-6所示。例2解:要使“→”字符從圖4-19的位置向右移動出點陣,要弄清“→”在點陣上是如何移動的。其移動過程和行掃描代碼如圖4-25所示。從圖4-25中可以看出由九幅圖構成其移動過程,每幅圖的圖形由行掃描八次實現(xiàn),編程時把由九幅圖構成其移動過程可以看成九個動作,每個動作由八次掃描形成,共形成72個編碼。將所有編碼一一執(zhí)行一遍就能實現(xiàn)要表現(xiàn)的意圖,其流程如圖4-26,仿真結果如圖4-27所示。解LCD1602顯示原理及應用03液晶顯示器簡稱LCD顯示器。它是利用液晶經(jīng)過處理后能改變光線的傳輸方向的特性實現(xiàn)顯示信息。液晶顯示器按其功能可分為三類:筆段式液晶顯示器、字符點陣式液晶顯示器和圖形點陣式液晶顯示器。前兩種可顯示數(shù)字、字符和符號等,而圖形點陣式液晶顯示器還可以顯示漢字和任意圖形,達到圖文并茂的效果。LCD1602屬于字符點陣式液晶顯示器,一般只能顯示ASCⅡ字符。市面上各種形式的液晶通常是按照顯示字符的行數(shù)或液晶點陣的行、列數(shù)來命名的。1602是指每行顯示16個字符,最多可以顯示兩行。LCD1602液晶顯示器是廣泛使用的一種字符型液晶顯示模塊。它是由字符型液晶顯示屏(LCD)、控制驅(qū)動主電路HD44780及其擴展驅(qū)動電路HD44100,以及少量電阻、電容元件和結構件等裝配在PCB板上而組成。不同廠家生產(chǎn)的LCD1602芯片可能有所不同,但使用方法都是一樣的。LCD1602概述3.1LCD1602主要技術參數(shù)顯示容量:16×2個字符芯片工作電壓:4.5~5.5V工作電流:2.0mA(5.0V)模塊最佳的工作電壓:5.0V字符尺寸:2.95mm×4.35mm(寬×高)LCD1602引腳功能LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表4-8所示。第1腳:VSS為電源地。第2腳:VDD接+5V電源。第3腳:VL為液晶顯示對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最強,使用時可以通過一個10k的電位器調(diào)整對比度。第4腳:RS為數(shù)據(jù)/命令選擇端,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀/寫選擇端,高電平時進行讀操作,低電平時進行寫操作。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7,為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。RAM地址映射圖控制器內(nèi)部帶有80字節(jié)的RAM緩沖區(qū),對應關系如圖4-29。向圖4-29中的00H~0FH、40H~4FH地址中的任意處寫顯示數(shù)據(jù)時,液晶都可以顯示出來;但寫入到10H~27H或50H~67H地址處時,必須通過移屏指令將它們移入可顯示區(qū)域才能正常顯示。在實際操作中向LCD1602寫入地址時,第一行第一列寫入的顯示地址應該為00H+80H,第二行第一列寫入的顯示地址應該為40H+80H。HD44780內(nèi)藏的字符發(fā)生存儲器(ROM)已經(jīng)存儲了160個不同的點陣字符圖形。這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號等,每一個字符都有一個固定的代碼。比如數(shù)字“1”的代碼是00110001B(31H),又如大寫的英文字母“A”的代碼是01000001B(41H),可以看出英文字母的代碼與ASCII編碼相同。要顯示“1”時,我們只需將ASCII碼31H存入DDRAM指定位置,顯示模塊將在相應的位置把數(shù)字“1”的點陣字符圖形顯示出來。LCD1602的指令1602液晶模塊內(nèi)部的控制器共有11條指令。(1)清屏命令清屏命令格式如表4-9所示。功能:清除屏幕,將顯示緩沖區(qū)DDRAM的內(nèi)容全部寫入空格(ASCII20H)。光標復位,回到顯示器的左上角。地址計數(shù)器AC清零。(2)光標復位命令光標復位命令格式如表4-10所示。功能:地址計數(shù)器AC清零,光標和畫面回到初始位置(Home)。(3)輸入方式設置命令輸入方式設置命令格式如表4-11所示。功能:設置光標、畫面的移動方式。當I/D=1時,光標從左向右移動;I/D=0時,光標從右向左移動。當S=1時,畫面移動,S=0時,畫面不移動。(4)顯示開關控制命令顯示開關控制命令格式如表4-12所示。功能:設置顯示、光標及閃爍開、關。D表示顯示開關:當D=1時顯示開,D=0時不顯示。C表示光標開關:當C=1時光標顯示,C=0時光標不顯示。B表示字符是否閃爍:當B=1時字符閃爍,B=0時字符不閃爍。(5)光標、畫面位移命令光標、畫面位移命令格式如表4-13所示。功能:移動光標或整個顯示字幕移位。當S/C=1時整個顯示字幕移位,S/C=0時只光標移位。當R/L=1時光標右移,R/L=0時光標左移。(6)功能設置命令功能設置命令格式如表4-14所示。功能:工作方式設置(初始化指令)。DL設置數(shù)據(jù)位數(shù):DL=1時數(shù)據(jù)位為8位,DL=0時數(shù)據(jù)位為4位。N設置顯示行數(shù):N=1時雙行顯示,N=0時單行顯示。F設置字形大?。篎=1時5×10點陣,F(xiàn)=0時為5×7點陣。(7)設置字庫CGRAM地址命令設置字庫CGRAM地址命令格式如表4-15所示。功能:設置用戶自定義CGRAM的地址,對用戶自定義CGRAM訪問時,要先設定CGRAM的地址,地址范疇00H~3FH。(8)顯示緩沖區(qū)DDRAM地址設置命令顯示緩沖區(qū)DDRAM地址設置命令格式如表4-16所示。功能:設置當前顯示緩沖區(qū)DDRAM的地址,對DDRAM訪問時,要先設定DDRAM的地址。N=0時,一行顯示的地址范疇00H~4FH;N=1時,首行顯示的地址范疇00H~2FH,第二行顯示的地址范疇40H~67H。(9)讀忙標志BF及地址計數(shù)器AC命令讀忙標志BF及地址計數(shù)器AC命令格式如表4-17所示。功能:讀忙標志及地址計數(shù)器AC。當BF=1時則表示忙,這時不能接收命令和數(shù)據(jù);BF=0時表示不忙。此時AC值意義為最近一次的地址設置(CGRAM或DDRAM)定義。BF的功能是告訴單片機,LCD內(nèi)部是否正忙著處理數(shù)據(jù)。當BF=1時,表示LCD內(nèi)部正在處理數(shù)據(jù),不接受單片機送來的指令或數(shù)據(jù)。LCD設置BF的原因是因為單片機處理一個指令的時間很短,只需幾us左右,而LCD得花上40us~1.64ms的時間,所以單片機要寫數(shù)據(jù)或指令到LCD之前,必須先查看BF是否為0。(10)寫DDRAM或CGRAM命令寫DDRAM或CGRAM命令格式如表4-18所示。功能:向DDRAM或CGRAM當前位置中寫入數(shù)據(jù)。對DDRAM或CGRAM寫入數(shù)據(jù)之前須設定DDRAM或CGRAM的地址。(11)讀DDRAM或CGRAM命令讀DDRAM或CGRAM命令格式如表4-19所示。

溫馨提示

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

評論

0/150

提交評論