河南理工大學(xué)單片機設(shè)計報告_第1頁
河南理工大學(xué)單片機設(shè)計報告_第2頁
河南理工大學(xué)單片機設(shè)計報告_第3頁
河南理工大學(xué)單片機設(shè)計報告_第4頁
河南理工大學(xué)單片機設(shè)計報告_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河南理工大學(xué)單片機應(yīng)用與仿真訓(xùn)練設(shè)計報告 題目:基于AT89C51單片機定時開關(guān)的設(shè)計姓 名: 喬布斯 學(xué) 號: 1116202064 專業(yè)班級: 電氣11-9班 指導(dǎo)老師: 高如新 所在學(xué)院: 萬方科技學(xué)院 2014年 6月 10 日摘要現(xiàn)如今,往往由于某些特殊原因可能會給我們的生活或工作帶來一些困撓和遺憾。比如:許多球迷或新聞愛好者因錯過了開電視機的時間因而與精彩球賽或新聞擦肩而過;農(nóng)民可能由于工作繁忙而忘記給自家水塔抽水,造成生活一時不便;學(xué)校的起床廣播因值班人員睡過頭而推遲播放等等。針對以上情況,本文提出以單片機為控制核心加上固態(tài)繼電器組成定時開關(guān)的設(shè)計思想,并且詳細闡述了定時開關(guān)的設(shè)

2、計過程,有效地解決了上述一些實際問題。本系統(tǒng)采用單片機AT89C51做為本設(shè)計的核心控制器件,整個系統(tǒng)由顯示器、報警器、定時時間設(shè)置按鍵、繼電器、受控電器插座及受控電器幾部分組成。各部分功能如下:顯示器用于顯示實時時間以及定時開關(guān)的定時時間;報警器用于定時報警,即當定時時間到時便發(fā)出10秒報警聲,用以提示用戶;而定時時間設(shè)置按鍵顧名思義是用來設(shè)置定時開關(guān)的定時時間;繼電器、受控電器插座及受控電器組成一個執(zhí)行機構(gòu),當定時時間到時,單片機向繼電器輸出一個高電平使繼電器工作,繼電器常開觸點閉合接通受控電器插座,使受控電器通電加以工作,從而完成定時開關(guān)電器的功能。當今科學(xué)技術(shù)快速發(fā)展,人們的生活變得多

3、姿多彩,然而日常生活有很多重復(fù)煩躁的事情需要我們?nèi)ソ鉀Q,因此,為了提高我們的工作效率,我在單片機理論課程學(xué)習的基礎(chǔ)上,為設(shè)計了此款具有綜合功能的單片機定時控制系統(tǒng),它針對家庭小電器、農(nóng)家抽水系統(tǒng)、校園廣播系統(tǒng)的定時開關(guān)經(jīng)過實驗測試證明該系統(tǒng)定時準確,操作方便,能較好地滿足用戶要求。目錄 摘要.I 目錄.II 一、設(shè)計目的. .1 二、設(shè)計要求.1 三、總體設(shè)計.1 3.1總體框圖.1 3.2工作原理.2 3.3主程序流程圖.2 四、各部分電路設(shè)計 .3 4.1單片機最小系統(tǒng)設(shè)計.3 4.2 時鐘電路.3 4.3 復(fù)位電路.4 4.4 CD4066模擬開關(guān)設(shè)計.4 4.5顯示模塊設(shè)計.5 五、設(shè)

4、計實物圖.8 六、仿真及調(diào)試.9 6.1KEIL工程的建立.9 6.2源文件的輸入.10 七、設(shè)計體會與總結(jié).11 八、參考文獻.12 附件1:源程序代碼 .13一、設(shè)計目的通過課程設(shè)計的教學(xué)實踐,將課本所學(xué)應(yīng)用于實際中縮小理論與實際的差距進一步學(xué)習,掌握單片機應(yīng)用系統(tǒng)的有關(guān)知識,加深了解單片機的工作原理。初步掌握簡單的單片機應(yīng)用系統(tǒng)的設(shè)計、制作、調(diào)試的方法。使自己的設(shè)計水平和對所學(xué)的知識的應(yīng)用能力以及分析問題、解決問題的能力得到全面提高,同時培養(yǎng)成良好的科學(xué)態(tài)度和嚴謹?shù)脑O(shè)計習慣。二、設(shè)計要求1、設(shè)計一按鍵k1,使裝置處于運行或設(shè)置狀態(tài)。2、設(shè)置一按鍵k2,能夠?qū)崿F(xiàn)時間調(diào)節(jié)的增加或減少。3、設(shè)

5、置一按鍵k3,k4,k5,分別用于調(diào)節(jié)時間的時,分,秒位。4、設(shè)置一復(fù)位鍵能夠?qū)崿F(xiàn)時間的復(fù)位,即初始狀態(tài)23時59分59秒。三、總體設(shè)計3.1總體框圖AT89C51鍵盤控制電路數(shù)碼管顯示驅(qū)動芯片74hc573復(fù)位電路二極管顯示時鐘電路 圖1系統(tǒng)總體方框圖3.2工作原理 設(shè)計的電路主要由三模塊構(gòu)成:單片機控制電路,驅(qū)動電路,數(shù)碼管顯示電路。本設(shè)計采用C語言程序設(shè)計,使單片機控制數(shù)碼管顯示時、分、秒,可通過按鍵開關(guān)來進行調(diào)節(jié)所要定時間的時間。設(shè)計采用的是時、分、秒顯示,單片機對數(shù)據(jù)進行處理同時在數(shù)碼管上顯示。3.3主程序流程圖開始顯示初始時間K1高電平K3按下K4按下時減1分減1K5按下1秒減1時

6、間顯示 K2高電平K3按下K4按下時加1分加1K5按下秒加1結(jié)束NYYNYNNNNNY 圖2主程序流程圖四、各部分電路設(shè)計4.1單片機最小系統(tǒng)設(shè)計 AT89C51是各單片機中最為典型和最有代表性的一種是一種帶4KB閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的單片機,可穩(wěn)定地工作于5V的電源下。其集成度高、功能強、能耗低、通用性好、價格便宜。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL

7、的AT89C51是一種高效微控制器。其組合而成的配件產(chǎn)品在日常生活的使用過程中非常方便、簡單且實用,深受著廣大消費者的喜愛。 AT89C51管腳說明如下:P0口:P0口為三態(tài)雙向口,能帶8個TTL電路。有兩種功能:第一功能是一個8位漏極開路型的雙向I/O口,這時P0口可看做數(shù)據(jù)總線;第二功能是在訪問外部存儲器時,分時提供低8位地址和8位雙向數(shù)據(jù)總線,這時先用做地址總線再用做數(shù)據(jù)總線。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P0口內(nèi)部無上拉電阻,作為I/O口使用時,必須外接上拉電阻。 P1口:P1口是一個內(nèi)部帶上拉電阻的8位準雙向

8、I/O口(使用前有一個準備動作),負載能力為4個TTL電路。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部帶上拉電阻的8位準雙向I/O口,P2口緩沖器可接收、輸出4個TTL門電流。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。4.2 時鐘電路 單片機的時鐘產(chǎn)生方法有兩種: 內(nèi)部時鐘方式和外部時鐘方式。 本系統(tǒng)中AT89C51單片機采用內(nèi)部時鐘方式。最常用的內(nèi)部時鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz12MHz之間。電容值無嚴格要求

9、,但電容取值對振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF100pF之間取值。AT98C51單片機的時鐘電路如圖3所示。單片機的時鐘產(chǎn)生方法有兩種: 內(nèi)部時鐘方式和外部時鐘方式。 本系統(tǒng)中AT89C51單片機采用內(nèi)部時鐘方式。最常用的內(nèi)部時鐘方式是采用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHz12MHz之間。電容值無嚴格要求,但電容取值對振蕩頻率輸出的穩(wěn)定性、大小和振蕩電路起振速度有少許影響,一般可在20pF100pF之間取值。4.3 復(fù)位電路 復(fù)位是單片機的初始化操作。單片機系統(tǒng)在上電啟動運行時,都需要先復(fù)位。其作用是使CPU和系統(tǒng)中其他部件都處于

10、一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。單片機的外部復(fù)位電路有上電自動復(fù)位和按鍵手動復(fù)位兩種。本系統(tǒng)中AT89C51單片機采用上電加按鍵手動復(fù)位電路,如圖4所示。 圖3 AT89C51單片機的復(fù)位電路4.4 CD4066模擬開關(guān)設(shè)計CD4066 的引腳功能下圖5所示。 圖4 CD4066引腳功能圖 每個封裝內(nèi)部有4 個獨立的模擬開關(guān),每個模擬開關(guān)有輸入、輸出、控制三個端子,其中輸入端和輸出端可互換。當控制端加高電平時,開關(guān)導(dǎo)通;當控制端加低電平時開關(guān)截止。模擬開關(guān)導(dǎo)通時,導(dǎo)通電阻為幾十歐姆;模擬開關(guān)截止時,呈現(xiàn)很高的阻抗,可以看成為開路。模擬開關(guān)可傳輸數(shù)字信號和模擬信號,可傳輸?shù)哪M信號的上

11、限頻率為40MHz。各開關(guān)間的串擾很小,典型值為50dB。CD4066是四雙向模擬開關(guān),主要用作模擬或數(shù)字信號的多路傳輸。CD4066由四個相互獨立的雙向開關(guān)組成,每個開關(guān)有一個控制信號端,開關(guān)可以相互獨立地開斷,互補影響。這種結(jié)構(gòu)消除了開關(guān)晶體管閾值電壓隨輸入信號的變化,因此在整個工作信號范圍內(nèi)導(dǎo)通阻抗比較低。CD4066引出端排列與CC4016一致,但具有比較低的導(dǎo)通阻抗。另外,導(dǎo)通阻抗在整個輸入信號范圍內(nèi)基本不變。與單通道開關(guān)相比,具有輸入信號峰值電壓范圍等于電源電壓以及在輸入信號范圍內(nèi)導(dǎo)通阻抗比較穩(wěn)定等優(yōu)點。但若應(yīng)用于采保電路,仍推薦CD4016。 當模擬開關(guān)的電源電壓采用雙電源時,例

12、如 =5V, =5V(均對地0V而言),則輸入電壓對稱于0V的正、負信號電壓(5V5V)均能傳輸。這時要求控制信號C=“1”為+5V,C=“0”為-5V,否則只能傳輸正極性的信號電壓。4.5顯示模塊設(shè)計 本系統(tǒng)中采用8位LED數(shù)碼管顯示時、分、秒,用一片74HC573分別對段碼鎖存和一片74HC138對位碼進行控制,實現(xiàn)動態(tài)掃描方式顯示,節(jié)省單片機I/O口資源,簡化硬件電路。(1) LED顯示器 LED顯示器是由若干個發(fā)光二極管組成顯示字段的顯示部件,當發(fā)光二極管導(dǎo)通時,相應(yīng)的一個點或一個筆劃發(fā)光,控制不同組合的二極管導(dǎo)通,就能顯示出各種字符。LED顯示器有多種形式,如:“米”字型顯示器,點陣

13、顯示器和七段數(shù)碼顯示器等。在本系統(tǒng)中采用八段數(shù)碼顯示器。因為共陰極的LED數(shù)碼管它的驅(qū)動電流是分開的,在單片機進行動態(tài)掃描的時候不會影響彼此的電流,故本系統(tǒng)中的8位LED數(shù)碼管均用共陰極的數(shù)碼管。(2) 74HC573芯片 特點:三態(tài)總線驅(qū)動輸出,置數(shù)全并行存取,緩沖控制輸入,使能輸入有改善抗擾度的滯后作用。 原理說明:74HC573的八個鎖存器都是透明的D型鎖存器,當使能(G)為高時,Q輸出將隨數(shù)據(jù)(D)輸入而變。當使能為低時,輸出將鎖存在已建立的數(shù)據(jù)電平上。輸出控制不影響鎖存器的內(nèi)部工作,即老數(shù)據(jù)可以保持,甚至當輸出被關(guān)閉時,新的數(shù)據(jù)也可以置入。這種電路可以驅(qū)動大電容或低阻抗負載,可以直接

14、與系統(tǒng)總線接口并驅(qū)動總線,而不需要外接口。特別適用于緩沖寄存器,I/O 通道,雙向總線驅(qū)動器和工作寄存器。74HC573引腳說明: 圖5 74HC573引腳圖(3) 顯示電路 將兩片74HC573的數(shù)據(jù)輸入端D0 - D7都分別與AT89C51單片機的P1.0 P1.7 引腳連接,輸出端與數(shù)碼管的段端,位端相連。實現(xiàn)段選和位選。兩片74HC573的鎖存使能端LE與OE分別接VCC和GND,74HC573的輸出端接至數(shù)碼管,如圖7所示。圖6 顯示電路(4)調(diào)時模塊設(shè)計當k1接地時,處于設(shè)置時間狀態(tài)。當k1高電平時,處于工作狀態(tài)。Ke2高電平時用于調(diào)節(jié)時間的增加。處于低電平時用于調(diào)節(jié)時間的減少。K

15、3,k4,k5,分別用于調(diào)節(jié)時間的時,分,秒位。如圖8 圖7調(diào)時模塊設(shè)計五、設(shè)計實物圖圖5-1 實物圖演示 六、仿真及調(diào)試6.1KEIL工程的建立 Keil單片機模擬調(diào)試軟件對MCS51單片機應(yīng)用系統(tǒng)的軟件開發(fā)過程采用工程(Project)管理。工程保存著程序編輯的信息和程序調(diào)試的環(huán)境。在開始編寫程序之前首先應(yīng)該建立一個工程。新建一個工程之前通常還需要建立一個文件夾,后面產(chǎn)生的工程文件和源程序文件等都將存儲在這個文件夾之中。在如圖所示的集成開發(fā)環(huán)境的窗口中選擇ProjectNew Project命令將打開建立新工程的對話框,如圖6-1所示。 圖6-1 在“保存在”下拉列表框中選擇新建工程將要存

16、儲的文件夾名,在“文件名”文本框中輸入工程的名稱,注意對于工程不要添加擴展名,單擊“保存”按鈕即可完成一個工程的創(chuàng)建。單擊“保存”按鈕在完成一個工程創(chuàng)建的同時也打開了單片機芯片型號選擇對話框。如圖6-2所示的對話框已經(jīng)完成了芯片型號的選擇。 圖6-2 芯片的選擇6.2源文件的輸入 Keil單片機模擬調(diào)試軟件內(nèi)集成了一個文本編輯器,用該文本編輯器可以編輯源程序。如圖6-3所示。在圖6-3中已經(jīng)完成了匯編語言源文件的輸入,并且完成了源程序向當前工程的添加。如圖6-3所示: 圖6-3 源文件輸入 完成c語言源文件的輸入后,在集成開發(fā)環(huán)境中選擇FileSave As命令可以完成文件的第一次存儲。注意,

17、c源文件的擴展名應(yīng)該是.c,它應(yīng)該與工程文件存儲在同一文件夾內(nèi)。在完成文件的第一次存儲后,當對c語言源文件又進行了修改,再次存儲文件時則應(yīng)該選擇FileSave命令、單擊保存工具按鈕或者按快捷鍵Ctrl+S實現(xiàn)文件的保存。 首先點擊左邊的Project窗口的Target1,然后使用菜單“Project中的Option for Target1”即出現(xiàn)對工程設(shè)置的對話框,如圖6-4所示: 圖6-4 調(diào)試對話框的設(shè)置 對上圖進行相應(yīng)的設(shè)置,用來選擇最終的目標文件所在的文件夾,默認是與工程文件在同一個文件夾中。在設(shè)置好工程后就可以進行編譯、連接。選擇Project中的Build target,對當前工

18、程進行連接,編譯過程中會出現(xiàn)很多語法錯誤,會有錯誤報告出現(xiàn),雙擊該行,可以定位到出錯的位置,對源程序反復(fù)新蓋之后,最終會得到如圖所示的結(jié)果,提示獲得了名為Hex的文件,該文件即可被編程器讀入寫到芯片中 寫到芯片中的程序,可以用Proteus中進行仿真,仿真結(jié)果如下圖6-5所示:6-5 Proteus仿真結(jié)果七、設(shè)計體會與總結(jié) 經(jīng)過將近一周的單片機課程設(shè)計,我有了很多的體會和感想。通過本次對定時開關(guān)的設(shè)計,我對單片機這門課程有了更進一步的了解。無論是在其硬件連接方面還是在軟件編程方面,都取得了新的收獲。本次課程設(shè)計采用了AT89S51單片機芯片,通過本次實驗及查閱相關(guān)資料,我們對其有了一定的認識

19、,在本課題設(shè)計報告的硬件介紹部分也對其作了詳細的論述。S51在C51的基礎(chǔ)上增加了許多新的功能,使其功能更為完善,應(yīng)用領(lǐng)域也更為廣泛。另外,在對單片機編程方面,我們又掌握了一些新的編程思想,使得程序更為簡練、易懂,而且更為嚴謹,程序執(zhí)行的穩(wěn)定性得到了提高,以前在學(xué)單片機這門課程時只是對其理論知識有了初步的了解。通過本次實驗,我們對它的工作原理徹底理解了,對其啟動設(shè)置、轉(zhuǎn)換結(jié)束判斷以及輸出控制等都基本掌握。電路連接方面,我們對其與單片機的連接也有了更為直觀的認識,通過實驗的摸索以及必要的理論知識,我們準確的實現(xiàn)了它于單片機的互連。設(shè)計過程中,我遇到過許多次失敗的考驗,比如,自己對單片機編程時遇到

20、了很多阻礙,想要放棄,然而,就在要放棄的那一刻,我明白了,原來結(jié)果并不那么重要,我們更應(yīng)該注重的是這一整個過程。于是,我堅持了下來。我非常感激同組隊員對我的的指導(dǎo)和幫助,沒有他們的幫助,我還會做很多的無用功。 通過這次設(shè)計,這也對我們今后的工作敲響了警鐘:要認真的看待每個需要處理的問題,不要認為事情過于簡單,不能急于求成,但不要放棄。要保持頭腦清醒。單片機是很重要的一門課程,老師和一些工作的朋友都曾說過,如果學(xué)好一門單片機,就憑這個技術(shù)這門手藝找一個好工作也不成問題。盡管我們在課堂學(xué)到的內(nèi)容很有限,但在以后的學(xué)習中單片機還需要好好的深入研究和學(xué)習。最后感謝老師對我的精心指導(dǎo)和幫助,感謝同學(xué)們對

21、我的幫助。八、參考文獻1單片機原理及應(yīng)用,張毅剛、 彭喜元,高等教育出版社. 2011.122單片機應(yīng)用技術(shù)指導(dǎo)書,陸劍,河南工業(yè)職業(yè)技術(shù)學(xué)院. 2005.123實用電子電路設(shè)計制作,劉修文,中國電力出版社. 2003.54單片機應(yīng)用系統(tǒng)設(shè)計與實現(xiàn),胡永生,福建科學(xué)技術(shù)出版社. 2010.65電子電路實驗及仿真,路勇,北京交通大學(xué)出版社. 2004.86單片機原理與應(yīng)用, 閆玉德、俞紅,機械工業(yè)出版社. 2005.37單片機應(yīng)用教程,清李葉紫、王喜斌、胡輝,青華大學(xué)出版社. 2008.68單片機應(yīng)用技術(shù),劉守義、王靜霞,西安電子科技大學(xué)出版社. 2002.69單片機系統(tǒng)設(shè)計與實,汪道輝,電子工

22、業(yè)出版社. 2007.6 10電子電路測試與實驗,朱定華,清華大學(xué)出版社. 2004.611單片機開發(fā)與實例, 黃慶華、張永格,電子工業(yè)出版社. 2008.9附件1:源程序代碼 bitacc equ 33haddbutton equ P1.0 ;定義addbouton表示P1.0chbutton equ p1.1 enterbutton equ p1.2openbouton equ p1.3modelbutton equ p1.4 ;模式設(shè)定按鈕bitmm equ 30h ;顯示位最后兩位bitff equ 31hbitss equ 32h ;顯示位bitsetwhat equ 34h ;調(diào)整

23、選板標志位bitopen equ 35h ;定時開關(guān)point equ 36h ;調(diào)整位閃爍標志music equ 37h; 音樂音調(diào)標志位musictab equ 38h;樂曲音調(diào)bitclock equ 39h;顯示第幾組鬧鐘(鬧鈴時)clocktime equ 4ah;鬧鈴時長bittime01 equ 4bh;定時位1bittime02 equ 4chbittime03 equ 4dhbittime11 equ 4eh;定時位2bittime12 equ 4fhbittime13 equ 50hbittime21 equ 51h;定時位3bittime22 equ 52hbittime

24、23 equ 53hbitmodel equ 54h;設(shè)定模式(作息模式/順序模式)modetime equ 55h ;間隔時長org 0000hajmp mainorg 000bhljmp time0org 0030h;*初始化程序main: mov musictab,#1音調(diào)*mov bitmm,#00h;初始化顯示mov bitff,#00hmov bitss,#00hmov bittime01,#6;初始化定時mov bittime02,#00mov bittime03,#00mov bittime11,#40;初始化定時mov bittime12,#00mov bittime13,#

25、00mov bittime21,#12;初始化定時mov bittime22,#01mov bittime23,#00mov clocktime,#5;鬧鈴時長為5Smov modetime,#2mov bitmodel,#00h;開始設(shè)為模式1mov p3,#01hmov TMOD,#11h ;時間中斷mov th0,#(65536-50000)/256mov tl0,#(65536-50000) mod 256setb TR0SETB ET0setb EAmov dptr,#tabmov r7,#0mov r0,#0mov bitopen,#1;mov point,#5;閃爍快慢mov r

26、6,pointmov sp,#60hmov bitsetwhat,#0 ;設(shè)置mov r3,#00hmov r4,#00hmov r5,#00h;*初始化程序結(jié)速;*主程序start:;*控制程序;模式切換jb modelbutton,ucmodelacall delay2jb modelbutton,ucmodelmov a,bitmodelinc amov p3,#01hmov bitmodel,acjne a,#2,startmov bitmodel,#0ucmodel:;模式切換 ;保護ACCmov a,bitmodelcjne a,#01h,mode1;如果為0則進入作息模式1,為1

27、則進入順序模式2lcall displaylcall mode2clr p1.6;進入模式2實瓶?sjmp startmode1:mov p3,#00hsetb p1.6;進入模式1燈關(guān)mov a,bitopencjne a,#01h,undoclr p1.5;打開定時指示燈亮mov a,r5cjne a,bittime23,tnext0mov a,r4cjne a,bittime22,tnext0mov a,r3cjne a,bittime21,tnext0mov bitclock,#0b0hmov clocktime,#10sjmp contorltnext0:mov a,r5cjne a

28、,bittime13,tnextmov a,r4cjne a,bittime12,tnextmov a,r3cjne a,bittime11,tnextmov bitclock,#0a4hmov clocktime,#10sjmp contorltnext:mov a,r5cjne a,bittime03, undomov a,r4cjne a,bittime02,dnextmov a,r3cjne a,bittime01,dnext2mov bitclock,#0f9hmov clocktime,#10contorl:cpl p1.7acall musicdelaymov p0,bitclo

29、ckmov p2,#00h;鬧鈴時長mov a,clocktimecjne a,#1,unclosesjmp undo;鬧鈴時長unclose:sjmp contorl;發(fā)出聲音;*音樂*音樂 ;時間到開音樂dnext2:dnext:undo:jb openbouton,unopenacall delay2jb openbouton,unopenmov a,bitopen;是否開定時控制inc amov bitopen,acjne a,#2,closemov a,#0setb p1.5mov bitopen,aclose:unopen:;*打開或關(guān)閉定時控制程序結(jié)速;*判斷是否調(diào)要調(diào)整參數(shù)程序

30、;確定鍵對應(yīng)程序jb p1.2,fdsaclr eaacall delay2jb p1.2,fdsa;確定鍵是否按下push accmov a,bitsetwhat;按下則設(shè)置標志inc amov r7,#0;按確定鍵停止位選閃光r7是位選mov bitsetwhat,acjne a,#5,fdsamov a,#0setb eamov bitsetwhat,apop acc;壓出acc;*fdsa:mov a,bitsetwhatcjne a,#0,showsetwhat;按下確定鍵跳到showsetwhatsetb ea ;不按則開啟中斷sjmp gotol;跳到gotolshowsetwh

31、at:;顯示要調(diào)整的原值push accmov a,bitsetwhatcjne a,#1,unsetkk1;按1次顯示時間mov bitmm,r3mov bitff,r4mov bitss,r5unsetkk1:cjne a,#2,unsetkk2;按2次確定鍵則顯示定時1mov bitmm,bittime01mov bitff,bittime02mov bitss,bittime03unsetkk2:cjne a,#3,unsetkk3;按3次確定鍵則顯示定時2mov bitmm,bittime11mov bitff,bittime12mov bitss,bittime13unsetkk3

32、:cjne a,#4,unsetkk4;按4次確定鍵則顯示定時3mov bitmm,bittime21mov bitff,bittime22mov bitss,bittime23unsetkk4:;按1次確定鍵則顯示當前時間pop accjb chbutton,gotol ;按下位選則表示要調(diào)整參數(shù)acall delay2jb chbutton,gotolinc r7cjne r7,#4,toto ;超出調(diào)整位數(shù)則返回mov r7,#0toto:gotol:cjne r7,#0,toset;按下位選時跳到調(diào)整參數(shù)acall display ;顯示參數(shù),但不調(diào)整ljmp start;沒有按下位選

33、,不調(diào)整參數(shù);*toset:;進入?yún)?shù)調(diào)整子程序lcall settimeljmp start;返回主程序;*mode2:;*8模式2ret;*主程序結(jié)速;zzzzzzzzzzzzzzzzz;顯示子程序開始display:lcall showmlcall showflcall showslcall showggret;zzzzzzzzzzzzzzzzz;顯示子程序結(jié)速;zzzzzzzzzzzzzzzzz調(diào)整參數(shù)子程序開始;選擇調(diào)整位settime:cjne r7,#1,setf;不等于是則調(diào)中間兩位參數(shù)djnz r6,unshowsmov r6,pointlcall shows;等于是則調(diào)整左

34、邊兩位參數(shù);*調(diào)整左邊兩位參數(shù)unshows:lcall showflcall showmjb addbutton,setfacall delay2jb addbutton,setfmov a,bitssinc amov bitss,amov bitacc,alcall showsmov a,bitacccjne a,#24,setfmov a,#00hmov bitss,a;*調(diào)整左邊兩位參數(shù)結(jié)速;*調(diào)整中間兩位參數(shù)setf:mov a,bitacccjne r7,#2,setm;換位djnz r6,unshowfmov r6,pointlcall showfunshowf:lcall sh

35、owmlcall showsjb addbutton,setmacall delay2jb addbutton,setmmov bitacc,amov a,bitffinc amov bitff,amov bitacc,alcall showfmov a,bitacccjne a,#60,setmmov a,#00hmov bitff,a;*調(diào)整中間兩位參數(shù)結(jié)速;*調(diào)整右邊兩位參數(shù)setm:mov a,bitacccjne r7,#3,setwhichdjnz r6,unshowmmov r6,pointlcall showmunshowm:lcall showslcall showfjb a

36、ddbutton,setwhichacall delay2jb addbutton,setwhichmov a,bitmminc amov bitmm,amov bitacc,alcall showmmov a,bitacccjne a,#60,setwhichmov a,#00hmov bitmm,a;*調(diào)整右邊兩位參數(shù)結(jié)速;*判斷調(diào)整的參數(shù)是當前時間還是定時時間setwhich:push accmov a,bitsetwhatcjne a,#1,unset1mov r3,bitmmmov r4,bitffmov r5,bitssunset1:cjne a,#2,unset2mov bitt

37、ime01,bitmmmov bittime02,bitffmov bittime03,bitssunset2:cjne a,#3,unset3mov bittime11,bitmmmov bittime12,bitffmov bittime13,bitssunset3:cjne a,#4,unset4mov bittime21,bitmmmov bittime22,bitffmov bittime23,bitssunset4:pop accret;zzzzzzzzzzzzzzzzz調(diào)整參數(shù)子程序返回;zzzzzzzzzzzzzzz時鐘子程序time0:;定時1Smov th0,#(65536

38、-50000)/256mov tl0,#(65536-50000) mod 256inc r0cjne r0,#10,nextr3push accmov a,musictabinc amov musictab,amovc a,a+dptrmov music,amov a,musictab;換調(diào)cjne a,#30,loii2mov a,#11mov musictab,aloii2:pop accnextr3:cjne r0,#20,endppush accmov a,clocktime;定時時間自減1dec amov clocktime,a;定時時間自減1mov a,musictabinc amov musictab,amovc a,a+dptrmov music,amov a,musictab;換調(diào)cjne a,#30,loiimov a,#11mov musictab,aloii:pop accinc r3mov r0,#0cjne r3,#30,mode2next;模式2push accmov a,p3RL amov p3,apop acc;模式

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論