版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、廣州大學(xué)松田學(xué)院課程設(shè)計說明書題目基于AT89C52單片機(jī)的數(shù)字電子鐘姓名李廷順專業(yè)電子信息工程班級06計控系(部信息科學(xué)與工程指導(dǎo)教師汪全2009年 6月 6日廣州大學(xué)松田學(xué)院單片機(jī)課程設(shè)計、課程(學(xué)年論文任務(wù)書課程編號課內(nèi)/外周數(shù)(學(xué)時數(shù)1周指導(dǎo)地點 1-201 集中分散. 注:本表打印,一式三份,學(xué)生個人、系(部(歸檔、教務(wù)處(備案各一份基于AT89C51單片機(jī)的數(shù)字電子鐘摘要本設(shè)計是基于單片機(jī)的定時鬧鐘設(shè)計。單片機(jī)是在一塊半導(dǎo)體芯片上集成了CPU、存儲器以及輸入和輸出接口電路的微型計算機(jī);其集成度高、功能強、通用性好,特別是它具有體積小、重量輕、能耗低、價格便宜、抗擾、能力強和使用方便
2、等特點。它不僅僅是一項技術(shù)性上的突破,同時也是對能源方面的有效節(jié)約與有效利用,因此深受國家有關(guān)技術(shù)部門和能源部門的重視和支持。其組合而成的配件產(chǎn)品在日常生活的使用過程中非常方便、簡單且實用,深受著廣大消費者的喜愛,從而使單片機(jī)技術(shù)在社會中得到了廣泛的發(fā)展和應(yīng)用。目前,已成為測量控制應(yīng)用系統(tǒng)中的優(yōu)選機(jī)種和新電子產(chǎn)品的關(guān)鍵部件。特別是20世紀(jì)70年代問世以來,以其極高的性能價格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快,推廣率高,市場利潤率高。而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。Key: XXXXX目錄1 概述 (11.1設(shè)計意義 (11.2設(shè)計任務(wù) (11.3設(shè)計系統(tǒng)的主要功能
3、 (12 系統(tǒng)總體方案及硬件設(shè)計 (22.1系統(tǒng)總體方案 (22.2系統(tǒng)設(shè)計方框圖 (22.3硬件設(shè)計 (23 軟件設(shè)計 (93.1程序流程圖 (93.2系統(tǒng)的軟件構(gòu)成及功能 (104 課程設(shè)計體會 (12參考文獻(xiàn) (12附1:系統(tǒng)原理圖 . 錯誤!未定義書簽。附2:源程序代碼 (141 概述1.1設(shè)計目的本設(shè)計是一個定時鬧鐘,它使用單片的40引腳單片機(jī)完成鬧鐘的全部功能。設(shè)計目的是為了學(xué)習(xí)和鞏固單片機(jī)知識,使對已學(xué)過的基礎(chǔ)知識能有更深入的理解,學(xué)會獨立思考、獨立思考、獨立工作,以及提高對所學(xué)應(yīng)用基本理論分析和解決實際問題的能力。1.2設(shè)計任務(wù)本文設(shè)計的定時鬧鐘采用AT89C52芯片,用匯編語
4、言進(jìn)行編程,時、分、秒用6位LED數(shù)碼管顯示。在電路中通過P2.4按鍵進(jìn)行定時和調(diào)時,P2.5按鍵決定鬧鐘的開關(guān),定時時間到通過喇叭發(fā)出報警聲并在一定時間后自動關(guān)閉。1.3設(shè)計系統(tǒng)的主要功能·能夠設(shè)置修改時鐘時間、修改鬧鐘時間。·修改時間時相應(yīng)位置以閃爍作為標(biāo)志·開鬧鐘時,到定時時間能發(fā)出報警聲并自動關(guān)閉或手動關(guān)閉。2 系統(tǒng)總體方案及硬件設(shè)計2.1 系統(tǒng)總體方案1由于要顯示數(shù)字時間,所以需要6位數(shù)碼管。2時間的定時用時鐘電路,修改時間和定時用手動按鍵控制,報警聲通過喇叭發(fā)出。3AT89C51單片機(jī)加上外圍器件(數(shù)字顯示器7SEG-MPX6-CC-BLUE, RES
5、PACK-8排阻和BUZZER蜂鳴器和應(yīng)用程序(STC-ISP V38A軟件和Keil uVision2編譯軟件,構(gòu)成相應(yīng)的應(yīng)用系統(tǒng)。2.2系統(tǒng)設(shè)計方框圖 圖12.3硬件設(shè)計AT89C52是一種帶16K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory的低電壓,可穩(wěn)定地工作于5V的電源下.該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C52是一種高效微控制器.AT89C52管腳說明
6、:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH 編程和校驗時,P1口作為第八位地址接收。P2口:P2口為
7、一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電
8、平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL這是由于上拉的緣故。 P3口也可作為AT89C52的一些特殊功能口,如下表所示:口管腳備選功能P3.0 RXD(串行輸入口P3.1 TXD(串行輸出口P3.2 /INT0(外部中斷0P3.3 /INT1(外部中斷1P3.4 T0(記時器0外部輸入P3.5 T1(記時器1外部輸入P3.6 /WR(外部數(shù)據(jù)存儲器寫選通P3.7 /RD(外部數(shù)據(jù)存儲器讀選通P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允
9、許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE 只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信
10、號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH,不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。如圖2所示圖2由P3.3口控制蜂鳴器,使其定時時間到能發(fā)出報警聲。如圖3所示Array圖3單片機(jī)的時鐘產(chǎn)生方法有兩種:內(nèi)部時鐘方式和外部時鐘方式。本系統(tǒng)中AT89C51單片機(jī)采用內(nèi)部時鐘方式。最常用的內(nèi)部時鐘方式是采用外接晶體
11、和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz12MHz之間。電容值無嚴(yán)格要求,但電容取值對振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF100pF之間取值。AT98C51單片機(jī)的時鐘電路。如圖4所示 圖4利用八位LED數(shù)碼管的1-8引腳連接AT89C52單片機(jī) P1.0 P1.7接口,其他8個引腳分別與AT89C51單片機(jī)的P0.0 - P0.7和共陽極管RESPACK-8排阻的 2 - 9 引腳分別連接。單片機(jī)中通常使用7段LED,LED是發(fā)光二極管顯示器的縮寫。LED顯示器由于結(jié)構(gòu)簡單,價格便宜,體積小,亮度高,電壓低,可靠性高,壽命長,響應(yīng)速度快,顏色鮮艷
12、,配置靈活,與單片機(jī)接口方便而得到廣泛應(yīng)用。LED顯示器是由若干個發(fā)光二極管組成顯示字段的顯示部件,當(dāng)發(fā)光二極管導(dǎo)通時,相應(yīng)的一個點或一個筆劃發(fā)光,控制不同組合的二極管導(dǎo)通,就能顯示出各種字符。LED 顯示器有多種形式,如:“米”字型顯示器,點陣顯示器和七段數(shù)碼顯示器等,在單片機(jī)系統(tǒng)中使用最多的是七段數(shù)碼顯示器。LED有共陰極和共陽極兩種。如圖5所示。二極管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5V的電壓。一位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管構(gòu)成字型“8”的各個筆劃(段ag,另一個小數(shù)點為dp發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正
13、向電壓時,該段筆劃即亮;不加電壓則暗。為了保護(hù)各段LED不被損壞,需外加限流電阻。 圖5 LED數(shù)碼管結(jié)構(gòu)原理圖眾所周知,LED顯示數(shù)碼管通常由硬件7段譯碼集成電路,完成從數(shù)字到顯示碼的譯碼驅(qū)動。本系統(tǒng)采用軟件譯碼,以減小體積,降低成本和功耗,軟件譯碼的另一優(yōu)勢還在于比硬件譯碼有更大的靈活性。所謂軟件譯碼,即由單片機(jī)軟件完成從數(shù)字到顯示碼的轉(zhuǎn)換。從LED數(shù)碼管結(jié)構(gòu)原理可知,為了顯示字符,要為LED顯示數(shù)碼管提供顯示段碼,組成一個“8”字形字符的7段,再加上1個小數(shù)點位,共計8段,因此提供給LED數(shù)碼管的顯示段碼為1個字節(jié)。各段碼位與顯示段的對應(yīng)關(guān)系如表1。表1 各段碼位的對應(yīng)關(guān)系 需說明的是當(dāng)
14、用數(shù)據(jù)口連接LED數(shù)碼管adp引腳時,不同的連接方法,各段碼位與顯示段有不同的對應(yīng)關(guān)系。通常數(shù)據(jù)口的D0位與a段連接,D1位與b 段連接,D7位與dp段連接,如表1所示,表2為用于LED數(shù)碼管顯示的十六進(jìn)制數(shù)和空白字符與P的顯示段碼。表2 LED顯示段碼 注:(1本表所列各字符的顯示段碼均為小數(shù)點不亮的情況。(2“空白”字符即沒有任何顯示。根據(jù)AT89C2051單片機(jī)灌電流能力強,拉電流能力弱的特點,我們選用共陽數(shù)碼管。將AT89C2051的P1.0P1.7分別與共陽數(shù)碼管的ag及dp相連,高電平的位對應(yīng)的LED數(shù)碼管的段暗,低電平的位對應(yīng)的LED數(shù)碼管的段亮,這樣,當(dāng)P0口輸出不同的段碼,就
15、可以控制數(shù)碼管顯示不同的字符。例如:當(dāng)P0口輸出的段碼為1100 0000,數(shù)碼管顯示的字符為0。數(shù)碼管顯示器有二種工作方式,即靜態(tài)顯示方式和動態(tài)掃描顯示方式。為節(jié)省端口及降低功耗,本系統(tǒng)采用動態(tài)掃描顯示方式。動態(tài)掃描顯示方式需解決多位LED數(shù)碼管的“段控”和“位控”問題,本電路的“段控”(即要顯示的段碼的控制通過P0口實現(xiàn);而每一位的公共端,即LED數(shù)碼管的“位控”,則由P3口控制。這種連接方式由于多位字段線連在一起,因此,要想顯示不同的內(nèi)容,必然要采取輪流顯示的方式,即在某一瞬間,只讓其中的某一位的字位線處于選通狀態(tài),其它各位的字位線處于斷開狀態(tài),同時字段線上輸出這一位相應(yīng)要顯示字符的字段
16、碼。在這一瞬時,只有這一位在顯示,其他幾位則暗。在本系統(tǒng)中,字位線的選通與否是通過PNP三極管的導(dǎo)通與截止來控制,即三極管處于“開關(guān)”狀態(tài)。系統(tǒng)的時分顯示部件由6只7段共陽LED數(shù)碼管構(gòu)成。值得一提的是,在設(shè)計中需要實現(xiàn)時,分,秒之間的間隔,以及鬧鐘開關(guān)的標(biāo)識,故在相應(yīng)的位置均 加上了dp顯示。如圖6所示 圖63 軟件設(shè)計 主程序流程圖(圖7 中斷子程序流程圖(圖83.2 系統(tǒng)的軟件構(gòu)成及功能本系統(tǒng)的軟件系統(tǒng)在程序設(shè)計過程中,加入了時間調(diào)整位閃爍標(biāo)識和鬧鐘開關(guān)。程序優(yōu)化解決了按鍵時LED顯示的不穩(wěn)定,以及在定鬧時間到達(dá)后蜂鳴器警報時LED不顯示的問題。根據(jù)設(shè)計要求,定時鬧鐘程序可分為以下幾個模
17、塊:3.2 .1 顯示時間,鬧鐘時間的設(shè)置主程序的功能是完成系統(tǒng)的初始化,調(diào)用時間顯示子程序,將時間的時分秒發(fā)送顯示,當(dāng)按下P2.4大于1秒時,相應(yīng)的時鐘/鬧鐘調(diào)整位閃爍及退出,當(dāng)按下P2.4小于1秒時,時鐘顯示子程序跳到鬧鐘顯示子程序及時針,分針位加一3.2 .2 中斷程序設(shè)計中斷程序(如圖8所示完成時間計數(shù),時間調(diào)整,等功能。中斷采用AT89C52內(nèi)部T0中斷實現(xiàn),定時時間為50ms,當(dāng)時間到達(dá)50ms×20,即1秒鐘時,秒計數(shù)增加1,1分鐘時,分計數(shù)增加1,到達(dá)1小時,則時計數(shù)增加1,并將秒、分、時的個位、十位放入顯示緩沖器。當(dāng)秒、分、時計數(shù)緩沖器分別到達(dá)60sec 、60mi
18、n、24h時,則對它們清零,以便從新計數(shù)。3.2 .3 定時時間的響應(yīng)及關(guān)閉在時間顯示子程序調(diào)用顯示后調(diào)用鬧鐘服務(wù)子程序,檢測鬧鐘開關(guān)狀態(tài)以及是否到達(dá)定鬧時間,若到達(dá),則開蜂鳴器,調(diào)用5s延時子程序后自動關(guān)閉蜂鳴器5 課程設(shè)計體會課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在,作為二十一世紀(jì)的大學(xué)生來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。通過本次單片機(jī)原理及應(yīng)用課程設(shè)計使我充分認(rèn)認(rèn)到了課程設(shè)計的理要性和必要性,
19、本次設(shè)計使我對已學(xué)過的基礎(chǔ)知識有了更深入的理解,學(xué)會了獨立思考、獨立工作以及對應(yīng)用所學(xué)基本理論分析和解決實際問題的能力有了很大的提高。另外,本次設(shè)計使我的實際操作技能得到了訓(xùn)練,同時也進(jìn)一步培養(yǎng)了我嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng)?;仡櫰鸫舜螁纹瑱C(jī)課程設(shè)計,從選題到定稿,從理論到實踐,在整整一星期的日子里,可以說得是苦多于甜,但是從中卻學(xué)到很多很多的的東西,不但鞏固了以前所學(xué)過的知識,而且對單片機(jī)原理課外知識也的到了拓展。做的過程中,開始的確遇到了不少困難的問題,比如說芯片管腳不熟悉怎么放置,對單片機(jī)匯編語言掌握得不好等等,同時在這過程中也發(fā)現(xiàn)了自己的許多不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢
20、固。通過單片機(jī)課程設(shè)計之后,我不僅加深了對單片機(jī)理論的理解,將理論很好地應(yīng)用到實際當(dāng)中去,而且我們還學(xué)會了如何去培養(yǎng)創(chuàng)新精神和嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng),從而不斷地戰(zhàn)勝自己,超越自己。更重要的是,我在這一設(shè)計過程中,學(xué)會了堅持不懈,不輕易言棄。參考文獻(xiàn)1 .李朝青.單片機(jī)原理及接口技術(shù)(修訂版.北京:北京航空航天大學(xué)出版社,19982. 楊欣.51單片機(jī)應(yīng)用從零開始. 北京:清華大學(xué)出版社,20084. 譚浩強.單片機(jī)課程設(shè)計. 北京:清華大學(xué)出版社,19895. 余發(fā)山主編,單片機(jī)原理及應(yīng)用技術(shù),中國礦業(yè)大學(xué)出版社2003.12參考電路原理圖 數(shù)字電子鐘參考程序清單; AT89C52時鐘定鬧程序 ; ;
21、 定時器T0、T1溢出周期為50MS,T0為秒計數(shù)用, T1為調(diào)整時閃爍用,; P2.4為調(diào)整按鈕,P0口為段顯輸出口,P1口為位顯輸出口,采用共陽顯示管。;部分寄存器定義說明:;00H 時鐘調(diào)分閃動標(biāo)志;01H 時鐘調(diào)時閃動標(biāo)志70H-75H 位顯緩存寄存器;02H 閃爍標(biāo)志 76H-79H 時鐘顯示寄存器;03H 鬧鐘識別標(biāo)志 7AH 熄滅符寄存器;04H 鬧鐘調(diào)分閃動標(biāo)志6AH-6FH 時鐘顯示寄存器;05H 鬧鐘調(diào)時閃動標(biāo)志;ORG 0000H ;程序執(zhí)行開始地址LJMP START ;跳到標(biāo)號START執(zhí)行ORG 000BH ;定時器T0中斷程序入口LJMP INTT0 ;跳至INT
22、TO執(zhí)行ORG 001BH ;定時器T1中斷程序入口LJMP INTT1 ;跳至INTT1執(zhí)行ORG 0100H ;鬧鐘執(zhí)行開始地址LJMP ALARM; 主程序 ;START:MOV 70H,#05H ;初始化時鐘秒針個位MOV 71H,#05H ;初始化時鐘秒針十位MOV 76H,#08H ;初始化時鐘分針個位MOV 77H,#05H ;初始化時鐘分針十位MOV 78H,#03H ;初始化時鐘時針個位MOV 79H,#02H ;初始化時鐘時針十位MOV 7AH,#0AH ;放入第十位"熄滅符"數(shù)據(jù),使閃爍熄滅時不顯示任何數(shù)據(jù)MOV 6AH,#00H ;初始化鬧鐘秒針個位
23、MOV 6BH,#00H ;初始化鬧鐘秒針十位MOV 6CH,#09H ;初始化鬧鐘分針個位MOV 6DH,#05H ;初始化鬧鐘分針十位MOV 6EH,#03H ;初始化鬧鐘時針個位MOV 6FH,#02H ;初始化鬧鐘時針十位MOV TMOD,#11H ;設(shè)T0、T1為16位定時器MOV TCON,#00000101B ;開T0、T1中斷MOV TL0,#0B0H ;50MS定時初值(T0計時用MOV TH0,#3CH ;50MS定時初值MOV TL1,#0B0H ;50MS定時初值(T1閃爍定時用MOV TH1,#3CH ;50MS定時初值SETB EA ;總中斷開放SETB ET0 ;
24、允許T0中斷SETB TR0 ;開啟T0定時器SETB P3.3 ;關(guān)蜂鳴器MOV R4,#14H ;1秒定時用初值(50MS×20START1:LCALL DISPLAY ;調(diào)用顯示子程序LCALL ALARM ;調(diào)用檢測是否開鬧鐘JNB P2.4,SETMM1 ;P2.4口為0時轉(zhuǎn)時間調(diào)整程序SJMP START1 ;P2.4口為1時跳回START1SETMM1:LJMP SETMM ;轉(zhuǎn)到時間調(diào)整程序SETMM;鬧鐘服務(wù)子程序程序; ;ALARM:LJMP ALARMKG ;檢測鬧鐘開關(guān)狀態(tài)ALARM_BJ:MOV A,6FH ;檢測是否到鬧鐘時間CJNE A,79H,A_FH
25、MOV A,6EHCJNE A,78H,A_FHMOV A,6DHCJNE A,77H,A_FHMOV A,6CHCJNE A,76H,A_FHMOV A,#0CJNE A,71H,A_FHMOV A,#0CJNE A,70H,A_FHMOV 60H,#5 ;蜂鳴器定時5sCLR P3.3 ;開蜂鳴器A_FH1:LCALL DL_BEEP ;調(diào)用蜂鳴器延時子程序JB P2.5,A_FH2DJNZ 60H,A_FH1 ;若還沒到5s,則繼續(xù)蜂鳴A_FH2:SETB P3.3 ;關(guān)蜂鳴器A_FH:RET;鬧鐘開關(guān)標(biāo)志;ALARMKG: ;檢測蜂鳴器開關(guān)狀態(tài)JNB P2.5,KGAJMP A_FH2
26、KG:MOV DPTR,#TAB ;蜂鳴器開則加dp標(biāo)志MOV A,#0AHMOVC A,A+DPTRCLR ACC.7MOV P0,AMOV p1,#11101111BLCALL DL1MSMOV p1,#0FFHAJMP ALARM_BJ; 1秒計時子程序 ; ;T0中斷服務(wù)程序;INTT0:PUSH ACC ;累加器入棧保護(hù)PUSH PSW ;狀態(tài)字入棧保護(hù)CLR ET0 ;關(guān)T0中斷允許CLR TR0 ;關(guān)閉定時器T0MOV A,#0B0H ;中斷響應(yīng)時間同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重裝初值(低8位修正值MOV A,#3CH ;高8位初值修正ADD
27、C A,TH0 ;MOV TH0,A ;重裝初值(高8位修正值SETB TR0 ;開啟定時器T0DJNZ R4, OUTT0 ;20次中斷未到中斷退出ADDSS:MOV R4,#14H ;20次中斷到(1秒重賦初值MOV R0,#71H ;指向秒計時單元(70H-71HACALL ADD1 ;調(diào)用加1程序(加1秒操作MOV A,R3 ;秒數(shù)據(jù)放入A(R3為2位十進(jìn)制數(shù)組合CLR C ;清進(jìn)位標(biāo)志(作為是否滿60的標(biāo)志CJNE A,#60H,ADDMM ;若滿60,則轉(zhuǎn)到分加一程序ADDMM:JC OUTT0 ;小于60秒時中斷退出,繼續(xù)計數(shù)ACALL CLR0 ;大于或等于60秒時對秒計時單元
28、清0MOV R0,#77H ;指向分計時單元(76H-77HACALL ADD1 ;分計時單元加1分鐘MOV A,R3 ;分?jǐn)?shù)據(jù)放入ACLR C ;清進(jìn)位標(biāo)志(作為是否滿60的標(biāo)志CJNE A,#60H,ADDHH ;ADDHH:JC OUTT0 ;小于60分時中斷退出,繼續(xù)計數(shù)ACALL CLR0 ;大于或等于60分時分計時單元清0MOV R0,#79H ;指向小時計時單元(78H-79HACALL ADD1 ;小時計時單元加1小時MOV A,R3 ;時數(shù)據(jù)放入ACLR C ;清進(jìn)位標(biāo)志(作為是否滿24的標(biāo)志CJNE A,#24H,HOUR ;HOUR:JC OUTT0 ;小于24小時中斷退
29、出ACALL CLR0 ;大于或等于24小時小時計時單元清0OUTT0:MOV 72H,76H ;中斷退出時將分、時計時單元數(shù)據(jù)移MOV 73H,77H ;入對應(yīng)顯示單元MOV 74H,78HMOV 75H,79HPOP PSW ;恢復(fù)狀態(tài)字(出棧POP ACC ;恢復(fù)累加器SETB ET0 ;開放T0中斷RETI ;中斷返回; 閃動調(diào)時子程序 ; ;T1中斷服務(wù)程序,用作時間調(diào)整時調(diào)整單元閃爍指示;INTT1:PUSH ACC ;中斷現(xiàn)場保護(hù)PUSH PSWMOV TL1, #0B0H ;裝定時器T1定時初值MOV TH1, #3CHDJNZ R2,INTT1OUT ;0.3秒未到退出中斷(
30、50MS中斷6次MOV R2,#06H ;重裝0.3秒定時用初值JB 03H,A_DIS ;鬧鐘識別標(biāo)志,若處于鬧鐘狀態(tài)下則跳轉(zhuǎn)CPL 02H ;0.3秒定時到對閃爍標(biāo)志取反JB 02H,FLASH1 ;02H位為1時顯示單元"熄滅"MOV 72H,76H ;02H位為0時正常顯示MOV 73H,77HMOV 74H,78HMOV 75H,79HAJMP INTT1OUTA_DIS:CPL 02H ;0.3秒定時到對閃爍標(biāo)志取反 JB 02H,FLASH1_A ;02H位為1時顯示單元"熄滅"MOV 70H,#00H ;02H位為0時正常顯示MOV 71
31、H,#00HMOV 72H,6CHMOV 73H,6DHMOV 74H,6EHMOV 75H,6FHAJMP INTT1OUTINTT1OUT:POP PSW ;恢復(fù)現(xiàn)場POP ACC ;RETI ;中斷退出FLASH1:JB 01H,FLASH2 ;01H位為1時,轉(zhuǎn)小時熄滅控制MOV 72H,7AH ;01H位為0時,"熄滅符"數(shù)據(jù)放入分MOV 73H,7AH ;顯示單元(72H-73H,將不顯示分?jǐn)?shù)據(jù)MOV 74H,78HMOV 75H,79HAJMP INTT1OUT ;轉(zhuǎn)中斷退出FLASH1_A:JB 05H,FLASH2_A ;05H位為1時,轉(zhuǎn)小時熄滅控制;M
32、OV 70H,#00H;MOV 71H,#00HMOV 72H,7AH ;04H位為0時,"熄滅符"數(shù)據(jù)放入分MOV 73H,7AH ;顯示單元(72H-73H,將不顯示分?jǐn)?shù)據(jù)MOV 74H,6EHMOV 75H,6FHAJMP INTT1OUT ;轉(zhuǎn)中斷退出FLASH2:MOV 72H,76H ;01H位為1時,"熄滅符"數(shù)據(jù)放入小時MOV 73H,77H ;顯示單元(74H-75H,小時數(shù)據(jù)將不顯示MOV 74H,7AHMOV 75H,7AHAJMP INTT1OUT ;轉(zhuǎn)中斷退出FLASH2_A:;MOV 70H,#00H;MOV 71H,#00H
33、MOV 72H,6CHMOV 73H,6DHMOV 74H,7AHMOV 75H,7AHAJMP INTT1OUT ;轉(zhuǎn)中斷退出; 加1子程序 ;ADD1:MOV A,R0 ;取當(dāng)前計時單元數(shù)據(jù)到ADEC R0 ;指向前一地址SWAP A ;A中數(shù)據(jù)高四位與低四位交換ORL A,R0 ;前一地址中數(shù)據(jù)放入A中低四位ADD A,#01H ;A加1操作DA A ;十進(jìn)制調(diào)整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位變0MOV R0,A ;放回前一地址單元MOV A,R3 ;取回R3中暫存數(shù)據(jù)INC R0 ;指向當(dāng)前地址單元SWAP A ;A中數(shù)據(jù)高四位與低四位交換ANL A,
34、#0FH ;高四位變0MOV R0,A ;數(shù)據(jù)放入當(dāng)削地址單元中RET ;子程序返回; 清零子程序 ; ;對計時單元復(fù)零用;CLR0:CLR A ;清累加器MOV R0,A ;清當(dāng)前地址單元DEC R0 ;指向前一地址MOV R0,A ;前一地址單元清0RET ;子程序返回; 時鐘調(diào)整子程序 ; ;當(dāng)調(diào)時按鍵按下時進(jìn)入此程序;SETMM:cLR ET0 ;關(guān)定時器T0中斷CLR TR0 ;關(guān)閉定時器T0LCALL DL1S ;調(diào)用1秒延時程序JB P2.4,ALARMDIS ;鍵按下時間小于1秒,轉(zhuǎn)到鬧鐘顯示CLR 03H ;清鬧鐘識別標(biāo)志MOV R2,#06H ;進(jìn)入調(diào)時狀態(tài),賦閃爍定時初值
35、SETB ET1 ;允許T1中斷SETB TR1 ;開啟定時器T1,閃爍LJMP SET2;ALARMDIS:SETB ET0 ;開T0中斷SETB TR0 ;開啟T0定時器(開時鐘,鬧鐘狀態(tài)不干擾時鐘LCALL ALARMDISPLAY ;JB P2.4,ALARMDIS ;無按鍵按下,等待。LCALL ALARMDISPLAY ;有鍵按下,調(diào)鬧鐘顯示子程序延時削抖JB P2.4,ALARMDIS ;是干擾返回ALARMDIS等待WAITH:LCALL DL1S ;調(diào)用1秒延時程序JNB P2.4,SETMM_A ;鍵按下時間大于1秒,跳轉(zhuǎn)到鬧鐘調(diào)時子程序LJMP START1;時鐘調(diào)分針;
36、SET2:JNB P2.4,SET1 ;P2.4口為0(鍵未釋放,等待SETB 00H ;鍵釋放,分調(diào)整閃爍標(biāo)志置1SET4:JB P2.4,SET3 ;等待鍵按下LCALL DL1S ;有鍵按下,延時1秒JNB P2.4,SETHH ;按下時間大于1秒轉(zhuǎn)調(diào)小時狀態(tài)MOV R0,#77H ;按下時間小于1秒加1分鐘操作MOV 70H,#00H ;若分針值改變,則秒回歸00MOV 71H,#00HLCALL ADD1 ;調(diào)用加1子程序MOV A,R3 ;取調(diào)整單元返回的數(shù)據(jù)CLR C ;清進(jìn)位標(biāo)志CJNE A,#60H,HHH ;調(diào)整單元數(shù)據(jù)與60比較HHH:JC SET4 ;調(diào)整單元數(shù)據(jù)小于6
37、0轉(zhuǎn)SET4循環(huán)LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于60時清0CLR C ;清進(jìn)位標(biāo)志AJMP SET4 ;跳轉(zhuǎn)到SET4循環(huán);時鐘調(diào)時針;SETHH:CLR 00H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時狀態(tài)SETHH1:JNB P2.4,SET5 ;等待鍵釋放SETB 01H ;小時調(diào)整標(biāo)志置1SET6:JB P2.4,SET7 ;等待按鍵按下LCALL DL1SJNB P2.4,SETOUT ;按下時間大于0.5秒退出時間調(diào)整MOV R0,#79H ;按下時間小于0.5秒加1小時操作LCALL ADD1 ;調(diào)加1子程序MOV A,R3 ;取調(diào)整單元返回的數(shù)據(jù)CLR CCJNE A,#24
38、H,HOUU ;計時單元數(shù)據(jù)與24比較HOUU:JC SET6 ;小于24轉(zhuǎn)SET6循環(huán)LCALL CLR0 ;大于或等于24時清0操作AJMP SET6 ;跳轉(zhuǎn)到SET6循環(huán)SETOUT:JNB P2.4,SETOUT1 ;調(diào)時退出程序。等待鍵釋放LCALL DISPLAY ;延時削抖JNB P2.4,SETOUT ;是抖動,返回SETOUT再等待CLR 01H ;清調(diào)小時標(biāo)志CLR 00H ;清調(diào)分標(biāo)志CLR 02H ;清閃爍標(biāo)志CLR TR1 ;關(guān)閉定時器T1CLR ET1 ;關(guān)定時器T1中斷SETB TR0 ;開啟定時器T0SETB ET0 ;開定時器T0中斷(計時開始LJMP STA
39、RT1 ;跳回主程序SET1:LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)分鐘AJMP SET2 ;防止鍵按下時無時鐘顯示SET3:LCALL DISPLAY ;等待調(diào)分按鍵時時鐘顯示用AJMP SET4SET5:LCALL DISPLAY ;鍵釋放等待時調(diào)用顯示程序(調(diào)小時AJMP SETHH1 ;防止鍵按下時無時鐘顯示SET7:LCALL DISPLAY ;等待調(diào)小時按鍵時時鐘顯示用AJMP SET6SETOUT1:LCALL DISPLAY ;退出時鐘調(diào)整時鍵釋放等待AJMP SETOUT ;防止鍵按下時無時鐘顯示; 鬧鐘調(diào)整子程序 ; ;當(dāng)調(diào)鬧鐘時間按鍵按下時進(jìn)入此程序;
40、SETMM_A:CLR ET0 ;關(guān)定時器T0中斷CLR TR0 ;關(guān)閉定時器T0廣州大學(xué)松田學(xué)院單片機(jī)原理及應(yīng)用課程設(shè)計說明書 MOV R2,#06H ;進(jìn)入調(diào)時狀態(tài),賦閃爍定時初值 SETB ET1 ;允許 T1 中斷 SETB TR1 ;開啟定時器 T1,閃爍 SETB 03H ;鬧鐘狀態(tài)標(biāo)志位置 1 ;鬧鐘調(diào)分針; SET2_A: JNB P2.4,SET1_A ;P2.4 口為 0(鍵未釋放) ,等待 SETB 04H ;鍵釋放,分調(diào)整閃爍標(biāo)志置 1 SET4_A: JB P2.4,SET3_A ;等待鍵按下 LCALL DL1S JNB P2.4,SETHH_A;按下時間大于 1
41、秒轉(zhuǎn)調(diào)小時狀態(tài) MOV R0,#6DH ;按下時間小于 1 秒加 1 分鐘操作 LCALL ADD1 ;調(diào)用加 1 子程序 MOV A,R3 ;取調(diào)整單元數(shù)據(jù) CLR C ;清進(jìn)位標(biāo)志 CJNE A,#60H,HHH_A ;調(diào)整單元數(shù)據(jù)與 60 比較 HHH_A: JC SET4_A ;調(diào)整單元數(shù)據(jù)小于 60 轉(zhuǎn) SET4 循環(huán) LCALL CLR0 ;調(diào)整單元數(shù)據(jù)大于或等于 60 時清 0 CLR C ;清進(jìn)位標(biāo)志 AJMP SET4_A ;跳轉(zhuǎn)到 SET4 循環(huán) ;鬧鐘調(diào)時針; SETHH_A: CLR SETHH1_A: JNB SETB SET6_A: JB LCALL JNB MOV
42、 LCALL MOV CLR CJNE HOUU_A: JC LCALL AJMP 04H ;分閃爍標(biāo)志清除(進(jìn)入調(diào)小時狀態(tài)) P2.4,SET5_A ;等待鍵釋放 05H ;小時調(diào)整標(biāo)志置 1 P2.4,SET7_A ;等待按鍵按下 DL1S P2.4,SETOUT_A;按下時間大于 1 秒退出時間調(diào)整 R0,#6FH ;按下時間小于 1 秒加 1 小時操作 ADD1 ;調(diào)加 1 子程序 A,R3 ; C ; A,#24H,HOUU_A ;計時單元數(shù)據(jù)與 24 比較 SET6_A CLR0 SET6_A ;小于 24 轉(zhuǎn) SET6_A 循環(huán) ;大于或等于 24 時清 0 操作 ;跳轉(zhuǎn)到 SE
43、T6_A 循環(huán) 22 廣州大學(xué)松田學(xué)院單片機(jī)原理及應(yīng)用課程設(shè)計說明書 SETOUT_A: JNB LCALL CLR CLR CLR CLR CLR CLR SETB SETB LJMP P2.4,SETOUT1_A ;調(diào)時退出程序。等待鍵釋放 ALARMDISPLAY ;延時削抖 05H ;清調(diào)小時標(biāo)志 04H ;清調(diào)分標(biāo)志 02H ;清閃爍標(biāo)志 03H ;清鬧鐘識別標(biāo)志 TR1 ;關(guān)閉定時器 T1 ET1 ;關(guān)定時器 T1 中斷 TR0 ;開啟定時器 T0 ET0 ;開定時器 T0 中斷(計時開始) ALARMDIS SET1_A: LCALL AJMP SET3_A: LCALL AJM
44、P SET5_A: LCALL AJMP SET7_A: LCALL AJMP SETOUT1_A: LCALL AJMP ALARMDISPLAY SET2_A ALARMDISPLAY SET4_A ALARMDISPLAY SETHH1_A ALARMDISPLAY SET6_A ALARMDISPLAY SETOUT_A ;鍵釋放等待時調(diào)用顯示程序(調(diào)鬧鐘分) ;防止鍵按下時無鬧鐘顯示 ;等待調(diào)分按鍵時鬧鐘顯示用 ;鍵釋放等待時調(diào)用顯示程序(調(diào)鬧鐘時) ;防止鍵按下時無鬧鐘顯示 ;等待調(diào)小時按鍵時鬧鐘顯示用 ;退出時鐘調(diào)整時鍵釋放等待 ;防止鍵按下時無鬧鐘顯示 ; ; 顯示子程序 ; ; DISPLAY: MOV MOV MOV PLAY: MOV MOV MOV MOV ; 顯示數(shù)據(jù)在 70H-75H 單元內(nèi),用六位 LED 共陽數(shù)碼管顯示,P0 口 ; 出段碼數(shù)據(jù),P1 口作掃描控制,每個 LED 數(shù)碼管亮 1MS 時間再逐位 循環(huán)。 P1,#0FFH R1,#70H R5,#0F7H A,R5 P1,A A,R1 DPTR,#TAB ;指向顯示數(shù)據(jù)首址 ;掃描控制字初值(板顯示 00110000) ;掃描字放入 A ;從 P1 口輸出 ;取顯示數(shù)據(jù)到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于臨時簽訂合同報告
- 國企勞動派遣合同
- 合同法案例精解
- 鐘點工聘用合同范本
- 大班課件《誰是采蜜冠軍》
- 2024正規(guī)的自然人借款合同樣本
- 2024合同信息化管理系統(tǒng)【信息系統(tǒng)合同】
- 2024個人租房協(xié)議書合同租房協(xié)議書(詳細(xì)版)
- 2024標(biāo)準(zhǔn)銷售業(yè)務(wù)員合同范本
- 2024個體借款合同協(xié)議模板
- 第七章 森林植被恢復(fù)與重建理論
- 我的家鄉(xiāng)-東營課件
- 藥房員工培訓(xùn)記錄
- 人民群眾是歷史的創(chuàng)造者-完整版PPT
- 思想道德與法治課件:第四章 第二節(jié) 社會主義核心價值觀的顯著特征
- 網(wǎng)絡(luò)查控申請書
- 高中數(shù)學(xué) 直線與圓的位置關(guān)系(第1課時) 課件
- 江西丹康制藥有限公司原料藥、口服制劑等生產(chǎn)基地項目環(huán)境影響報告書
- 物品放行單(標(biāo)準(zhǔn)模版)
- 引水隧洞洞身開挖與支護(hù)施工方案
- 政工程設(shè)施養(yǎng)護(hù)維修估算指標(biāo)
評論
0/150
提交評論