久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

430定時器學習心得(含五篇)

時間:2019-05-12 05:26:23下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《430定時器學習心得》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《430定時器學習心得》。

第一篇:430定時器學習心得

Msp430單片機一共有5種類型的定時器。

看門狗定時器(WDT)、基本定時器(Basic Timer1)、8位定時器/計數器(8-bit

Timer/Counter)、定時器A(Timer_A)和定時器B(Timer_B)。但是這些模塊不是所有msp430型號都具有的功能。

1、看門狗定時器(WDT)

學過電子的人可能都知道,看門狗的主要功能就是當程序發生故障時能使受控系統重新啟動。

msp430中它是一個16位的定時器,有看門狗和定時器兩種模式。

2、基本定時器(Basic Timer1)

基本定時器是msp430x3xx和msp430F4xx系列器件中的模塊,通常向其他外圍提供低頻控制信號。它可以只兩個8位定時器,也可以是一個16位定時器。

3、8位定時器/計數器(8-bit Timer/Counter)

如其名字所示,它是8位的定時器,主要應用在支持串行通信或數據交換,脈沖計數或累加以及定時器使用。

4、16位定時器A和B

定時器A在所有msp430系列單片機中都有,而定時器B在msp430f13x/14x和

msp430f43x/44x等器件中出現,基本的結構和定時器A是相同的,由于本人最先熟悉并應用的是定時器A所以在這里就主要談一下自己對定時器A的了解和應用。

定時器A是16位定時器,有4種工作模式,時鐘源可選,一般都會有3個可配置輸入端的比較/捕獲寄存器,并且有8種輸出模式。通過8種輸出模式很容易實現PWM波。定時器A的硬件電路大致可分為2類功能模塊:

一:計數器TAR

計數器TAR是主體,它是一個開啟和關閉的定時器,如果開啟它就是一直在循環計數,只會有一個溢出中斷,也就是當計數由0xffff到0時會產生一個中斷TAIFG。

二:比較/捕獲寄存器CCRX

如何實現定時功能呢?這就要靠三個比較/捕獲寄存器了(以后用CCRx表示)。

當計數器TAR的計數值等于CCRx時(這就是捕獲/比較中的比較的意思:比較TAR是否等于CCRx),CCRx單元會產生一個中斷。依據中斷即可得到相應的定時時間了。

這樣我們可以通過定時器A得到三個定時時間了。

一:程序示例

我先給出我的一個應用程序,然后通過程序來書名定時器A的基本用法。程序如下: /****************************************************

*定時器初始化

****************************************************/

void init_TimerA(void)

{

CCTL0 = CCIE;//1:開啟比較器0中斷

CCR0 = 32768;// 2:定時時間的選取

其為1S秒定時:因為選擇的是ACLK,UpMode,所以TAR每增加1次的時間為1/32768s,一共增加32768次,所以為1s

CCTL1 = CCIE;// 開啟比較器1中斷

CCR1 = 100;// 3.66mS顯示延遲

TACTL = TASSEL_1 + MC_1;// 3:選擇時鐘源和計數模式

時鐘源為ACLK并且為增計數模式

LPM3;//進入低功耗3

}

/****************************************************

*定時器0中斷

****************************************************/

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A0(void)

{

//用戶代碼 TACCR0

}

/****************************************************

二:程序分析

1):看程序中的定時器初始化模塊。

1:CCTL0 = CCIE;

CCTLx是相應比較/捕獲寄存器的控制寄存器,它可對比較/捕獲寄存器進行設置。

這語句的意思是:開啟了CCR0的中斷使能,當計數器TAR計數到CCR0時產生中斷。2:CCR0 = 32768;

CCRx就是相應比較器的值。

其為1S秒定時:因為選擇的是ACLK,UpMode,所以TAR每增加1次的時間為1/32768s,一共增加32768次,所以為1s定時。

3:TACTL = TASSEL_1 + MC_1;

TACTL是計數器的控制寄存器。

TASSEL_x是時鐘源的選擇。

0——TACLK,使用外部引腳信號作為輸入

1——ACLK,輔助時鐘

2——MCLK,系統主時鐘

3——INCLK,外部輸入時鐘

#pragma vector = TIMERA1_VECTOR

__interrupt void Timer_A1(void)

{

switch(TAIV)

{

case2: //用戶代碼 break;// TACCR1

case4://用戶代碼 break;// TACCR2

case 10://用戶代碼 break;//TAIFG

}

//根據需要是否要退出低功耗模式

LPM3_EXIT;// 退出低功耗

}

二:程序分析

1):看程序中的定時器初始化模塊。

1:CCTL0 = CCIE;

CCTLx是相應比較/捕獲寄存器的控制寄存器,它可對比較/捕獲寄存器進行設置。這語句的意思是:開啟了CCR0的中斷使能,當計數器TAR計數到CCR0時產生中斷。2:CCR0 = 32768;

CCRx就是相應比較器的值。

其為1S秒定時:因為選擇的是ACLK,UpMode,所以TAR每增加1次的時間為1/32768s,一共增加32768次,所以為1s定時。

3:TACTL = TASSEL_1 + MC_1;

TACTL是計數器的控制寄存器。

TASSEL_x是時鐘源的選擇。

0——TACLK,使用外部引腳信號作為輸入

1——ACLK,輔助時鐘

第二篇:定時器課程設計心得體會

定時器課程設計的心得體會

課程設計共兩周,第一周的任務是設計出原理圖,并把PCB版圖畫出來;第二周的任務是根據原理圖制作電路板,我們組共五個人,我們分工合作,共同學習,共同進步。

第一周的時候,我們五個人中有人主要負責畫圖,有人負責查閱資料,有人負責學protell99(因為我們目前還沒有學protell99,畫PCB版圖需要用),有人負責審閱方案,然后我們再共同商議,盡量讓我們的方案更完善,這其中大家都發揮了不可缺少的作用。第二周的時候,就進入實驗室進行實訓了,其實好期待自己動手制作電路板,滿懷信心和期待的進入了實驗室開始了又一個新的體驗。我們的老師很認真很耐心的教導我們怎么操作,尤其是一些注意事項,對我們這些初次做課程設計的來說我們真的懂得很少,通過老師的細心指導后,我們便開始實戰了。我們按照順序先把圖紙轉印到電路板上,然后再對電路板進行腐蝕,腐蝕的過程其實挺有意思的,看著電路板上的電路圖的線條在溶液里慢慢的越來越清晰的顯現出來,其他部位的銅越來越少…目不轉睛的盯著電路板看,生怕錯過了每一個細節,終于腐蝕好了,雖然只完成了小小的一步,但我們也很興奮。接下來該打孔了,我們小心的操作著,我們組的每個成員都親自試著打孔,體驗那種感覺。等打好孔后,刷了松香一切就緒后,開始插件,好多器件自己以前從來都沒有見過,只在課本上學習它的結構,性質和功能,可是見都沒見過,比如三極管,我以前就沒有見過,直到這次見了后才知道原來一個三極管竟這么小!接下來焊接,對女生來說,焊接更是沒有接觸過,我先看著他們焊,看了好長時間終于鼓起勇氣決定自己也試試,拿上電烙鐵就感覺到它柄的溫度,慢慢的小心的焊下去…終于都做好了,最后是調試的過程,看著我們自己制作的電路板要工作了,我們很激動同時也很緊張,我們剛開始插上電源時預置一個數后,顯示器上并不顯示數字增加計時,我們都面面相覷,可是我們并沒有灰心,我們開始檢查是我們哪里出了錯,最后經過我們認真檢查和思考終于把錯誤找了出來并改正了過來,再次調試,我們預置60秒,看著顯示器的數字從零開始增加,我們繃著心弦,終于顯示59,60報警器發出聲音報警,調試成功,我們好高興,感覺有點成就感。

通過這次課程設計,我學習到了不少平時在課堂上學習不到的東西。

一、對課本上的知識有更深的理解。

通過原理圖的設計,對課本上的知識有了更深的理解,課本上的知識是機械的,表面的,很零碎的,通過課程設計,把原來以為很散的書本知識變的更為有聯系,對課本知識有了更深的理解。

二、對該理論在實踐中的應用有深刻的理解。

通過設計原理,制作電路板,到調試成功實現功能,把以前疑惑比如學這些知識都是干什么用的,通過這次課程設計,對該理論在實踐中的應用和意義,有了更深刻的理解。

三、激發了學習的積極性。

通過該課程設計,全面系統的理解了定時器構造的一般原理和基本實現方法。把學過的電子技術的知識強化,能夠把課堂上學的知識通過我們設計的電路表示出來,加深了對理論知識的理解。并激發了我們學習的積極性。

四、理解了學科之間的融合滲透。

本次課程設計所用器件大部分是用電子技術的數字部分里學的器件完成的,而也有些是模擬部分學的器件,而把這些器件連接起來用的則是電路的知識,這就把這三門學科聯系起來,把各個學科之間的知識融合起來,對電子技術整體的認識更加深刻。

五、鍛煉了自己的動手能力以及加深了對自己認識。

我們平時都只是學習課本上的知識,動手特別少,以致動手能力比較差,所以通過這次課程設計,通過自己動手制作,鍛煉了自己的動手能力,同時也是對自己能力的一次檢測,使我們對自己有了更深一步的認識,看自己在哪些方面還不足,為以后更好的提高自己提供了幫助。

六、提高了自己與別人相處以及合作的能力。

因為課程設計是分小組做的,而且在設計過程中我們需要分工合作,這就要求我們要有與人友好相處和與人友好合作的能力,這在以后的工作中很重要。通過這次課程設計,鍛煉了同時也提高了我們的這項能力,無論是對我們的生活還是對我們以后的工作都有很大的幫助。

很喜歡課程設計,可以鍛煉我們各個方面的能力,希望以后有更多這樣的實訓機會。同時也要謝謝兩位指導老師這么辛苦的帶領我們完成這些實訓內容。

第三篇:實驗二 定時器程序設計121

一、實驗目的學會使用單片機定時器產生定時中斷,并利用定時中斷產生更長時間延時。

二、實驗設備及器件

IBM PC機

一臺

DP-51PRO.NET單片機仿真器、編程器、實驗儀三合一綜合開發平臺

三、實驗內容

1.實驗二 定時器程序設計

2.編寫程序,使P10端口來控制LED閃爍 3.C語言程序

//1ms定時中斷實現100ms發光管閃爍 #include“REG51.h” sbit LED=P1^0;void main(void){ TMOD = 0x01;//設置定時器模式 16位定時器

TL0 = 0x18;//設置定時初值

TH0 = 0xFC;//設置定時初值

TR0 = 1;//定時器T0開始計時

ET0=1;//開定時器中斷

EA=1;

//開總中斷

while(1);}

//******************** //1ms void pit0(void)interrupt 1(中斷程序){ static unsigned char ms_cnt=0;//16 ffff TL0 = 0x18;//設置定時初值

TH0 = 0xFC;//設置定時初值

if(++ms_cnt==100){

ms_cnt=0;

LED=!LED;} } 定時器的由程序

直接匯編語言 ORG 0 AJMP MAIN ORG 0BH AJMP PIT0 MAIN: MOV TMOD,#01H MOV TH0,#18H MOV TL0,#0FCH SETB TR0 SETB ET0 SETB EA SJMP $

生成;********************************** PIT0: MOV TH0,#18H MOV TL0,#0FCH INC R7 CJNE R7,#100,PIT0_R MOV R7,#0 CPL P1.0 PIT0_R: RETI END

四 實驗要求

學會使用并掌握單片機定時器中斷來實現LED100ms閃爍。

五 實驗步驟

1.調試運行本節實驗程序。若程序無錯誤,編譯并進行二進制轉換,下載程序。

2.連接線路,將A2區的P10端口連接到D1區的任意LED接口。3.觀察LED燈閃爍情況

第四篇:AT89C52定時器2工作方式[定稿]

·定時器2:

定時器2 是一個16 位定時/計數器。它既可當定時器使用,也可作為外部事件計數器使用,其工作方式由特殊功能寄

存器T2CON(如表3)的C/T2 位選擇。定時器2 有三種工作方式:捕獲方式,自動重裝載(向上或向下計數)方式和波特率發生器方式,工作方式由T2CON 的控制位來選擇。定時器2 由兩個8 位寄存器TH2 和TL2 組成,在定時器工作方式中,每個機器周期TL2 寄存器的值加1,由于一個機器周期由12 個振蕩時鐘構成,因此,計數速率為振蕩頻率的1/12。在計數工作方式時,當T2 引腳上外部輸入信號產生由1 至0 的下降沿時,寄存器的值加1,在這種工作方式下,每個機器周期的5SP2 期間,對外部輸入進行采樣。若在第一個機器周期中采到的值為1,而在下一個機器周期中采到的值為0,則在緊跟著的下一個周期的S3P1 期間寄存器加1。由于識別1 至0 的跳變需要2 個機器周期(24 個振蕩周期),因此,最高計數速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個完整周期的時間,以保證輸入信號至少被采樣一次。

·捕獲方式:

在捕獲方式下,通過T2CON 控制位EXEN2 來選擇兩種方式。如果EXEN2=0,定時器2 是一個16 位定時器或計數器,計數溢出時,對T2CON 的溢出標志TF2 置位,同時激活中斷。如果EXEN2=1,定時器2 完成相同的操作,而當T2EX 引

腳外部輸入信號發生1 至0 負跳變時,也出現TH2 和TL2 中的值分別被捕獲到RCAP2H 和RCAP2L 中。另外,T2EX 引

腳信號的跳變使得T2CON 中的EXF2 置位,與TF2 相仿,EXF2 也會激活中斷。捕獲方式如圖4 所示。

·自動重裝載(向上或向下計數器)方式:

當定時器2工作于16位自動重裝載方式時,能對其編程為向上或向下計數方式,這個功能可通過特殊功能寄存器T2CON

(見表5)的DCEN 位(允許向下計數)來選擇的。復位時,DCEN 位置“0”,定時器2 默認設置為向上計數。當DCEN

置位時,定時器2 既可向上計數也可向下計數,這取決于T2EX 引腳的值,參見圖5,當DCEN=0 時,定時器2 自動設置

為向上計數,在這種方式下,T2CON 中的EXEN2 控制位有兩種選擇,若EXEN2=0,定時器2 為向上計數至0FFFFH 溢出,置位TF2 激活中斷,同時把16 位計數寄存器RCAP2H 和RCAP2L重裝載,RCAP2H 和RCAP2L 的值可由軟件預置。若EXEN2=1,定時器2 的16 位重裝載由溢出或外部輸入端T2EX 從1 至0 的下降沿觸發。這個脈沖使EXF2 置位,如果

中斷允許,同樣產生中斷。

定時器2 的中斷入口地址是:002BH ——0032H。

當DCEN=1 時,允許定時器2 向上或向下計數,如圖6 所示。這種方式下,T2EX 引腳控制計數器方向。T2EX 引腳為邏

輯“1”時,定時器向上計數,當計數0FFFFH 向上溢出時,置位TF2,同時把16 位計數寄存器RCAP2H 和RCAP2L 重裝

載到TH2 和TL2 中。T2EX 引腳為邏輯“0”時,定時器2 向下計數,當TH2 和TL2 中的數值等于RCAP2H 和RCAP2L

中的值時,計數溢出,置位TF2,同時將0FFFFH 數值重新裝入定時寄存器中。

當定時/計數器2 向上溢出或向下溢出時,置位EXF2 位。

·波特率發生器:

當T2CON(表3)中的TCLK 和RCLK 置位時,定時/計數器2 作為波特率發生器使用。如果定時/計數器2 作為發送器或

接收器,其發送和接收的波特率可以是不同的,定時器1 用于其它功能,如圖7 所示。若RCLK 和TCLK 置位,則定時器2

工作于波特率發生器方式。

波特率發生器的方式與自動重裝載方式相仿,在此方式下,TH2 翻轉使定時器2 的寄存器用RCAP2H 和RCAP2L 中的16

位數值重新裝載,該數值由軟件設置。

在方式1 和方式3 中,波特率由定時器2 的溢出速率根據下式確定:方式1和3的波特率=定時器的溢出率/16

定時器既能工作于定時方式也能工作于計數方式,在大多數的應用中,是工作在定時方式(C/T2=0)。定時器2 作為波

特率發生器時,與作為定時器的操作是不同的,通常作為定時器時,在每個機器周期(1/12 振蕩頻率)寄存器的值加1,而作為波特率發生器使用時,在每個狀態時間(1/2 振蕩頻率)寄存器的值加1。波特率的計算公式如下:

方式1和3的波特率=振蕩頻率/{32*[65536-(RCP2H,RCP2L)]}

式中(RCAP2H,RCAP2L)是RCAP2H 和RCAP2L中的16 位無符號數。定時器2 作為波特率發生器使用的電路如圖7 所示。T2CON 中的RCLK 或TCLK=1 時,波特率工作方式才有效。在波特率發生器工作方式中,TH2 翻轉不能使TF2 置位,故而不產生中斷。但若EXEN2 置位,且T2EX 端產生由1 至0 的負跳變,則會使EXF2 置位,此時并不能將(RCAP2H,RCAP2L)的內容重新裝入TH2 和TL2 中。所以,當定時器2 作

為波特率發生器使用時,T2EX 可作為附加的外部中斷源來使用。需要注意的是,當定時器2 工作于波特率器時,作為定

時器運行(TR2=1)時,并不能訪問TH2 和TL2。因為此時每個狀態時間定時器都會加1,對其讀寫將得到一個不確定的數值。

然而,對RCAP2 則可讀而不可寫,因為寫入操作將是重新裝載,寫入操作可能令寫和/或重裝載出錯。在訪問定時器2

或RCAP2 寄存器之前,應將定時器關閉(清除TR2)。

·可編程時鐘輸出:

定時器2 可通過編程從P1.0 輸出一個占空比為50%的時鐘信號,如圖8 所示。P1.0 引腳除了是一個標準的I/O 口外,還可以通過編程使其作為定時/計數器2 的外部時鐘輸入和輸出占空比50%的時鐘脈沖。當時鐘振蕩頻率為16MHz 時,輸

出時鐘頻率范圍為61Hz—4MHz。

當設置定時/計數器2 為時鐘發生器時,C/T2(T2CON.1)=0,T2OE(T2MO

D.1)=1,必須由TR2(T2CON.2)啟

動或停止定時器。時鐘輸出頻率取決于振蕩頻率和定時器2 捕獲寄存器(RCAP2H,RCAP2L)的重新裝載值,公式如下:

輸出時鐘頻率=振蕩器頻率/{4*[65536-(RCP2H,RCP2L)]}

在時鐘輸出方式下,定時器2 的翻轉不會產生中斷,這個特性與作為波特率發生器使用時相仿。定時器2 作為波特率

發生器使用時,還可作為時鐘發生器使用,但需要注意的是波特率和時鐘輸出頻率不能分開確定,這是因為它們同使用

RCAP2L和RCAP2L。

·UART:

AT89C52的UART 工作方式與AT89C51 工作方式相同。

·中斷:

AT89C52 共有6 個中斷向量:兩個外中斷(INT0 和INT1),3 個定時器中斷(定時器0、1、2)和串行口中斷。所有

這些中斷源如圖9 所示。

這些中斷源可通過分別設置專用寄存器IE 的置位或清0 來控制每一個中斷的允許或禁止。IE 也有一個總禁止位EA,它能控制所有中斷的允許或禁止。

注意表5 中的IE.6 為保留位,在AT89C51 中IE.5 也是保留位。程序員不應將“1”寫入這些位,它們是將來AT89 系

列產品作為擴展用的。

定時器2 的中斷是由T2CON 中的TF2 和EXF2 邏輯或產生的,當轉向中斷服務程序時,這些標志位不能被硬件清除,事實上,服務程序需確定是TF2 或EXF2 產生中斷,而由軟件清除中斷標志位。定時器0 和定時器1 的標志位TF0 和TF1 在定時器溢出那個機器周期的S5P2 狀態置位,而會在下一個機器周期才查

詢到該中斷標志。然而,定時器2 的標志位TF2 在定時器溢出的那個機器周期的S2P2 狀態置位,并在同一個機器周期內

查詢到該標志。

第五篇:單片機課程設計音樂鬧鐘定時器

目錄:

0、任務書...............................................................................2

1、系統總體設計方案規劃與選定.......................................2

2、硬件設計...........................................................................5

3、軟件設計...........................................................................6

4、調試...................................................................................8

5、新增功能及實現方法.......................................................8

6、小結與體會.......................................................................9

7、參考文獻...........................................................................9

8、附錄.................................................................................10

單片機課程設計

0.任務書

基于51單片機設計一個電子數字鐘,顯示時、分、秒,且具有鬧鐘功能。用8255接口實現4*8鍵盤及8位LED顯示。

32個鍵:0~9共10個鍵,調時(設置當前時間)鍵;設定鬧鐘(定時)鍵;走時鍵;光標左右移動各一個鍵。

要求鍵復位后,應該最后面的LED上顯示H(待命狀態)。

1.系統總體設計方案規劃與選定

1.1主控制芯片選擇

方案一:采用ARM微處理,做主控芯片,計算速度快,缺點;成本高,控制較復雜,不容易焊接。

方案二:采用80C51單片機做主控制器,由單片機來完成采集和信號處理等底層的核心計算,做主控芯片,成本低,易控制,易實現。

經過以上兩個方案比較,在此題方案二明顯優于方案一,故采用80C51單片機做主控制器。

1.2定時模塊選擇

方案一:采用時鐘芯片DS1302。

DS1302 可以用于數據記錄,特別是對某些具有特殊意義的數據點的記錄,能實現數據與出現該數據的時間同時記錄,且較單片機計時簡單節約硬件資源,但存在時鐘精度不高,易受環境影響,出現時鐘混亂等缺點。

方案二:采用單片機內部的定時系統,外接晶振進行分頻脈沖計數。

單片機課程設計

此系統采用12MHz晶振。

由于方案二使用簡單,比方案一更適用該系統設計,所以選擇方案二。

1.3 LED顯示及計時模塊選擇

方案一:74LS192計數器——74LS47七點顯示譯碼器

74LS192芯片是一塊可預置數可逆計數芯片,功能強大。將74LS192芯片CPU引腳接高電平可實現減法計數,以倒計時顯示??赏ㄟ^74LS47與LED共陽極數字顯示器配合使用。

方案二:使用移位寄存器74HC595與譯碼器相連

74HC595具有8位移位寄存器和一個存儲器,使用時可直接與數字顯示器相連。

方案三:使用8255擴展LED顯示計時模塊

8255是一個可編程并行接口芯片,有一個控制口和三個8位數據口,外設通過數據口與單片機進行數據通信,各數據口的工作方式和數據傳送方向是通過用戶對控制口寫控制字控制的。我們用到了A與B口分別進行對數碼顯示管的片選和段選,且B口同時作為鍵盤掃描模塊的輸入口,與數碼顯示模塊分時復用。故采用方案三

1.4蜂鳴器的選擇

方案一:電磁式蜂鳴器

電磁式蜂鳴器主要是利用通電導體會產生磁場的特性,用一個固定的永久磁鐵與通電導體產生磁力推動固定在線圈上的鼓膜。電磁式由于音色好,所以多用于語音、音樂等設備。對于不同提示音且考慮實際,此種較好。

方案二:壓電式蜂鳴器

單片機課程設計

壓電式蜂鳴器用的是壓電材料,即當受到外力導致壓電材料發生形變時壓電材料會產生電荷。同樣,當通電時壓電材料會發生形變。壓電式結構簡單耐用但音調單一音色差,適用于警報器等設備。

由于鬧鈴為音樂鬧鈴,所以使用電磁式蜂鳴器更為合適。

2.硬件設計

2.1 芯片的選擇

2.1.1 單片機80C51 2.1.1.1單片機80C51的組成

80c51單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線,現在我們分別加以說明:

中央處理器:

中央處理器(CPU)是整個單片機的核心部件,是8位數據寬度的處理器,能處理8位二進制數據或代碼,CPU負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。

數據存儲器(RAM)8051內部有128個8位用戶數據存儲單元和128個專用寄存器單元,它們是統一編址的,專用寄存器只能用于存放控制指令數據,用戶只能訪問,而不能用于存放用戶數據,所以,用戶能使用的RAM只有128個,可存放讀寫的數據,運算的中間結果或用戶定義的字型表。

程序存儲器(ROM):

8051共有4096個8位掩膜ROM,用于存放用戶程序,原始數據或表格。

單片機課程設計

定時/計數器(ROM):

8051有兩個16位的可編程定時/計數器,以實現定時或計數產生中斷用于控制程序轉向。

并行輸入輸出(I/O)口:

8051共有4組8位I/O口(P0、P1、P2或P3),用于對外部數據的傳輸。

2.1.1.2

MCS-51的引腳說明:

MCS-52系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用?,F在我們對這些引腳的功能加以說明:

MCS-51的引腳說明:

MCS-52系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用。

單片機課程設計

圖1 80C51的引腳

2.1.1.3 MCS-51單片機內部定時器計數器、中斷系統簡介(1)定時器計數器

1、MCS-51系列中51子系列有兩個16位的可編程定時計數器可:定時計數器T0和定時計數器T1。它由加法計數器、方式寄存器TMOD、控制寄存器TCON等組成。方式寄存器用于設定定時計數器T0和T1的工作方式,控制寄存器用于對定時計數器啟動、停止進行控制。

2、每個定時計數器既可以對系統時鐘計數實現定時,也可以外部信號計數實現計數功能通過編程設定來實現。

3、每個定時計數器都有多種工作方式,其中T0有四種工作方式,T1有三種工作方式,T2有三種工作方式。通過編程可設定工作于某種方式。四種工作方式為:13位定時計數器、16位定時計數器、8位自動重置定時 6

單片機課程設計

計數器、兩個8位定時計數器(只有T0有)

4、每一個定時計數器定時計數時間到時產生溢出,使相應的溢出位置位,溢出可通過查詢或中斷方式處理。

(2)中斷系統

1、MCS-51單片機提供5個硬件中斷源,2個外部中斷源,2個定時計數器T0和T1的溢出中斷TF0和TF1,1個串行口發送TI和接收RI中斷。

2、MCS-51單片機中沒有專門的開中斷和關中斷指令,對各個中斷源的允許和屏蔽是由內部的中斷允許寄存器IE的各位來控制的。中斷允許寄存器IE的字節地址為A8H,可以進行位尋址。系統復位時,中斷允許寄存器IE的內容為00H,如果要開放某個中斷源,則必須使IE中的總控置位和對應的中斷允許位置“1”。

3、MCS-51單片機有5個中斷源,為了處理方便,每個中斷源有兩級控制,高優先級和低優先級。通過由內部的中斷優先級寄存器IP來設置,中斷優先級寄存器IP的字節地址為B8H,可以進行位尋址。如果某位被置“1”,則對應的中斷源被設為高優先級;如果某位被清零,則對應的中斷源被設為低優先級。對于同級中斷源,系統有默認的優先權順序,從高到低優先權順序為外部中斷0、定時計數器T0中斷、外部中斷

1、定時計數器T1中斷、串行口中斷。通過設置中斷優先級寄存器IP能夠改變系統默認的優先級順序。

4、MCS-51單片機響應中斷的條件為:中斷源有請求且中斷允許。

2.1.2 八位一體七段數碼管

單片機課程設計

數碼管使用條件:

a、段及小數點上加限流電阻。

b、使用電壓:段:根據發光顏色決定; 小數點:根據發光顏色決定。c、使用電流:靜態:總電流 80mA(每段 10mA);動態:平均電流 4-5mA 峰值電流 100mA 上圖為七段數碼管引腳圖,其中共陽極數碼管引腳圖和共陰極相同。LED數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬件電路有差異外,編程方法也是不同的。右圖是共陰和共陽極數碼管的內部電路,它們的發光原理是一樣的,只是它們的電源極性不同而已。

將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。以共陰式為例,如把陰極接地,在相應段的陽極接上正電源,該段即會發光。當然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如我們將“b”和“c”段接上正電源,其它端接地或懸空,那么“b”和“c”段發光,此時,數碼管顯示將顯示數字“1”。而將“a”、“b”、“d”、“e”和“g”段都接上正電源,其它引腳懸空,此時數碼管將顯示“2”。其它字符的顯示原理類同。

單片機課程設計

2.1.3 并行接口擴展芯片8255 8255內部包括三個并行數據輸入/輸出端口,兩個工作方式控制電路,一個讀/寫控制邏輯電路和8位總線緩沖器。

各部分功能概括如下:(1)端口A、B、C A口:是一個8位數據輸出鎖存器/緩沖器和一個8位數據輸入鎖存器。B口:是一個8位數據輸入/輸出鎖存器/緩沖器和一個8位數據輸入鎖存器。C口:是一個8位數據輸出鎖存器/緩沖器和一個8位數據輸入緩沖器(輸入不鎖存)。

通常A口、B口作為數據輸入/輸出端口。C口作為控制/狀態信息端口,它在“方式控制字”的控制下可分為兩個4位端口,每個端口有一個4位鎖存器,分別與A口、B口配合使用,作為控制信號輸出或狀態信息輸入端口。

(2)工作方式控制電路

工作方式控制電路有兩個,一個是A組控制電路,另一個是B組控制電路。

單片機課程設計

這兩組控制電路具有一個控制命令寄存器,用來接受中央處理器發來的控制字,以決定兩組端口的工作方式,也可根據控制字的要求對C口按位清“0”或者按位置“1”。

A組控制電路用來控制A口和C口的上半部分(PC7-PC4)。B組控制電路用來控制B口和C口的下半部分(PC3-PC0)。

(3)總線數據緩沖器

總線數據緩沖器是一個三態雙向8位緩沖器,作為8255與系統總線之間的接口,用來傳送數據、指令、控制命令以及外部狀態信息。

(4)讀/寫控制邏輯電路

讀/寫控制邏輯電路接受CPU發來的控制信號RD、WR、RESET、地址信號A1-A0等,然后根據控制信號的要求,將端口數據讀出,發往CPU,或者將CPU送來的數據寫入端口。

2.2 電路的組成

2.2.1 數碼管顯示電路

數碼管顯示器成本低,配置靈活,與單片機接口簡單,在單片機應用系統中廣泛應用。

數碼管的工作原理如下:

數碼管是由8個發光二極管構成的顯示器件。在數碼管中,若將二極管的陽極連在一起,稱為共陽極數碼管;若將二極管的陰極連在一起,稱為共陰極數碼管。本次課程設計用到的8個數碼管均是共陽極的。當發光二極管導通時,它就會發光。每個二極管就是一個筆劃,若干個二極管發光時,就

單片機課程設計

構成了一個顯示字符。將單片機的I/O口控制相應的芯片與數碼管的a-g相連,高電平的位對應的發光二極管亮,這樣,由I/O口輸出不同的代碼,就可以控制數碼管顯示不同的字符。8個數碼管均采用動態顯示方式,顯示當前的時間。

2.2.2 鍵盤掃描電路

鍵盤掃描電路圖

鍵盤可分為兩類:非編碼鍵盤和編碼鍵盤;常見的非編碼鍵盤有兩種結構:獨立式鍵盤和矩陣式鍵盤。本次課程設計使用矩陣式鍵盤。

矩陣鍵盤的工作原理:按鍵設置在行、列線交點上,行、列線分別連接到按鍵開關的兩端。列線通過上拉電阻接到+5V 電源上。無按鍵按下時,列線處于高電平的狀態,而當有按鍵按下時,列線電平與此列線相連的行線電平決定。

行列掃描法原理:第一步,使列線為編程的輸入線,行線是輸出線,拉低所有的行線,判斷列線的變化,如果有按鍵按下,按鍵按下的對應列線被拉低,否則所有的列線都為高電平。第二步,在第一步判斷有鍵按下后,延時10ms消除機械抖動,再次讀取列值,如果此列線還處于低電平狀態則進入下一步,否則返回第一步重新判斷。第三步,開始掃描按鍵位置,采用 11

單片機課程設計

逐行掃描,分別拉低第一行,第二行,第三行,第四行,無論拉低哪一行其他三行都為高電平,讀取列值找到按鍵的位置,分別把行值和列值儲存在寄存器里。第四步,從寄存器中找到行值和列值并把其合并,得到按鍵值,對此按鍵值進行編碼,與已經設定好的鍵碼表進行一一對比,如果不等,則繼續比較,如果相等,則利用轉移指令實現鍵盤掃描到按鍵功能的轉移。

2.2.3 音樂鬧鈴電路

蜂鳴器電路

2.2.3.1 蜂鳴器

蜂鳴器是一種一體化結構的電子訊響器,主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型,他廣泛應用于計算機、打印機、復印機、報警器、電話 12

單片機課程設計

機等電子產品中作發聲器件。

2.2.3.2 單片機驅動

單片機上面使用的蜂鳴器一般都是無源電磁式的蜂鳴器(如下圖所示)。它由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產生的音頻信號電流通過電磁線圈,使電磁線圈產生磁場,振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發聲。

蜂鳴器發聲原理是電流通過電磁線圈,使電磁線圈產生磁場來驅動振動膜發聲的,因此需要一定的電流才能驅動它,單片機IO引腳輸出的電流較小,單片機輸出的TTL電平基本上驅動不了蜂鳴器,因此需要增加一個電流放大的電路。

2.2.4 復位電路

RESET/Vpd為復位信號復用腳,當80C51通電,時鐘電路開始工作,在RESET引腳上出現24個時鐘周期以上的高電平,系統即初始復位。初始化后,程序計數器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統即從0000H地址開始執行程序。然而,初始復位不改變RAM(包括工作寄存器R0-R7)的狀態,80C51的初始態。

上電復位:上電復位電路是—種簡單的復位電路,只要在RST復位引腳接一個電容到VCC,接一個電阻到地就可以了。上電復位是指在給系統上電時,復位電路通過電容加到RST復位引腳一個短暫的高電平信號,這個復 13

單片機課程設計

位信號隨著VCC對電容的充電過程而回落,所以RST引腳復位的高電平維持時間取決于電容的充電時間。為了保證系統安全可靠的復位,RST引腳的高電平信號必須維持足夠長的時間。

電路圖如下:

上電自動復位是通過外部復位電路的電容充電來實現的。只要Vcc的上升時間不超過1ms,就可以實現自動上電復位。

3軟件設計 4.調試

5.新增功能及實現方法

5.1定時器產生音樂的原理

音樂的產生主要是通過單片機的I/O口輸出高低不同的脈沖信號來控制蜂鳴器發音。要想產生音頻脈沖信號,需要算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用單片機定時器計時這個半個周期時間,每當計時到后就將輸出脈沖的I/O口反相,然后重復計時此半周期時間再對I/O口反相,這樣就能在此I/O口上得到此頻率的脈沖。

單片機課程設計

通常,利用單片機的內部定時器0,工作在方式1下,改變計數初值TH0和TL0來產生不同頻率。

對于音樂的節拍,每個音符使用1個字節,字節的高4位代表音符的高低,低4位代表音符的節拍。如果1拍為0.4S,1/4拍為0.1S,只要設定延遲時間就可求得節拍的時間。假設1/4拍為1DELAY,那么1拍應為4DELAY,以此類推。所以只要求得1/4拍的DELAY,其余的節拍就是它的倍數。

總而言之,一首樂曲是由音階和節拍兩大要素構成。一首樂曲演奏的原理是:不同音階分別對應不同的頻率,發出不同的音調,而節拍則控制發出音調時間的長短;若將樂曲的音調連續發出,并使其按相應的節拍變化,即可演奏一首樂曲。根據這一特點,我們采用單片機輔以相應的接口來設計音樂播放器。

5.2實現方法

利用定時器產生音樂,添加了音樂鬧鐘功能,能在鬧鐘時間到來時蜂鳴器發出《祝你生日快樂》歌,但缺點是在響鈴時間里,無法正常顯示時間。在此次課程設計中,產生的音樂是利用查表法來改變定時器T1的初值,即改變音高,而通過延時來確定每個音符的長短,即確定音長。

6.小結與體會 7.參考文獻

【1】《單片機原理、接口及應用——單片機嵌入式系統技術基礎(第2版)》,肖看、李群芳,清華大學出版社

【2】《單片機原理及應用》,霍孟友,機械工程出版社

【3】《51系列單片機設計實例(第二版)》,樓然苗、李光飛,北京航

單片機課程設計

空航天大學出版社

8.附錄

8.1 源程序代碼ORG 0000H LJMP START

ORG 000BH LJMP T0INT;T0中斷服務程序

ORG 001BH LJMP TIM0

;;;;;主程序;;;;;;;;START:LCALL CLEA

START1:LCALL SCAN LCALL BELLSCAN LCALL KEYSCAN SJMP START1

CLEA:MOV R0,#70H MOV R7,#0EH CLEAR:MOV @R0,#00H INC R0 DJNZ R7,CLEAR;70H~7CH賦值0 MOV TMOD,#11H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB EX0 SETB TR0 CLR IT0 MOV 72H,#10 MOV 75H,#10 MOV 68H,#55H MOV 69H,#01H MOV 6AH,#00H CLR P1.0 RET

;延時子程序1MS DL1MS: MOV R6,#14H DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET

DL10MS:ACALL SCAN ACALL SCAN ACALL SCAN RET

;《祝你生日快樂》音樂鬧鈴程序BELLSCAN:MOV A,6AH

CJNE A,7AH,BELLOUT

MOV A,69H

CJNE A,79H,BELLOUT

MOV A,68H

CJNE A,78H,BELLOUT

LCALL MUSIC BELLOUT:RET MUSIC:

MOV IE,#8AH MOV 30H,#00H

NEXT1:MOV A,30H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV R2,A JZ END0 ANL A,#0FH MOV R5,A MOV A,R2 SWAP A ANL A,#0FH

單片機課程設計

JNZ SING CLR TR1 LJMP D1 SING:DEC A MOV 22H,A RL A MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV TH1,A MOV 21H,A MOV A,22H RL A INC A MOVC A,@A+DPTR MOV TL1,A MOV 20H,A SETB TR1 D1:LCALL DELAY INC 30H LJMP NEXT1 END0:CLR TR1 LCALL BELLOUT

TIM0:PUSH ACC PUSH PSW MOV TL1,20H MOV TH1,21H CPL P1.0 POP PSW POP ACC RETI

DELAY:MOV R7,#02H D2:MOV R4,#187 D3:MOV R3,#248 DJNZ R3,$ DJNZ R4,D3 DJNZ R7,D2 DJNZ R5,DELAY RET

TABLE1:DW 64260,64400,64521,64580

DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217

TABLE:;1

DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H

DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H;2

DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H

DB 0E2H,01H,0E1H,0D4H,0B4H DB 0C4H,0B4H,04H DB 00H

SCAN:;把記的數送給偏移量

MOV DPTR,#7FFFH MOV A,#80H

MOVX @DPTR,A;寫控制字,在顯示程序中A口輸出,B口輸出

MOV A,78H;秒 MOV B,#0AH DIV AB MOV 71H,A MOV 70H,B

MOV A,79H;分

MOV B,#0AH DIV AB MOV 74H,A MOV 73H,B

MOV A,7AH;時

MOV B,#0AH DIV AB MOV 77H,A

MOV 76H,B;

單片機課程設計

T0中斷允許

;循環掃描顯示,數碼管顯示程序,數碼管為共陽型

MOV R1,#70H MOV R5,#80H;位選

MOV R3,#08H SCAN1:MOV A,R5 MOV DPTR,#7FFCH MOVX @DPTR,A;送A口位選

MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR

MOV DPTR,#7FFDH MOVX @DPTR,A;送B口字形碼

LCALL DL1MS

INC R1;字形碼偏移量

MOV A,R5 RR A;位選碼

MOV R5,A DJNZ R3,SCAN1;8次

MOV DPTR,#7FFCH MOV A,#00H MOVX @DPTR,A;A口清位選

RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;對應于“0”~“9”、“_”

;定時器T0中斷服務程序 T0INT:PUSH ACC

CLR ET0;停

CLR TR0;停T0工作

MOV TL0,#0B0H MOV TH0,#03CH SETB TR0;開T0工作

INC 7BH;7BH存放20

MOV A,7BH

CJNE A,#14H,OUTT0;20

MOV 7BH,#00H

INC 78H;78H秒

MOV A,78H

CJNE A,#3CH,OUTT0;60

MOV 78H,#00H

INC 79H

;79H分

MOV A,79H

CJNE A,#3CH,OUTT0;60

MOV 79H,#00H

INC 7AH

;7AH時

MOV A,7AH

CJNE A,#18H,OUTT0;24

MOV 7AH,#00

OUTT0:SETB ET0;開T0中斷允許

POP ACC RETI

;;;;;;鍵盤掃描子程序;;;;;;;;

KEYSCAN:MOV DPTR,#7FFFH MOV A,#82H

MOVX @DPTR,A;寫控制字,此時A口輸出,B口輸入

MOV DPTR,#7FFEH MOV A,#00H

MOVX @DPTR,A;C口寫0

單片機課程設計

MOV DPTR,#7FFDH MOVX A,@DPTR MOV B,A

;B口輸入

CJNE A,#0FFH,HAVE KEYOUT: RET

HAVE: LCALL DL10MS1 MOVX A,@DPTR CJNE A,B,KEYOUT;延時一段時間再檢測有鍵按下才開始掃描處理

INC DPTR MOV A,#0FEH MOV B,A MOVX @DPTR,A;C口輸出行值

MOV DPTR,#7FFDH MOVX A,@DPTR;B口輸入列值

CJNE A,#0FFH,KEYLIE0

MOV A,B RL A MOV B,A MOV DPTR,#7FFEH MOVX @DPTR,A;C口輸出行值

MOV DPTR,#7FFDH MOVX A,@DPTR;B口輸入列值

CJNE A,#0FFH,KEYLIE1

MOV A,B RL A MOV B,A

MOV DPTR,#7FFEH

MOVX @DPTR,A;C口輸出行值

MOV DPTR,#7FFDH

MOVX A,@DPTR;B口輸入列值

CJNE A,#0FFH,KEYLIE2

MOV A,B RL A

MOV DPTR,#7FFEH

MOVX @DPTR,A;C口輸出行值

MOV DPTR,#7FFDH

MOVX A,@DPTR;B口輸入列值

CJNE A,#0FFH,KEYLIE3 ACALL KEYOUT;

KEYLIE0:MOV R2,#00H;R2 鍵碼 行值,第1行八個數

LJMP KEYGET

KEYLIE1:MOV R2,#08H;第2行,八個數 LJMP KEYGET

KEYLIE2:MOV R2,#10H;第3行,八個數 LJMP KEYGET

KEYLIE3:MOV R2,#18H;第4行,八個數 LJMP KEYGET

KEYGET:MOV B,A

;B中存放B口讀入的列值

MOV DPTR,#KEYTAB MOV A,#0 NEXT: PUSH ACC

MOVC A,@A+DPTR CJNE A,B,AGAIN

POP ACC;A是偏移值,即列值 ADD A,R2;A中存放鍵碼

單片機課程設計

MOV B,A RL A

ADD A,B;PC偏移量

MOV LJMP KEYFUN30 LJMP KEYFUN31 RET KEYTAB:DB

0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH DPTR,#KEYFUNTAB JMP @A+DPTR

AGAIN: POP ACC INC A CJNE A,#8,NEXT ACALL KEYOUT

KEYFUNTAB: LJMP KEYFUN00 LJMP KEYFUN01 LJMP KEYFUN02 LJMP KEYFUN03 LJMP KEYFUN04 LJMP KEYFUN05 LJMP KEYFUN06 LJMP KEYFUN07 LJMP KEYFUN08 LJMP KEYFUN09 LJMP KEYFUN10 LJMP KEYFUN11 LJMP KEYFUN12 LJMP KEYFUN13 LJMP KEYFUN14 LJMP KEYFUN15 LJMP KEYFUN16 LJMP KEYFUN17 LJMP KEYFUN18 LJMP KEYFUN19 LJMP KEYFUN20 LJMP KEYFUN21 LJMP KEYFUN22 LJMP KEYFUN23 LJMP KEYFUN24 LJMP KEYFUN25 LJMP KEYFUN26 LJMP KEYFUN27 LJMP KEYFUN28 LJMP KEYFUN29

;0 1 2 3 4 5 6 7

RET

DL10MS1:MOV R4,#20 DL3: MOV R5,#7DH DL4: NOP NOP

DJNZ R5,DL4 DJNZ R4,DL3 RET

KEYFUN00:MOV @R0,#00H MOV A,7EH

CJNE A,#0FFH,CALCU

RET

KEYFUN01:MOV @R0,#01H MOV A,7EH

CJNE A,#0FFH,CALCU RET

KEYFUN02:MOV @R0,#02H MOV A,7EH

CJNE A,#0FFH,CALCU RET

KEYFUN03:MOV @R0,#03H MOV A,7EH

CJNE A,#0FFH,CALCU RET

KEYFUN04:MOV @R0,#04H MOV A,7EH

CJNE A,#0FFH,CALCU RET

KEYFUN05:MOV @R0,#05H MOV A,7EH

CJNE A,#0FFH,CALCU RET

KEYFUN06:MOV @R0,#06H MOV A,7EH

CJNE A,#0FFH,CALCU RET

單片機課程設計

KEYFUN07:MOV @R0,#07H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN08:MOV @R0,#08H MOV A,7EH CJNE A,#0FFH,CALCU RET KEYFUN09:MOV @R0,#09H MOV A,7EH CJNE A,#0FFH,CALCU RET CALCU: MOV A,71H MOV B,#0AH MUL AB ADD A,70H MOV 78H,A MOV A,74H MOV B,#0AH MUL AB ADD A,73H MOV 79H,A MOV A,77H MOV B,#0AH MUL AB ADD A,76H MOV 7AH,A RET

KEYFUN10://調時鍵 CLR TR0

MOV R0,#77H;R0指向時的偏移量

MOV 7DH,#00H;閃爍標志位

LCALL FLASH

RET FLASH:MOV A,@R0 MOV @R0,#0BH;R0(此時77H)指向熄滅的偏移量

MOV 7CH,#3DH;7CH單元存放循環次數 RE: LCALL OFFSCAN DJNZ 7CH,RE;調用OFFSCAN60次,半秒

MOV @R0,A;R0(此時77H)指向原來的偏移量

MOV 7CH,#3DH RE1: LCALL OFFSCAN

DJNZ 7CH,RE1;調用OFFSCAN60次,半秒 LCALL KEYSCAN;鍵盤掃描

MOV A,7DH CJNE A,#0FFH,FLASH;判斷閃爍標志位

RET OFFSCAN: PUSH ACC MOV R1,#70H MOV R5,#80H;位選

MOV R3,#08H OFFSCAN1:MOV DPTR,#7FFFH MOV A,#80H

MOVX @DPTR,A;寫控制字

MOV A,R5 MOV DPTR,#7FFCH MOVX @DPTR,A;A口輸出位選

MOV A,@R1 MOV DPTR,#OFFTAB MOVC A,@A+DPTR

MOV DPTR,#7FFDH

MOVX @DPTR,A;B口輸出字形碼

LCALL DL1MS

INC R1

;R1指向下一個單元

MOV A,R5 RR A MOV R5,A;位選

DJNZ R3,OFFSCAN1;8次

單片機課程設計

MOV DPTR,#7FFCH MOV A,#00H MUL AB ADD A,73H MOV 69H,A MOVX @DPTR,A;A口位選清零

POP ACC RET OFFTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0FFH,89H RET //調時鍵按下

KEYFUN11:INC R0 RET KEYFUN12:DEC R0 RET KEYFUN13://走時鍵

MOV 7DH,#0FFH SETB TR0

RET KEYFUN14://鬧鈴鍵 MOV R0,#77H MOV 7EH,#0FFH;改變顯示單元,不改變計數單元

MOV 7DH,#00H;開FLASH標志位

LCALL FLASH RET

KEYFUN15://鬧鐘時間確認鍵,寫入計數比較單元

MOV A,71H MOV B,#0AH MUL AB ADD A,70H MOV 68H,A

MOV A,74H MOV B,#0AH

MOV A,77H MOV B,#0AH MUL AB ADD A,76H MOV 6AH,A RET

KEYFUN16:RET

KEYFUN17:MOV 7DH,#00H MOV 70H,#0CH

MOV 71H,#0BH

MOV 72H,#0BH

MOV 73H,#0BH

MOV 74H,#0BH

MOV 75H,#0BH

MOV 76H,#0BH

MOV 77H,#0BH;送熄滅符以及H符

MOV R0,#70H

LCALL FLASH

RET

KEYFUN18:MOV 7DH,#0FFH;關閉閃爍 LCALL CLEA RET KEYFUN19:RET KEYFUN20:RET KEYFUN21:RET KEYFUN22:RET KEYFUN23:RET KEYFUN24:RET KEYFUN25:RET KEYFUN26:RET KEYFUN27:RET KEYFUN28:RET KEYFUN29:RET KEYFUN30:RET KEYFUN31:RET ACALL KEYOUT END

單片機課程設計

8.2電路圖

總體電路圖

下載430定時器學習心得(含五篇)word格式文檔
下載430定時器學習心得(含五篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    課程設計論文--基于labview的定時器程序設計

    基于labview的定時器程序設計 目錄 1. 程序設計背景??????????????????????????3 1.1. labview定時器的介紹????????????????......

    AVR單片機定時器TC0定時操作過程

    定時器T/C0定時功能實現過程 一、中斷總使能:SREG=0X80; 二、使能定時器溢出中斷,TIMSK的TOIE0置1 三、選擇定時器時鐘分頻系數,由TCCR0的CS01,CS01,CS00決定。 四、定時器計......

    實驗二 單片機定時器和計數器編程

    仲愷農業工程學院實驗報告紙信息學院 (院、系)專業班組單片機原理及接口技術課實驗二單片機定時器/計數器編程一、實驗目的 1、掌握單片機定時器/計數器的工作方式; 2、掌握單......

    555集成定時器課堂設計gai

    “555集成定時器”課堂教學設計思想 一、引題:教學目的(整體感知) 教學目的:通過引導學生關注555集成定時器的歷史發展,主要分析555集成定時器的內部基本構造,幫助學生認識到理解......

    單片機定時器控制交通燈程序1(精選5篇)

    定時器控制交通指示燈 /* 名稱:定時器控制交通指示燈說明:東西向綠燈亮5s后,黃燈閃爍,閃爍5次亮紅燈, 紅燈亮后,南北向由紅燈變成綠燈,5s后南北向黃燈閃爍, 閃爍5次后亮紅燈,東西向綠......

    嵌入式系統 流水燈、按鍵、定時器實驗報告

    嵌入式系統應用 實驗報告 姓名: 學號: 學院: 專業: 班級: 指導教師: 實驗1、流水燈實驗 1.1實驗要求 編程控制實驗板上LED燈輪流點亮、熄滅,中間間隔一定時間。 1.2原理分析 實驗......

    實驗報告二、單片機定時器的綜合應用

    院系 物理與電子信息學院 姓名 吳凱 實驗室 S2312 課程 單片機原理與應用 試驗項目編號專業 電子與電子信息工程班級10電專(2)學號 1060710057同組人/組號/指導老師肖鵬程日期......

    實驗五 定時器、串行口以及人機交互綜合編程

    仲愷農業工程學院實驗報告紙信息學院 (院、系)專業班組單片機原理及接口技術課實驗五定時器、串行口以及人機交互綜合編程 一、實驗目的 1、鞏固掌握單片機定時器、串行口、鍵......

主站蜘蛛池模板: 熟女熟妇伦av网站| 国产特级毛片aaaaaa高清| 久久精品人妻一区二区蜜桃| 99热成人精品热久久6网站| 99国产精品99久久久久久| 成人一区二区免费中文字幕视频| 国产又色又爽又刺激视频| 欧美变态另类牲交zozo| 狠狠88综合久久久久综合网| 国产亚洲2021成人乱码| 免费精品国产人妻国语| 免费无码成人av电影在线播放| 亚洲熟女乱综合一区二区| 九色九九九老阿姨| 男人把女人桶到爽免费应用| 国产香蕉尹人在线观看视频| 亚洲国产午夜精华无码福利| 中文无码热在线视频| 国产欧美日韩在线中文一区| 亚洲精品日韩av专区| 男人猛躁进女人免费播放| 国语自产精品视频在 视频| 综合久久国产九一剧情麻豆| 成年男人午夜片| 欧美激欧美啪啪片| 综合 欧美 小说 另类 图| 小泽玛利亚一区二区免费| 久久综合色另类小说| 亚洲人成网线在线播放va蜜芽| 欧美疯狂做受xxxxx高潮| 欧美人与动另类xxxx| 亚洲国产精品无码久久电影| 国产日韩一区二区三区免费高清| 欧洲熟妇色xxxx欧美老妇多毛网站| 亚洲久热中文字幕在线| 无码大潮喷水在线观看| 久久久国产精品人人片| 亚洲av无码专区国产乱码不卡| 疯狂做受xxxx高潮视频免费| 图片小说视频一区二区| 免费无码毛片一区二区app|