第十一講數碼管與定時器力天手把手教你學單片機之實戰篇三_第1頁
第十一講數碼管與定時器力天手把手教你學單片機之實戰篇三_第2頁
第十一講數碼管與定時器力天手把手教你學單片機之實戰篇三_第3頁
第十一講數碼管與定時器力天手把手教你學單片機之實戰篇三_第4頁
第十一講數碼管與定時器力天手把手教你學單片機之實戰篇三_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

手把手教你學51單片機——之MCS-51實戰篇主講:尹延輝策劃:張勇開發板:LT-Super51QQ群:31646346網址:E-Mail:實戰篇第三講——數碼管與定時器本講內容提要八段數碼管多位合一的數碼管靜態顯示與掃描顯示定時/計數器MCS51的定時/計數器溫故知新——單個按鍵與中斷輸入方式使用IO口IO口的’0’與’1’反映外部輸入的電平高低按鍵與單片機的接口按鍵電路,上拉或下拉電阻查詢方式使用單個按鍵循環語句實現查詢方式使用按鍵按鍵消抖按鍵輸入需要消抖的原因、常用方法MCS51的中斷系統中斷系統的機理、應用場合、與查詢方式相比的優勢中斷相關的寄存器IE、TCON,中斷使能位與標志位的區別外部中斷的使用:邊沿觸發與電平觸發、使用外部中斷的步驟釋疑解惑——單個按鍵與中斷填空題IO口輸入方式使用時,可以采用兩種程序設計方式:查詢方式和中斷方式,其中中斷方式可以自動響應非預期的事件,避免占用CPU運行時間。51系列有5個中斷源,5x系列增加了定時器2中斷源。外部中斷0和外部中斷1的中斷向量地址分別是0x03,0x13。MCS51中斷服務函數的格式是void函數名()interruptN,其函數名可以自定義實驗題用按鍵給流水燈調速(手冊實驗十七):編寫C語言程序,實現以下實驗現象:上電后流水燈以1S

的速度流動,每按一下S3

速度快

100mS,直到速度達到100mS時,每按一下S3速度慢100mS,直到1S速度。如此循環往復。新語新知——八段數碼管八段數碼管由八段LED構成,各LED陰極或陽極并在一起,稱為“位選線”:共陰、共陽,其余8個引腳各自引出,稱為“段選線”,各段可以分別控制。段碼表將需要的字形對應的各個段點亮,即可顯示對應的數字。一般將數

字對應的段列表做成數組的形式,稱為段碼表。AA16109854237DS?a

b

c

d

e

f

gDPDpy

Red-CA新語新知——多位合一的數碼管多位合一的數碼管將多個八段數碼管的段選線分別并在一起,位選線引出。com2afcom1com0bcom3gcdpdeagbagb

fagb

fagb

fc

e

c

e

c

e

cd

d

d

ddp

dp

dp

dpfeLED1新語新知——靜態顯示與掃描顯示靜態顯示共陽數碼管:公共端接Vcc,用單片機的一個8位IO(以P0為例)口接在段選線上,P0輸出相應段碼的反碼即可顯示相應的數字。共陰數碼管:公共端接地,用單片機的一個8位IO(以P2為例)口接在段選線上,P2輸出相應段碼即可顯示相應的數字。MCS51的IO口拉電流能力很弱,不推薦此種接法。掃描顯示將多位數碼管的共陰/共陽數碼管的公共端也用IO口加以控制,各個位輪番顯示,利用人眼的視覺暫留效應,使得看上去所有位一起亮。位選線上的電流可能會很大(例如8位數碼管一起亮時,相當于64個LED一起發光的電流),一般要用三極管或者數字芯片驅動。新語新知——靜態顯示與掃描顯示靜態顯示電路10EA/VPP3119X2

X118RESET91716121314151234567P1.0/T2P1.1/T2

EXP1.2P1.3

P1.4P1.5/MOSI

P1.6/MISOP1.7/SCK839383736353433P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD73221222324252627P2.7/A15

P2.6/A14

P2.5/A13

P2.4/A12

P2.3/A11

P2.2/A10P2.1/A9P2.0/A828PSEN29ALE/PROG30P3.0/RXD

P3.1/TXD

P3.2/INT0

P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD11GND20VCC40U2(AT/STC/SST)89(S/C)5XR210KC10.1uFVCCS5RESETRESTGNDGNDX112-40MC922pC822pVCCVCC10aA196bA8c5d4e2f3g7DPDS?Dpy

Red-CAVCC12345AA6879a

b

c

d

e

f

gDP10DS?Dpy

Red-CAGND新語新知——靜態顯示與掃描顯示掃描顯示電路10EA/VPP3119X2

X118RESET91716121314151234567P1.0/T2P1.1/T2

EXP1.2P1.3P1.4P1.5/MOSIP1.6/MISOP1.7/SCK8P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7393837363534333221222324252627P2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A828PSEN29ALE/PROG30P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD11GND20VCC40(AT/STC/SST)89(S/C)5XR210KC10.1uFVCCS5RESETRESTGNDGNDX112-40MC922pC822pU2

VCCVCCVCCA

A61109854237DS?a

b

c

d

e

f

gDPA

A61109854237DS?a

b

c

d

e

f

gDPA

A61109854237DS?a

b

c

d

e

f

gDPA

A61109854237DS?a

b

c

d

e

f

gDPQ2S8550Q3S8550Q4S8550Q5S8550R?1KR?1KR?1KR?1K新語新知——靜態顯示與掃描顯示LT-Super51學學學數數數數數數AD[0..7]學習板上的數碼管掃描顯示電路CpoyRight@力力數力www.LT430.com10EA/VPP3119X2

X118RESET917P3.2/INT0

P3.3/INT1

P3.4/T0

P3.5/T1

P3.6/WR

P3.7/RD1213141516P1.0/T2

P1.1/T2

EX

P1.2P1.3234P1.4

P1.5/MOSI

P1.6/MISO

P1.7/SCK5678P0.0/AD0

P0.1/AD1P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7P2.7/A15

P2.6/A14

P2.5/A13

P2.4/A12

P2.3/A11

P2.2/A10

P2.1/A9

P2.0/A8ALE/PROGPSEN3029P3.0/RXD

P3.1/TXD11GND20VCC40U21(AT/STC/SST)89(S/C)5XVCCVCCREST39

AD038

AD137

AD236

AD335

AD434

AD533

AD632

AD7GNDX1

12-40MC922pC822pR210KC1

104VCCS5RESETGND28

A1527

A1426

A1325

A1224

A11232221WR1E

LD0

D1

D2

D3

D4

D5

D6

D7Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q720VCC

GND10U17GNDVCCGNDACS72

1119

SD018

SD117

SD216

SD315

SD414

SD513

SD612

SD7AD0

2AD1

3AD2

4AD3

5AD4

6AD5

7AD6

8AD7

9E

LD0

D1D2

D3

D4

D5

D6

D7Q2

Q3

Q4

Q5

Q6

Q7Q0

Q120VCC

GND10U1974HC573GND

74HC573VCCGND1ACS73

1119

COM018

COM117

COM216

COM315

COM414

COM513

COM612

COM7AD0

9AD1

8AD2

7AD3

6AD4

5AD5

4AD6

3AD7

22U16A

3CS72CS731

ACS7210

ACS7374AHC02D

U40C9874AHC02DGNDVCCA

B

C5Y77GND812

CS7311109Y0

Y1OE1

Y2OE2A

Y3OE2B

Y4

Y5

Y6151413

CS72VCC16U1274HC138DA13

3A12

2/A14

4A11

1A15

631U39AA14

274AHC02Dcom2afcom1com0bcom3gcdpdeagdbcdpagdb

fc

edpagdb

fc

edpagdb

fc

edpLED2SD0SD1SD2SD3SD4SD5SD6SD7com2afcom1com0bcom3gcdpdeagdb

fc

edpagdb

fc

edpagdb

fc

edpagdb

fc

edpfeLED1SD0SD1SD2SD3SD4SD5SD6SD7COM0COM1COM2COM3COM4COM5COM6COM7新語新知——靜態顯示與掃描顯示實驗十九數碼管初級實驗實驗目的:通過編程查看數碼管各個段與單片機IO的對應關系。實驗現象:實驗板上的8位數碼管依次點亮,每位數碼管的各個段依次點亮。實驗原理:在LT-Super51學習板上8位數碼管的位選與段選分別通過1片接在英特爾總線上的74HC573驅動,因此其使用方法與蜂鳴器、繼電器類似。通過對位選與段選做移位操作,可以觀察段選信號的各個bit與數碼管各個段的對應關系,根據此對應關系可以自行編寫數碼管的段碼表。新語新知——靜態顯示與掃描顯示實驗二十軟延時方式掃描數碼管實驗實驗目的:初步掌握數碼管掃描編程的原理與方法。實驗現象:實驗板上的8位數碼管從左至右顯示“76543210”。實驗原理:利用人眼的視覺暫留效應,讓8位數碼管循環往復依次點亮(每一位數碼管在各次循環中顯示的內容要一樣),人眼看起來就像是8位數碼管一起亮。新語新知——定時/計數器定時/計數器的物理模型計數器的定義:可以計量輸入時鐘的個數,結果以二進制表示,存放在若干字節(取決于計數器的長度)的RAM中,該部分存儲單元稱為計數寄存器。精確的時鐘信號+計數器=定時器舉例子:手表計時新語新知——MCS51的定時/計數器16位定時/計數器MCS51的定時器/計數器的基本部件是兩個8位的計數器(其中TH1,TL1是T1的計數器,TH0,TL0是T0的計數器)拼裝而成。在作定時器使用時,輸入的時鐘脈沖是由晶體振蕩器的輸出經12分頻后得到的,所以定時器也可看作是對計算機機器周期的計數器(因為每個機器周期包含12個振蕩周期,故每一個機器周期定時器加1,可以把輸入的時鐘脈沖看成機器周期信號)。故其頻率為晶振頻率的1/12。如果晶振頻率為12MHZ,則定時器每接收一個輸入脈沖的時間為1us。當它用作對外部事件計數時,接相應的外部輸入引腳T0(P3.4)或T1(P3.5)。很少工作在此種模式。新語新知——MCS51的定時/計數器MCS51定時/計數器相關的寄存器MCS51定時器/計數器有四種工作方式,其工作方式的選擇及控制都由兩個特殊功能寄存器(TMOD和TCON)的內容來決定。TMOD和TCON寄存器在復位時其每一位均清零。定時器的方式寄存器TMOD特殊功能寄存器TMOD為定時器的方式控制寄存器,寄存器中每位的定義如圖所示。高4位用于定時器1,低4位用于定時器0。新語新知——MCS51的定時/計數器定時器的方式寄存器TMOD1.

M1

M0:定時器/計數器四種工作方式選擇工作方式選擇表M1M0方式說明00013

位定時器/計數器01116

位定時器/計數器102自動裝入時間常數的8

位定時器/計數器113對T0

分為兩個8

位獨立計數器;對T1

置方式3

時停止工作(無中斷重裝8

位計數器)新語新知——MCS51的定時/計數器定時器的方式寄存器TMODC/T:定時器方式或計數器方式選擇位。C/T=1時,為計數器方式;C/T=0時,為定時器方式。GATE定時器/計數器運行控制位,用來確定對應的外部中斷請求引腳(INT0,INT1)是否參與T0或T1的操作控制。當GATE=0時,只要定時器控制寄存器TCON中的TR0(或TR1)被置1時,

T0(或T1)被允許開始計數(TCON各位含義見后面敘述);當GATE=1時,不僅要TCON中的TR0或TR1置位,還需要P3口的

P3.2或P3.3引腳為高電平,才允許計數。新語新知——MCS51的定時/計數器定時器控制寄存器TCONTR0:T0的運行控制位。該位置1或清0用來實現啟動計數或停止計數。TF0:T0的溢出中斷標志位。當T0計數溢出時由硬件自動置1;在

CPU中斷處理時由硬件清為0。TR1:T1的運行控制位,功能同TR0。TF1:T1的溢出中斷標志位,功能同TF0。新語新知——MCS51的定時/計數器MCS51定時器工作于方式1當M1:M0設置為01時,定時器選定為方式1工作。在這種方式下,由TH0和TL0組成一個16位計數器。當GATE=0時,只要TCON中的TR0為1,TL0及TH0組成的16位計數器就開始計數.當GATE=1時,此時僅TR0=1仍不能使計數器計數,還需要P3.2引腳為1才能使計數器工作。由此可知,當GATE=1和TR0=1時,

TH0+TL0是否計數取決于P3.2引腳的信號,當P3.2由0變1時,開始計數;當P3.2由1變0時,停止計數,這樣就可以用來測量在

P3.2端出現的脈沖寬度。當16位計數器從0或設定的初值,加1到全“1”以后,再加1就產生溢出。這時,置TCON的TF0位為1,同時把計數器變為全“0”新語新知——MCS51的定時/計數器MCS51定時器使用步驟(工作于方式1)如果中斷方式使用定時器,則需置位中斷允許控制寄存器(IE)中的

ET0或ET1,而且要打開全局中斷(EA=1)。同時要寫好中斷服務函數。將TR0或TR1置位,啟動定時器。12初始化TMOD,設置工作模式。根據定時間隔,計算并初始化TH0與TL0的數值。計算公式如下。其中FOSC是晶振頻率(單位:Hz),T是定時間隔(單位:S)TH

0:

TL0

=

(216

-1)-

T

FOSC新語新知——MCS51的定時/計數器定時間隔計算公式的推導過程1.計算時鐘周期:MCS51的定時器的時鐘源就是CPU的工作時鐘,因此時鐘周期t。例如晶振頻率24MHz時,t=0.5*10-6S計算定時間隔經歷的時鐘周期數N。例如期望的定時間隔是10mS,則N=20000。計算TH0:TL0

的初值。對于T=10mS,FOSC=24MHz,結果為45535t

=

1

=

12FCPU

FOSC12N

=

T

/

t

=

T

FOSC12TH

0

:

TL0

=

(216

-1)-

N

=

65535

-

T

FOSC新語新知——定時器實驗十查詢方式使用定時器實驗目的:通過編寫蜂鳴器周期鳴響程序學習單片機定時器的原理,練習查詢方式使用定時器的方法。實驗現象:蜂鳴器周期性鳴響,周期為2S;同時1位流水燈以1S為周期循環移動。(同實驗七)新語新知——定時器實驗十查詢方式使用定時器(續)

實驗原理:在單片機編程中,精確的定時一般采用定時器來實現。定時器有兩種使用模式:查詢方式與中斷方式。查詢方式使用定時器主要分兩步:第一步,對定時器進行初始化,主要是設定計數器初值(就是啟動定時器時其計數器就有一個初值,然后在此初值基礎上做加1計數)、啟動定時器;第二步,在主程序中不停的查詢定時器溢出標志是否為1(定時器內的數值未達到其能容許的最大值時,該標志位為0,定時器溢出時,該標志位被置1)。51的定時器是16位的,最大計數值為65535,對于24MHz晶振最大定時長就是65535×0.5uS=32767uS,而本實驗要實現1秒定時,顯然直接使用定時器的話是實現不了的。這里我們可以定義一個變量cnt,在初始化定時器時將其賦初值0,并把定時器定時間隔設置為10mS,然后定時器每溢出一次此變量自增1,直到增至100時,我們可以知道時間已經過去了1秒,此時將cnt值歸零,并執行相應代碼。新語新知——定時器實驗十一中斷方式使用定時器實驗目的:通過編寫蜂鳴器周期鳴響程序學習單片機定時器的原理,練習中斷方式使用定時器的方法。實驗現象:蜂鳴器周期性鳴響,周期為2S;同時1位流水燈以1S為周期循環移動。(同實驗七)新語新知——定時器實驗十一中斷方式使用定時器(續)實驗原理:中斷方式使用定時器主要分兩步:第一步,對定時器進行初始化,主要是設定計數器初值(就是啟動定時器時其計數器就有一個初值,然后在此初值基礎上做加1計數)、開定時中斷和全局中斷(注意查詢方式沒有這一步),然后啟動定時器;第二步,在中斷服務函數中寫定時執行的代碼。51的定時器是16位的,最大計數值為65535

,對于24MHz

晶振最大定時長就是

65535×0.5uS=32767uS,而本實驗要實現1秒定時,顯然直接使用定時器的話是實現不了的。這里我們可以定義一個全局變量cnt(注意因為中斷服務函數與主函數不是同一個函數,故將變量定義為全局變量),在初始化定時器時將其賦初值0,并把定時器定時間隔設置為10mS,然后定時

溫馨提示

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

評論

0/150

提交評論