51單片機詳細教程_第1頁
51單片機詳細教程_第2頁
51單片機詳細教程_第3頁
51單片機詳細教程_第4頁
51單片機詳細教程_第5頁
已閱讀5頁,還剩237頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、全國高職高專規(guī)劃教材精品與示范系列,單片機應用技術(C語言版),王靜霞 主 編,本章內(nèi)容 什么是單片機 MCS-51內(nèi)部組成及信號引腳 單片機最小系統(tǒng)電路 MCS-51存儲器結(jié)構,第1章 單片機硬件系統(tǒng),什么是單片機,單片微型計算機(Single Chip Microcomputer)簡稱單片機,是指集成在一個芯片上的微型計算機,它的各種功能部件,包括CPU(Central Processing Unit)、存儲器(memory)、基本輸入/輸出(Input/Output,簡稱I/O)接口電路、定時/計數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構成一個完整的微型計算機。單片機內(nèi)部基本結(jié)構如圖1

2、.7所示。由于它的結(jié)構與指令功能都是按照工業(yè)控制要求設計的,故又稱為微控制器(Micro-Controller Unit,簡稱MCU)。,什么是單片機,單片機應用系統(tǒng),單片機應用系統(tǒng)由硬件和軟件組成,硬件是應用系統(tǒng)的基礎,軟件是在硬件的基礎上對其資源進行合理調(diào)配和使用,從而完成應用系統(tǒng)所要求的任務,二者相互依賴,缺一不可,單片機種類,目前8位單片機仍是單片機的主流機型;,生產(chǎn)廠商:,單片機的發(fā)展經(jīng)歷了由4位機到8位機,再到16位機的發(fā)展過程,美國微芯片公司:PIC16C系列、PIC17C系列、PIC1400系列, 美國英特爾公司的MCS-48和MCS-51系列, 美國摩托羅拉公司的MC68HC

3、05系列和MC68HC11系列, 美國齊洛格公司的Z8系列, 日本電氣公司的PD78系列, 美國莫斯特克公司和仙童公司合作生產(chǎn)的F8(3870)系列等。,單片機硬件結(jié)構,中央處理器CPU:8位,運算和控制功能,內(nèi)部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。,內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。,定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。,并行I/O口:4個8位的I/O口P0、P1、P2、P3。,串行口:一個全雙工串行口。,中斷控制系統(tǒng):5個中斷源(外中斷2個,定時/計數(shù)中斷2 個,串行中斷

4、1個),時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZ,復位電路,8051單片機的基本組成,中央處理器CPU:8位,運算和控制功能 內(nèi)部RAM:共256個RAM單元,用戶使用前128個單元, 用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。 內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。 定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。 并行I/O口:4個8位的I/O口P0、P1、P2、P3。 串行口:一個全雙工串行口。 中斷控制系統(tǒng):5個中斷源(外中斷2個,定時/計數(shù)中斷2個, 串行中斷1個) 時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHZ和

5、12MHZ,MCS-51單片機信號引腳簡介,P3口線的第二功能,VCC,VSS,XTAL2XTAL1,RST,P0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7,P1. 0P1.1P1.2 P1.3 P1.4 P1.5 P1.6 P1.7,P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0,ALE,P3. 0P3.1P3.2 P3.3 P3.4 P3.5 P3.6 P3.7,2、振蕩電路:XTAL1、XTAL2,3、復位引腳:RST,4、并行口:P0、P1、P2、P3,7、ALE:地址鎖存控制信號,1、電源線:VCC(+5V)、VSS(地

6、),時鐘電路與復位電路 (1)時鐘振蕩電路,時 序,關于MCS-51系列單片機的時序概念有4個,可用定時單位來說明,從小到大依次是:節(jié)拍、狀態(tài)、機器周期和指令周期,下面分別加以說明。 1)節(jié)拍與狀態(tài) 把振蕩脈沖的周期定義為節(jié)拍,用P表示,也就是晶振的振蕩頻率fosc。 2)狀態(tài) 振蕩脈沖fosc經(jīng)過二分頻后,就是單片機時鐘信號的周期,定義為狀態(tài),用S表示。一個狀態(tài)包含兩個節(jié)拍,其前半周期對應的節(jié)拍叫P1,后半周期對應的節(jié)拍叫P2。 3)機器周期 MCS-51系列單片機采用定時控制方式,有固定的機器周期。規(guī)定一個機器周期的寬度為6個狀態(tài),即12個振蕩脈沖周期,因此機器周期就是振蕩脈沖的十二分頻。

7、 小提示 當振蕩脈沖頻率為12 MHz時, 一個機器周期為1s;當振蕩脈沖頻率為6 MHz時,一個機器周期為2 s。,(2)復位電路,單片機復位條件: 必須使RST引腳持續(xù)2微秒高電平(外部時鐘12MHz),存儲器,8031 8751 8051 89C51,256B(字節(jié)),4K,(1)程序存儲器,程序存儲器,內(nèi)部,外部,(PC),程序存儲器資源分布,中斷入口地址,在單片機C語言程序設計中,用戶無需考慮程序的存放地址,編譯程序會在編譯過程中按照上述規(guī)定,自動安排程序的存放地址。 例如:C語言是從main()函數(shù)開始執(zhí)行的,編譯程序會在程序存儲器的0000H處自動存放一條轉(zhuǎn)移指令,跳轉(zhuǎn)到main

8、()函數(shù)存放的地址;中斷函數(shù)也會按照中斷類型號,自動由編譯程序安排存放在程序存儲器相應的地址中。因此,讀者只需了解程序存儲器的結(jié)構就可以了。,內(nèi)部,外部,(2)數(shù)據(jù)存儲器,數(shù)據(jù)存儲器,RAM,專用寄存器,內(nèi)部RAM存儲器,工作寄存器區(qū)選擇位RS0、RS1,注意: 一個單元地址對應有8個位地址MSBMost Significant Bit (最高有效位)LSB Least Significant Bit (最低有效位),RAM位尋址區(qū)位地址表,高128個單元,離散分布有21個特殊功能寄存器SFR。, 11個可以進行位尋址。,特別提示:對SFR只能使用直接尋址方式,書寫時可使用寄存器符號,也可用寄

9、存器單元地址。,在單片機的C語言程序設計中,可以通過關鍵字sfr來定義所有特殊功能寄存器,從而在程序中直接訪問它們,例如: sfr P1=0 x90; /特殊功能寄存器P1的地址是90H,對應P1口的8個I/O引腳在程序中就可以直接使用P1這個特殊功能寄存器了,下面語句是合法的: P1=0 x00; /將P1口的8位I/O口全部清0 C語言中,還可以通過關鍵字sbit來定義特殊功能寄存器中的可尋址位,在程序ex1_1.c中,采用了下面語句定義P1口的第0位: sbit P1_0=P10; 通常情況下,這些特殊功能寄存器已經(jīng)在頭文件reg51.h中定義了,只要在程序中包含了該頭文件,就可以直接使

10、用已定義的特殊功能寄存器。 如果沒有頭文件reg51.h,或者該文件中只定義了部分特殊功能寄存器和位,用戶也可以在程序中自行定義。,AVR,單片機,C語言,C51, 編程基礎,實例,好資料,AVR,單片機,C語言,C51, 編程基礎,實例,好資料,本章內(nèi)容 單片機開發(fā)系統(tǒng)及功能 Keil C51軟件的使用,第2章 單片機開發(fā)系統(tǒng),單片機開發(fā)系統(tǒng)及功能,單片機開發(fā)系統(tǒng)是單片機應用系統(tǒng)設計的必需工具,包括計算機、單片機在線仿真器、工具軟件、編程器等。 在線仿真功能 調(diào)試功能 1) 運行控制功能 2) 目標系統(tǒng)狀態(tài)的讀出修改功能 輔助設計功能 1) 程序設計語言 2) 程序編譯 程序固化功能,Kei

11、l C51軟件的使用,Keil C51啟動窗口,Keil C51軟件的使用,建立工程文件,Keil C51軟件的使用,選擇目標CPU,Keil C51軟件的使用,圖2.17 文本編緝窗口,Keil C51軟件的使用,增加文件到組中,Keil C51軟件的使用,選擇文件類型,Keil C51軟件的使用,目標屬性,Keil C51軟件的使用,產(chǎn)生執(zhí)行文件,Keil C51軟件的使用,選擇仿真方式,Keil C51軟件的使用,Keil C51內(nèi)建了一個仿真CPU來模擬執(zhí)行程序,該仿真CPU功能強大,可以在沒有硬件和仿真器的情況下進行程序的調(diào)試。不過,軟件模擬與真實的硬件執(zhí)行程序還是有區(qū)別的,其中最明

12、顯的就是時序,具體表現(xiàn)在程序執(zhí)行的速度和用戶使用的計算機有關,計算機性能越好,運行速度越快。,本章內(nèi)容 單片機開發(fā)系統(tǒng)及功能 Keil C51軟件的使用,第2章 單片機開發(fā)系統(tǒng),單片機開發(fā)系統(tǒng)及功能,單片機開發(fā)系統(tǒng)是單片機應用系統(tǒng)設計的必需工具,包括計算機、單片機在線仿真器、工具軟件、編程器等。 在線仿真功能 調(diào)試功能 1) 運行控制功能 2) 目標系統(tǒng)狀態(tài)的讀出修改功能 輔助設計功能 1) 程序設計語言 2) 程序編譯 程序固化功能,Keil C51軟件的使用,Keil C51啟動窗口,Keil C51軟件的使用,建立工程文件,Keil C51軟件的使用,選擇目標CPU,Keil C51軟件

13、的使用,圖2.17 文本編緝窗口,Keil C51軟件的使用,增加文件到組中,Keil C51軟件的使用,選擇文件類型,Keil C51軟件的使用,目標屬性,Keil C51軟件的使用,產(chǎn)生執(zhí)行文件,Keil C51軟件的使用,選擇仿真方式,Keil C51軟件的使用,Keil C51內(nèi)建了一個仿真CPU來模擬執(zhí)行程序,該仿真CPU功能強大,可以在沒有硬件和仿真器的情況下進行程序的調(diào)試。不過,軟件模擬與真實的硬件執(zhí)行程序還是有區(qū)別的,其中最明顯的就是時序,具體表現(xiàn)在程序執(zhí)行的速度和用戶使用的計算機有關,計算機性能越好,運行速度越快。,本章內(nèi)容 并行I/O口電路結(jié)構 認識C語言 C語言的基本語句

14、 C語言數(shù)據(jù)與運算 數(shù)組的概念,第3章 單片機并行I/O口應用,并行I/O口電路結(jié)構,MCS-51系列單片機共有四個8位并行I/O口,分別用P0、P1、P2、P3表示。 每個I/O口既可以按位操作使用單個引腳,也可以按字節(jié)操作使用8個引腳。,P0口的結(jié)構,P0口邏輯電路,當P0口作為輸出口使用時,內(nèi)部總線將數(shù)據(jù)送入鎖存器,內(nèi)部的寫脈沖加在鎖存器時鐘端CP上,鎖存數(shù)據(jù)到Q、端。經(jīng)過MUX,T2反相后正好是內(nèi)部總線的數(shù)據(jù),送到P0口引腳輸出。 當P0口作為輸入口使用時,應區(qū)分讀引腳和讀端口兩種情況,所謂讀引腳,就是讀芯片引腳的狀態(tài),這時使用下方的數(shù)據(jù)緩沖器,由“讀引腳”信號把緩沖器打開,把端口引腳

15、上的數(shù)據(jù)從緩沖器通過內(nèi)部總線讀進來。 讀端口是指通過上面的緩沖器讀鎖存器Q端的狀態(tài)。讀端口是為了適應對I/O口進行“讀-修改-寫”操作語句的需要。例如下面的C51語句: P0=P0/將P0口的低4位引腳清0輸出,P0口的結(jié)構,除了I/O功能以外,在進行單片機系統(tǒng)擴展時,P0口是作為單片機系統(tǒng)的地址/數(shù)據(jù)線使用的,一般稱為地址/數(shù)據(jù)分時復用引腳。 當輸出地址或數(shù)據(jù)時,由內(nèi)部發(fā)出控制信號,使“控制”端為高電平,打開與門,并使多路開關MUX處于內(nèi)部地址/數(shù)據(jù)線與驅(qū)動場效應管柵極反相接通狀態(tài)。此時,輸出驅(qū)動電路由于兩個FET處于反相,形成推拉式電路結(jié)構,使負載能力大為提高。輸入數(shù)據(jù)時,數(shù)據(jù)信號直接從引

16、腳通過輸入緩沖器進入內(nèi)部總線。,P0口的結(jié)構,P1口的結(jié)構,P1口邏輯電路,P1口是準雙向口,只能作為通用I/O口使用。 P1口作為輸出口使用時,無需再外接上拉電阻。 P1口作為輸入口使用時,應區(qū)分讀引腳和讀端口。讀引腳時,必須先向電路中的鎖存器寫入“1”,使輸出級的FET截止。,P1口的結(jié)構,P2口的結(jié)構,P2口邏輯電路,P2口是準雙向口,在實際應用中,可以用于為系統(tǒng)提供高8位地址,也能作為通用I/O口使用。 P2口作為通用I/O口的輸出口使用時,與P1口一樣無需再外接上拉電阻。 P2口作為通用I/O口的輸入口使用時,應區(qū)分讀引腳和讀端口。讀引腳時,必須先向鎖存器寫入“1”。,P2口的結(jié)構,

17、P3口的結(jié)構,P3口邏輯電路,P3口是準雙向口,可以作為通用I/O口使用,還可以作為第二功能使用。作為第二功能使用的端口,不能同時當作通用I/O口使用,但其他未被使用的端口仍可作為通用I/O口使用。 P3口作為通用I/O的輸出口使用時,不用外接上拉電阻。,P3口的結(jié)構,認識C語言,C語言程序以函數(shù)形式組織程序結(jié)構,C程序中的函數(shù)與其他語言中所描述的“子程序”或“過程”的概念是一樣的。,C程序基本結(jié)構,認識C語言,一個C語言源程序是由一個或若干個函數(shù)組成,每一個函數(shù)完成相對獨立的功能。每個C程序都必須有(且僅有)一個主函數(shù)main(),程序的執(zhí)行總是從主函數(shù)開始,調(diào)用其他函數(shù)后返回主函數(shù)main

18、(),不管函數(shù)的排列順序如何,最后在主函數(shù)中結(jié)束整個程序。 C語言程序中可以有預處理命令,預處理命令通常放在源程序的最前面。 C語言程序使用“;”作為語句的結(jié)束符,一條語句可以多行書寫,也可以一行書寫多條語句。,認識C語言,結(jié)構化語言 豐富的數(shù)據(jù)類型 便于維護管理 與匯編語言相比,C語言的優(yōu)點如下: 不要求編程者詳細了解單片機的指令系統(tǒng),但需了解單片機的存儲器結(jié)構; 寄存器分配、不同存儲器的尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理; 結(jié)構清晰,程序可讀性強; 編譯器提供了很多標準庫函數(shù),具有較強的數(shù)據(jù)處理能力。,C語言的基本語句,語言程序的執(zhí)行部分由語句組成。C語言提供了豐富的程序控制語句,按照結(jié)構

19、化程序設計的基本結(jié)構:順序結(jié)構、選擇結(jié)構和循環(huán)結(jié)構,組成各種復雜程序。這些語句主要包括表達式語句、復合語句、選擇語句和循環(huán)語句等。,表達式語句和復合語句,表達式語句是最基本的C語言語句。表達式語句由表達式加上分號“;”組成,其一般形式如下: 表達式; 執(zhí)行表達式語句就是計算表達式的值。 在 C 語言中有一個特殊的表達式語句,稱為空語句??照Z句中只有一個分號“;”,程序執(zhí)行空語句時需要占用一條指令的執(zhí)行時間,但是什么也不做。在C51程序中常常把空語句作為循環(huán)體,用于消耗CPU時間等待事件發(fā)生的場合。,表達式語句和復合語句,把多個語句用大括號括起來,組合在一起形成具有一定功能的模塊,這種由若干條語

20、句組合而成的語句塊稱為復合語句。在程序中應把復合語句看成是單條語句,而不是多條語句。 復合語句在程序運行時,中的各行單語句是依次順序執(zhí)行的。在C語言的函數(shù)中,函數(shù)體就是一個復合語句。,選擇語句,基本if語句的格式如下: if (表達式) 語句組; if語句執(zhí)行過程:當“表達式”的結(jié)果為“真”時,執(zhí)行其后的“語句組”,否則跳過該語句組,繼續(xù)執(zhí)行下面的語句。,選擇語句,if語句中的“表達式”通常為邏輯表達式或關系表達式,也可以是任何其他的表達式或類型數(shù)據(jù),只要表達式的值非0即為“真”。以下語句都是合法的: if(3) if(x=8) if(P3_0) 在if語句中,“表達式”必須用括號括起來。 在

21、if語句中,花括號“ ”里面的語句組如果只有一條語句,可以省略花括號。如“if (P3_0=0) P1_0=0;”語句,但是為了提高程序的可讀性和防止程序書寫錯誤,建議讀者在任何情況下,都加上花括號。,選擇語句,if-else語句的一般格式如下: if (表達式) 語句組1; else 語句組2; if-else語句執(zhí)行過程:當“表達式”的結(jié)果為“真”時,執(zhí)行其后的“語句組1”,否則執(zhí)行“語句組2”,選擇語句,if-else-if語句是由 if else 語句組成的嵌套,用來實現(xiàn)多個條件分支的選擇,其一般格式如下: if (表達式1) 語句組1; else if (表達式2) 語句組2; el

22、se if (表達式n) 語句組n; else 語句組n+1; ,選擇語句,選擇語句,多分支選擇的switch語句, 其一般形式如下: switch(表達式) case常量表達式1: 語句組1;break; case常量表達式2: 語句組2;break; case常量表達式n: 語句組n;break; default : 語句組n+1; 該語句的執(zhí)行過程是:首先計算表達式的值,并逐個與case后的常量表達式的值相比較,當表達式的值與某個常量表達式的值相等時,則執(zhí)行對應該常量表達式后的語句組,再執(zhí)行break語句,跳出switch語句的執(zhí)行,繼續(xù)執(zhí)行下一條語句。如果表達式的值與所有case后的常

23、量表達式均不相同,則執(zhí)行default后的語句組。,while語句用來實現(xiàn)“當型”循環(huán), 執(zhí)行過程:首先判斷表達式, 當表達式的值為真(非0)時, 反復執(zhí)行循環(huán)體。為假(0)時 執(zhí)行循環(huán)體外面的語句。,循環(huán)體,格式:while(循環(huán)繼續(xù)的條件表達式) 語句組; ,花括號不能丟掉!,請問:下述程序?qū)崿F(xiàn)了什么功能? main( ) int i,sum=0; while(i=10) sum=sum+i; i+; ,循環(huán)語句,do-while語句用來實現(xiàn)“直到型”循環(huán) 執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體, 然后判斷條件表達式,當表達式的值 為真(非0)時,返回執(zhí)行循環(huán)體直 到條件表達式為假(0)為止。,

24、絕對不能少分號!,循環(huán)體,格式:do 循環(huán)體語句組; while(循環(huán)繼續(xù)條件);,花括號不能丟掉!,請問:下述程序?qū)崿F(xiàn)了什么功能? main( ) int i,sum=0; do sum=sum+i; i+; while(i=100); ,循環(huán)語句,總循環(huán)次數(shù)已確定的情況下,可采用for語句形式為: for語句的一般形式: for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值 ) 循環(huán)體語句組; ,分隔符為分號,請問:下述程序?qū)崿F(xiàn)了什么功能? main( ) int i,y=0; for(i=1;i=10;i+) y=y+i; ,循環(huán)語句,for語句循環(huán)執(zhí)行過程,for(循環(huán)變量賦初值;循環(huán)繼

25、續(xù)條件;循環(huán)變量增值 ) 循環(huán)體語句組; ,分隔符為分號,C語言數(shù)據(jù)與運算,1. 賦值運算符 2. 算術運算符和算術表達式 3. 關系運算符和關系表達 4. 邏輯運算符和邏輯表達式,賦值運算符,賦值語句的作用是把某個常量或變量或表達式的值賦值給另一個變量。 符號為=。這里并不是等于的意思,只是賦值,等于用=表示。 賦值語句左邊必須是變量或寄存器,且必須先定義。 常量不能出現(xiàn)左邊。,賦值運算符和賦值表達式,簡單的賦值運算符: 復合的賦值運算符,=,+ =、-=、*= 、%=、/=,i + = 2 等價于 i = i + 2 a * = b + 5 等價于 a = a * (b + 5) x% =

26、 3 等價于 x = x%3,算術運算符,(加法運算) (減法運算) * (乘法運算符) (除法運算符) % (求余運算符,或稱模運算符)如: 4 % 20 + (變量自加1) - (變量自減1),注 意 兩個整數(shù)相除結(jié)果為整數(shù),如8/5的結(jié)果為1,舍去小數(shù)部分。 如果參加運算的兩個數(shù)中有一個數(shù)為實數(shù),則結(jié)果是實型。 求余運算要求%兩側(cè)都是整型數(shù)據(jù)。,自增、自減運算,實戰(zhàn)演練:請說明程序運行完后x,y,z,m,n的值分別是多少? main() int x=6,y,z,m,n; y=+x; z=x-; m=y/z; n=y%z; ,自增運算符(+)和自減運算符(-): (1)前置運算變量、變量

27、即先增減、后運算。 (2)后置運算變量、變量 即先運算、后增減。,關系運算符,關系運算符 優(yōu)先級, =,= !=,低,高,關系表達式,用關系運算符將兩個表達式(可以是算術表達式、關系表達式、賦值表達式或邏輯表達式)連接起來的式子,稱為關系表達式。 關系表達式的值為邏輯值“真”或“假”,以1代表“真”,以0代表“假”。 例如: (1)關系表達式“8=4”的值為 ,表達式的值為 。 (2) 關系表達式“50”的值為 ,表達式的值為 。,邏輯運算符及其優(yōu)先級,邏輯運算符 優(yōu)先級 ! (邏輯非) 等同于 i|=0 x0f; 主要用途:將1個數(shù)的某(些)位置1,其余各位不變,位運算,異或操作 按位異或操

28、作符: 格式:xy 規(guī)則:對應位相同時為0,不同時為1 例如, i=i0 x0f; 等同于 i=0 x0f; 主要用途:使1個數(shù)的某(些)位翻轉(zhuǎn)(即原來為1的位變?yōu)?,為0的變?yōu)?),其余各位不變。,位運算,按位取反操作 按位取反操作符: 格式:x 規(guī)則:各位翻轉(zhuǎn),即原來為1的位變成0,原來為0的位變成1 例如, i=i; 主要用途:間接地構造一個數(shù),以增強程序的可移植性。,左移運算符“”的功能,是把“”左邊的操作數(shù)的各二進制位全部右移若干位,移動的位數(shù)由“”右邊的常數(shù)指定。進行右移運算時,如果是無符號數(shù),則總是在其左端補“0”,位運算,練習,1 .若x = 10, 則!X的值為真或假? 2.

29、 若a = 3, b = 2, 則if(a unsigned char num7; 說明: 數(shù)組名見名知意;數(shù)組名中存放的是一個地址常量,它代表整個數(shù)組的首地址。同一數(shù)組中的所有元素,按其下標的順序占用一段連續(xù)的存儲單元。 方括弧而非圓括??; 常量表達式:可以是常量或符號常量;表示數(shù)組元素的個數(shù)(也稱數(shù)組長度)。不允許對數(shù)組大小作動態(tài)定義。 數(shù)組元素下標從0開始。array0,array1,array9;,遵循標識符命名規(guī)則,數(shù)組元素的表達形式: 數(shù)組名下標表達式 Array4 = 100; array8 = 34; array10 = 56; 注意:數(shù)組下標不能越界! 一個數(shù)組元素具有和相同

30、類型單個變量一樣的屬性,可以對它賦值和參與各種運算。,一維數(shù)組的引用,一般格式: 數(shù)據(jù)類型 數(shù)組名常量表達式初值表 1.定義時賦初值;int score5=1,2,3,4,5; 2.給一部分元素賦值;int score5=1,2; 3.使所有元素為0;int score5=0; 4.給全部數(shù)組元素賦初值時,可以不指定數(shù)組長度; int score=1,2,3,4,5;,一維數(shù)組的初始化,本章內(nèi)容 定時/計數(shù)器 C語言的函數(shù) 中斷系統(tǒng),第4章 定時與中斷系統(tǒng),定時/計數(shù)器,8051單片機內(nèi)部有兩個16位的可編程定時/計數(shù)器,稱為T0(T0)和T1(T1),定時/計數(shù)器,8051定時器/計數(shù)器邏輯

31、結(jié)構,定時/計數(shù)器,設置定時/計數(shù)器工作方式 通過對方式寄存器TMOD的設置,確定相應的定時/計數(shù)器是定時功能還是計數(shù)功能,工作方式以及啟動方法。 定時/計數(shù)器工作方式有四種:方式0、方式1、方式2和方式3。 定時/計數(shù)器啟動方式有兩種:軟件啟動和硬軟件共同啟動。除了從控制寄存器TCON發(fā)出的軟件啟動信號外,還有外部啟動信號引腳,這兩個引腳也是單片機的外部中斷輸入引腳。,定時/計數(shù)器,設置計數(shù)初值 T0、T1是16位加法計數(shù)器,分別由兩個8位專用寄存器組成,T0由TH0和TL0組成,T1由TH1和TL1組成。TL0、TL1、TH0、TH1的訪問地址依次為8AH8DH,每個寄存器均可被單獨訪問,

32、因此可以被設置為8位、13位或16位計數(shù)器使用。 在計數(shù)器允許的計數(shù)范圍內(nèi),計數(shù)器可以從任何值開始計數(shù),對于加1計數(shù)器,當計到最大值時(對于8位計數(shù)器,當計數(shù)值從255再加1時,計數(shù)值變?yōu)?),產(chǎn)生溢出。 定時/計數(shù)器允許用戶編程設定開始計數(shù)的數(shù)值,稱為賦初值。初值不同,則計數(shù)器產(chǎn)生溢出時,計數(shù)個數(shù)也不同。例如:對于8位計數(shù)器,當初值設為100時,再加1計數(shù)156個,計數(shù)器就產(chǎn)生溢出;當初值設為200時,再加1計數(shù)56個,計數(shù)器產(chǎn)生溢出。,定時/計數(shù)器,啟動定時/計數(shù)器 根據(jù)設置的定時/計數(shù)器啟動方式,啟動定時/計數(shù)器。如果采用軟件啟動,則需要把控制寄存器中的TR0或TR1置1;如果采用硬軟共

33、同啟動方式,不僅需要把控制寄存器中的TR0或TR1置1,還需要相應外部啟動信號為高電平。,定時器的方式寄存器TMOD,作用:TMOD用來確定兩個定時器的工作方式。低半字節(jié)設置定時器T0,高半字節(jié)設置定時器T1。 字節(jié)地址:89H,不可以位尋址。 格式: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 定時器1 定時器0,各位的含義: C/T:功能選擇位。0為定時器方式;1為計數(shù)器方式。 M1,M0:方式選擇位??梢赃x擇為四種工作方式0、1、2、3之1。 四種工作方式的區(qū)別后面講解。,GATE:門控位。 0:只要軟件控制位TR0或TR1

34、置1即可啟動定時器開始工作; 1:只有INT0或INT1引腳為高電平,且TR0或TR1置1時,才能啟動相應的定時器開始工作。,返回,TF0,TH0,TL0,12 分頻,OSC,中斷,高8位,低5位,控制,+,T0(P3.4),TR0,GATE,INT0 (P3.2),C/T=0,C/T=1,例如:設定時器T0為定時工作方式,要求用軟件啟動 定時器T0工作,按方式1工作;定時器T1為計數(shù) 工作方式,要求軟件啟動,工作方式為方式2。 則根據(jù)TMOD各位的定義可知,其控制字為:,即控制字為61H,其指令形式為: MOV TMOD,#61H,定時器的控制寄存器TCON,作用:TMOD用來控制兩個定時器

35、的啟動、停止,表明定時器的溢出、中斷情況。 字節(jié)地址:88H,可以位尋址。系統(tǒng)復位時,所有位均清零。 格式: D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,各位的含義:TCON中的低4位與中斷有關,在中斷章節(jié)中討論。 TF1 (8FH):定時器1溢出標志。計滿后自動置1。 TR1 (8EH):定時器1運行控制位。由軟件清零關閉定時器1。 當GATE=0時,TR1 軟件置1即啟動定時器1 。(SETB TR1) 當GATE=1時,且INT1為高電平時,TR1置1啟動定時器1 ;,定時器的四種工作方式,方式的選擇:根據(jù)M1,M0來選

36、擇。 00:方式0 01:方式1 10: 方式2 11: 方式3,主要特點: 方式0:13位定時器。 TH0的8位+TL0的低5位 方式1:16位定時器。 TH0的8位+TL0的8位 方式2:能重復置初始值的8位定時器 。 TL0和TH0必須賦相同的值。 方式3:只適用于定時器0,T0被拆成兩個獨立的8位定時器TL0,TH0。 其中:TL0與方式0、1相同,可定時或計數(shù)。用定時器T0的 GATE、C/T、TR0、TF0、T0、和INT0控制。 TH0只可用作簡單的內(nèi)部定時功能。占用T1的控制位TF1、TR1和INT1,啟動關閉僅受TR1控制。,定時器的方式0、1示意圖,返回,TF0,TH0,T

37、L0,12 分頻,OSC,中斷,高8位,8位或低5位,控制,+,T0(P3.4),TR0,GATE,INT0 (P3.2),C/T=0,C/T=1,定時器的方式2示意圖,TH0,8位,0,溢出,定時器的初始值的計算,對于不同的工作方式,計數(shù)器位數(shù)不同,故最大計數(shù)值M也不同: 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定時器0分為2個8位計數(shù)器,每個M均為256。 因為定時/計數(shù)器是作加1計數(shù),并在計滿溢出時產(chǎn)生中斷,因此初值X的計算如下: X = M 計數(shù)值 計算出來的結(jié)果X轉(zhuǎn)換為16進制數(shù)后分別寫入TL0(TL1)、TH0(TH1)。 注

38、意!方式0時初始值寫入時,對于TL不用的高3位應填入0!,用T1、工作方式0實現(xiàn)1秒延時函數(shù),晶振頻率為12MHz。 方式0采用13位計數(shù)器,其最大定時時間為:81921s = 8.192ms,因此,定時時間不可能象任務7中一樣選擇50ms,可選擇定時時間為5ms,再循環(huán)200次。 定時時間為5ms,則計數(shù)值為5ms/1s =5000,T1的初值為: X = M 計數(shù)值= 8192 5000 = 3192 = C78H = 0110001111000B 13位計數(shù)器中TL1的高3位未用,填寫0,TH1占高8位,所以,X的實際填寫值應為: X = 0110001100011000B = 6318

39、H,舉 例1,用T1方式0實現(xiàn)任務7中1秒延時函數(shù)如下: void delay1s() unsigned char i; TMOD=0 x00; / 置T1為工作方式0 for(i=0;i0 xc8;i+) / 設置200次循環(huán)次數(shù) TH1=0 x63;/ 設置定時器初值 TL1=0 x18; TR1=1; / 啟動T1 while(!TF1); / 查詢計數(shù)是否溢出,即定時5ms時間到,TF1=1 TF1=0; / 5ms定時時間到,將定時器溢出標志位TF1清零 ,舉 例1,用T1、工作方式2實現(xiàn)1秒延時,晶振頻率為12MHz。 因工作方式2是8位計數(shù)器,其最大定時時間為:2561s = 2

40、56s,為實現(xiàn)1秒延時,可選擇定時時間為250s,再循環(huán)4000次。定時時間選定后,可確定計數(shù)值為250,則T1的初值為:X = M 計數(shù)值=256 250 = 6 = 6H。采用T1方式2工作,因此,TMOD =0 x20。,舉 例2,用定時器工作方式2實現(xiàn)的1秒延時函數(shù)如下: void delay1s() unsigned int i;/ i取值范圍為04000,因此不能定義成unsigned char TMOD=0 x20; / 設置T1為方式2 TH1=6;/ 設置定時器初值,放在for循環(huán)之外 TL1=6; for(i=0;i4000;i+) / 設置4000次循環(huán)次數(shù) TR1=1;

41、 / 啟動T1 while(!TF1); / 查詢計數(shù)是否溢出,即定時250s時間到,TF1=1 TF1=0; / 250s定時時間到,將定時器溢出標志位TF1清零 ,舉 例2,在C語言程序中,子程序的作用是由函數(shù)來實現(xiàn)的,函數(shù)是C語言的基本組成模塊,一個C語言程序就是由若干個模塊化的函數(shù)組成的。 C程序都是由一個主函數(shù)main( )和若干個子函數(shù)構成,有且只有一個主函數(shù),程序由主函數(shù)開始執(zhí)行,主函數(shù)根據(jù)需要來調(diào)用其他函數(shù),其它函數(shù)可以有多個。,C語言的函數(shù),1.標準庫函數(shù) 標準庫函數(shù)是由C51的編譯器提供的,用戶不必定義這些函數(shù),可以直接調(diào)用。KEIL C51編譯器提供了100多個庫函數(shù)供我

42、們使用。常用的C51庫函數(shù)包括一般I/O口函數(shù)、訪問SFR地址函數(shù)等,在C51編譯環(huán)境中,以頭文件的形式給出。 2.用戶自定義函數(shù) 用戶自定義函數(shù)是用戶根據(jù)需要自行編寫的函數(shù),它必須先定義之后才能被調(diào)用。,函數(shù)分類和定義,函數(shù)定義的一般形式是: 函數(shù)類型 函數(shù)名(形式參數(shù)表) 形式參數(shù)說明 局部變量定義 函數(shù)體語句 其中,“函數(shù)類型”說明了自定義函數(shù)返回值的類型。 “函數(shù)名”是自定義函數(shù)的名字。 “形式參數(shù)表”給出函數(shù)被調(diào)用時傳遞數(shù)據(jù)的形式參數(shù),形式參數(shù)的類型必須要加以說明。ANSI C標準允許在形式參數(shù)表中對形式參數(shù)的類型進行說明。如果定義的是無參數(shù)函數(shù),可以沒有形式參數(shù)表,但是圓括號不能省

43、略。 “局部變量定義”是對在函數(shù)內(nèi)部使用的局部變量進行定義。 “函數(shù)體語句”是為完成函數(shù)的特定功能而設置的語句。,函數(shù)分類和定義,函數(shù)調(diào)用就是在一個函數(shù)體中引用另外一個已經(jīng)定義的函數(shù),前者稱為主調(diào)用函數(shù),后者稱為被調(diào)用函數(shù),函數(shù)調(diào)用的一般格式為: 函數(shù)名(實際參數(shù)列表); 對于有參數(shù)類型的函數(shù),若實際參數(shù)列表中有多個實參,則各參數(shù)之間用逗號隔開。實參與形參順序?qū)?,個數(shù)應相等,類型應一致。,函數(shù)調(diào)用,在一個函數(shù)中調(diào)用另一個函數(shù)需要具備如下條件: (1)被調(diào)用函數(shù)必須是已經(jīng)存在的函數(shù)(庫函數(shù)或者用戶自己已經(jīng)定義的函數(shù)。 如果函數(shù)定義在調(diào)用之后,那么必須在調(diào)用之前(一般在程序頭部)對函數(shù)進行聲明。

44、 (2)如果程序使用了庫函數(shù),則要在程序的開頭用include預處理命令將調(diào)用函數(shù)所需要的信息包含在本文件中。如果不是在本文件中定義的函數(shù),那么在程序開始要用extern修飾符進行函數(shù)原型說明。,函數(shù)調(diào)用,中斷是指通過硬件來改變CPU的運行方向。計算機在執(zhí)行程序的過程中,外部設備向CPU發(fā)出中斷請求信號,要求CPU暫時中斷當前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應的處理程序,待處理程序執(zhí)行完畢后,再繼續(xù)執(zhí)行原來被中斷的程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為“中斷”。,什么是中斷,(1)中斷服務程序:CPU響應中斷后,轉(zhuǎn)去執(zhí)行相應的處理程序,該處理程序通常稱之為中斷服務程序。 (2)主

45、程序:原來正常運行的程序稱為主程序。 (3)斷點:主程序被斷開的位置(或地址)稱為斷點。 (4)中斷源:引起中斷的原因,或能發(fā)出中斷申請的來源,稱為中斷源。 (5)中斷請求:中斷源要求服務的請求稱為中斷請求(或中斷申請。,中斷基本概念,同步工作 異常處理 實時處理,中斷特點,中斷系統(tǒng)的結(jié)構,MCS-51中斷系統(tǒng)內(nèi)部結(jié)構示意圖,MCS-51系列單片機中斷源,中斷標志,中斷的開放和禁止,MCS-51系列單片機的5個中斷源都是可屏蔽中斷,中斷系統(tǒng)內(nèi)部設有一個專用寄存器IE,用于控制CPU對各中斷源的開放或屏蔽。IE寄存器格式如下:,中斷的開放和禁止,中斷優(yōu)先級,MCS-51系列單片機有兩個中斷優(yōu)先級

46、:高優(yōu)先級和低優(yōu)先級。 每個中斷源都可以通過設置中斷優(yōu)先級寄存器IP確定為高優(yōu)先級中斷或低優(yōu)先級中斷,實現(xiàn)二級嵌套。同一優(yōu)先級別的中斷源可能不止一個,因此,也需要進行優(yōu)先權排隊。同一優(yōu)先級別的中斷源采用自然優(yōu)先級。 中斷優(yōu)先級寄存器IP,用于鎖存各中斷源優(yōu)先級控制位。IP中的每一位均可由軟件來置1或清0,1表示高優(yōu)先級,0表示低優(yōu)先級。,中斷優(yōu)先級,中斷處理過程,中斷響應 中斷響應是指CPU對中斷源中斷請求的響應。CPU并非任何時刻都能響應中斷請求,而是在滿足所有中斷響應條件、且不存在任何一種中斷阻斷情況時才會響應。 CPU響應中斷的條件有:有中斷源發(fā)出中斷請求;中斷總允許位EA 置 1;申請

47、中斷的中斷源允許位置1。 CPU響應中斷的阻斷情況有:CPU正在響應同級或更高優(yōu)先級的中斷;當前指令未執(zhí)行完;正在執(zhí)行中斷返回或訪問寄存器IE和IP。,中斷處理過程,中斷響應過程就是自動調(diào)用并執(zhí)行中斷函數(shù)的過程。 C51編譯器支持在C源程序中直接以函數(shù)形式編寫中斷服務程序。常用的中斷函數(shù)定義語法如下: void 函數(shù)名() interrupt n 其中n為中斷類型號,C51編譯器允許031個中斷,n取值范圍031。下面給出了8051控制器所提供的5個中斷源所對應的中斷類型號和中斷服務程序入口地址: 中斷源 n 入口地址 外部中斷0 00003H 定時/計數(shù)器0 1000BH 外部中斷1 200

48、13H 定時/計數(shù)器1 3 001BH 串行口 4 0023H,中斷處理過程,中斷響應時間 中斷響應時間是指從中斷請求標志位置位到CPU開始執(zhí)行中斷服務程序的第一條語句所需要的時間。 1)中斷請求不被阻斷的情況 外部中斷響應時間至少需要3個機器周期,這是最短的中斷響應時間。一般來說,若系統(tǒng)中只有一個中斷源,則中斷響應時間為3 8個機器周期。 2)中斷請求被阻斷的情況 如果系統(tǒng)不滿足所有中斷響應條件、或者存在任何一種中斷阻斷情況,那么中斷請求將被阻斷,中斷響應時間將會延長。,本章內(nèi)容 單片機與LED數(shù)碼管接口 LED大屏幕顯示器和接口 字符LCD 液晶顯示和接口 單片機與鍵盤接口,第5章 顯示和

49、鍵盤接口技術,單片機與LED數(shù)碼管接口,LED數(shù)碼管結(jié)構及原理,單片機與LED數(shù)碼管接口,LED數(shù)碼管結(jié)構及原理,單片機與LED數(shù)碼管接口,LED數(shù)碼管字型編碼,若將數(shù)值0送至單片機的P1口,數(shù)碼管上不會顯示數(shù)字“0”。顯然,要使數(shù)碼管顯示出數(shù)字或字符,直接將相應的數(shù)字或字符送至數(shù)碼管的段控制端是不行的,必須使段控制端輸出相應的字形編碼。 將單片機P1口的P1.0、P1.1 P1.7八個引腳依次與數(shù)碼管的a、bf、dp八個段控制引腳相連接。如果使用的是共陽極數(shù)碼管,COM端接+5V,要顯示數(shù)字“0”,則數(shù)碼管的a、b、c、d、e、f六個段應點亮,其它段熄滅,需向P1口傳送數(shù)據(jù)11000000B

50、(C0H),該數(shù)據(jù)就是與字符“0”相對應的共陽極字型編碼。若共陰極的數(shù)碼管COM端接地,要顯示數(shù)字“1”,則數(shù)碼管的b、c兩段點亮,其他段熄滅,需向P1口傳送數(shù)據(jù)00000110(06H),這就是字符“1”的共陰極字型碼了。,單片機與LED數(shù)碼管接口,LED靜態(tài)顯示,靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應的發(fā)光二極管恒定導通或恒定截止。這種顯示方式的各位數(shù)碼管的公共端恒定接地(共陰極)或+5V(共陽極)。每個數(shù)碼管的八個段控制引腳分別與一個八位I/O端口相連。只要I/O端口有顯示字型碼輸出,數(shù)碼管就顯示給定字符,并保持不變,直到I/O口輸出新的段碼。,單片機與LED數(shù)碼管接口,LED靜態(tài)顯示,

51、單片機與LED數(shù)碼管接口,LED動態(tài)顯示,單片機與LED數(shù)碼管接口,LED動態(tài)顯示,動態(tài)顯示是一種按位輪流點亮各位數(shù)碼管的顯示方式,即在某一時段,只讓其中一位數(shù)碼管“位選端”有效,并送出相應的字型顯示編碼。此時,其它位的數(shù)碼管因“位選端”無效而都處于熄滅狀態(tài);下一時段按順序選通另外一位數(shù)碼管,并送出相應的字型顯示編碼,依此規(guī)律循環(huán)下去,即可使各位數(shù)碼管分別間斷地顯示出相應的字符。這一過程稱為動態(tài)掃描顯示。,LED大屏幕顯示器和接口,LED大屏幕顯示器結(jié)構及原理,LED點陣顯示器是把很多LED發(fā)光二極管按矩陣方式排列在一起,通過對每個LED進行發(fā)光控制,完成各種字符或圖形的顯示。最常見的LED點

52、陣顯示模塊有57(5列7行),79(7列9行),88(8列8行)結(jié)構。 LED點陣由一個一個的點(LED發(fā)光二極管)組成,總點數(shù)為行數(shù)與列數(shù)之積,引腳數(shù)為行數(shù)與列數(shù)之和。,LED大屏幕顯示器和接口,LED大屏幕顯示器結(jié)構及原理,LED大屏幕顯示器和接口,LED大屏幕顯示器結(jié)構及原理,“大”字顯示字型碼示意圖,LED大屏幕顯示器和接口,LED大屏幕顯示器結(jié)構及原理,顯示字符“大”的過程如下:先給第一行送高電平(行高電平有效),同時給8列送11110111(列低電平有效);然后給第二行送高電平,同時給8列送11110111,最后給第八行送高電平,同時給8列送11111111。每行點亮延時時間為1m

53、s,第八行結(jié)束后再從第一行開始循環(huán)顯示。利用視覺駐留現(xiàn)象,人們看到的就是一個穩(wěn)定的圖形。,LED大屏幕顯示器和接口,LED大屏幕顯示器接口,LED大屏幕顯示器和接口,LED大屏幕顯示器擴展接口,字符LCD 液晶顯示和接口,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模塊,Vss: +5V電源管腳(Vcc) VDD: 地管腳(GND) Vo: 液晶顯示驅(qū)動電源(0V5V),字符LCD 液晶顯示和接口,1,2,3,4,5,6,7,8,9,10,11

54、,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模塊,DB0DB7:數(shù)據(jù)線,可以用8位連接,也可以只用高4位連接,節(jié)約單片機資源,本實驗中采用的是八位連接方法。,字符LCD 液晶顯示和接口,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模塊,A:背光控制正電源 K:背光控制地,字符LCD 液晶顯示和接口,1,2,3,4,5,6,7,8,9,10,

55、11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模塊,單片機與LCD模塊之間有四種基本操作: 寫命令 讀狀態(tài) 寫顯示數(shù)據(jù) 讀顯示數(shù)據(jù),字符LCD 液晶顯示和接口,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,RS,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模塊,字符LCD 液晶顯示和接口,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,VSS,VDD,VO,R

56、S,R/W,E,DB0,DB1,A,DB3,DB2,DB5,DB4,DB7,DB6,K,LCD模塊,RS:數(shù)據(jù)和指令選擇控制端,RS=0:命令/狀態(tài);RS=1:數(shù)據(jù) R/W:讀寫控制線,R/W=0:寫操作;R/W=1:讀操作 E:數(shù)據(jù)讀寫操作控制位,E線向LCD模塊發(fā)送一個脈沖,LCD模塊與單片機之間將進行一次數(shù)據(jù)交換,字符LCD 液晶顯示和接口,讀狀態(tài)操作,狀態(tài)字的最高位的BF為忙標志位,1表示LCD正在忙,0表示不忙。 通過判斷最高位BF的0、1狀態(tài),就可以知道LCD當前是否處于忙狀態(tài),如果LCD一直處于忙狀態(tài),則繼續(xù)查詢等待,否則進行下面的操作。查詢忙狀態(tài)程序段如下: do i=lcd_

57、r_start(); / 調(diào)用讀狀態(tài)函數(shù),讀取LCD狀態(tài)字 i / LCD忙,繼續(xù)查詢,否則退出循環(huán),字符LCD 液晶顯示和接口,寫命令操作,LCD上電時,都必須按照一定的時序?qū)CD進行初始化操作,主要任務是設置LCD的工作方式、顯示狀態(tài)、清屏、輸入方式、光標位置等。,字符LCD 液晶顯示和接口,寫命令操作,void lcd_w_cmd(unsigned char com) unsigned char i; do / 查LCD忙操作 i=lcd_r_start(); / 調(diào)用讀狀態(tài)字函數(shù) i=i ,字符LCD 液晶顯示和接口,寫命令操作,字符LCD 液晶顯示和接口,初始化操作,字符LCD 液晶顯示和接口,寫數(shù)據(jù)操作,光標位置與相應命令字,注:表中命令字以十六進制形式給出,該命令字就是與LCD顯示位置相對應的DDRAM地址。,字符LCD 液晶顯示和接口,void lcd_w_dat(unsigned char dat) unsigned char i; do / 查忙操作 i=lcd_r_start();/ 調(diào)用讀狀態(tài)字函數(shù) i=i ,單片機與鍵盤接口,單片機與鍵盤接口,按鍵按照結(jié)構原理可分為兩類,一類是觸點式開關按鍵,如機械式

溫馨提示

  • 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

提交評論