![單片機(jī)課程設(shè)計(jì)簡易電子鐘_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/3da480ae-dd9b-4647-9261-17008711e178/3da480ae-dd9b-4647-9261-17008711e1781.gif)
![單片機(jī)課程設(shè)計(jì)簡易電子鐘_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/3da480ae-dd9b-4647-9261-17008711e178/3da480ae-dd9b-4647-9261-17008711e1782.gif)
![單片機(jī)課程設(shè)計(jì)簡易電子鐘_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/3da480ae-dd9b-4647-9261-17008711e178/3da480ae-dd9b-4647-9261-17008711e1783.gif)
![單片機(jī)課程設(shè)計(jì)簡易電子鐘_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/3da480ae-dd9b-4647-9261-17008711e178/3da480ae-dd9b-4647-9261-17008711e1784.gif)
![單片機(jī)課程設(shè)計(jì)簡易電子鐘_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/25/3da480ae-dd9b-4647-9261-17008711e178/3da480ae-dd9b-4647-9261-17008711e1785.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第1章 電子鐘設(shè)計(jì)方案選擇與論證1.1 功能要求說明(1)、 led數(shù)碼管顯示器顯示當(dāng)前時間;(2)、 該電子鐘上電或按鍵復(fù)位后能自動顯示系統(tǒng)提示符“p.”, 進(jìn)入時鐘準(zhǔn)備狀態(tài);(3)、 四個按鍵的功能:a鍵用于電子鐘啟動/調(diào)整;b鍵用于調(diào)秒,范圍0-59,0為60秒,每按一次秒加1;c鍵用于調(diào)分,范圍0-59,0 為60分,每按一次分加1;d鍵用于調(diào)時, 范圍0-23,0為24時,每按一次時加1;電子鐘的構(gòu)成主要是由單片機(jī),鍵盤顯示接口電路及時鐘電路和復(fù)位電路構(gòu)成,在方案選擇的時候多體現(xiàn)在鍵盤顯示接口電路的不同,因而我們主要討論的是鍵盤顯示電路不同時的方案。在此有以下幾種方按案供我們選擇:1
2、.2設(shè)計(jì)方案一:8155擴(kuò)展i/o口的鍵盤、顯示接口8155芯片有256個字節(jié)ram、2個8位、1個6位的可編程i/o口和1個14位計(jì)數(shù)器,與mcs-51單片機(jī)接口簡單,是單片機(jī)系統(tǒng)中廣泛使用的芯片。對于這個芯片我們比較的熟悉,但利用它進(jìn)行本次設(shè)計(jì)有一主要的缺點(diǎn):它占用的cpu較多;原理框圖如圖1-1所示 圖1-1 方案一原理框圖1.3設(shè)計(jì)方案二: 74ls244、鍵盤、顯示接口本次簡易電子鐘的設(shè)計(jì)是at89s52鍵盤、顯示接口,led動態(tài)顯示。該方案的單片機(jī)芯片采用atmel公司的at89s52,它一種低功耗、高性能的cmos 8位單片機(jī)。它的優(yōu)點(diǎn)是:實(shí)時測控任務(wù)少,采用動態(tài)顯示,節(jié)省i/o
3、口,硬件電路比較簡單,成本低。它的原理框圖如圖1-2所示:圖1-2 方案二原理框圖1.4設(shè)計(jì)方案三:8279鍵盤、顯示接口8279是intel公司為8位處理器設(shè)計(jì)的通用的鍵盤/顯示接口芯片,其功能是:接受來自鍵盤輸入數(shù)據(jù)并作與處理,并可以完成數(shù)據(jù)顯示的管理和數(shù)據(jù)顯示器的控制。單片機(jī)采用8299管理鍵盤和顯示器,軟件編程極其簡單,顯示穩(wěn)定,且減少主機(jī)的負(fù)擔(dān)。它的原理框圖如圖1-3所示: 圖1-3 方案三原理框圖1.5設(shè)計(jì)方案四: 晶體管三極管驅(qū)動數(shù)碼管本方案主要采用晶體三極管作為數(shù)碼管的驅(qū)動器,用它的好處是在畫pcb 單面板時容易走通單面板而沒有交叉線,還有一個好處是晶體三極管價格比較便宜,到處
4、都可以買到,在本次設(shè)計(jì)中我們就采用本方案來做電子鐘。它的原理框圖如圖1-4所示: 圖1-4 方案四原理框圖 第2章 電子鐘原理說明2.1 實(shí)現(xiàn)時鐘計(jì)時的基本方法利用mcs-51系列單片機(jī)可編程定時/計(jì)數(shù)器、中斷系統(tǒng)來實(shí)現(xiàn)時鐘計(jì)數(shù)。2.1.1 計(jì)數(shù)初值計(jì)算把定時器設(shè)為工作方式1,定時時間為50ms,則計(jì)數(shù)溢出20次即得時鐘計(jì)時最小單位秒,而20次計(jì)數(shù)可用軟件方法實(shí)現(xiàn)。假設(shè)使用t/c0,方式1,50ms定時,fosc=12mhz。則初值x滿足(216-x)×1(s)×10-3(s) =50000 (s)則x=15536,二進(jìn)制為0100110000000000,十六進(jìn)制表示為4
5、c00h。初值的計(jì)算也可以用專門的小軟件直接輸入使用的定時器,方式,定時時間,“確定”之后,就可以直接顯示初值。這樣可以提高工作效率,又不易出錯。2.1.2 采用中斷方式進(jìn)行溢出次數(shù)累計(jì),計(jì)滿20次為秒計(jì)時(1秒)2.1.3 從秒到分和從分到時的計(jì)時是通過累加和數(shù)值比較實(shí)現(xiàn)。2.2 電子鐘的時間顯示電子鐘的時鐘時間在八位數(shù)碼管上進(jìn)行顯示,因此,在內(nèi)部ram中設(shè)置顯示緩沖區(qū)共8個單元。這八個緩沖單元由數(shù)組構(gòu)成。顯示緩沖區(qū)從左至右依次存小時,分,秒的數(shù)值。2.3 電子鐘的啟,停及時間調(diào)整電子鐘設(shè)置4個按鍵通過程序控制來完成電子鐘的啟,停及時間調(diào)整。a鍵控制電子鐘的啟,停;b鍵調(diào)整時;c鍵調(diào)整分;d
6、鍵調(diào)整秒。第3章 硬件設(shè)計(jì)3.1芯片at89s52at89s52是一種低功耗,高性能chmos 8位單片機(jī)。片內(nèi)含8kbytes isp的可反復(fù)擦寫1000次flash只讀程序存儲器,128bytes的隨機(jī)存取數(shù)據(jù)存儲器(ram)。其特點(diǎn)如下:(1)兼容mcs-51指令系統(tǒng);(2)最大的工作頻率為33mhz;(3)具有雙工uart串行通道;(4)內(nèi)部集成看門狗計(jì)時器,不需要再外接看門狗計(jì)時器單元電路;(5)雙數(shù)據(jù)指示器;(6)支持isp(在線更新程序)功能,其優(yōu)勢在于改寫單片機(jī)存儲器內(nèi)的程序不需要把芯從工作環(huán)境中剝離;(7)電源關(guān)閉標(biāo)識;(8)電壓范圍寬達(dá)4-5.5v,而89c52在低于4.8
7、v或高于5.3v則無法工作;本;3.1.1 at89s52外部管腳如圖7所示3.1.2引腳與功能at89s52單片機(jī)為40引腳芯片如圖3-1所示:1) 引腳信號介紹:p00p07 p0口8位雙向口線p10p17 p0口8位雙向口線p20p27 p0口8位雙向口線p30p37 p0口8位雙向口線ale地址鎖存控制信號: 圖3-1 芯片at89s52外部管腳在系統(tǒng)擴(kuò)展時,ale用于控制把p0口輸出低8位地址送鎖存器鎖存起來,以實(shí)現(xiàn)低位地址和數(shù)據(jù)的隔離。此外由于ale是以晶振六分之一的固定頻率輸出的正脈沖,因此可作為外部時鐘或外部定時脈沖作用。/psen外部選通信號在讀外部rom時/psen有效(低
8、電平),以實(shí)現(xiàn)外部rom單元的讀操作。/ea 訪問程序存儲器控制信號:rst 復(fù)位信號:當(dāng)輸入的復(fù)位信號延續(xù)2個機(jī)器周期以上高電平時即為有效,用以完成單片機(jī)的復(fù)位初始化操作。xtal1和xtal2 外接晶體引線端:當(dāng)使用芯片內(nèi)部時鐘時,此二引線端用于外接石英晶體和微調(diào)電空;當(dāng)使用外部時鐘時,用于拉外部的時鐘脈沖信號。 gnd:地線vcc:+5v電源2)信號引腳的第二功能:由于工藝及標(biāo)準(zhǔn)化等原因,芯片的引腳數(shù)目是有限制的,例如mcs51系列把芯片引腳數(shù)目限定為40條,但單片機(jī)為實(shí)現(xiàn)其功能所需要的信號數(shù)目卻遠(yuǎn)遠(yuǎn)超過此數(shù),因此就出現(xiàn)了需要與可能的矛盾。因此,給一些信號引腳賦以雙重功能。 p3口第二功
9、能:p3的8條口線都定義有第二功能 ,具體如表1所示:表1 p3口第二功能分配表口線第二功能替代的專用功能p3.0rxdrxd(串行輸入口)p3.1txdtxd(串行輸出口)p3.2/int0int0(外部中斷0)p3.3/int1int1(外部中斷1)p3.4t0t0(定時器0的外部輸入)p3.5t1t1(定時器1的外部輸入) p3.6/wr/wr(外部ram寫選通) p3.7/rd/rd(外部ram讀選通)3.3 復(fù)位電路復(fù)位電路是使單片機(jī)的cpu或系統(tǒng)中的其他部件處于某一確定的初始狀態(tài),并從這上狀態(tài)開始工作。上電復(fù)位是單片機(jī)上電時復(fù)位操作,保證單片機(jī)上電后立即進(jìn)入規(guī)定的復(fù)位狀態(tài)。除了進(jìn)入
10、系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復(fù)位鍵。在此,結(jié)合了上電和按鍵盤手動兩種復(fù)位方式。3.3.1 復(fù)位電路圖復(fù)位電路圖如圖3-2所示: 3.3.2 復(fù)位電路工作原理上電復(fù)位要求接通電源后,單片機(jī)自動實(shí)現(xiàn)復(fù)位操作。上電瞬間rst引腳獲得高電平,隨著電容的充電,rst引腳的高電平將逐漸下降。 圖3-2 復(fù)位電路rst引腳的高電平只要能保持足夠的時間(2個機(jī)器周期),若采用6mhz的晶振,則復(fù)位信號應(yīng)超過4s單片機(jī)就可以進(jìn)行復(fù)位操作。3.4 時鐘電路時鐘電路用于產(chǎn)生單片機(jī)工作所需要的時鐘信號,而時序所研究的是指令執(zhí)行中各信號之間的相互關(guān)系。單片
11、機(jī)本身就如一個復(fù)雜的同步時序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時鐘信號控制下嚴(yán)格地按時序進(jìn)行工作。3.4.1 時鐘振蕩電路圖時鐘振蕩電路圖如圖3-3所示:3.4.2 時鐘信號的產(chǎn)生 圖3-3 時鐘電路 單片機(jī)內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳xtal1,其輸出端為引腳xtal2。而在芯片的外部,xtal1和xtal2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器。只要在單片機(jī)的xtal1和xtal2引腳外接晶體振蕩器就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時鐘脈沖信號。電容器c1和c2的作用是穩(wěn)定頻率和快速起振,電容值在530pf,典型值為30pf。外部時鐘方
12、式是把外部已有的時鐘信號引入到單片機(jī)內(nèi)。此方式常用于多片單片機(jī)同時工作,以便于各單片機(jī)的同步。一般要求外部信號高電平的持續(xù)時間大于20ns,且為頻率低于12mhz的方波。3.5 鍵盤顯示電路3.5.1 鍵盤電路在此設(shè)計(jì)中采用的是五按鍵獨(dú)立式鍵盤(其中有s鍵為復(fù)位鍵,其余四鍵為功能鍵)。如圖3-4所示: 獨(dú)立式鍵盤中,每個按鍵占用 一根i/o口線,每個按鍵電路相對獨(dú)立。i/o口通過按鍵與地相連,i/o口有上拉電阻,無鍵按下時, 引腳端為高電平,有鍵按下時,引腳電平被拉低。i/o口內(nèi)部有上拉電阻時,外部可不接上拉電阻。 圖3-4 鍵盤電路3.5.2 顯示電路 在此設(shè)計(jì)中采用led顯示,led顯示器
13、由七個發(fā)光二極管組成,也稱之為七段led 顯示器,其排列形狀如圖3-5所示。此外,顯示器中還有一個圓點(diǎn)型發(fā)光二極管(在圖中以dp表示),用于顯示小數(shù)點(diǎn)。通過七段發(fā)光二極管的不同組合,可以顯示多種數(shù)字、字母或者其他符號。led顯示器中的發(fā)光二極管共有兩種連接方法:共陽極接法 把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極。使用時公共陽極接+5v。這樣陰極端輸入低電平的段發(fā)光二極管就導(dǎo)通點(diǎn)亮,而輸入高電平的則不點(diǎn)亮。共陰極接法 把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極。使用時公共陰極接地,這樣陽極端輸入高電平的段發(fā)光二極管就導(dǎo)通點(diǎn)亮,而輸入低電平的則不點(diǎn)亮。七段發(fā)光二極管,再加上一個小數(shù)點(diǎn),共計(jì)8段。因此提
14、供給led顯示器的字型代碼正好一個字節(jié)。采用led顯示器。led顯示器由七個發(fā)光二極管組成,本設(shè)計(jì)采用共陽級接法。顯示方式采用動態(tài)顯示方式。原因在于:靜態(tài)顯示方式要求口線多,占用資源多,成本就高,而動態(tài)顯示方式,電路簡單、節(jié)省口線、成本低。 符號與引腳 四位一體數(shù)碼管圖3-5 led顯示器而本次設(shè)計(jì)采用四位一體數(shù)碼管顯示,這樣可以減少布線數(shù)目,降低出錯率。 顯示方式:靜態(tài)顯示所謂靜態(tài)顯示,是指顯示器顯示某一字符時,相應(yīng)段的發(fā)光二極管恒定地導(dǎo)通或截止。這種顯示方法每一位都需要有一個8位輸出控口控制。靜態(tài)顯示時,較小的驅(qū)動電流就可以得到較高的顯示亮度,所以可由接口芯片直接驅(qū)動。并行輸出顯示位數(shù)越多
15、需要i/o口越多。動態(tài)顯示(如圖3-6所示)當(dāng)顯示器位數(shù)較多時,可以采用動態(tài)顯示。所謂動態(tài)顯示就是一位一位地輪流點(diǎn)亮顯示器的各個位(掃描),對于顯示器的每一位而言,每隔一段時間點(diǎn)亮一次。雖然在同一時刻只有一位顯示器在工作(點(diǎn)亮),但由于人眼的視覺暫留效應(yīng)和發(fā)光二極管熄滅時的余輝,我們看到的動是多個字符“同時”顯示。顯示器亮度既與點(diǎn)亮?xí)r的導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時間的比例有關(guān)。該設(shè)計(jì)中采用的是動態(tài)顯示。圖3-6 六位數(shù)碼管動態(tài)顯示方式用led顯示器顯示十六進(jìn)制數(shù)的字形代碼如表2所示: 表2 led顯示器顯示十六進(jìn)制數(shù)的字形代碼表字型共陽代碼共陰代碼字型 共陽代碼共陰代碼0c0h3fh99
16、0h6fh1f9h06ha88h772a4h5bhb83h7ch3b0h4fhcc6h39h 499h66hda1h5eh 592h6dhe86h79h 682h7dhf8eh71h 7f8h07h滅ffh00h 880h7fhp.0chf3h3.6 下載線原理圖及pcb圖 下載線原理圖如圖3-7所示: 圖3-7 下載線原理圖下載線pcb圖如圖3-8所示: 圖3-8 下載線pcb圖3.7電子鐘整機(jī)電路原理圖見附錄13.8 電子鐘整機(jī)電路印制pcb附錄2第4章 電子鐘元器件清單本次設(shè)計(jì)所用的元器件比較多,具體如表3所示:表3電子鐘元器件清單表元器件數(shù)量元器件數(shù)量at89s521塊芯片插座(40腳
17、)1個共陽極四位一體數(shù)碼管2塊芯片插座(20腳)3個按鍵5個電阻1k歐姆1個發(fā)光二極管1個電阻240歐姆1個74ls2442塊限流電阻200歐姆9個電容(33pf)2個上拉電阻10k歐姆4個電容(22f)1個晶振12mhz1個敷銅板1塊開關(guān)1個下載套件1套第5章 單片機(jī)資源分配5.1 存儲器地址分配如表4所示:表4 存儲器地址分配如表內(nèi) 容存儲器地址單元顯示緩沖單元79h-7eh堆棧起始單元60h秒單元個位的存儲單元30h秒單元十位的存儲單元31 h分單元個位的存儲單元32 h分單元十位的存儲單元33 h小時單元個位的存儲單元34 h小時單元十位的存儲單元35 h秒計(jì)數(shù)的循環(huán)次數(shù)46ha鍵處理
18、結(jié)果位標(biāo)志20h.0b鍵處理結(jié)果位標(biāo)志20h.1c鍵處理結(jié)果位標(biāo)志20h.2d鍵處理結(jié)果位標(biāo)志20h.3 5.2 硬件資源分配采用定時/計(jì)數(shù)器t0p1.0p1.3為鍵盤輸入端p0口用作段控線p2口用作位控線采用定時器/計(jì)數(shù)器中斷0第6章 流程圖6.1 監(jiān)控程序流程圖 監(jiān)控程序流程圖如圖6-1所示:6.2 鍵掃描子程序流程圖 鍵鍵掃描子程序流程圖如圖6-2所示:6.3 中斷及顯示子程序圖 中斷及顯示子程序圖6-3,6-4所示6.4 加1子程序流程圖加1子程序流程圖如圖6-5所示:第7章 軟件設(shè)計(jì) (1)c語言程序/*/* 程 序 名:電子時鐘(數(shù)碼管顯示) /* 功 能:顯示實(shí)時時間并可通過按鍵
19、進(jìn)行校正 /* 編 寫 者:梁高強(qiáng) /* 編寫時間:2007.11.20 /* 郵 箱:lianggaoqiang222 歡迎來電交流,共同學(xué)習(xí)和進(jìn)步! /*/#include<reg52.h>#define uchar unsigned charsbit p_0=p10;sbit p_1=p11;sbit p_2=p12;uchar j,sec,min=0,shi=0,i,g,count;sfr p0=0x80;sfr p2=0xa0;uchar table10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uchar ta
20、ble18=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; uchar xsqd8;/*顯示緩沖區(qū),其由數(shù)組組成*/void xs() xsqd0=tablesec%10; xsqd1=tablesec/10; xsqd2=0x40; xsqd3=tablemin%10; xsqd4=tablemin/10; xsqd5=0x40; xsqd6=tableshi%10; xsqd7=tableshi/10; /*延時*/void dely()unsigned char m,n,k; for(m=20;m>0;m-) for(n=20;n>0;n-)
21、 for(k=248;k>0;k-);void delay()unsigned char l,h; for(l=5;l>0;l-) for(h=248;h>0;h-);/*鍵掃描子程序*/void key() ea=0; /鍵掃時禁止任何中斷 if(p_0=0) dely(); if(p_0=0) et0=0; tr0=0; count+; if(count=3) count=0; switch(count) case 1 : if(p_1=0) dely(); if(p_1=0) min+; if(min=59)min=0; if(p_2=0) dely(); if(p_2
22、=0) min-; if(min=0)min=59; ;break; case 2 : if(p_1=0) dely(); if(p_1=0) shi+; if(shi=24)shi=0; if(p_2=0) dely(); if(p_2=0) shi-; if(shi=0)shi=23; ;break; default :break; ea=1; et0=1; tr0=1; /*中斷子程序*/void t0(void) interrupt 1 using 0 th0=0x4c; /定時器初值重裝 tl0=0x00; j+; if(j=20) j=0; sec+; if(sec=60) sec
23、=0; min+; if(min=60) min=0; shi+; if(shi=24) shi=0; /*主程序*/void main() j=0; tmod=0x01; /選擇定時器方式 th0=0x4c; /定時器給初值 tl0=0x00; ea=0; /關(guān)總中斷 et0=0; /關(guān)定時中斷 tr0=0; /關(guān)定時器 while(1) /p點(diǎn)循環(huán)顯示 p0=0x73; /送p點(diǎn)段控 p2=table1i; /送p點(diǎn)位控 delay(); i+; if(i=8) i=0; if(p_0=0) dely(); if(p_0=0) break; /如果a鍵按下,則跳出p點(diǎn)顯示 ea=1; /開
24、總中斷 et0=1; /開定時中斷 tr0=1; /開啟定時器 while(1) /開定時器 key(); /鍵掃 xs(); /將定時器的值存入緩沖區(qū) p0=xsqdg; /送段控 p2=table1g; /送位控 delay(); g+; if(g=8) g=0; (2)匯編程序* 數(shù)字電子鐘 *;定時器t0的溢出周期為50ms,采用12mhz晶振;p1.0-p1.3為調(diào)整按鈕;p0口為段控,p2口為位控,采用74ls244驅(qū)動;采用共陽數(shù)碼管; * * 常數(shù)定義區(qū) * *;keyaa bit 20h.0 ;a鍵處理結(jié)果位標(biāo)志keybb bit 20h.1 ;b鍵處理結(jié)果位標(biāo)志keycc
25、bit 20h.2 ;c鍵處理結(jié)果位標(biāo)志keydd bit 20h.3 ;d鍵處理結(jié)果位標(biāo)志secge equ 30h ;秒個位存儲單元secsh equ 31h ;秒十位存儲單元minge equ 32h ;分個位存儲單元minsh equ 33h ;分十位存儲單元houge equ 34h ;時個位存儲單元housh equ 35h ;時十位存儲單元intcs equ 46h ;計(jì)數(shù)溢出次數(shù),即1秒的計(jì)數(shù)循環(huán)次數(shù) * * 中斷入口程序 * * org 0000h ;程序執(zhí)行開始地址ajmp main ;跳到標(biāo)號main執(zhí)行 org 0003h ;外部中斷0中斷程序入口 reti ;外部中斷
26、0中斷返回 org 000bh ;定時器t0中斷程序入口 ajmp intt0 ;跳至intto執(zhí)行 org 0013h ;外部中斷1中斷入口地址 reti ;外部中斷1中斷返回 org 001bh ;定時器t1中斷程序入口 reti ;定時器t1中斷程序返回 org 0023h ;串行中斷程序入口地址 reti ;串行中斷程序返回 * * 主程序 * * org 0030h main: mov sp, #60h ;確立堆棧區(qū) mov psw, #00h ;初始化狀態(tài)字 mov r1, #20h ;ram區(qū)首地址 mov r2, #5fh clear: mov r1, #00h ;對相應(yīng)單元清
27、零操作 inc r1 djnz r2, clear mov tmod, #01h ;定時器0工作方式1 mov tl0, #0dch ;每125ms中斷一次 mov th0, #0bh mov intcs, #08h ;中斷次數(shù)初始化 clr tr0 ;關(guān)定時器 clr ea ;關(guān)總中斷允許 clr et0 ;關(guān)定時器/計(jì)數(shù)器0中斷允許 mov r3, #0ffh ;給r3賦初值numcla: lcall xsp0 ;調(diào)顯示班級及學(xué)號程序 djnz r3, numcla ;非零繼續(xù)顯示xsp: mov 79h, #0bh ;給顯示緩沖區(qū)賦相應(yīng)初值 ? mov 7ah, #0bh ;給指定位賦顯
28、示p點(diǎn)代碼,其余位賦滅代碼 mov 7bh, #0bh mov 7ch, #0bh mov 7dh, #0bh mov 7eh, #0ah lcall disp ;調(diào)p點(diǎn)顯示程序,等待中斷contr: lcall key ;調(diào)鍵掃程序 jz xsp ;無鍵按下則跳轉(zhuǎn)至xsp jnb keyaa, xsp ;有鍵按下,非a鍵繼續(xù)顯示p點(diǎn)jkeyf: lcall keychuli ;判釋放 jz dispa ;釋放則轉(zhuǎn)dispa lcall turn ;調(diào)轉(zhuǎn)移子程序 lcall disp ;調(diào)顯示程序 ajmp jkeyf ;再次判釋放dispa: setb tr0 ;開定時器t0 開始計(jì)時 se
29、tb ea ;開總中斷 setb et0 ;開分中斷0 lcall turn ;調(diào)轉(zhuǎn)移程序 lcall disp ;調(diào)顯示 lcall key ;調(diào)鍵掃子程序 jz dispa ;無鍵按下繼續(xù)顯示時鐘 jnb keyaa, dispa ;有鍵按下,非a鍵亦繼續(xù)顯示jkeyfb: lcall keychuli ;調(diào)鍵處理程序 jz setck ;若為a鍵按下,則進(jìn)入設(shè)置狀態(tài) lcall turn ;調(diào)轉(zhuǎn)移程序 lcall disp ;調(diào)顯示 ajmp jkeyfb ;轉(zhuǎn)移到j(luò)keyfbsetck: clr tr0 ;若為a鍵,則關(guān)閉定時器 mov 20h, #00h ;清鍵處理標(biāo)志位 lcall
30、 turn ;調(diào)轉(zhuǎn)移程序 lcall disp ;顯示當(dāng)前時間 lcall key ;調(diào)鍵掃 jz setck ;無鍵按下則繼續(xù)在設(shè)置狀態(tài) jnb keyaa, judgeb ;為a鍵不,不是則跳至judgebjkeyfc: lcall keychuli ;判釋放 jz dispa ;釋放則重新開始計(jì)時 lcall turn ;調(diào)轉(zhuǎn)移 lcall disp ;調(diào)顯示 ajmp jkeyfc ;繼續(xù)判是否釋放 (應(yīng)重新判是否有鍵按下) ? * * 鍵功能程序 * *;judgeb: jnb keybb, judgec ;為b鍵不,不是則跳至judgeckeysfb: lcall keychuli
31、 ;判釋放 jz hou1 ;進(jìn)行時加1 lcall turn ;調(diào)轉(zhuǎn)移程序 lcall disp ;調(diào)顯示 ajmp keysfb ;繼續(xù)判釋放 ? judgec: jnb keycc, judged ;為c鍵不,不是則跳至judgedkeysfc: lcall keychuli ;判釋放 jz min1 ;釋放則進(jìn)行分加1 lcall turn ;調(diào)轉(zhuǎn)移 lcall disp ;調(diào)顯示 ajmp keysfc ;繼續(xù)判釋放judged: jnb keydd, keysfa ;是d鍵不,不是則跳至keysfakeysfd: lcall keychuli ;判釋放 jz sec1 ;釋放則進(jìn)行秒加1 lcall turn ;調(diào)轉(zhuǎn)移 lcall disp ;調(diào)顯示 ajmp keysfd ;繼續(xù)判釋放keysfa: ljmp setck ;回到設(shè)置狀態(tài); * * 鍵掃描程序 * *;20h存放取反后的鍵值;鍵掃子程序;出口:a,20h;key: lcall keychuli ;調(diào)鍵處理子程序 jz exit lcall disp ;去抖動
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 怎樣寫申請書范文
- 企業(yè)登記 備案 申請書
- 見義勇為申請書
- 2025年度醫(yī)療信息化系統(tǒng)建設(shè)與維護(hù)合同模板
- 2025年度醫(yī)療科研設(shè)備代理銷售合作協(xié)議
- 回學(xué)校讀書的申請書
- 環(huán)境修復(fù)與生物多樣性的協(xié)同發(fā)展
- 現(xiàn)代企業(yè)的職業(yè)衛(wèi)生管理體系建設(shè)與評估方法研究
- 2025年度醫(yī)院體檢中心與醫(yī)療旅游合作合同
- 電子商務(wù)與跨境物流配送體系的協(xié)同構(gòu)建
- 水產(chǎn)品冷凍加工原料處理與加工技術(shù)考核試卷
- 浙教版八年級下冊科學(xué)第二章 微粒的模型與符號整章思維導(dǎo)圖
- 全新保密協(xié)議模板公安下載(2024版)
- 初一英語英語閱讀理解專項(xiàng)訓(xùn)練15篇
- GB/T 4008-2024錳硅合金
- DZ∕T 0447-2023 巖溶塌陷調(diào)查規(guī)范(1:50000)(正式版)
- 2024年天津市中考英語試題卷(含答案)
- 《建筑施工圖設(shè)計(jì)》課件-建筑施工圖立面圖
- 16J914-1 公用建筑衛(wèi)生間
- 精神疾病患者自殺風(fēng)險評估與預(yù)防措施
- 山西省太原市2023-2024學(xué)年七年級下學(xué)期期中數(shù)學(xué)試題
評論
0/150
提交評論