單片機(jī)第7章--秒表計(jì)數(shù)器設(shè)計(jì)課件_第1頁
單片機(jī)第7章--秒表計(jì)數(shù)器設(shè)計(jì)課件_第2頁
單片機(jī)第7章--秒表計(jì)數(shù)器設(shè)計(jì)課件_第3頁
單片機(jī)第7章--秒表計(jì)數(shù)器設(shè)計(jì)課件_第4頁
單片機(jī)第7章--秒表計(jì)數(shù)器設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第7章 秒表計(jì)數(shù)器設(shè)計(jì)數(shù)碼管動(dòng)態(tài)顯示7.1 功能要求7.2 任務(wù)分析 7.3 LED動(dòng)態(tài)顯示工作原理7.3.1 采用動(dòng)態(tài)顯示的原因7.3.2動(dòng)態(tài)顯示的工作原理 7.4 數(shù)碼管動(dòng)態(tài)顯示程序設(shè)計(jì)方法7.4.1 顯示班機(jī)學(xué)號(hào)的雙位數(shù)7.4.2 秒表計(jì)數(shù)器顯示0059 7.1功能要求 一基本要求動(dòng)態(tài)數(shù)碼計(jì)數(shù)顯示器能顯示本人完整的雙位學(xué)號(hào)。二發(fā)揮部分每隔1秒,在二個(gè)LED數(shù)碼管上進(jìn)行加“1”計(jì)數(shù),顯示0059,實(shí)現(xiàn)秒鐘計(jì)數(shù),為設(shè)計(jì)時(shí)鐘電路打下基礎(chǔ)。 回目錄 7.2 任務(wù)分析 要完成此任務(wù),主要需解決如下四方面的問題:為什么要采用數(shù)碼管動(dòng)態(tài)顯示LED動(dòng)態(tài)顯示的工作原理;LED數(shù)碼管與單片機(jī)動(dòng)態(tài)顯示接口電路

2、的設(shè)計(jì)方法;LED數(shù)碼管動(dòng)態(tài)顯示程序的設(shè)計(jì)方法。 回目錄7.3.1 采用數(shù)碼管動(dòng)態(tài)顯示的原因 從上一章的數(shù)碼管靜態(tài)顯示工作原理可知,要使數(shù)碼管能正常的顯示數(shù)字,必須根據(jù)數(shù)碼管的類型(共陰或共陽)給數(shù)碼管的各段(a、b、c、d、e、f、g與一個(gè)小數(shù)點(diǎn)dp)輸入和顯示數(shù)字相對(duì)應(yīng)的高低電平,既進(jìn)行段控制;同時(shí)還要給數(shù)碼管公共端所接的三極管輸入相應(yīng)的高低電平,使其導(dǎo)通給數(shù)碼管供電,控制整個(gè)數(shù)碼管的亮滅,既進(jìn)行位控制。因此數(shù)碼管的有效控制包括二個(gè)方面,其一是控制整個(gè)數(shù)碼管的亮滅,既位控制,需要一位單片機(jī)I/O端口;另一方面控制數(shù)碼管具體顯示什么數(shù)據(jù),既段控制,需要八位單片機(jī)I/O端口。7.3 LED動(dòng)態(tài)

3、顯示工作原理 回目錄7.3.1 采用數(shù)碼管動(dòng)態(tài)顯示的原因 本項(xiàng)目中顯示的數(shù)據(jù)為雙位學(xué)號(hào),因此必須采用二個(gè)數(shù)碼管分別顯示學(xué)號(hào)的個(gè)位和十位,如果依然采用靜態(tài)顯示的方案,分別對(duì)個(gè)位和十位的數(shù)碼管單獨(dú)采用位控制和段控制,進(jìn)行位控制需要二位單片機(jī)I/O端口,而段控制則需要十六位單片機(jī)I/O端口。而在很多設(shè)備中,顯示的數(shù)據(jù)可能達(dá)到4位、6位、8位甚至更多,如果依然采用靜態(tài)顯示的方法,所需的I/O端口可達(dá)到幾十位之多,而在單片機(jī)中,I/O端口的數(shù)量是非常有限的,如89C51單片機(jī)的I/O端口只有32位(P0、P1、P2、P3),而89C2051才16位I/O端口(P1、P3),而且大部分的I/O端口還具有第

4、二功能,如89C51中的P3、P2、P0。因此,如果采用靜態(tài)顯示的方案,將占有太多的I/O資源,甚至根本無法實(shí)現(xiàn),必須采用其它的顯示方案,既數(shù)碼管的動(dòng)態(tài)顯示。 回目錄7.3.2 LED數(shù)碼管動(dòng)態(tài)顯示的工作原理 上面在討論數(shù)碼管的靜態(tài)顯示問題時(shí),知道靜態(tài)顯示的最大缺點(diǎn)是占用太多的I/O端口,因此我們必須設(shè)法減少I/O端口的占用。如果我們?cè)诙辔粩?shù)碼管顯示數(shù)據(jù)時(shí),將各數(shù)碼管相同的段并聯(lián)在一起,如所有的a段都連在一起,既共用段控制端口,這樣每增加一個(gè)數(shù)碼管,只需要增加一個(gè)位控制端口即可,從而大量地減少了I/O端口的占用,如圖71所示。圖中數(shù)碼管DLED1和數(shù)碼管DLED2連接的各段分別連接在一起,共用

5、段控制端口P1,而位控制分別由端口P2.7和P2.6分別控制,從而大量的減少了I/O端口的占用。回目錄圖71 共陽數(shù)碼管動(dòng)態(tài)顯示接口電路 1顯示個(gè)位數(shù)據(jù)2位控制:要在個(gè)位數(shù)碼管DLED2上顯示數(shù)據(jù)2,即要使DLED2亮,而DLED1滅,相應(yīng)的要使三極管Q2導(dǎo)通,Q1截止,而三極管為PNP型管,在發(fā)射極為高電平的情況下,基極必須為低電平才能導(dǎo)通,所以位控制端口P2.6要接低電平,P2.7接高電平。段控制:要使共陽數(shù)碼管顯示數(shù)據(jù)2,即a、b、d、e、g段亮,而c、f、dp段要滅,即a、b、d、e、g段需接低電平,而c、f、dp段接高電平(也可查表51得到共陽數(shù)碼管的筆段碼A4H),因此必須給其段控

6、制端口P1送筆段碼A4H(10100100B)。顯示個(gè)位數(shù)字2的控制電平和顯示效果如下圖所示。 顯示個(gè)位數(shù)字2的控制電平和顯示效果 2顯示十位數(shù)字1位控制:同理,要在十位數(shù)碼管DLED1上顯示數(shù)據(jù)1,即要使DLED1亮,而DLED2滅,所以位控制端口P2.6要接高電平,P2.7接低電平。段控制:要使共陽數(shù)碼管顯示數(shù)據(jù)1,即b、c二段亮,而其它各段要滅,既b、c二段接低電平,而其它段接高電平,也可查表51得到共陽數(shù)碼管的筆段碼F9H,因此必須給其段控制端口P1送筆段碼F9H(11111001B)。顯示十位數(shù)字的控制電平和顯示效果如下圖所示。 顯示十位數(shù)字1的控制電平和顯示效果 3二數(shù)碼管不斷交替

7、顯示重復(fù)以上步驟1和步驟2,只要交替顯示的速度足夠快(每秒循環(huán)顯示48次以上),利用人眼的視覺殘留特性,人眼在數(shù)碼管看到的就是完整的數(shù)字12,而不會(huì)有閃爍感,如下圖所示。 回目錄7.4.1 顯示班級(jí)學(xué)號(hào)的雙位數(shù)本任務(wù)要求固定的顯示某一個(gè)數(shù)(即班級(jí)學(xué)號(hào),如12),此程序設(shè)計(jì)較簡(jiǎn)單,只要先顯示個(gè)位數(shù)字2,延時(shí)一定時(shí)間,再顯示十位數(shù)字1,又延時(shí)一定時(shí)間,然后交替循環(huán)顯示即可。程序流程圖如右圖所示: 7.4 數(shù)碼管動(dòng)態(tài)顯示程序設(shè)計(jì)方法 回目錄顯示數(shù)據(jù)12的完整程序清單(1) ORG 0000H ;偽指令,規(guī)定下面的指令保存在程序存儲(chǔ)器的0000H單元 AJMP MAIN ;跳轉(zhuǎn)到主程序,以保留0003

8、H開始的中斷入口地址 ORG 0050H ;偽指令MAIN: SETB P2.7 ; 十位數(shù)碼管熄滅 CLR P2.6 ;個(gè)位數(shù)碼管亮 MOV A,02H ;個(gè)位要顯示的數(shù)據(jù)送累加器A MOV DPTR,#TABLE1 ; DPTR用于保存表的首地址 MOVC A,A+DPTR ; 查表指令,取出DPTR所對(duì)應(yīng)表中的第A個(gè)數(shù)據(jù)(此處A為累加器,同時(shí)應(yīng)注意數(shù)據(jù)的序號(hào)從0開始編號(hào)),即取出要顯示數(shù)據(jù)的段碼A4H MOV P1,A ;將取得的段碼A4H送到P1口顯示 ACALL DELAY ; 調(diào)用延時(shí)程序 SETB P2.6 ; 個(gè)位數(shù)碼管熄滅 CLR P2.7 ; 十位數(shù)碼管亮 MOV A,01

9、H ;十位要顯示的數(shù)據(jù)送累加器A MOV DPTR,#TABLE1 ; DPTR用于保存表的首地址(即到哪一個(gè)表中取數(shù)) MOVC A,A+DPTR ; 查表指令,取出DPTR所對(duì)應(yīng)的表中的第A個(gè)數(shù)據(jù)(此處A為累加器,同時(shí)應(yīng)注意數(shù)據(jù)的序號(hào)從0開始編號(hào)),即取出要顯示數(shù)據(jù)的段碼F9H 顯示數(shù)據(jù)12的完整程序清單(2) MOV P1,A ;將取得的段碼F9H送到P1口顯示 ACALL DELAY ; 調(diào)用延時(shí)程序 AJMP MAIN ; 跳回交替繼續(xù)顯示DELAY: MOV R7,#0FH ;二層循環(huán)延時(shí)程序LOOP2: MOV R6,#0FFHLOOP1: DJNZ R6,LOOP1 DJNZ

10、R7,LOOP2 RET 0 1 2 3 4 5 6 7 8 9 TABLE1: DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 共陽數(shù)碼管段碼表 顯示數(shù)據(jù)12的完整程序清單(3)提示:程序調(diào)試時(shí)可以調(diào)節(jié)延時(shí)時(shí)間(延時(shí)程序中R7的數(shù)據(jù)大?。鸩接纱蟮叫?,觀察數(shù)碼管的顯示效果:當(dāng)數(shù)據(jù)較大時(shí),延時(shí)較長(zhǎng),可以明顯看到二數(shù)碼管交替顯示的情況;當(dāng)數(shù)據(jù)足夠小時(shí),人眼將看不到數(shù)碼管交替顯示產(chǎn)生的閃爍感,從效果上看好像二個(gè)數(shù)碼管同時(shí)顯示一樣 。 程序改進(jìn) 以上程序要改變顯示的數(shù)據(jù)時(shí),必須個(gè)位和十位分別修改,很不方便,為了提高程序的靈活性,我們可以設(shè)置顯示緩沖區(qū)

11、,當(dāng)要顯示數(shù)據(jù)時(shí),只需將要顯示的數(shù)據(jù)放在顯示緩沖區(qū)中即可。同時(shí)從以上程序可看出,個(gè)位、十位的查表指令相同,可以寫出子程序的形式,可以進(jìn)一步簡(jiǎn)化程序,流程圖如右圖所示。 ORG 0000H ;偽指令 AJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 0050H ;偽指令MAIN: ;主程序 MOV 30H,#12H ;30H顯示緩沖區(qū),保存需顯示的數(shù)據(jù)(含個(gè)位和十位)程序改進(jìn)(1)程序中設(shè)30H單元為顯示緩沖區(qū),低四位二進(jìn)制數(shù)(B3-B0)為顯示數(shù)據(jù)的BCD碼個(gè)位,高四位二進(jìn)制數(shù)(B7-B4)為顯示數(shù)據(jù)的BCD碼十位,程序中仍以顯示數(shù)據(jù)12為例。 HUI: SETB P2.7 ;第二個(gè)數(shù)碼管亮 CLR

12、 P2.6 ;第一個(gè)數(shù)碼管熄滅 MOV A,30H ;取出顯示數(shù)據(jù) ANL A,#0FH ;取出顯示值的個(gè)位(即低四位) ACALL CHABIAO ; 調(diào)用查表顯示程序 ACALL DELAY ; 調(diào)用延時(shí)程序 SETB P2.6 ;第二個(gè)數(shù)碼管滅 CLR P2.7 ;第一個(gè)數(shù)碼管熄亮 MOV A,30H ;取出顯示數(shù)據(jù) ANL A,#0F0H ;取出顯示值的十位(即高四位) SWAP A ;高、低四位對(duì)調(diào),以便于查表取段碼 ACALL CHABIAO ; 調(diào)用查表顯示程序 ACALL DELAY ; 調(diào)用延時(shí)程序 AJMP HUI ; 繼續(xù)顯示 程序改進(jìn)(2)CHABIAO: ;查表子程序

13、 MOV DPTR,#TABLE1 ; DPTR用于保存表的首地址 MOVC A,A+DPTR ; 查表指令 MOV P1,A ;將取得的段碼送到P1口顯示 RET ;查表子程序返回DELAY: ;延時(shí)子程序 MOV R7,#0FH ;二層循環(huán)延時(shí)程序LOOP2: MOV R6,#0FFHLOOP1: DJNZ R6,LOOP1 DJNZ R7,LOOP2 RETTABLE1: DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共陽數(shù)碼管段碼表 程序改進(jìn)(3)回目錄7.4.2 秒表計(jì)數(shù)器顯示“0059”一、任務(wù)分析 這個(gè)任務(wù)比上個(gè)任務(wù)難度有所增加

14、,需多考慮如下兩點(diǎn):首先,要求定時(shí),定時(shí)間隔為一秒;其次,隨著計(jì)數(shù)值的變化,需要改變顯示內(nèi)容,顯示內(nèi)容在數(shù)字0059之間變化,因此需要對(duì)計(jì)數(shù)值進(jìn)行判斷。1如何定時(shí)? 本程序要求精確定時(shí)一秒,定時(shí)精度高,定時(shí)的時(shí)間也較長(zhǎng),在定時(shí)的同時(shí)還要求顯示數(shù)據(jù),所以采用軟件延時(shí)的方法已無法滿足要求,必須采用定時(shí)器/計(jì)數(shù)器的方法進(jìn)行定時(shí),該方法雖然軟件編程稍復(fù)雜些,但不占用單片機(jī)運(yùn)行時(shí)間,效率高,定時(shí)精確,并且可產(chǎn)生中斷。 回目錄 2定時(shí)器的初始化 經(jīng)過分析,我們可采用定時(shí)器T0模式1進(jìn)行定時(shí),由于晶振頻率fosc=6MHz,定時(shí)時(shí)間無法直接定時(shí)1s,我們采用定時(shí)10ms,然后累加100次的方法定時(shí)1s,用T

15、0定時(shí)10ms計(jì)數(shù)初值計(jì)算過程為:振蕩周期1/fosc us機(jī)器周期12振蕩周期 us121us定時(shí)時(shí)間10ms10000us計(jì)數(shù)值定時(shí)時(shí)間/機(jī)器周期10000us/1us10000定時(shí)器初值最大計(jì)數(shù)值計(jì)數(shù)值655365000060536化為十六進(jìn)制:60536EC78H,因此TH0=ECH,TL0=78HT0定時(shí)10ms的初始化程序?yàn)椋?MOV TMOD, #01H ;T0模式1,定時(shí) MOV TH0 , #0D8H ;裝入T0計(jì)數(shù)值高八位MOV TL0 , #0F0H ;裝入T0計(jì)數(shù)值低八位SETB TR0 ;啟動(dòng)T0 3定時(shí)中斷的初始化由于T0定時(shí)10ms使用中斷,所以必須進(jìn)行中斷的初始

16、化SETB ET0 ;T0開中斷SETB EA ; 開總中斷 二、程序流程圖 秒表計(jì)數(shù)程序 (1)程序中30H單元為顯示緩沖區(qū),保存需顯示的數(shù)據(jù),R2用于中斷10ms次數(shù)的累加寄存器,31H單元用于秒計(jì)數(shù)單元。 ORG 0000H ;偽指令 AJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 000BH ;T0中斷入口 AJMP T0ZD ;跳轉(zhuǎn)到T0中斷程序 ORG 0050H MAIN: ;主程序 MOV 30H,#00H ;30H顯示緩沖區(qū)賦初值 MOV 31H,#00H ;31H秒計(jì)數(shù)單元賦初值 MOV R2,#00H ;中斷次數(shù)累加寄存器賦初值 MOV TMOD, #01H ;T0模式1,定

17、時(shí) MOV TL0 , #0F0H ;裝入T0計(jì)數(shù)值低八位 MOV TH0 , #0D8H ;裝入T0計(jì)數(shù)值高八位 SETB TR0 ;啟動(dòng)T0 SETB ET0 ;T0開中斷 SETB EA ;開總中斷HUI: MOV A,31H CJNE A,#60H,DAOXS ;未記滿60秒,將秒單元數(shù)值送顯示子程序顯示 MOV 31H,#00H ;記滿60秒,秒單元清零,重新累計(jì) (如果在完整的時(shí)鐘程序中, 該處可添加分單元計(jì)數(shù)累加)DAOXS: MOV 30H,31H ;秒計(jì)數(shù)值送顯示緩沖單元 ACALL XIANSHI ;調(diào)顯示子程序 AJMP HUI ;繼續(xù)比較、顯示 秒表計(jì)數(shù)程序 (2)XI

18、ANSHI: ;顯示子程序 SETB P2.7 ;第二個(gè)數(shù)碼管亮 CLR P2.6 ;第一個(gè)數(shù)碼管熄滅 MOV A,30H ;取出顯示數(shù)據(jù) ANL A,#0FH ;取出顯示值的個(gè)位(即低四位) ACALL CHABIAO ; 調(diào)用查表顯示程序 ACALL DELAY ; 調(diào)用延時(shí)程序 SETB P2.6 ;第二個(gè)數(shù)碼管滅 CLR P2.7 ;第一個(gè)數(shù)碼管熄亮 MOV A,30H ;取出顯示數(shù)據(jù) ANL A,#0F0H ;取出顯示值的十位(即高四位) SWAP A ;高、低四位對(duì)調(diào),以便于查表取段碼 ACALL CHABIAO ; 調(diào)用查表顯示程序 ACALL DELAY ; 調(diào)用延時(shí)程序 RET ; 顯示子程序返回秒表計(jì)數(shù)程序(3)CHABIAO: ;查表子程序 MOV DPTR,#TABLE1 ; DPTR用于保存表的首地址 MOVC A,A+DPTR ; 查表指令 MOV P1,A ;將取得的段碼送到P1口顯示 RET ; 查表子程序返回DELAY: ;二層循環(huán)延時(shí)子程序 MOV R7,#0FH LOOP2: MOV R6,#0FFHLOOP1: DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET ; 延時(shí)子程序返回TABLE1: DB 0COH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論