![電子線路制作第次課_第1頁(yè)](http://file4.renrendoc.com/view/da83d58155a55934d74af737231c999b/da83d58155a55934d74af737231c999b1.gif)
![電子線路制作第次課_第2頁(yè)](http://file4.renrendoc.com/view/da83d58155a55934d74af737231c999b/da83d58155a55934d74af737231c999b2.gif)
![電子線路制作第次課_第3頁(yè)](http://file4.renrendoc.com/view/da83d58155a55934d74af737231c999b/da83d58155a55934d74af737231c999b3.gif)
![電子線路制作第次課_第4頁(yè)](http://file4.renrendoc.com/view/da83d58155a55934d74af737231c999b/da83d58155a55934d74af737231c999b4.gif)
![電子線路制作第次課_第5頁(yè)](http://file4.renrendoc.com/view/da83d58155a55934d74af737231c999b/da83d58155a55934d74af737231c999b5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
電子線路制作第次課第一頁(yè),共六十三頁(yè),2022年,8月28日數(shù)據(jù)結(jié)構(gòu):具有一定格式的數(shù)字或數(shù)值叫做數(shù)據(jù),數(shù)據(jù)按一定的數(shù)據(jù)類型進(jìn)行的排列、組合、架構(gòu)成為數(shù)據(jù)機(jī)構(gòu)。C語(yǔ)言編譯器與程序開發(fā)過(guò)程:
8051程序開發(fā)過(guò)程1.創(chuàng)建C或匯編語(yǔ)言的源程序2.編譯或匯編源文件3.糾正源文件中的錯(cuò)誤4.從編譯器和匯編器連接目標(biāo)文件5.測(cè)試連接的應(yīng)用程序第二頁(yè),共六十三頁(yè),2022年,8月28日 盡管C語(yǔ)言具有很多的優(yōu)點(diǎn),但和其它任何一種程序設(shè)計(jì)語(yǔ)言一樣,也有其自身的缺點(diǎn),如不能自動(dòng)檢查數(shù)組的邊界,各種運(yùn)算符的優(yōu)先級(jí)別太多,某些運(yùn)算符具有多種用途等。
C語(yǔ)言程序是由若干個(gè)函數(shù)單元組成的,每個(gè)函數(shù)都是完成某個(gè)特殊任務(wù)的子程序段。組成一個(gè)程序的若干個(gè)函數(shù)可以保存在一個(gè)源程序文件中,也可以保存語(yǔ)言源程序文件的文件名由程序設(shè)計(jì)人員根據(jù)某種俗成規(guī)則自己確定,其擴(kuò)展名統(tǒng)一為“.C”。如A1-1.C、A2-1.C。
C語(yǔ)言程序的開始部分通常是預(yù)處理命令,如程序中通常遇到的#include命令。這個(gè)預(yù)處理命令通知編譯器在對(duì)程序進(jìn)行編譯時(shí),將所需要的頭文件讀入后再一起進(jìn)行編譯。一般在“頭文件”中包含有程序在編譯時(shí)的一些必要的信息,通常C語(yǔ)言編譯器都會(huì)提供若干個(gè)不同用途的頭文件。頭文件的讀入是在對(duì)程序進(jìn)行編譯時(shí)才完成的。第三頁(yè),共六十三頁(yè),2022年,8月28日
C語(yǔ)言程序是由函數(shù)所組成的。一個(gè)完整的C語(yǔ)言程序應(yīng)包含一個(gè)主函數(shù)main()和若干個(gè)其它功能的函數(shù)。函數(shù)之間可以相互調(diào)用,但main()函數(shù)只能調(diào)用其它的功能函數(shù),而不能被其它函數(shù)所調(diào)用。功能函數(shù)可以是C語(yǔ)言編譯器提供的庫(kù)函數(shù),也可以由用戶按實(shí)際需要自行編寫的函數(shù)。不管main()函數(shù)處于程序中的什么位置,程序總是從main()函數(shù)開始執(zhí)行。一個(gè)函數(shù)必須預(yù)先定義或聲明后才能調(diào)用。函數(shù)定義或聲明位于源程序的預(yù)處理命令之后的開始位置。函數(shù)定義部分包括有函數(shù)的存儲(chǔ)類型、返回值數(shù)據(jù)類型、函數(shù)名、形式參數(shù)說(shuō)明等,函數(shù)名后面必須跟一個(gè)圓括?。ǎ?,形式參數(shù)說(shuō)明在圓括弧()內(nèi)進(jìn)行。函數(shù)也可以沒(méi)有形式參數(shù),如main()。函數(shù)的位置比較自由??梢杂沙绦蛟O(shè)計(jì)人員安排在函數(shù)定義后的任意位置。函數(shù)由函數(shù)名和一對(duì)花括弧“{}”組成,在“{}”里面的內(nèi)容就是函數(shù)體,如果一個(gè)函數(shù)有多個(gè)“{}”,則最外面的一對(duì)“{}”為函數(shù)體的范圍。第四頁(yè),共六十三頁(yè),2022年,8月28日
函數(shù)體的內(nèi)容為若干條語(yǔ)句,一般有兩類語(yǔ)句,一類為說(shuō)明語(yǔ)句,用來(lái)對(duì)函數(shù)中將要用到的變量進(jìn)行定義;另一類為執(zhí)行語(yǔ)句,用來(lái)完成一定的功能或算法處理。有的函數(shù)體僅有一對(duì)“{}”,其中既沒(méi)有變量定義語(yǔ)句,也沒(méi)有執(zhí)行語(yǔ)句,這也是合法的,稱為“空函數(shù)”。
C語(yǔ)言源程序可以采用任何一種編輯器來(lái)編寫,既可以是windows環(huán)境下的編輯器,如記事本(NOTEPAD)或?qū)懽职澹╓ORDPAD),也可以是DOS環(huán)境下的編輯器,如EDIT或PE等。C語(yǔ)言程序的書寫格式十分自由。一條語(yǔ)句可以寫成一行,也可以寫成幾行;還可以在一行內(nèi)寫多條語(yǔ)句;但是需要注意的是,每條語(yǔ)句都必須以分號(hào)“;”作為結(jié)束符。第五頁(yè),共六十三頁(yè),2022年,8月28日
另外,C語(yǔ)言區(qū)分大小寫字母,C語(yǔ)言編譯器在對(duì)程序進(jìn)行編譯時(shí),對(duì)于程序中同一個(gè)字母的大小寫作為不同的變量來(lái)處理。雖然C語(yǔ)言程序不要求具有固定的格式,但我們?cè)趯?shí)際編寫程序時(shí)還是應(yīng)該遵守一定的規(guī)則,一般應(yīng)按程序的功能以“縮格”形式來(lái)寫程序,同時(shí)還應(yīng)在適當(dāng)?shù)牡胤郊由媳匾淖⑨?。注釋?duì)于比較大的程序來(lái)說(shuō)是十分重要的,這有利于修改與讀懂程序。
C語(yǔ)言本身沒(méi)有輸入輸出功能,C語(yǔ)言程序的輸入和輸出是通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn)的。FranklinC51編譯器提供的輸入輸出庫(kù)函數(shù)scanf和printf是通過(guò)8051單片機(jī)的串行口實(shí)現(xiàn)的,在程序中使用這種輸入輸出庫(kù)函數(shù)之前必須先對(duì)8051單片機(jī)的串行口進(jìn)行初始化。但是對(duì)于單片機(jī)應(yīng)用系統(tǒng)來(lái)說(shuō),由于具體要求的不同,應(yīng)用系統(tǒng)的輸入輸出方式多種多樣,不可能一律采用串行口作輸入和輸出。因此應(yīng)該根據(jù)實(shí)際需要,由應(yīng)用系統(tǒng)的研制人員自己來(lái)編寫滿足特定需要的輸入輸出函數(shù),這一點(diǎn)對(duì)于單片機(jī)應(yīng)用系統(tǒng)的開發(fā)研制人員來(lái)說(shuō)是十分重要的。
第六頁(yè),共六十三頁(yè),2022年,8月28日C語(yǔ)言的標(biāo)識(shí)符和關(guān)鍵字C語(yǔ)言的標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)源程序中某個(gè)對(duì)象名字的。這些對(duì)象可以是函數(shù)、變量、常量、數(shù)組、數(shù)據(jù)類型、存儲(chǔ)方式、語(yǔ)句等。一個(gè)標(biāo)識(shí)符由字符串、數(shù)字和下劃線等組成,第一個(gè)字符必須是字母或下劃線,通常以下劃線開頭的標(biāo)識(shí)符是編譯系統(tǒng)專用的,因此在編寫C語(yǔ)言源程序時(shí)一般不要使用以下劃線開頭的標(biāo)識(shí)符,而將下劃線用作分段符。C51編譯器規(guī)定標(biāo)識(shí)符最長(zhǎng)可達(dá)255個(gè)字符,但只有前面32個(gè)字符在編譯時(shí)有效,因此在編寫源程序時(shí)標(biāo)識(shí)符的長(zhǎng)度不要超過(guò)32個(gè)字符。程序中對(duì)于標(biāo)識(shí)符的命名應(yīng)當(dāng)簡(jiǎn)潔明了,含義清晰,便于閱讀理解,如用標(biāo)識(shí)符“max”表示最大值,用“TIMER0”表示定時(shí)器0等。
關(guān)鍵字是一類具有固定名稱和特定含義的特殊標(biāo)識(shí)符,又稱為保留字。在編寫C語(yǔ)言源程序時(shí)一般不允許將關(guān)鍵字另作別用,換句話說(shuō)就是對(duì)于標(biāo)識(shí)符的命名不要與關(guān)鍵字相同。在C語(yǔ)言中,ANSIC標(biāo)準(zhǔn)一共規(guī)定了32個(gè)關(guān)鍵字,下表按用途列出了ANSIC標(biāo)準(zhǔn)的關(guān)鍵字。第七頁(yè),共六十三頁(yè),2022年,8月28日關(guān)鍵字
用途
說(shuō)明autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile存儲(chǔ)類說(shuō)明程序語(yǔ)句程序語(yǔ)句數(shù)據(jù)類型說(shuō)明存儲(chǔ)類型說(shuō)明程序語(yǔ)句程序語(yǔ)句程序語(yǔ)句數(shù)據(jù)類型說(shuō)明程序語(yǔ)句數(shù)據(jù)類型說(shuō)明存儲(chǔ)種類說(shuō)明數(shù)據(jù)類型說(shuō)明程序語(yǔ)句程序語(yǔ)句程序語(yǔ)句數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明存儲(chǔ)種類說(shuō)明程序語(yǔ)句數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明運(yùn)算符存儲(chǔ)種類說(shuō)明數(shù)據(jù)類型說(shuō)明程序語(yǔ)句數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明程序語(yǔ)句用以說(shuō)明局部變量退出最內(nèi)層循環(huán)switch語(yǔ)句中的選擇項(xiàng)單字節(jié)整型數(shù)或字符型數(shù)據(jù)在程序執(zhí)行過(guò)程中不可能修改的變量值轉(zhuǎn)向下一個(gè)循環(huán)switch語(yǔ)句中的失敗選擇項(xiàng)構(gòu)成do...while循環(huán)結(jié)構(gòu)雙精度浮點(diǎn)數(shù)構(gòu)成if...else選擇結(jié)構(gòu)枚舉在其它程序模塊中說(shuō)明了的全局變量單精度浮點(diǎn)數(shù)構(gòu)成for循環(huán)結(jié)構(gòu)構(gòu)成goto轉(zhuǎn)移結(jié)構(gòu)構(gòu)成if...else選擇結(jié)構(gòu)基本整型數(shù)長(zhǎng)整型數(shù)使用CPU內(nèi)部寄存器的變量函數(shù)返回短整型數(shù)有符號(hào)數(shù),二進(jìn)制數(shù)據(jù)的最高位為符號(hào)位計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)靜態(tài)變量結(jié)構(gòu)類型數(shù)據(jù)構(gòu)成switch選擇結(jié)構(gòu)重新進(jìn)行數(shù)據(jù)類型定義聯(lián)合數(shù)據(jù)類型無(wú)符號(hào)數(shù)據(jù)無(wú)符號(hào)數(shù)據(jù)說(shuō)明該變量在程序執(zhí)行中可被隱含地改變構(gòu)成while和do...while循環(huán)結(jié)構(gòu)第八頁(yè),共六十三頁(yè),2022年,8月28日關(guān)鍵字
用途
說(shuō)明bitsbitsfrsfr16databdataidatapdataxdatacodeinterruptUsingreetrant位標(biāo)量聲明位標(biāo)量聲明特殊功能寄存器聲明特殊功能寄存器聲明存儲(chǔ)器類型聲明存儲(chǔ)器類型聲明存儲(chǔ)器類型說(shuō)明存儲(chǔ)器類型說(shuō)明存儲(chǔ)器類型說(shuō)明存儲(chǔ)器類型說(shuō)明中斷函數(shù)說(shuō)明寄存器組定義再入函數(shù)聲明聲明一個(gè)位標(biāo)量或位類型的函數(shù)聲明一個(gè)可位尋址變量聲明一個(gè)特殊功能寄存器(8位)聲明一個(gè)16位的特殊功能寄存器直接尋址的8051內(nèi)部數(shù)據(jù)存儲(chǔ)器可位尋址的8051內(nèi)部數(shù)據(jù)存儲(chǔ)器間接尋址的8051內(nèi)部數(shù)據(jù)存儲(chǔ)器“分頁(yè)”尋址的8051外部數(shù)據(jù)存儲(chǔ)器8051外部數(shù)據(jù)存儲(chǔ)器8051程序存儲(chǔ)器定義一個(gè)中斷函數(shù)定義8051工作寄存器組定義一個(gè)再入函數(shù)C51編譯器除了支持ANSIC標(biāo)準(zhǔn)關(guān)鍵字以外,還擴(kuò)展了如表7.2所示的關(guān)鍵字:
C51編譯器的擴(kuò)展關(guān)鍵字第九頁(yè),共六十三頁(yè),2022年,8月28日C51程序設(shè)計(jì)的基本語(yǔ)法C語(yǔ)言的數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型出現(xiàn)的,數(shù)據(jù)類型可分為基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型,復(fù)雜數(shù)據(jù)類型由基本數(shù)據(jù)類型構(gòu)造而成。C語(yǔ)言中的基本數(shù)據(jù)類型有char,int,short,long,float和double。對(duì)于C51編譯器來(lái)說(shuō),short型與int型相同,double型與float型相同。分別說(shuō)明如下:
1.char字符類型。有signedchar和unsignedchar之分,默認(rèn)值為signedchar。對(duì)于signedchar型數(shù)據(jù),其字節(jié)中的最高位表示該數(shù)據(jù)的符號(hào),“0”表示正數(shù),“l(fā)”表示負(fù)數(shù)。負(fù)數(shù)用補(bǔ)碼表示。所能表示的數(shù)值范圍是-128~127;unsignedchar型數(shù)據(jù),是無(wú)符號(hào)字符型數(shù)據(jù),其字節(jié)中的所有位均用來(lái)表示數(shù)據(jù)的數(shù)值,所表示的數(shù)值范圍是0~255。第十頁(yè),共六十三頁(yè),2022年,8月28日
2.int整型。有signedint和unsignednit之分,默認(rèn)值為signedint。signedint是有符號(hào)整型數(shù),字節(jié)中的最高位表示數(shù)據(jù)的符號(hào),“0”表示正數(shù),“1”表示負(fù)數(shù)。所能表示的數(shù)值范圍是-32768~+32767。unsignedint是無(wú)符號(hào)整型數(shù),所表示的數(shù)值范圍是0~65535。
3.long長(zhǎng)整型。有signedlong和unsignedlong之分,默認(rèn)值為signedlong。它們的長(zhǎng)度均為四個(gè)字節(jié)。singedlong是有符號(hào)的長(zhǎng)整型數(shù)據(jù),字節(jié)中的最高位表示數(shù)據(jù)的符號(hào),“0”表示正數(shù),“1”表示負(fù)數(shù)。數(shù)值的表示范圍是2147483648~2147483647;unsignedlong是無(wú)符號(hào)長(zhǎng)整型數(shù)據(jù),數(shù)值的表示范圍是0~4294967295。第十一頁(yè),共六十三頁(yè),2022年,8月28日
4.float浮點(diǎn)型。它是符合IEEE—754標(biāo)準(zhǔn)的單精度浮點(diǎn)型數(shù)據(jù),在十進(jìn)制中具有7位有效數(shù)字。float型數(shù)據(jù)占用四個(gè)字節(jié)(2位二進(jìn)制數(shù))。需要指出的是,對(duì)于浮點(diǎn)型數(shù)據(jù)除了有正常數(shù)值之外,還可能出現(xiàn)非正常數(shù)值。根據(jù)IEEE標(biāo)準(zhǔn),當(dāng)浮點(diǎn)型數(shù)據(jù)取以下數(shù)值(16進(jìn)制數(shù))時(shí)即為非正常值:FFFFFFFFH非數(shù)(NaN);7F800000H正溢出(+I(xiàn)NF);FF800000H負(fù)溢出(-INF);另外,由于8051單片機(jī)不包括捕獲浮點(diǎn)運(yùn)算錯(cuò)誤的中斷向量,因此必須由用戶自己根據(jù)可能出現(xiàn)的錯(cuò)誤條件用軟件來(lái)進(jìn)行適當(dāng)?shù)奶幚?。第十二?yè),共六十三頁(yè),2022年,8月28日
5.*指針型。指針型數(shù)據(jù)不同于以上四種基本數(shù)據(jù)類型,它本身是一個(gè)變量,但在這個(gè)變量中存放的不是普通的數(shù)據(jù)而是指向另一個(gè)數(shù)據(jù)的地址。指針變量也要占據(jù)一定的內(nèi)存單元,在C51中指針變量的長(zhǎng)度一般為1~3個(gè)字節(jié)。指針變量也具有類型,其表示方法是在指針?lè)?hào)“*”的前面冠以數(shù)據(jù)類型符號(hào)。如char*Pointl;表示Pointl是一個(gè)字符型的指針變量。指針變量的類型表示該指針?biāo)赶虻刂分袛?shù)據(jù)的類型。使用指針型變量可以方便地對(duì)8051單片機(jī)的各部分物理地址直接進(jìn)行操作。
6.bit位標(biāo)量。這是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可定義一個(gè)位標(biāo)量,但不能定義位指針,也不能定義位數(shù)組。第十三頁(yè),共六十三頁(yè),2022年,8月28日
7.sfr特殊功能寄存器。這也是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪問(wèn)8051單片機(jī)的所有內(nèi)部特殊功能寄存器。sfr型數(shù)據(jù)占用一個(gè)內(nèi)存單元,其取值范圍0~255。
8.sfr1616位特殊功能寄存器。它占用兩個(gè)內(nèi)存單元,取值范圍是0~65535。
9.sbit可尋址位。這也是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型,利用它可以訪8051單片機(jī)內(nèi)部RAM中的可尋址位或特殊功能寄存器中的可尋址位。
第十四頁(yè),共六十三頁(yè),2022年,8月28日在C語(yǔ)言程序中的表達(dá)式或變量賦值運(yùn)算中,有時(shí)會(huì)出現(xiàn)運(yùn)算對(duì)象的數(shù)據(jù)不一致的情況,C語(yǔ)言允許任何標(biāo)準(zhǔn)數(shù)據(jù)類型之間的隱式轉(zhuǎn)換。隱式轉(zhuǎn)換按以下優(yōu)先級(jí)別自動(dòng)進(jìn)行:
bitcharintlongfloatsignedunsigned
轉(zhuǎn)換時(shí)由低向高進(jìn)行,而不是數(shù)據(jù)轉(zhuǎn)換時(shí)的順序。一般來(lái)說(shuō),如果有幾個(gè)不同類型的數(shù)據(jù)同時(shí)參加運(yùn)算,先將低級(jí)別類型的數(shù)據(jù)轉(zhuǎn)換成高級(jí)別類型,再作運(yùn)算處理,并且運(yùn)算結(jié)果為高級(jí)別類型數(shù)據(jù)。
C51編譯器除了能支持以上這些基本數(shù)據(jù)之外,還能支持一些復(fù)雜的構(gòu)造型數(shù)據(jù),如結(jié)構(gòu)類型、聯(lián)合類型等。第十五頁(yè),共六十三頁(yè),2022年,8月28日常量常量是在程序執(zhí)行過(guò)程中其值不能改變的量。常量的數(shù)據(jù)類型有整型、浮點(diǎn)型、字符型和字符串型等,C51編譯器還擴(kuò)充了一種位(bit)標(biāo)量。分別說(shuō)明如下:
1.整型常量整型常量就是整型常數(shù),可表示為以下幾種形式:十進(jìn)制整數(shù);十六進(jìn)制整數(shù):以0X開頭的數(shù)是十六進(jìn)制數(shù),ANSIC標(biāo)準(zhǔn)規(guī)定十六進(jìn)制數(shù)的數(shù)字為0~9,再加字母a~f;長(zhǎng)整數(shù):在數(shù)字后面加一個(gè)字母L就構(gòu)成了長(zhǎng)整數(shù)。2.浮點(diǎn)型常量浮點(diǎn)型常量有十進(jìn)制表示形式和指數(shù)表示形式。十進(jìn)制表示形式又稱定點(diǎn)表示形式,由數(shù)字和小數(shù)點(diǎn)組成。如0.3141、31.41、314.1及0.0都是十進(jìn)制數(shù)表示形式的浮點(diǎn)型常量。第十六頁(yè),共六十三頁(yè),2022年,8月28日
在這種表示形式中,如果整數(shù)或小數(shù)部分為0可以省略不寫,但必須有小數(shù)點(diǎn)指數(shù)表示形式為:
[±]數(shù)字[.?dāng)?shù)字]e[±]數(shù)字其中,[]中的內(nèi)容為可選項(xiàng),可有可無(wú),但其余部分必須有。3.字符型常量字符型常量是單引號(hào)內(nèi)的字符,如‘a(chǎn)’、‘b’等。對(duì)于不可顯示的控制字符,可以在該字符前面加一個(gè)反斜杠字符“\”組成專用轉(zhuǎn)義字符。利用轉(zhuǎn)義字符可以完成一些特殊功能和輸出時(shí)的格式控制。4.字符串型常量字符串型常量由雙引號(hào)“”內(nèi)的字符組成。當(dāng)雙引號(hào)內(nèi)的字符個(gè)數(shù)為0時(shí),稱為空串常量。需要注意的是,字符串常量首尾的雙引號(hào)是界限符,當(dāng)需要表示雙引號(hào)字符串時(shí),可用轉(zhuǎn)義字符‘\’來(lái)表示為:“\“\””。第十七頁(yè),共六十三頁(yè),2022年,8月28日如:“Isay:\“goodbye!\””——字符串為Isay:“goodbye!”另外,C語(yǔ)言將字符串常量作為一個(gè)字符類型數(shù)組來(lái)處理,在存儲(chǔ)字符串常量時(shí),要在字符串的尾部加一個(gè)轉(zhuǎn)義字符\0作為該字符串常量的結(jié)束符。因此不要將字符常量與字符串常量混淆。5.位標(biāo)量這是C51編譯器的一種擴(kuò)充數(shù)據(jù)類型。位標(biāo)量用關(guān)鍵字“bit”來(lái)定義,它的值是一個(gè)二進(jìn)制位。一個(gè)函數(shù)中可以包含“bit”類型的參數(shù),函數(shù)的返回值也可為“bit”型。另外,不能定義位指針,也不能定義位數(shù)組。第十八頁(yè),共六十三頁(yè),2022年,8月28日C51程序設(shè)計(jì)表達(dá)式語(yǔ)句
C語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,它提供了十分豐富的程序控制語(yǔ)句。表達(dá)式語(yǔ)句是最基本的一種語(yǔ)句。在表達(dá)式的后邊加一個(gè)分號(hào)“;”就構(gòu)成了表達(dá)式語(yǔ)句。表達(dá)式語(yǔ)句也可以僅由一個(gè)分號(hào)“;”組成,這種語(yǔ)句稱為空語(yǔ)句??照Z(yǔ)句是表達(dá)式語(yǔ)句的一個(gè)特例。空語(yǔ)句在程序設(shè)計(jì)中有時(shí)是很有用的,當(dāng)程序在語(yǔ)法上需要有一個(gè)語(yǔ)句,但在語(yǔ)義上并不要求有具體的動(dòng)作時(shí),便可以采用空語(yǔ)句??照Z(yǔ)句通常有兩種用法:
1.在程序中為有關(guān)語(yǔ)句提供標(biāo)號(hào),用以標(biāo)記程序執(zhí)行的位置。
2.在用while語(yǔ)句構(gòu)成的循環(huán)語(yǔ)句后面加一個(gè)分號(hào),形成一個(gè)不執(zhí)行其它操作的空循環(huán)體。
第十九頁(yè),共六十三頁(yè),2022年,8月28日復(fù)合語(yǔ)句復(fù)合語(yǔ)句是由若干條語(yǔ)句組合而成的一種語(yǔ)句,它是用一個(gè)大括號(hào)“{}”將若干條語(yǔ)句組合在一起而形成的一種功能塊。復(fù)合語(yǔ)句不需要以分號(hào)“;”結(jié)束,但它內(nèi)部的各條單語(yǔ)句仍需以分號(hào)“;”結(jié)束。復(fù)合語(yǔ)句的一般形式為:
{
局部變量定義;語(yǔ)句1;語(yǔ)句2;。。。。。。。。。語(yǔ)句n;}復(fù)合語(yǔ)句在執(zhí)行時(shí),其中的各條單語(yǔ)句依次順序執(zhí)行。整個(gè)復(fù)合語(yǔ)句在語(yǔ)法上等價(jià)于一條單語(yǔ)句,因此在C語(yǔ)言程序中可以將復(fù)合語(yǔ)句視為一條單語(yǔ)句。復(fù)合語(yǔ)句允許嵌套,即在復(fù)合語(yǔ)句內(nèi)部還可以包含別的復(fù)合語(yǔ)句。
第二十頁(yè),共六十三頁(yè),2022年,8月28日
通常復(fù)合語(yǔ)句都出現(xiàn)在函數(shù)中,實(shí)際上,函數(shù)的執(zhí)行部分(即函數(shù)體)就是一個(gè)復(fù)合語(yǔ)句。復(fù)合語(yǔ)句中的單語(yǔ)句一般是可執(zhí)行語(yǔ)句,此外還可以是變量的定義語(yǔ)句(說(shuō)明變量的數(shù)據(jù)類型)。用復(fù)合語(yǔ)句內(nèi)部變量定義語(yǔ)句所定義的變量,稱為該復(fù)合語(yǔ)句中的局部變量,它僅在當(dāng)前這個(gè)復(fù)合語(yǔ)句中有效。利用復(fù)合語(yǔ)句將多條單語(yǔ)句組合在一起,以及在復(fù)合語(yǔ)句中進(jìn)行局部變量定義是C語(yǔ)言的一個(gè)重要特征。流程控制語(yǔ)句1.選擇結(jié)構(gòu)①
if語(yǔ)句
if語(yǔ)句有三種形式:?jiǎn)畏种нx擇if語(yǔ)句、雙分支選擇if語(yǔ)句和多分支選擇if語(yǔ)句。(1)單分支選擇語(yǔ)句
If(條件表達(dá)式)語(yǔ)句第二十一頁(yè),共六十三頁(yè),2022年,8月28日 其含義為:若條件表達(dá)式的結(jié)果為真(非0值),就執(zhí)行了后面的語(yǔ)句;反之,若條件達(dá)式的結(jié)果為假(0值),就不執(zhí)行后面的語(yǔ)句。這里的語(yǔ)句也可以是復(fù)合語(yǔ)句。這種條件語(yǔ)句的執(zhí)行過(guò)程如圖7.3(a)所示。(2)雙分支選擇語(yǔ)句
if(條件表達(dá)式)語(yǔ)句1;
else語(yǔ)句2;其含義為:若條件表達(dá)式的結(jié)果為真(非0值),就執(zhí)行語(yǔ)句1;反之,若條件表達(dá)式的結(jié)果為假(0值),就執(zhí)行語(yǔ)句2。這里的語(yǔ)句1和語(yǔ)句2均可以是復(fù)合語(yǔ)句。這種條件語(yǔ)句的執(zhí)過(guò)程如圖7.3(b)所示。
(a)(b)
條件語(yǔ)句的執(zhí)行
第二十二頁(yè),共六十三頁(yè),2022年,8月28日(3)多分支選擇語(yǔ)句
if(條件表達(dá)式1)語(yǔ)句1;
elseif(條件式表達(dá)2)語(yǔ)句2;
elseif(條件式表達(dá)3)語(yǔ)句3;
…………elseif(條件表達(dá)式n)語(yǔ)句nelse語(yǔ)句n+1;這種條件語(yǔ)句常用來(lái)實(shí)現(xiàn)多方向條件分支,其執(zhí)行過(guò)程如圖7.4所示。
第二十三頁(yè),共六十三頁(yè),2022年,8月28日switch語(yǔ)句
開關(guān)語(yǔ)句也是一種用來(lái)實(shí)現(xiàn)多方向條件分支的語(yǔ)句。開關(guān)語(yǔ)句可直接處理多分支選擇,使程序結(jié)構(gòu)清晰,使用方便。開關(guān)語(yǔ)句是用關(guān)鍵字switch構(gòu)成的,它的一般形式如下:
switch(表達(dá)式) {
case常量表達(dá)式1:語(yǔ)句1;break;
case常量表達(dá)式2:語(yǔ)句2;break;
…………case常量表達(dá)式n:語(yǔ)句n;break;
default:語(yǔ)句n+1;
}開關(guān)語(yǔ)句的執(zhí)行過(guò)程第二十四頁(yè),共六十三頁(yè),2022年,8月28日2.循環(huán)結(jié)構(gòu)在C語(yǔ)言程序中用來(lái)構(gòu)成循環(huán)控制的語(yǔ)句有:while語(yǔ)句、do-while語(yǔ)句、for語(yǔ)句以及goto語(yǔ)句,分述如下:①while語(yǔ)句采用while語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu)的一般形式如下:
while(條件表達(dá)式)語(yǔ)句;其意義為,當(dāng)條件表達(dá)式的結(jié)果為真(非0值)時(shí),程序就重復(fù)執(zhí)行后面的語(yǔ)句,一直執(zhí)行到條件表達(dá)式的結(jié)果變化為假(0值)時(shí)為止。這種循環(huán)結(jié)構(gòu)是先檢查條件表達(dá)式所給出的條件,再根據(jù)檢查的結(jié)果決定是否執(zhí)行后面的語(yǔ)句。如果條件表達(dá)式的結(jié)果一開始就為假,則后面的語(yǔ)句一次也不會(huì)被執(zhí)行。這里的語(yǔ)句可以是復(fù)合語(yǔ)句。圖7.6所示為while語(yǔ)句的執(zhí)行過(guò)程。②do-while語(yǔ)句采用do一while語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu)的一般形式如下:
do語(yǔ)句while(條件表達(dá)式);第二十五頁(yè),共六十三頁(yè),2022年,8月28日這種循環(huán)結(jié)構(gòu)的特點(diǎn)是先執(zhí)行給定的循環(huán)體語(yǔ)句,然后再檢查條件表達(dá)式的結(jié)果。當(dāng)多件表達(dá)式的值為真(非0值)時(shí),則重復(fù)執(zhí)行循環(huán)體語(yǔ)句,直到條件表達(dá)式的值變?yōu)榧伲?值時(shí)為止。因此,用如do一while語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)在任何條件下,循環(huán)體語(yǔ)句至少會(huì)被執(zhí)行一次。下圖繪出了這種循環(huán)結(jié)構(gòu)的流程圖。
while語(yǔ)句的執(zhí)行過(guò)程
do—while循環(huán)結(jié)構(gòu)的流
第二十六頁(yè),共六十三頁(yè),2022年,8月28日
for語(yǔ)句
采用for語(yǔ)句構(gòu)成循環(huán)結(jié)構(gòu)的一般形式如下:
for([初值設(shè)定表達(dá)式];[循環(huán)條件表達(dá)式];[更新表達(dá)式])語(yǔ)句
for語(yǔ)句的執(zhí)行過(guò)程是:先計(jì)算出初值設(shè)定表達(dá)式的值作為循環(huán)控制變量的初值,再檢查循環(huán)條件表達(dá)式的結(jié)果,當(dāng)滿足循環(huán)條件時(shí)就執(zhí)行循環(huán)體語(yǔ)句并計(jì)算更新表達(dá)式,然后再根據(jù)更新表達(dá)式的計(jì)算結(jié)果來(lái)判斷循環(huán)條件是否滿足……一直進(jìn)行到循環(huán)條件表達(dá)式的結(jié)果為假(0值)時(shí),退出循環(huán)體。for語(yǔ)句的執(zhí)行過(guò)程如所示。第二十七頁(yè),共六十三頁(yè),2022年,8月28日非結(jié)構(gòu)化語(yǔ)句①goto語(yǔ)句
goto語(yǔ)句是一個(gè)無(wú)條件轉(zhuǎn)向語(yǔ)句,它的一般形式為:
goto語(yǔ)句標(biāo)號(hào);其中語(yǔ)句標(biāo)號(hào)是一個(gè)帶冒號(hào)“:”的標(biāo)識(shí)符。將goto語(yǔ)句和if語(yǔ)句一起使用,可以構(gòu)成一個(gè)循環(huán)結(jié)構(gòu)。但更常見的是在C語(yǔ)言程序中采用goto語(yǔ)句來(lái)跳出多重循環(huán),需要注意的是只能用goto語(yǔ)句從內(nèi)層循環(huán)跳到外層循環(huán),而不允許從外層循環(huán)跳到內(nèi)層循環(huán)。對(duì)于多重循環(huán)的情況,break語(yǔ)句只能跳出它所處的那一層循環(huán),而不象goto語(yǔ)句可以直接從最內(nèi)層循環(huán)中跳出來(lái)。由此可見,要退出多重循環(huán)時(shí),采用goto語(yǔ)句比較方便。需要指出的是,break語(yǔ)句只能用于開關(guān)語(yǔ)句和循環(huán)語(yǔ)句之中,它是一種具有特殊功能的無(wú)條件轉(zhuǎn)移語(yǔ)句。另外還要注意,在進(jìn)行實(shí)際程序設(shè)計(jì)時(shí),為了保證程序具有良好的結(jié)構(gòu),應(yīng)當(dāng)盡可能地少采用goto語(yǔ)句,以使程序結(jié)構(gòu)清晰易讀。
第二十八頁(yè),共六十三頁(yè),2022年,8月28日
②continue語(yǔ)句
continue語(yǔ)句是一種中斷語(yǔ)句,它一般用在循環(huán)結(jié)構(gòu)中,其功能是結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,把程序流程轉(zhuǎn)移到當(dāng)前循環(huán)語(yǔ)句的下一個(gè)循環(huán)周期,并根據(jù)循環(huán)控制條件決定是否重復(fù)執(zhí)行該循環(huán)體。
continue語(yǔ)句的一般形式為:continue;
continue語(yǔ)句通常和條件語(yǔ)句一起用在由while、do—while和for語(yǔ)句構(gòu)成的循環(huán)結(jié)構(gòu)中,它也是一種具有特殊功能的無(wú)條件轉(zhuǎn)移語(yǔ)句,但它與break語(yǔ)句不同,continue語(yǔ)句并不跳出循環(huán)體,而只是根據(jù)循環(huán)控制條件確定是否繼續(xù)執(zhí)行循環(huán)語(yǔ)句③返回語(yǔ)句返回語(yǔ)句用于終止函數(shù)的執(zhí)行,并控制程序返回到調(diào)用該函數(shù)時(shí)所處的位置。返回語(yǔ)句有兩種形式:
第二十九頁(yè),共六十三頁(yè),2022年,8月28日C51編程實(shí)例8051串行口擴(kuò)展的矩陣鍵盤用戶可以對(duì)8051單片機(jī)串行口重新進(jìn)行編程以完成自己需要的某種特殊功能。8051單片機(jī)的串行口工作于方式0時(shí),可作為移位寄存器用于擴(kuò)展I/O口。如圖7.14所示,利用8051串行口擴(kuò)展的一種矩陣鍵盤接口電路。74LS164是串入/并出移位寄存器,它將來(lái)自8051串行口線的P3.0(RXD)的串行數(shù)據(jù)轉(zhuǎn)換成8位并行數(shù)據(jù),P3.4和P3.5定義為輸入口線,從而可實(shí)現(xiàn)一個(gè)2×8矩陣鍵盤接口下面給出針對(duì)鍵盤接口的C51驅(qū)動(dòng)程序。程序由主函數(shù)main()、讀鍵盤函數(shù)get_char()和延時(shí)函數(shù)delay()組成。主函數(shù)將8051串行口初始化為工作方式0,采用查詢式輸入輸出,然后調(diào)用讀鍵盤函數(shù)讀入,按鍵的編碼值并存入以keybuf為首地址的16個(gè)內(nèi)部RAM單元中。第三十頁(yè),共六十三頁(yè),2022年,8月28日
讀鍵盤函數(shù)get_char()判斷是否有鍵按下,有按鍵時(shí)進(jìn)行鍵值分析并將按鍵的鍵值返回給主調(diào)用函數(shù)。延時(shí)函數(shù)delay()的功能是提供一段延時(shí)時(shí)間以防止按鍵抖動(dòng)對(duì)鍵值分析的影響。用8051串行口擴(kuò)展的矩陣鍵盤接口第三十一頁(yè),共六十三頁(yè),2022年,8月28日程序清單如下:
#include<reg51.h>#include<intrins.h>unsignedcharget_char(void);/*函數(shù)說(shuō)明*/voiddelay(void);
main(){unsignedcharkeybuf[16],count;/*鍵盤緩沖區(qū)和讀鍵盤計(jì)數(shù)變量*/SCON=0;/*將串行口設(shè)置成方式0*/ES=0;/*禁止串口中斷*/EA=0;
count=0;
while(count<16)keybuf[count++]=get_char();
/*讀入16個(gè)按鍵的鍵值*/
第三十二頁(yè),共六十三頁(yè),2022年,8月28日
}unsignedcharget_char(void){/*定義表示列號(hào)、鍵序號(hào)和待發(fā)送數(shù)據(jù)的變量column、key_code和mask*/unsignedcharkey_code,column=0,mask=0x00;
/*下列語(yǔ)句從串行口向74LS164移位輸出8個(gè)0*/TI=0;
SBUF=mask;
while(TI==0);
/*下列語(yǔ)句通過(guò)檢測(cè)P3.4和P3.5是否為零來(lái)判斷是否有鍵按下,檢測(cè)到有鍵壓下時(shí)延時(shí)10ms以消除按鍵抖動(dòng),然后繼續(xù)檢測(cè)P3.4和P3.5是否為0,若不為0則表明檢測(cè)到干擾信號(hào)并繼續(xù)等待按鍵,否則表示有一個(gè)鍵被可靠按下并退出循環(huán)*/while(1)第三十三頁(yè),共六十三頁(yè),2022年,8月28日
{while((p34&&p35)!=0);
delay();
if((p34&p35)!=0)continue;
elsebreak;
}/*下列語(yǔ)句分析被按下的鍵所在的列號(hào)*/mask=0xfe;
while(1){TI=0;
SBUF=mask;
while(TI==0);
if((p34&&p35)!=0)第三十四頁(yè),共六十三頁(yè),2022年,8月28日
{mask=_crol_(mask,1);/*mask的值循環(huán)左移一位*/column++;
if(column>=8)column=0;
continue;
}elsebreak;
}/*下列語(yǔ)句分析被按下的鍵所在的行號(hào)并計(jì)算鍵序號(hào)*/if(p34==0)key_code=column;
elsekey_code=8+column;
return(key_code);
}第三十五頁(yè),共六十三頁(yè),2022年,8月28日voiddelay(void){unsignedinti=10;
while(i--);}8051LED顯示電路發(fā)光二極管LED二極管伏安特性曲線第三十六頁(yè),共六十三頁(yè),2022年,8月28日
(1)外加正向電壓小于0.9~1.1V時(shí),LED不導(dǎo)通;當(dāng)外加電壓大于正向閥值電壓時(shí),LED導(dǎo)通,同時(shí)發(fā)光。顯然,LED二極管的正向?qū)妷罕绕胀ǘO管大,具體數(shù)值與LED材料有關(guān),如表所示。表LED正向壓降與材料的關(guān)系
LED材料正向?qū)妷篤F/V砷化鎵(GaAs)1.2鎵鋁砷(GaAlAs)1.6~1.8磷化鎵(GaP)1.9~2.5磷砷化鎵(GaAsP)1.6~1.8第三十七頁(yè),共六十三頁(yè),2022年,8月28日
(2)?LED導(dǎo)通后,伏安特性曲線更陡,即LED導(dǎo)通后,內(nèi)阻更小。
(3)?LED二極管反向擊穿電壓比普通二極管低,一般在5~10V之間。
LED二極管的亮度與LED材料、結(jié)構(gòu)以及工作電流有關(guān)。一般說(shuō)來(lái),工作電流越大,亮度也越大,但亮度與工作電流的關(guān)系,因材料而異,例如GaP發(fā)光二極管,當(dāng)工作電流增加到一定數(shù)值后,電流增加,LED亮度不再增大,即出現(xiàn)亮度飽和現(xiàn)象;而GaAsP發(fā)光二極管的亮度隨電流的增大而增大,在器件因功耗增加而損壞前觀察不到飽和現(xiàn)象。
LED發(fā)光二極管工作電流在5~20mA之間,最大不超過(guò)50mA,否則會(huì)損壞。為了獲得良好的發(fā)光效果,LED平均工作電流控制在10~15mA較合理。第三十八頁(yè),共六十三頁(yè),2022年,8月28日常用驅(qū)動(dòng)電路CPU與LED接口電路(a)、(c)、(e)高電平有效;(b)、(d)低電平有效(a)(b)(c)CPULEDVDVCCRICA740612CPULEDVDVCCRICA740712(d)CPULEDVDVCCRICA740712(e)CPU2.2kRbNPNLEDVDVCCRCPU2.2kRbNPNLEDVDVCCRP1.XP1.X第三十九頁(yè),共六十三頁(yè),2022年,8月28日
其中圖(a)使用NPN三極管驅(qū)動(dòng),P1.X引腳輸出高電平時(shí),三極管飽和導(dǎo)通,限流電阻R和LED內(nèi)阻(幾歐姆~幾十歐姆)構(gòu)成了集電極等效電阻,R的大小由IC=IF=(VCC-VF-VCES)/R。其中IC為集電極電流;IF為L(zhǎng)ED工作電流;VCC為電源電壓;VCES為三極管飽和壓降,一般在0.1~0.2V之間;VF為L(zhǎng)ED導(dǎo)通電壓,一般在1.2~2.5V之間。當(dāng)VCC為5V,VF取2.0V,IF取15mA時(shí),限流電阻R大致為200Ω。當(dāng)P1.X引腳輸出低電平時(shí),三極管截止,功耗小,該電路惟一缺點(diǎn)是復(fù)位期間,P1口輸出高電平,LED發(fā)光(當(dāng)然也可以利用這一特性構(gòu)成復(fù)位指示器)。第四十頁(yè),共六十三頁(yè),2022年,8月28日LED靜態(tài)顯示接口電路第四十一頁(yè),共六十三頁(yè),2022年,8月28日LED靜態(tài)顯示接口電路第四十二頁(yè),共六十三頁(yè),2022年,8月28日
LED靜態(tài)顯示接口電路第四十三頁(yè),共六十三頁(yè),2022年,8月28日.動(dòng)態(tài)顯示方式LED顯示器由P1口輸出的LED動(dòng)態(tài)顯示接口電路第四十四頁(yè),共六十三頁(yè),2022年,8月28日在動(dòng)態(tài)顯示方式中,各顯示位筆段引腳a~dp并聯(lián)在一起,共用一個(gè)筆段代碼鎖存器(由于單片機(jī)I/O口、I/O擴(kuò)展電路,如8155、8255等大多具有輸出鎖存功能,因而往往不再需要筆段代碼鎖存器)、筆段譯碼器(采用軟件譯碼時(shí),不需要譯碼器)及驅(qū)動(dòng)器;為了控制各LED數(shù)碼管輪流工作,各顯示位的公共端與位譯碼(采用軟件譯碼時(shí),不需要)、鎖存、驅(qū)動(dòng)電路相連。這樣即可依次輸出每一顯示位的筆段代碼和位掃描碼,輪流點(diǎn)亮各LED數(shù)碼顯示管,實(shí)現(xiàn)動(dòng)態(tài)顯示目的??梢姡趧?dòng)態(tài)顯示方式中,僅需要一個(gè)筆段代碼鎖存、驅(qū)動(dòng)器和一個(gè)位掃描碼鎖存、驅(qū)動(dòng)器,且硬件開銷少。第四十五頁(yè),共六十三頁(yè),2022年,8月28日在動(dòng)態(tài)顯示方式中,各LED數(shù)碼顯示器輪流工作,為了防止產(chǎn)生閃爍現(xiàn)象,每個(gè)LED數(shù)碼管刷新頻率必須大于25Hz,即相鄰兩次點(diǎn)亮的時(shí)間間隔要小于40ms。對(duì)于具有N個(gè)LED數(shù)碼管的動(dòng)態(tài)顯示電路來(lái)說(shuō),如果刷新頻率為f,那么顯示周期為1/f,則每一位的顯示時(shí)間為1/(f×N)秒。顯然,顯示的位數(shù)越多,每一位的顯示時(shí)間越短,在驅(qū)動(dòng)電流一定的情況下,亮度越低(正因如此,在動(dòng)態(tài)LED顯示電路中,要適當(dāng)增大驅(qū)動(dòng)電流,一般取20mA~35mA,以抵消因顯示時(shí)間短造成亮度下降)。為了保證一定的亮度,實(shí)驗(yàn)表明:在驅(qū)動(dòng)電流取30mA的情況下,每位顯示時(shí)間不能小于1ms。第四十六頁(yè),共六十三頁(yè),2022年,8月28日由8255構(gòu)成的LED動(dòng)態(tài)顯示驅(qū)動(dòng)電路第四十七頁(yè),共六十三頁(yè),2022年,8月28日當(dāng)顯示位數(shù)較多,如12位以上,將顯示刷新率降到25Hz后,仍不能保證每位顯示時(shí)間大于1ms時(shí),可采用按字段掃描方式或按位分組掃描方式的動(dòng)態(tài)顯示驅(qū)動(dòng)電路。在按字段掃描方式中,不論位數(shù)多少,對(duì)于八段數(shù)碼顯示器來(lái)說(shuō),筆段引腳只有8根,即使顯示刷新頻率為50Hz,按字段掃描時(shí),每一筆段顯示時(shí)間依然為1/(50×8)=2.5ms。顯示時(shí)每次點(diǎn)亮一個(gè)筆段(即掃描信號(hào)從筆段引腳輸入),顯示信息由位選擇電路控制,顯示程序比按位掃描方式要復(fù)雜一些,這里就不給出具體電路了。第四十八頁(yè),共六十三頁(yè),2022年,8月28日按位分組掃描動(dòng)態(tài)顯示驅(qū)動(dòng)電路第四十九頁(yè),共六十三頁(yè),2022年,8月28日在按位分組掃描方式中,每次同時(shí)顯示各組中的一位。例如,在圖7-16所示電路中,將16個(gè)LED數(shù)碼顯示管分成兩組,其中A口輸出第一組(1~8位)LED數(shù)碼顯示管的筆段代碼;B口輸出第二組(9~16位)LED數(shù)碼顯示管的筆段代碼;位掃描信號(hào)由U8輸出。顯示時(shí),依次將第一組(即1~8位)筆段碼送A口,第二組(即9~16位)筆段碼送B口,然后再將掃描碼送C口,這樣一次掃描將同時(shí)顯示兩位,盡管顯示位數(shù)多了,但每一LED數(shù)碼顯示管的顯示時(shí)間并沒(méi)有縮短。顯然,在這種顯示方式中,每組需要一套筆段驅(qū)動(dòng)電路,雖硬件成本略有上升,但顯示驅(qū)動(dòng)程序與只有一組的動(dòng)態(tài)顯示電路相似,相對(duì)較簡(jiǎn)單。第五十頁(yè),共六十三頁(yè),2022年,8月28日單片機(jī)驅(qū)動(dòng)液晶顯示器lcd模塊1。Lcd分類
Lcd可分為兩種類型,一種是字符模式lcd,另一種是圖形模式lcd。其中,字符模式lcd是點(diǎn)陣型液晶顯示器,專門用來(lái)顯示字母,數(shù)字,符號(hào)。由于lcd的控制需專用的驅(qū)動(dòng)電路,一般不會(huì)單獨(dú)使用,而是將lcd面板,驅(qū)動(dòng)與控制電路組合成模塊一起使用,簡(jiǎn)稱lcm。51
目前,常用的有16*1,16*2,20*2,40*2等字符模塊。這些lcm雖然顯示數(shù)字不同,但都有相同的輸入輸出界面。Lcm模塊第五十一頁(yè),共六十三頁(yè),2022年,8月28日522.lcd模塊的引腳下面介紹常用的20*2字符模塊,外型如下圖所示,引腳如圖所示。20*2lcd每行可以顯示20個(gè)字,可顯示的行數(shù)為兩行,有16只引腳,其中數(shù)據(jù)線db0-db7與控制信號(hào)線rs,r/w,e用來(lái)連接單片機(jī),另外3只信號(hào)線vss,vdd,v0,其各腳功能如表第五十二頁(yè),共六十三頁(yè),2022年,8月28日第五十三頁(yè),共六十三頁(yè),2022年,8月28日3.寄存器選擇及顯示器地址
Lcd內(nèi)部有兩個(gè)寄存器,一個(gè)是指令寄存器IR,另一個(gè)是數(shù)據(jù)寄存器DR。IR用來(lái)存放由微控制器送來(lái)的指令代碼,如光標(biāo)歸位,清除顯示等,dr用來(lái)存放顯示的數(shù)據(jù)。顯示的次序是先把欲存放數(shù)據(jù)地址寫入ir,再將欲顯示的數(shù)據(jù)寫入dr,dr就會(huì)第五十四頁(yè),共六十三頁(yè),2022年,8月28日自動(dòng)的把數(shù)據(jù)送至相應(yīng)的ddram和cgram地址,ddram是顯示數(shù)據(jù)的存儲(chǔ)器,存放lcd的顯示數(shù)據(jù);cgram是字符產(chǎn)生器,用來(lái)存放
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中歷史 第一單元 古代中國(guó)經(jīng)濟(jì)的基本結(jié)構(gòu)與特點(diǎn) 第1課 發(fā)達(dá)的古代農(nóng)業(yè)新課說(shuō)課稿1 新人教版必修2
- Unit 4 There are seven days in a week. Lesson 19(說(shuō)課稿)-2023-2024學(xué)年人教精通版英語(yǔ)四年級(jí)下冊(cè)
- Unit 1 Teenage Life Listening and Speaking 說(shuō)課稿 -2024-2025學(xué)年高中英語(yǔ)人教版2019 必修第一冊(cè)001
- 2024年春七年級(jí)語(yǔ)文下冊(cè) 第3單元 10 老王說(shuō)課稿 新人教版
- Unit 5 Working the Land Reading and thinking 說(shuō)課稿-2024-2025學(xué)年高二英語(yǔ)人教版(2019)選擇性必修第一冊(cè)
- 農(nóng)田整改合同范本
- 作品出版合同范例
- 鄭州水泥化糞池施工方案
- 關(guān)于活動(dòng)執(zhí)行合同范本
- 加盟區(qū)域保護(hù)合同范例
- 測(cè)繪工程產(chǎn)品價(jià)格表匯編
- 拘留所教育課件02
- 語(yǔ)言和語(yǔ)言學(xué)課件
- 《工作場(chǎng)所安全使用化學(xué)品規(guī)定》
- 裝飾圖案設(shè)計(jì)-裝飾圖案的形式課件
- 2022年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)考試筆試試題及答案解析
- 護(hù)理學(xué)基礎(chǔ)教案導(dǎo)尿術(shù)catheterization
- ICU護(hù)理工作流程
- 廣東版高中信息技術(shù)教案(全套)
- 市政工程設(shè)施養(yǎng)護(hù)維修估算指標(biāo)
- 分布式光伏屋頂調(diào)查表
評(píng)論
0/150
提交評(píng)論