版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《單片機技術(shù)》課程設(shè)計任務(wù)1、 本課題任務(wù)如下:設(shè)計一個具有特定功能的電子鐘。該電子鐘上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”,進入時鐘準備狀態(tài);第一次按電子鐘啟動/調(diào)整鍵,電子鐘從0時0分0秒開始運行,進入時鐘運行狀態(tài);再次按電子鐘啟動/調(diào)整鍵,則電子鐘進入時鐘調(diào)整狀態(tài),此時可利用各調(diào)整鍵調(diào)整時間,調(diào)整結(jié)束后可按啟動/調(diào)整鍵再次進入時鐘運行狀態(tài)。2、 本課題要求如下:在AT89S51的P0口和P2口外接由六個LED數(shù)碼管(LED5?LED0)構(gòu)成的顯示器,用P0口作LED的段碼輸出口(P0.0?P0.7對應(yīng)于LED的a?dp),P2.5?P2.0作LED的位控輸出線(P2.5?P2.0對應(yīng)于LED5?LED0),P1口外接四個按鍵A、B、C、D(對應(yīng)于P1.0?P1.3)。、利用六個LED顯示當前時間。、四個按鍵的功能:A鍵用于電子鐘啟動/調(diào)整;B鍵用于調(diào)時,范圍0-23,0為24點,每按一次時加1;C鍵用于調(diào)分,范圍0-59,0為60分,每按一次分加1;D鍵用于調(diào)秒,范圍0-59,0為60秒,每按一次秒加1。方案四:獨立式按鍵,LED動態(tài)顯示。該方案方框圖如圖1.2.4所示,獨立式按鍵直接與單片機I/O口相連構(gòu)成鍵盤,每個按鍵不會相互影響,因本系統(tǒng)用到的按鍵比較少,采用獨立式鍵盤不會浪費I/O口線,所以本系統(tǒng)采用獨立式鍵盤。動態(tài)顯示的亮度雖然不如靜態(tài)顯示,但其硬件電路較簡單,可節(jié)省硬件成本,雖然動態(tài)掃描需占用CPU較多的時間,但本系統(tǒng)中的單片機沒有很多實時測控任務(wù),因此,本系統(tǒng)采用此種方案。2多功能電子表的工作原理本設(shè)計中的電子鐘的核心是AT89S51單片機,其內(nèi)部帶有4KB在線可編程Flash存儲器的單片機,無須外擴程序存儲器,硬件電路主要由四部分構(gòu)成:時鐘電路,復位電路,鍵盤以及顯示電路。時鐘電路是電子表硬件電路的核心,沒有時鐘電路,電子表將無法正常工作計時。本系統(tǒng)時鐘電路采用的晶振的頻率為12MHz,定時器采用的是定時器0工作在方式1定時,用于實現(xiàn)時、分、秒的計時,定時時間為62.5ms。復位電路可使電子表恢復到初始狀態(tài)。鍵盤可對電子表進行開啟、停止,還能實現(xiàn)時、分、秒的顯示及設(shè)定等操作。顯示電路由兩個共陽級4位一體LED數(shù)碼管構(gòu)成,它的段控端和位控端通過74LS244及其S8550PNP型號三極管與AT89S51單片機的I/O口相連,顯示器可使電子表顯示出時、分、秒。多功能電子表的計時原理為:上電后,電子表顯示P.提示符,按下A鍵后,電子表從00:00:00開始計時。當定時器0的定時時間滿62.5ms后,定時器0溢出一次,溢出滿16次后,電子表的秒加1,滿60秒后,分加1,滿60分后,時加1,滿24時后,電子表重新從00:00:00開始計時。3多功能電子表原理方框圖、原理圖及PCB圖3.1多功能電子表原理方框圖多功能電子表整機電路方框圖如圖3.1圖1多功能電子表整機電踏方框圖
第1頁3.2多功能電子表電路原理圖3.2.2多功能電子表整機電路原理3.3.2 多功能電子表整機電路PCB圖多功能電子表整機電路PCB圖如圖3.5所示3.5整機PCB圖
4多功能電子表元器件清單多功能電子表電路所有元器件清單如表4.1所示表4.1多功能電子表元器件清單1元件名稱封裝形式元件號LED數(shù)碼管(共陽極)DIP-12D1LED數(shù)碼管(共陽極)DIP-12D2510Q電阻AXIAL0.4R1510Q電阻AXIAL0.4R2510Q電阻AXIAL0.4R3510Q電阻AXIAL0.4R4510Q電阻AXIAL0.4R5510Q電阻AXIAL0.4R6510Q電阻AXIAL0.4R7510Q電阻AXIAL0.4R81K電阻AXIAL0.4R9200電阻AXIAL0.4R104.7K電阻AXIAL0.4R114.7K電阻AXIAL0.4R124.7K電阻AXIAL0.4R134.7K電阻AXIAL0.4R144.7K電阻AXIAL0.4R154.7K電阻AXIAL0.4R164.7K電阻AXIAL0.4R174.7K電阻AXIAL0.4R18電源插座UINDIANYUAN74LS244芯片DIP-20A1
S8550PNP三極管TO-585501S8550PNP三極管TO-585502S8550PNP三極管TO-585503S8550PNP三極管TO-585504S8550PNP三極管TO-585505S8550PNP三極管TO-585506輕觸開關(guān)ADIP04A輕觸開關(guān)BDIP04B輕觸開關(guān)CDIP04C輕觸開關(guān)DDIP04D輕觸開關(guān)DIP04S512M晶振XTAL1Y133pF電容RAD0.2C133pF電容RAD0.2C222呻電容RB.2/.4C37805芯片TO-220U10.33MF電容RAD0.2C10.1呻電容RAD0.2C2220呻電容RB.2/.4C3220呻電容RB.2/.4C4橋式整流DIP-04D2二極管DIODE0.4D111V變壓器DIP-5TR擴展插針SIP08J0擴展插針SIP08J1-LC2彌f...miO12MHZwe,,Cl-LC2彌f...miO12MHZwe,,ClT30pf圖5.2時鐘電路原理圖VCCBESET圖5,3復位電路原理圖A ~BCRll1R121R13JL.RM4.7K4.7K4.7F:4.7]P1J05多功能電子表單元電路工作原理介紹5.2時鐘電路工作原理圖5.2所示為時鐘電路原理圖,在AT89S51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。而在芯片內(nèi)部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器。時鐘電路產(chǎn)生的振蕩脈沖經(jīng)過觸發(fā)器進行二分頻之后,才成為單片機的時鐘脈沖信號。5.3復位電路工作原理圖5.3所示為復位電路原理圖,復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序,并使其它功能單元處于一個確定的初始狀態(tài)。本復位電路采用的是按鍵復位,它是通過復位端經(jīng)電阻與VCC電源接通而實現(xiàn)的,它兼具上電復位功能。因本系統(tǒng)的晶振的頻率為12MHz,所以,復位信號持續(xù)時間應(yīng)當超過2uS才能完成復位操作。5.4鍵盤工作原理圖5.4所示為鍵盤原理圖,本系統(tǒng)采用的是獨立式鍵盤結(jié)構(gòu),每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。它軟件是采用查詢式結(jié)構(gòu),首先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向第韋頁圖5.4鍵盤電路原鯉圖該鍵的功能處理程序。5.5顯示器工作原理系統(tǒng)采用動態(tài)顯示方式,用P0口來控制LED數(shù)碼管的段控線,而用P2口來控制其位控線。動態(tài)顯示通常都是采用動態(tài)掃描的方法進行顯示,即循環(huán)點亮每一個數(shù)碼管,這樣雖然在任何時刻都只有一位數(shù)碼管被點亮,但由于人眼存在視覺殘留效應(yīng),只要每位數(shù)碼管間隔時間足夠短,就可以給人以同時顯示的感覺。圖中的S8550作為驅(qū)動器,而8個510歐姆電阻則起限流作用。由圖5.5可知,要想讓數(shù)碼管那一段亮,在該數(shù)碼管位控段為高電平的情況下給這段送低電平就可以了。顯示電路結(jié)構(gòu)采用動態(tài)掃描的方式,所有數(shù)碼管的段控端公用單片機P0口的8根輸出口線,數(shù)碼管的段控端a、b、c、d、e、f、g、dp分別接到P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7口線上,每個數(shù)碼管的位控線單獨占用單片機P2口一根輸出口線,8位數(shù)碼管從高位到低位分別接P2.0?P2.7引腳。段控碼(低電平有效)由P0口輸出經(jīng)上拉電阻上拉電壓后通過鎖存器74LS244送到數(shù)碼管的段控端,位控碼由P2口輸出經(jīng)三極管S8550驅(qū)動后送到數(shù)碼管的位控端。在單片機內(nèi)部顯示緩沖區(qū)79H、7AH、7BH、7CH、7DH、7EH內(nèi)的值分別是秒的個位、秒的十位、分的個位、分的十位、時的個位、時的十位,顯示器LED0、LED1、LED2、LED3、LED4、LED5分別顯示秒的個位十位、分的個位十位、時的個位十位,由圖5.5所示。數(shù)碼管動態(tài)顯示:由于顯示的數(shù)據(jù)和LED數(shù)碼管的段控碼并不是一一對應(yīng)的關(guān)系,即顯示的數(shù)據(jù)與數(shù)碼管的字型代碼不相符。顯示數(shù)據(jù)與字型代碼之間存在著轉(zhuǎn)換關(guān)系,數(shù)碼管段控數(shù)據(jù)和數(shù)碼管各段的對應(yīng)關(guān)系如表5.1、表5.2所示。表5.1數(shù)碼管數(shù)據(jù)和數(shù)碼管每段的對應(yīng)關(guān)系D7D6D5D4D3D2D1D0LED顯示碼a111111100FEHb111111010FDHc111110110FBHd111101110F7H
e111011110EFHf110111110DFHg101111110BFHdp011111117FH表5.2數(shù)碼管斷碼和字型的對應(yīng)關(guān)系(共陽極)字型D7D6D5D4D3D2D1D0段碼dpgfedcba0110000000CO1111110010F92101001000A43101100000B04100110019951001001092610000010827111110000F88100000008091001000090A1000100088B1000001183C110001100C6D101000000A0E1000011086F100011108EP.0000011006全亮0000000000全滅111111110FF從電子鐘程序清單中的顯示程序可以知道:數(shù)據(jù)表格存儲單元從首地址到最高位分別存放的是共陽極數(shù)碼管0、1、2、3、4、5、6、7、8、9、P.、滅的十六進制字型代碼,所以只要把顯示緩沖區(qū)內(nèi)的數(shù)值加上偏移地址rel(偏移量計算方法如式3.1所示),把和送到累加器A中,使用MOVCA,@A+PC就可以取出緩沖區(qū)內(nèi)要顯示數(shù)據(jù)的字型代碼,當然要取P.和滅的字型代碼就要分別給緩沖區(qū)送0AH、0BH。偏移地址rel=數(shù)據(jù)表格首地址-MOVCA@A+PC指令單元首地址-1式3.1在動態(tài)掃描時,顯示緩沖區(qū)79H內(nèi)部存放的是要顯示的秒的個位的數(shù)值,使用MOVCA,@A+PC指令取出段控碼,由P0口輸出通過鎖存器74LS244后送到數(shù)碼管的段控端,給P2口送01H通過鎖存器74LS244驅(qū)動以后,只有LED0位的位控端有效,此時只有LED0被點亮來顯示秒的個位,延時持續(xù)點亮一段時間,然后把顯示緩沖單元地址加1,位控值左移一位,取出段控碼,再把段控碼和位控碼送到數(shù)碼管顯示器,此時只有LED1被點亮顯示秒的十位,延時持續(xù)點亮一段時間,就這樣通過逐個地從低位到高位點亮各個顯示器,掃描到最高位時的十位被點亮就返回。這樣雖然在任一時刻只有一位顯示器被點亮,但是由于人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點亮效果完全一樣。AT89S51芯片介紹如圖5.7所示為AT89S51芯片的引腳圖P10POOPL1P12PCIPO2P13P03PL4peaP15pci與FL6POC5P17P07LITTlP2QliTTLia 涪.!T1TOP24P25P26P27RESETRXDTXDRDWRALE/rPSEH圖5.7AT89S51芯片外部引腳圖兼容標準MCS-51指令系統(tǒng)的AT89S51單片機是一個低功耗、高性能CHMOS的單片機,片內(nèi)含4KB在線可編程Flash存儲器的單片機。它與通用80C51系列單片機的指令系統(tǒng)和引腳兼容。AT89S51單片機片內(nèi)的Flash可允許在線重新編程,也可用通用非易失性存儲編程器編程;片內(nèi)數(shù)據(jù)存儲器內(nèi)含128字節(jié)的RAM;有40個引腳,32個外部雙向輸入/輸出(I/O)端口;具有兩個16位可編程定時器;中斷系統(tǒng)是具有6個中斷源、5個中斷矢量、2級中斷優(yōu)先級的中斷結(jié)構(gòu);震蕩器頻率0到33MHZ,因此我們在此選用12MHZ的晶振是比較合理的;具有片內(nèi)看門狗定時器;具有斷電標志POF等等。AT89S51具有PDIP,TQFP和PLCC三種封裝形式。上圖就是PDIP封裝的引腳排列,下面介紹各引腳的功能。P0□:8位、開漏級、雙向I/O口。P0口可作為通用I/O口,但須外接上拉電阻;作為輸出口,每各引腳可吸收8各TTL的灌電流。作為輸入時,首先應(yīng)將引腳置1。P0也可用做訪問外部程序存儲器和數(shù)據(jù)存儲器時的低8位地址/數(shù)據(jù)總線的復用線。在該模式下,P0口含有內(nèi)部上拉電阻。在FLASH編程時,P0口接收代碼字節(jié)數(shù)據(jù);在編程效驗時,P0口輸出代碼字節(jié)數(shù)據(jù)(需要外接上拉電阻)。P1□:8位、雙向I/0口,內(nèi)部含有上拉電阻。P1口可作普通I/O口。輸出緩沖器可驅(qū)動四個TTL負載;用作輸入時,先將引腳置1,由片內(nèi)上拉電阻將其抬到高電平。P1口的引腳可由外部負載拉到低電平,通過上拉電阻提供電流。在FLASH并行編程和校驗時,P1口可輸入低字節(jié)地址。在串行編程和效驗時,P1.5/MO-SI,P1.6/MISO和P1.7/SCK分別是串行數(shù)據(jù)輸入、輸出和移位脈沖引腳。P2口:具有內(nèi)部上拉電阻的8位雙向I/O口。P2口用做輸出口時,可驅(qū)動4各TTL負載;用做輸入口時,先將引腳置1,由內(nèi)部上拉電阻將其提高到高電平。若負載為低電平,則通過內(nèi)部上拉電阻向外部輸出電流。CPU訪問外部16位地址的存儲器時,P2口提供高8位地址。當CPU用8位地址尋址外部存儲時,P2口為P2特殊功能寄存器的內(nèi)容。在FLASH并行編程和校驗時,P2口可輸入高字節(jié)地址和某些控制信號。P3口:具有內(nèi)部上拉電阻的8位雙向口。P3口用做輸出口時,輸出緩沖器可吸收4各TTL的灌電流;用做輸入口時,首先將引腳置1,由內(nèi)部上拉電阻抬位高電平。若外部的負載是低電平,則通過內(nèi)部上拉電阻向輸出電流。在與FLASH并行編程和校驗時,P3口可輸入某些控制信號。P3口除了通用I/O口功能外,還有替代功能,如表5.3所示表5.3P3口的替代功能引腳符號說明P3.0RXD串行口輸入P3.1TXD串行口輸出P3.2/INT0外部中斷0P3.3/INT1外部中斷1P3.4T0T0定時器的外部的計數(shù)輸入P3.5T1T1定時器的外部的計數(shù)輸入P3.6/WR外部數(shù)據(jù)存儲器的寫選通P3.7/RD外部數(shù)據(jù)存儲器的讀選通RST:復位端。當振蕩器工作時,此引腳上出現(xiàn)兩個機器周期的高電平將系統(tǒng)復位。ALE/眩:當訪問外部存儲器時,ALE(允許地址鎖存)是一個用于鎖存地址的低8位字節(jié)的書粗脈沖。在Flash編程期間,此引腳也可用于輸入編程脈沖(或)。在正常操作情況下,ALE以振蕩器頻率的1/6的固定速率發(fā)出脈沖,它是用作對外輸出的時鐘,需要注意的是,每當訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如果希望禁止ALE操作,可通過將特殊功能寄存器中位地址為8EH那位置的“0”來實現(xiàn)。該位置的“1”后。ALE僅在MOVE或MOVC指令期間激活,否則ALE引腳將被略微拉高。若微控制器在外部執(zhí)行方式,ALE禁止位無效。TW:外部程序存儲器讀選取通信號。當AT89S51在讀取外部程序時,每個機器周期將PSEN激活兩次。在此期間內(nèi),每當訪問外部數(shù)據(jù)存儲器時,將跳過兩個評麗信號。瓦/Vpp:訪問外部程序存儲器允許端。為了能夠從外部程序存儲器的0000H至FFFFH單元中取指令,瓦必須接地,然而要注意的是,若對加密位1進行編程,則在復位時,虱的狀態(tài)在內(nèi)部被鎖存。執(zhí)行內(nèi)部程序虱應(yīng)接VCC。不當選擇12V編程電源時,在Flash編程期間,這個引腳可接12V編程電壓。XTAL1:振蕩器反向放大器輸入端和內(nèi)部時鐘發(fā)生器的輸入端。
XTAL2:振蕩器反相放大器輸出端。74LS244驅(qū)動器74LS244是單向總線驅(qū)動器。是8輸入8輸出芯片,中1G和2G為使能端,低電平有效。它的外部管腳圖如圖5.8所示。圖5.874LS244芯片外部管腳圖74LS244是一種三態(tài)輸出的八緩沖器和線驅(qū)動器,該芯片的邏輯電路圖和引腳圖如圖5.8所示。從圖5.8可見,該緩沖器有8個輸入端,分為兩路一一1A1?1A4,2A1?2A4,同時8個輸出端,也分為兩路——1Y1?1Y4,2Y1?2Y4,分別由2個門控信號1G和2G控制,當記為低電平時,1Y1?1Y4的電平與1A1?1A4的電平相同,即輸出反映輸入電平的高低;同樣,當2G為低電平時,1Y1?1Y4的電平與2A1?2A4的電平和同。而當1G(或2G)為高電平時,輸出1A1?1A4(或2A1?2A4)為高阻態(tài)。經(jīng)74LS244緩沖后,輸入信號被驅(qū)動,輸出信號的驅(qū)動能力加大了。其功能表如表5.4所示,表中 H為高電平,L為低電平,A為高阻態(tài),X為任意狀態(tài)
NXXS8550PNP三極管5.8.1主要用途:作為音頻放大器,應(yīng)用于收錄機、電動玩具等電子產(chǎn)品。(與S8050互補)其管腳圖如下圖5.95.8.2極限值如下表5.5參數(shù)符號標稱值單位集電極、基極擊穿電壓VCBO-40V集電極、發(fā)射極擊穿電壓VCEO-25V發(fā)射極、基極擊穿電壓VEBO-6V集電極電流IC-1.5A集電極功率PC1W結(jié)溫TJ125C貯存溫TSTG-55-125C5.8.3電參數(shù)(Ta=25°C)電參數(shù)表5.6參數(shù)符號測試條件最小值典型值最大值集電極漏電流ICBOVCB=-35,IE=0-100nA發(fā)射極漏電流IEBOVBE=-6,IC=0-100nA集電極、發(fā)射極擊穿電壓BVCEOIC=-2mA,IB=0-25V發(fā)射極、基極擊穿電壓BVEBOIE=-100uA,IC=0-6V集電極、基極擊穿電壓BVCBOIC=-100uA,IE=0-40V集電極、發(fā)射極飽和壓降VCE(sat)IC=-800mA,IB=-80mA-0.5V基極、發(fā)射極飽和壓降VBE(sat)IC=-800mA,IB=-80mA-1.2V基極、發(fā)射極壓降VBEVCE=-1V,IC=-10mA-1.0V直流電流增益HFE1VCE=-1V,IC=-100mA85300HFE2VCE=-1V,IC=-800mA405.9四位一體數(shù)碼管四位一體數(shù)碼管的內(nèi)部結(jié)構(gòu),如圖5.10所示。由圖可知,四個數(shù)碼管的位控端連接在一起,共用8根數(shù)據(jù)線,四個公共端卻單獨占一根口線。假設(shè)段控端有段碼輸入時,每個數(shù)碼管的段控端都收到了段碼,但只有位控線有效的數(shù)碼管才能顯示數(shù)據(jù),反之亦反。共陽極數(shù)碼管段控端為低電平有效,位控端高電平有效,共陰極數(shù)碼管恰恰相反。四位一體數(shù)碼管用于動態(tài)掃描,即把數(shù)碼管顯示數(shù)據(jù)的段控碼分時送到其對應(yīng)的段控端。當一個段控碼被送到段控端時,顯示此段控碼數(shù)據(jù)的數(shù)碼管,它的位控端置有效電平,數(shù)碼管點亮;而其他數(shù)碼管的位控端送無效電平,數(shù)碼管不亮。持續(xù)點亮一段時間,再送其它的段控碼,依次把顯示段控碼的數(shù)碼管,使其位控端為有效電平,其他數(shù)碼管的位控端為無效電平,就這樣數(shù)碼管依次被點亮。四位一體數(shù)碼管共十二個引腳,從數(shù)碼管的正面看,它以第一腳為起點,逆時針排列的。由圖可知,6、8、9、12為公共端,A-11、B-7、C-4、D-2、E-1、F-10、G-5、DP-3。顯示字型和代碼關(guān)系如表5.3所示。第13頁字型共陽極代碼共陰極代碼字型共陽極代碼共陰極代碼rDFJPvrDFJPv*■QQQGOOOO117<11105J(b)共陽極圖5.10四位一體數(shù)仍管內(nèi)部結(jié)構(gòu)圖表5.7十六進制數(shù)字型代碼6單片機硬件資源的分配本次設(shè)計用到了單片機正常工作的硬件資源,如(連接晶振的引腳XTAL1和XTAL2,復位引腳RESET),對其硬件資源還做了具體的安排。.P0口作為數(shù)碼管顯示器的段控輸出口,對數(shù)碼管顯示器進行控制。.P1口P1.0?P1.3接了四個獨立式分別為A鍵、B鍵、C鍵、D鍵,用于對鍵盤的控制,P1.5、P1.6、P1.7則作為ISP程序下載的輸入端。.P2口該口全部用于數(shù)碼管的位控端。.定時/計數(shù)器使用定時器0來實現(xiàn)本次電子鐘的運行。.內(nèi)部存儲單元30H存儲定時/計數(shù)器0的中斷次數(shù)°31H?36H分別作為時、分、秒個位和十位的數(shù)據(jù)存儲單元。79H?7E分別作為LED0、LED1、LED2、LED3、LED4、LED5顯示緩沖單元。.通用寄存器第0組寄存器:R0、R1、R3、R7,用來存放鍵功能程序的數(shù)據(jù);第1組寄存器:R3,用來存放中斷服務(wù)程序的數(shù)據(jù);第2組寄存器:R1、R4,用來存放顯示程序的數(shù)據(jù)。.專用寄存器定時器控制寄存器TCON,通過設(shè)置該寄存器中TR0位的狀態(tài)來控制定時/計數(shù)器0的啟動/停止;中斷允許寄存器IE,通過設(shè)置該寄存器EA/ET0位的狀態(tài)來設(shè)置定時/計數(shù)器0中斷允許/禁止;定時/計數(shù)器工作方式寄存器TMOD,設(shè)置定時/計數(shù)器0的工作方式。7程序流程圖8電子鐘程序清單調(diào)整運行后的電子鐘程序清單;該程序?qū)崿F(xiàn)電子鐘時、分、秒運行,時、分、秒調(diào)整;十、分、秒同時顯示;;共A、B、C、D四個按鍵,A鍵實現(xiàn)電子鐘的運行和停止、B鍵調(diào)時、C鍵調(diào)分、D鍵調(diào)秒;該電子鐘是單片機AT89S51控制,使用芯片中的定時器0方式1實現(xiàn)定時功能;P0口輸出段控碼、P2口輸出位控碼控制數(shù)碼管顯示;該電子鐘共使用兩個4位一體數(shù)碼管(S02841A-B)顯示;系統(tǒng)初始化程序****************************************************ORG0000HAJMPMAIN;轉(zhuǎn)到系統(tǒng)初始化程序ORG000BHAJMPPITO;轉(zhuǎn)到定時器0中斷服務(wù)程序ORG0100HMAIN:MOVSP,#60H;確立堆棧區(qū)MOVTMOD,#01H;設(shè)定定時器0為工作方式1MOVTL0,#0DCH;裝計數(shù)器初值MOVTH0,#0BHCLR21H.0CLRTR0H;TR0置“0”,定時關(guān)閉SETBEAH;EA置“1”,中斷總允許SETBET0H;ET0置“1”,定時器0中斷允許MOV30H,#10H;循環(huán)次數(shù)MOV7EH,#0AH;P.點顯示初始化MOVR0,#79HMOVR1,#05HPP:MOV@R0,#0BH第17頁
INCR0DJNZR1,PPMOVR0,#31H;時、分、秒值存儲單兀清零MOVR1,#06HQ00:MOV@R0,#00HINCR0DJNZR1,Q00IIAr4*土工口r=^““““““““““““““““““““““““““““““““““““““““““““““““““““““““““!V、J-Z_>八十—4-a小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小JILL1工4王/丁LOOP:LCALLDIR;調(diào)顯示子程序LCALLKEY;調(diào)鍵掃描子程序LOOP1:JB20H.0,KEYA;A鍵是否按下,是跳轉(zhuǎn)到A鍵功能程序JB20H.1,KEYB;B鍵是否按下,是跳轉(zhuǎn)到B鍵功能程序JB20H.2,KEYC;C鍵是否按下,是跳轉(zhuǎn)到C鍵功能程序JB20H.3,KEYD;D鍵是否按下,是跳轉(zhuǎn)到D鍵功能程序LCALLDIRLJMPLOOP;跳轉(zhuǎn)到監(jiān)控程序A鍵功能子程序****************************************************KEYA:CPLTR0H;開啟/關(guān)閉定時器SETB21H.0AJMPLOOP;返回B鍵功能子程序****************************************************KEYB:JBTR0H,KEYBO ;定時器是否運行,是跳轉(zhuǎn)JNB21H.0,KEYBOOMOVR0,#36H;時值存儲單兀地址送R0LCALLDAAD1;調(diào)加1子程序MOVA,R3;時值加1后的值送累加器第18頁,,,AXRLA,#24HJNZKEYBO;時值是否到24時,否返回LCALLCLR0;時值存儲單兀清零KEYBO:MOV7DH,35HMOV7EH,36HKEYBOO:LJMPLOOP;返回監(jiān)控程序;C鍵功能子程序****************************************************KEYC:JB8CH,KEYCO;定時器是否運行,否跳轉(zhuǎn)JNB21H.0,KEYCOOMOVR0,#34H ;分值存儲單兀地址送R0LCALLDAAD1;調(diào)加1子程序MOVA,R3 ;分值加1后的值送累加器AXRLA,#60HJNZKEYCO;分值是否到60分,否返回LCALLCLR0;分值存儲單兀清零KEYCO:MOV7CH,34HMOV7BH,33HKEYCOO:LJMPLOOP;返回監(jiān)控程序;D鍵功能子程序****************************************************KEYD:JB8CH,KEYDO ;定時器是否運行,否跳轉(zhuǎn)JNB21H.0,KEYDOOMOVR0,#32H ;秒值存儲單兀地址送R0LCALLDAAD1;調(diào)加1子程序MOVA,R3 ;秒值加1后的值送R0XRLA,#60HJNZKEYDO;秒值是否到60秒,否返回LCALLCLR0;秒值存儲單兀清0KEYDO:MOV79H,31H
MOV7AH,32HKEYDOO:LJMPLOOP;返回監(jiān)控程序中斷服務(wù)程序******************************************************PITO:PUSHPSW;中斷服務(wù)程序,現(xiàn)場保護PUSHASETBRS0;選第二組通用寄存器SETBRS1MOVTL0,#0DCH;計數(shù)器重新加載MOVTH0,#0BHMOVA,30H;循環(huán)次數(shù)減1DECAMOV30H,AJNZRETO;不滿16次,轉(zhuǎn)RET0返MOV30H,#10H;滿16次開始計時操作MOVR0,#32H;秒顯示單元地址ACALLDAAD1;秒加1MOVA,R3;加1后秒值在R3中XRLA,#60H;判是否到60秒JNZRETO;不到轉(zhuǎn)RET0返回ACALLCLR0;到60秒顯示單元清0MOVR0,#34H;分顯示單元地址ACALLDAAD1;分加1MOVA,R3;加1后分值在R3中XRLA,#60H;判是否到60分JNZRETO;不到轉(zhuǎn)RET0返回ACALLCLR0;到60分顯示單元清0MOVR0,#36H;時顯示單元地址ACALLDAAD1;時加1MOVA,R3;加1后時值在R3中DAAD1:MOVA,@R0;加1子程序,十位送ADECR0SWAPA;十位數(shù)占高4位ORLA,@R0;個位數(shù)占低4位ADDA,#01H;加1DAA;十進制調(diào)整MOVR3,A;全值暫存R3中ANLA,#0FH;屏蔽十位數(shù),取出個位數(shù)MOV@R0,A;個位值送顯示緩沖單元MOVA,R3INCR0ANLA,#0F0H;屏蔽個位數(shù)取出十位數(shù)SWAPA;使十位數(shù)占低四位MOV@R0,A;十位數(shù)送緩沖單元第21頁加1子程序XRLA,XRLA,#24H;判是否到24時JNZRETO;不到轉(zhuǎn)RET0返回ACALLCLR0;到24時顯示單元清0RETO:CLRRS0;返回第0組通用寄存器CLRRS1POPA;現(xiàn)場恢復POPPSWMOV79H,31H;時、分、秒值放緩沖區(qū)MOV7AH,32HMOV7BH,33HMOV7CH,34HMOV7DH,35HMOV7EH,36HRETI;中斷返回“““““““““““““““““““““““““““““““““““““““““““““““““““““““小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小小RET;返回CLR0:CLRA;清緩沖單兀子程序MOV@R0,A;十位緩沖單元清“0”DECR0MOV@R0,A;個位數(shù)緩沖單元清“0”RET;返回;鍵盤掃描子程序***************************************************KEY:LCALLKEYCHULI;調(diào)鍵值處理子程序JZEXIT;沒有鍵按下轉(zhuǎn)到返回LCALLDIRLCALLDIR;調(diào)顯示去抖動LCALLKEYCHULI;調(diào)鍵值處理子程序JZEXIT;沒有鍵按下轉(zhuǎn)到返回MOVB,20H;保存鍵值KEYSF:LCALLKEYCHULI;調(diào)鍵值處理子程序JZKEY1;鍵釋放,轉(zhuǎn)到恢復鍵值LCALLDIR;調(diào)顯示子程序延時AJMPKEYSF;等到鍵釋放KEY1:MOV20H,B;鍵值送20H單元保存EXIT:RET;返回KEYCHULI:PUSHPSW;保護現(xiàn)場CLRRS1;改變寄存器組號SETBRS0MOVP1,#0FFH;先向P1口寫1MOVA,P1;P1口值送累加器ACPLA;A值取反ANLA,#0FH;保存P1口的低4位MOV20H,A;A值送20H保存CLRRS1;改變寄存器組號CLRRS0
POPRETPSW;恢復現(xiàn)場1=(L工口r=^““““““““““““““““““““““““““““““““““““““““““““““““““““““““;顯示子程序********************************************************DIR:PUSHPSW ;恢復現(xiàn)場SETB RS1 ;改變寄存器組號CLR RS0MOVR0,#79H ;建立顯示緩沖區(qū)首地址MOVR3,#0FBH ;設(shè)置位控碼LD0:MOVP2,R3 ;送位控碼MOVDISP1:ADDA,A,@R0 ;緩沖區(qū)值送累加器A#1BHMOVCA,@A+PC ;取段控碼并送A中DISP2:MOVP0,A ;送段控碼MOVACALLR2,DEY#09H ;設(shè)置延時循環(huán)次數(shù);延時點亮INCR0;緩沖區(qū)地址加1MOVA,R3 ;位控碼送AJNBJBRLACC.1,ACC.5,AHERE;是否到最高位,是轉(zhuǎn)到返回LD2RLLD2:RLAA;不到向顯示、器高位移位MOVAJMPHERE:CLRCLRPOPRETDBB:DBDBR3,LD0RS0RS1PSW0C0H0F9HA ;位控值保存到R4中;繼續(xù)掃描;改變寄存器組號;恢復現(xiàn)場;返回
DB0A4HDB0B0HDB99HDB92HDB82HDB0F8HDB80HDB90HDB0CHDB0FFHh—U~工口““““““““““““““““““““““““““““““““““““““““““““““““““““““““延時子程序********************************************************DEY:PUSH12HDEY0:PUSH12HDEY1:PUSH12HDEY2:DJNZR2,DEY2POP12HDJNZR2,DEY1POP12HDJNZR2,DEY0POP12HDJNZR2,DEYRETEND9.誤差分析在上面的章節(jié)中已經(jīng)介紹過,本電子鐘設(shè)計是使用單片機的定時/計數(shù)器0在工作方式1下定時62.5ms,根據(jù)定時時間和單片機最小系統(tǒng)的時鐘周期(1us)使定時/計數(shù)器0重復中斷16次就是一秒的時間了。定時/計數(shù)器0每產(chǎn)生一個中斷就定時62.5ms,當產(chǎn)生一次中斷后,定時/計數(shù)器0并沒有馬上被賦予原來產(chǎn)生62.5ms的初值,而是在中斷服務(wù)程序中重新賦的初值,因而使用定時/計數(shù)器實現(xiàn)電子鐘的運行存在著一定的誤差。一個62.5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品經(jīng)營企業(yè)員工崗位職責
- 研究經(jīng)費管理改革-洞察分析
- 虛擬現(xiàn)實與船舶駕駛教學資源整合-洞察分析
- 研發(fā)投入與產(chǎn)出分析-洞察分析
- 圖像元智能識別與跟蹤-洞察分析
- 《浙江卷生物》課件
- 云計算環(huán)境下的安全防護技術(shù)研究-洞察分析
- 勤儉節(jié)約是美德講話稿范文(16篇)
- 移動網(wǎng)絡(luò)地址轉(zhuǎn)換技術(shù)-洞察分析
- 循環(huán)經(jīng)濟政策對堿業(yè)影響-洞察分析
- 2022年7月國家開放大學本科《中國法律史》期末紙質(zhì)考試試題及答案
- 行政文秘筆試題
- 2024年部門年終工作總結(jié)參考(四篇)
- 主題四 第1課 節(jié)氣與我們的生活(教學設(shè)計)教科版五年級下冊綜合實踐活動
- 二年級數(shù)學上冊口算天天練
- 肯耐珂薩題庫
- 2024國家開放大學電大本科《液壓氣動技術(shù)》期末試題及答案
- 冷凝集素綜合征治療與護理研究進展
- 商務(wù)服務(wù)機器人技術(shù)現(xiàn)狀與未來發(fā)展趨勢研究
- 工業(yè)物聯(lián)網(wǎng)(IIoT)行業(yè)發(fā)展全景調(diào)研與投資趨勢預測研究報告
- 金融數(shù)據(jù)分析-以Python為工具 課件 一、金融數(shù)據(jù)分析概覽
評論
0/150
提交評論