




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGE2課程設(shè)計(jì)報(bào)告課程名稱單片機(jī)原理與應(yīng)用課題名稱倒計(jì)時(shí)器設(shè)計(jì)專業(yè)電子信息工程技術(shù)班級(jí)學(xué)號(hào)姓名指導(dǎo)教師2011-12-22設(shè)計(jì)內(nèi)容及要求(1)設(shè)計(jì)一個(gè)倒計(jì)時(shí)器,由單片機(jī)接收小鍵盤陣列設(shè)定倒計(jì)時(shí)時(shí)間,倒計(jì)時(shí)范圍最大為60分鐘,由LED顯示模塊顯示剩余時(shí)間,顯示格式為XX(分):XX(秒).X,精確到0.1s的整數(shù)倍。倒計(jì)時(shí)時(shí)間到,由蜂鳴器發(fā)出報(bào)警。(2)繪制系統(tǒng)硬件接線圖,并進(jìn)行系統(tǒng)仿真。(3)畫出程序流程圖并編寫程序?qū)崿F(xiàn)上述功能2、設(shè)計(jì)方案(1)單片機(jī)定時(shí)系統(tǒng)工作原理我們知道單片機(jī)的外接石英體振蕩器能提供穩(wěn)定、準(zhǔn)確的頻率,并經(jīng)12分頻后向內(nèi)部定時(shí)器提供實(shí)時(shí)基準(zhǔn)頻率信號(hào),我們?cè)O(shè)定定時(shí)工作在中斷方式下,連續(xù)對(duì)此頻率信號(hào)進(jìn)行分頻計(jì)數(shù),便可得到秒信號(hào),在對(duì)秒信號(hào)進(jìn)行計(jì)數(shù)便可得到分、時(shí)、實(shí)時(shí)時(shí)鐘信息。石英晶體振蕩頻率為6MHz,設(shè)定定時(shí)器工作在方式1下,定時(shí)常數(shù)為3CB0H,則定時(shí)器每100ms產(chǎn)生1次中斷,在定時(shí)器的中斷定時(shí)處理中,每10次中斷,則向秒計(jì)數(shù)器減1,秒計(jì)數(shù)器計(jì)數(shù)到00時(shí)則向分計(jì)數(shù)器退位(并建立退位標(biāo)志),分計(jì)數(shù)器計(jì)數(shù)到00時(shí)則向時(shí)計(jì)數(shù)器退位,計(jì)數(shù)器退位······如此周而復(fù)始地連續(xù)計(jì)數(shù),便可獲得時(shí)、分、秒的信號(hào),建立一個(gè)實(shí)時(shí)時(shí)鐘,接下來(lái)便可以進(jìn)行報(bào)警輸出,當(dāng)主程序檢測(cè)到有分退位標(biāo)志時(shí),便開始比較當(dāng)前時(shí)間(小時(shí)與分,存放在RAM中)與規(guī)定時(shí)間(小時(shí)與分及秒,存放在ROM中)是否有相同者,則進(jìn)行蜂鳴器報(bào)警,如無(wú)相同者則返回主程序,如此便實(shí)現(xiàn)了定時(shí)控制的要求。要準(zhǔn)確到秒,則時(shí)、分、秒三者均需參與比較,并且建立秒進(jìn)位標(biāo)志位,即每秒鐘的偶也要對(duì)定時(shí)設(shè)定值比較一遍。(2)電路原理定時(shí)電路的核心是AT89C51單片機(jī),其內(nèi)部帶有4KB的FLASHROM,無(wú)須外擴(kuò)程序存儲(chǔ)器。電腦時(shí)鐘沒有大量的運(yùn)算和短暫緩存數(shù)據(jù),現(xiàn)有的128B片內(nèi)RAM亦能滿足要求,也不必外擴(kuò)片外RAM。系統(tǒng)配備5位LED顯示和3*4鍵盤,用P3口作為減排接口電路,P2口作為5位LED顯示的位選通口,P0口則作為字形碼輸出口。采用共陽(yáng)極LED數(shù)碼管,PO口、P2口和數(shù)碼管之間傳接了驅(qū)動(dòng)芯片74LS245,因此P2口輸出高電平選中相應(yīng)的位,而對(duì)P0口輸出低電平點(diǎn)亮相應(yīng)的段。(3)系統(tǒng)工作流程進(jìn)入主程序。設(shè)置各中斷的入口地址。把相關(guān)的寄存器清零。設(shè)置數(shù)碼管顯示的初始狀態(tài)。對(duì)鍵盤進(jìn)行掃描。顯示下一個(gè)數(shù)字。進(jìn)行倒計(jì)時(shí)。判斷計(jì)時(shí)是否到了。到了清零處理。沒到繼續(xù)倒計(jì)時(shí)知道清零為止。3、程序設(shè)計(jì)根據(jù)上述工作流程,軟件設(shè)計(jì)可分為以下幾個(gè)功能模塊:主程序:初始化與鍵盤監(jiān)控。計(jì)時(shí):未定時(shí)器0中斷服務(wù)子程序,完成刷新計(jì)時(shí)緩沖區(qū)的功能。顯示:完成5位LED動(dòng)態(tài)顯示。鍵盤掃描:判斷是否有鍵按下,并求取鍵號(hào)。其他輔助功能程序,如鍵盤設(shè)置、拆字、合字、等。下面分模塊進(jìn)行軟件設(shè)計(jì):計(jì)時(shí)程序模塊。如前所述,系統(tǒng)定時(shí)采用定時(shí)器與軟件循環(huán)相結(jié)合的方法。定時(shí)器0每隔100ms溢出中斷一次,則循環(huán)中斷10次延時(shí)時(shí)間為1秒,上述過程重復(fù)60次為1分鐘,分計(jì)時(shí)60次為1小時(shí)。設(shè)系統(tǒng)使用6MHz的晶振,定時(shí)器0工作方式1,則100ms定時(shí)對(duì)應(yīng)的定時(shí)器初值可以下計(jì)算得到定時(shí)時(shí)間=(216-定時(shí)器0初值)*(12/fosc)如果定時(shí)器0初值為3CB0H,則TH0=3CH,TL0=0B0H。當(dāng)系統(tǒng)使用其他頻率的晶振時(shí),可以由上式計(jì)算相應(yīng)的定時(shí)器0初值,也可以改變定時(shí)時(shí)間。例如當(dāng)系統(tǒng)晶振為12MHz時(shí),同樣的初值對(duì)應(yīng)的設(shè)定時(shí)間為50ms,則循環(huán)中斷次數(shù)為20次時(shí),延時(shí)為1秒。這里有兩個(gè)問題要特別重視。Ⅰ.定時(shí)器溢出產(chǎn)生中斷請(qǐng)求,CPU并不一定立即響應(yīng)中斷,而可能需要延遲一定的中斷響應(yīng)時(shí)間之后才能響應(yīng)中斷,中斷響應(yīng)時(shí)間大約為3~8個(gè)機(jī)器周期。顯然,這將在定時(shí)時(shí)間中加入額外的延時(shí)時(shí)間,導(dǎo)致即計(jì)時(shí)誤差。為了保證計(jì)時(shí)精度,必須采取措施進(jìn)行補(bǔ)償。我們采用增大重裝的定時(shí)器0初值的方法來(lái)減少定時(shí)器0的定時(shí)時(shí)間。具體應(yīng)調(diào)整為多大,一般需要通過調(diào)試來(lái)確定。經(jīng)測(cè)試,定時(shí)器0重裝初值設(shè)為3CB7H~3CBFH可以滿足精度要求。Ⅱ.時(shí)間是按十進(jìn)制遞增,而MCS-51系列單片機(jī)只有二進(jìn)制加法指令,因此用加法指令計(jì)時(shí)必須進(jìn)行二——十進(jìn)制轉(zhuǎn)換。,時(shí)間校時(shí)對(duì)設(shè)置程序和定時(shí)報(bào)時(shí)程序模塊。將鍵盤輸入的5位時(shí)間值合并為3位壓縮BCD碼(時(shí)、分、秒)送入即使緩沖區(qū),作為當(dāng)前倒計(jì)時(shí)起始時(shí)間。該模塊的入口為即使緩沖區(qū)或報(bào)時(shí)值寄存區(qū)的首地址。程序調(diào)用一個(gè)鍵盤設(shè)置子程序?qū)㈡I入的5位時(shí)間值送入鍵盤緩沖區(qū),然后程序?qū)㈡I盤設(shè)置緩沖區(qū)中的5位LED碼合并為5位BCD碼,送入即使緩沖區(qū)或計(jì)時(shí)值寄存區(qū)。二,鍵盤掃描程序模塊。此模塊的功能是判斷是否有鍵按下,無(wú)鍵按下則循環(huán)等待,有鍵按下則求取鍵號(hào)并將鍵號(hào)送累加器A返回。程序中的去抖延時(shí)和循環(huán)等待延時(shí)都用顯示子程序來(lái)代替,從而保證隨時(shí)刷新顯示。鍵盤掃描程序在前面已有詳細(xì)敘述,在此不再累述。三,顯示程序模塊。將顯示緩沖區(qū)中的5位BCD碼用動(dòng)態(tài)掃描方式掃描顯示,為此必須首先將3字節(jié)計(jì)時(shí)緩沖區(qū)中的分、秒、毫秒,壓縮BCD碼拆分為5字節(jié)。四,拆字程序與合字程序,如前所述,拆字程序的功能是將3字節(jié)計(jì)時(shí)緩沖中的分、秒、毫秒壓縮BCD碼拆分為5字節(jié),BCD碼并刷新顯示緩沖區(qū),合字程序的功能是將鍵盤設(shè)置緩沖區(qū)中的5位BCD碼合并為3位壓縮BCD碼,送入計(jì)時(shí)緩沖區(qū)或計(jì)時(shí)值寄存區(qū)。下面分別對(duì)各程序模塊進(jìn)行介紹。主程序。主程序流程圖如圖9-2所示。LED數(shù)碼管掃描顯示程序模塊(流程圖略)。鍵盤掃描程序模塊鍵值處理程序模塊倒計(jì)時(shí)程序模塊流程圖見圖9-3。主程序:主程序的設(shè)計(jì)一般包括:主程序的起始地址,中斷服務(wù)程序的起始地址,有關(guān)內(nèi)存單元及相關(guān)部件的初始化和一些子程序調(diào)用等等。程序的起始地址MCS-51系列單片機(jī)復(fù)位后,(PC)=0000H,而0003H~002BH分別為個(gè)中斷源的入口地址。所以,編程池應(yīng)在0000H處寫一跳轉(zhuǎn)指令。當(dāng)CPU接受到中斷請(qǐng)求信號(hào)并予以響應(yīng)后,CPU把當(dāng)前的PC內(nèi)容壓入棧中進(jìn)行保護(hù),然后轉(zhuǎn)入響應(yīng)的中斷服務(wù)程序入口處執(zhí)行。一般在響應(yīng)的中斷服務(wù)程序入口處寫一條跳轉(zhuǎn)指令,并以跳轉(zhuǎn)指令的目標(biāo)地址作為中斷服務(wù)程序的其始地址進(jìn)行編程。主程序的初始化內(nèi)容所謂初始化,是對(duì)用到的單片機(jī)內(nèi)部部件或拓展芯片進(jìn)行初始工作狀態(tài)設(shè)定。本次設(shè)計(jì)中,使用了兩個(gè)中斷,即T0、T1。其中:1.T0中斷:采用T0定時(shí)中斷工作方式,完成倒計(jì)時(shí)。2.T1中斷:采用T1定時(shí)中斷工作方式,完成蜂鳴器報(bào)警。對(duì)于時(shí)鐘而言,顯示顯然是另一個(gè)重要環(huán)節(jié)。如前所述,通常有兩種顯示方式:動(dòng)態(tài)顯示和靜態(tài)顯示。方案一:串口擴(kuò)展,LED靜態(tài)顯示。該方案占用資源少,采用串口傳輸實(shí)現(xiàn)靜態(tài)顯示,顯示亮度有保證,但硬件開銷大、電路復(fù)雜、信息刷新速度慢,比較適用于并行口資源較少的場(chǎng)合。方案二:直接利用AT89C51單片機(jī)的P0和P2口,LED動(dòng)態(tài)顯示。該方案硬件連接簡(jiǎn)單,但動(dòng)態(tài)掃描的顯示方式需占用CPU較多時(shí)間,在單片機(jī)沒有太多實(shí)時(shí)測(cè)控任務(wù)的情況下可以采用,本次系統(tǒng)選擇動(dòng)態(tài)顯示方式。4.單片機(jī)倒計(jì)時(shí)控制系統(tǒng)硬件原理圖5.流程圖(1)主程序流程圖:主程序主程序設(shè)置各中斷服務(wù)程序的入口地址相關(guān)寄存器清零設(shè)置數(shù)碼管顯示初始狀態(tài)按鍵掃描顯示按下的數(shù)字進(jìn)行倒計(jì)時(shí)時(shí)間到零否報(bào)警YN(2)倒計(jì)時(shí)器設(shè)計(jì)框圖:主程序主程序數(shù)碼管動(dòng)態(tài)掃描模塊當(dāng)前時(shí)間倒計(jì)時(shí)模塊輸入倒計(jì)時(shí)時(shí)間模塊蜂鳴器報(bào)警模塊(3)倒計(jì)時(shí)器設(shè)計(jì)流程圖:開始倒計(jì)時(shí)開始倒計(jì)時(shí)寄存器清零設(shè)置定時(shí)器0工作方式判斷按鍵次數(shù)N啟動(dòng)定時(shí)器0關(guān)閉定時(shí)器01次2次3次等待中斷T1中斷發(fā)聲提示達(dá)到最大值(4)按鍵消抖框圖:開始開始有鍵閉合?調(diào)用延時(shí)字程序Y有鍵閉合?確定閉合的YNN6、調(diào)試問題與解決方法完成了硬件的設(shè)計(jì)、制作和軟件編程后,要使系統(tǒng)能夠按設(shè)計(jì)意圖正常運(yùn)作,必須進(jìn)行系統(tǒng)調(diào)試。系統(tǒng)調(diào)試包括軟件調(diào)試和硬件調(diào)試。不過,作為一個(gè)小計(jì)算機(jī)系統(tǒng),其運(yùn)行是軟硬件相結(jié)合的,因此,軟硬件的調(diào)試也是不可能絕對(duì)分開的,硬件的調(diào)試常常需要利用調(diào)試軟件,軟件的調(diào)試也可能需要對(duì)硬件的測(cè)試和控制來(lái)進(jìn)行。(1)硬件調(diào)試。硬件調(diào)試的主要任務(wù)是排除硬件故障,其中包括設(shè)計(jì)錯(cuò)誤和工藝性故障。1)脫機(jī)檢查。用萬(wàn)用表逐步按照電路原理圖檢查印制電路中所有器件的各引腳,尤其是電源的連接是否正確:檢查數(shù)據(jù)總線、地址總線和控制總線是否有短路等故障,順序是否正確;檢查各開關(guān)按鍵是否能正常開關(guān),是否連接正常;各限流電阻是否短路等內(nèi)容。為了保護(hù)芯片,應(yīng)先對(duì)各IC電位進(jìn)行檢查,確定其無(wú)誤后再插入芯片檢查。2)聯(lián)機(jī)調(diào)試。暫時(shí)拔掉89C51芯片,將仿真器的40仿真插入89C51的芯片插座進(jìn)行調(diào)試,檢驗(yàn)鍵盤/顯示接口電路是否滿足要求設(shè)計(jì)??梢酝ㄟ^一些簡(jiǎn)單的測(cè)軟件來(lái)查看接口工作是否正常。例如,我們可以設(shè)計(jì)一個(gè)軟件,使89C51的P1、P2口輸出55H或AAH,同時(shí)讀P3口,運(yùn)行后用萬(wàn)用表檢查相應(yīng)端口電平是否一高一低,在仿真器中檢查讀入的P3口8位是否為1,如果正常則說明89C51正常工作。還可以設(shè)計(jì)一個(gè)使所有LED全顯示“8.”的靜態(tài)顯示程序來(lái)檢驗(yàn)LED的好壞。如果運(yùn)行測(cè)試結(jié)果與預(yù)期不符,很容易根據(jù)故障現(xiàn)象判斷故障原因并采取針對(duì)性措施排除故障。(2)軟件調(diào)試。軟件調(diào)試的任務(wù)是利用開發(fā)工具進(jìn)行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序錯(cuò)誤,同時(shí)也能發(fā)現(xiàn)硬件故障。程序的調(diào)試應(yīng)一個(gè)模塊一個(gè)模塊地進(jìn)行,首先單獨(dú)調(diào)試各功能子程序,檢驗(yàn)程序是否能夠?qū)崿F(xiàn)預(yù)期的功能,接口電路的控制是否正常等;最后逐步將各子程序連接起來(lái)進(jìn)行聯(lián)調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正常傳遞參數(shù),特別要注意各子程序的現(xiàn)場(chǎng)保護(hù)與恢復(fù)。調(diào)試的基本步驟如下:1)用仿真器修改顯示緩沖區(qū)內(nèi)容,屏蔽拆字程序,調(diào)試動(dòng)態(tài)掃描顯示功能。例如將DISP0~DISP4單元置為“01234”,應(yīng)能在LED上從左到右顯示“01234”。若顯示不正確,可在顯示子程序相應(yīng)設(shè)置斷點(diǎn)調(diào)試檢查,然后用仿真器修改計(jì)時(shí)緩沖區(qū)內(nèi)容,調(diào)試顯示模塊,例如,將HOUR、MIN、SEC單元置為“01235”檢查是否能正確顯示“01.23.5”,若顯示不正確,應(yīng)在顯示子程序相應(yīng)位置設(shè)置斷點(diǎn),反復(fù)調(diào)試檢驗(yàn)直至完全正確。2)運(yùn)行主程序調(diào)試時(shí)模塊,不按下任何鍵,檢查是否從由60.00.0開始正確計(jì)時(shí),若不能正確計(jì)時(shí)則應(yīng)在定時(shí)器中斷服務(wù)子程序中設(shè)置斷點(diǎn),檢查HOUR、MIN、SEC、MSEC單元是否隨斷點(diǎn)運(yùn)動(dòng)而變化。然后屏蔽緩沖區(qū)初始化部分,用仿真器修改計(jì)時(shí)緩沖區(qū)內(nèi)容為40:33.5,運(yùn)行主程序,檢驗(yàn)?zāi)芊裾_進(jìn)位。3)調(diào)試鍵盤模塊掃描,先用延時(shí)10ms子程序代替顯示子程序延時(shí)消抖,在求取鍵號(hào)后設(shè)置斷點(diǎn),中斷后觀察A累加器中的鍵號(hào)是否正確,然后恢復(fù)用顯示子程序延時(shí)消抖,檢驗(yàn)與顯示模塊能否正常連接。4)調(diào)試時(shí)間設(shè)置/鬧鐘定時(shí)模塊TIMSEF。首先屏蔽中斷子程序,單獨(dú)調(diào)試鍵盤設(shè)置模塊CKECKEY,觀察顯示緩沖區(qū)DISP0~DISP4單元的內(nèi)容是否隨鍵入的鍵號(hào)改變,以及鍵號(hào)能否在LED上顯示。然后屏蔽CKECKEY子程序,分別將R1設(shè)置為時(shí)間緩沖區(qū)和鬧鐘值寄存區(qū)的首地址,修改顯示緩沖區(qū)內(nèi)容,程序運(yùn)行后查看時(shí)間設(shè)置緩沖區(qū)HOUR、MIN、SEC單元和鬧鐘值寄存區(qū)AHOUR、AMIN、ASEC單元內(nèi)容是否正確。最后聯(lián)調(diào)TIMSET模塊。5)運(yùn)行主程序聯(lián)調(diào),檢查能否用鍵盤修改當(dāng)前時(shí)間以及設(shè)置鬧鐘,能否正確計(jì)時(shí)、啟閉、停鬧。(3)脫機(jī)運(yùn)行。軟、硬件調(diào)試成功之后,可以將程序固化到89C51的FLASHROM中,插入89C51芯片,接上電源脫機(jī)運(yùn)行。既然軟硬件讀都可以調(diào)試成功,脫機(jī)運(yùn)行似乎肯定成功,然而事實(shí)往往并非如此,仍有可能出現(xiàn)以下故障;1)系統(tǒng)不工作。其原因主要有晶振不起振,或是EA腳沒有接高電平(接地或懸空)等。2)系統(tǒng)工作時(shí)好時(shí)壞。這主要是由于干擾引起的。由于本系統(tǒng)沒有傳感輸入通道和控制輸出通道,干擾源相對(duì)較少且簡(jiǎn)單,因此,在電源、總線處對(duì)地接濾波電容一般可以解決問題。對(duì)本節(jié)介紹的單片機(jī)報(bào)時(shí)控制系統(tǒng),需要做以下幾點(diǎn)說明:(1)軟件陷阱。為是跳飛的程序重新返回主程序區(qū),恢復(fù)程序的正常運(yùn)行,在EPROM的未編程區(qū)加入若干個(gè)如下的程序段:NOPNOPLJMPNEXTTNOP輸出驅(qū)動(dòng)加光電隔離元件,如果是驅(qū)動(dòng)高壓大電流,繼電器選用過零觸發(fā)的固態(tài)繼電器,繼電器安裝部位應(yīng)盡量遠(yuǎn)離單片機(jī)并加裝良好的電磁屏蔽,減少對(duì)單片機(jī)干擾。7、仿真圖8、程序模塊;以下8個(gè)存儲(chǔ)單元分別存放8位數(shù)碼管的段碼LED_BIT_1EQU 30HLED_BIT_2EQU 31HLED_BIT_3EQU 32HLED_BIT_4EQU 33HLED_BIT_5EQU 34HLED_BIT_6EQU 35HLED_BIT_7EQU 36HT_COUNTEQU 38HKEY_CNTEQU 39HLINE EQU 3AHROW EQU 3BHVAL EQU 3CHTCOUNT EQU 40HKCOUNT EQU 41HKEY BIT P3.3;************************************** ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG1BH LJMPINT_T1START: MOV T_COUNT,#00H ;初始化 MOV KEY_CNT,#00H MOV LINE,#00H MOV ROW,#00H MOV VAL,#00H MOV LED_BIT_1,#3FH MOV LED_BIT_2,#3FH MOV LED_BIT_3,#40H MOV LED_BIT_4,#3FH MOV LED_BIT_5,#3FH MOV LED_BIT_6,#80H MOV LED_BIT_7,#3FH MOV DPTR,#TABLEA0: LCALL DISP;**************************************;按鍵掃描LSCAN: MOV P3,#0F0H ;行碼掃描 L1: JNB P3.0,L2 LCALL DELAY JNB P3.0,L2 MOV LINE,#00H LJMP RSCAN L2: JNB P3.1,L3 LCALL DELAY JNB P3.1,L3 MOV LINE,#01H LJMP RSCAN L3: JNB P3.2,L4 LCALL DELAY JNB P3.2,L4 MOV LINE,#02HRSCAN: MOV P3,#0FH ;列碼掃描 C1: JNB P3.4,C2 MOV ROW,#00H LJMP CALCU C2: JNB P3.5,C3 MOV ROW,#01H LJMP CALCU C3: JNB P3.6,C4 MOV ROW,#02H LJMP CALCU C4: JNB P3.7,C1 MOV ROW,#03H ;***********************************************CALCU: INC KEY_CNT ;統(tǒng)計(jì)按鍵次數(shù) MOV A,KEY_CNT CJNE A,#9,K1 ;如果按鍵3次,發(fā)聲提示 MOV TMOD,#01H MOV TH1,#(65536-700)/256 MOV TL1,#(65536-700)MOD 256 MOV IE,#82H SETB TR1 W10:MOV A,P3 ;等待按鍵抬起 CJNE A,#0FH,W11 MOV P0,#00H CLR TR0 LJMP START W11:MOV A,P3 CJNE A,#0F0H,W12 MOV P0,#00H CLR TR0 LJMP START W12:SJMP W10;**************************************************;第1次按鍵,清除已顯示的0,顯示按下的數(shù)字 K1: CJNE A,#1,K2 MOV A,LINE MOV B,#04H MUL AB ADD A,ROW MOV VAL,A MOVC A,@A+DPTR MOV LED_BIT_1,ACJNEP3.3,#1,AA1DISP1: LCALL DISP W20:MOV A,P3 ;等待按鍵抬起 CJNE A,#0FH,W21 LJMP A0 W21:MOV A,P3 CJNE A,#0F0H,W22 LJMP A0 W22:SJMP DISP1 ;***************************************************;第2次按鍵,顯示按下的數(shù)字 K2: MOV A,LINE MOV B,#04H MUL AB ADD A,ROW MOV VAL,A MOVC A,@A+DPTR MOV LED_BIT_2,A LCALLAA1 DISP2: LCALL DISP W30:MOV A,P3 ;等待按鍵抬起 CJNE A,#0FH,W31 LJMP A0 W31:MOV A,P3 CJNE A,#0F0H,W32 LJMP A0 W32:SJMP DISP2 ;**************************************************;開始倒計(jì)數(shù)AA1:MOV TCOUNT,#00H MOV KCOUNT,#00H MOV TMOD,#01H ;定時(shí)器0工作在方式1 MOV TL0,#(65536-50000)/256 MOV TH0,#(65536-50000)MOD 256 K1: JB KEY,$ ;等待按鍵 LCALL DELAY JB KEY,$ MOV A,KCOUNT CJNE A,#00H,K2 ;判斷按鍵次數(shù) SETB TR0 ;第1次按鍵,啟動(dòng)定時(shí)器 MOV IE,#82H JNB KEY,$ INC KCOUNT ;按鍵抬起,按鍵次數(shù)值加1 LJMP K1 K2: CJNE A,#01H,K3 CLR TR0 ;第2次按鍵,關(guān)閉定時(shí)器 MOV IE,#00H JNB KEY,$ INC KCOUNT ;按鍵抬起,按鍵次數(shù)值加1 LJMP K1 K3: CJNE A,#02H,K1 ;第3次按鍵,返回初始狀態(tài) JNB KEY,$ LJMP AA1INT_T0:MOV TH0,#(65536-50000)/256 MOV TL0,#(65536-50000)MOD256 INC TCOUNT MOV A,TCOUNT CJNE A,#2,A1 ;是否計(jì)夠0.1秒 MOV A,LED_BIT_7 INC A MOVLED_BIT_7,A CJNEA,#9,DISP MOVLED_BIT_7,#00H MOVA,LED_BIT_5 DECA MOVLED_BIT_5,A CJNEA,#0,DISP MOVLED_BIT_5,#00H MOVA,LED_BIT_4 DECA MOVLED_BIT_4,A CJNEA,#0,DISP MOVLED_BIT_4,#00H MOVA,LED_BIT_2 DECA MOVLED_BIT_2,A CJNEA,#0,DISP MOVLED_BIT_2,#00H MOVA,LED_BIT_1 DECA MOVLED_BIT_1,A CJNEA,#0,DISP MOV TMOD,#01H A1:RETI;****************************************;定時(shí)器1中斷服務(wù)程序,驅(qū)動(dòng)揚(yáng)聲器發(fā)聲INT_T1:MOV TH1,#(65536-700)/256 MOV TL1,#(65536-700)MOD 256 CPL P1.0 RETI;****************************************DISP: CLR P2.6 MOV P0,LED_BIT_7 LCALL DELAY SETB P2.6 CLR P2.5 MOV P0,LED_BIT_6 LCALL DELAY SETB P2.5 CLR P2.4 MOV P0,LED_BIT_5 LCALL DELAY SETB P2.4 CLR P2.3 MOV P0,LED_BIT_4 LCALL DELAY SETB P2.3 CLR P2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030網(wǎng)站運(yùn)營(yíng)產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 2025-2030紅外收發(fā)器行業(yè)市場(chǎng)深度分析及發(fā)展策略研究報(bào)告
- 2025-2030稻谷項(xiàng)目可行性研究報(bào)告
- 2025-2030租賃行業(yè)市場(chǎng)深度調(diào)研及前景趨勢(shì)與投資研究報(bào)告
- 2025-2030社區(qū)連鎖行業(yè)市場(chǎng)發(fā)展分析及投資發(fā)展戰(zhàn)略前景預(yù)測(cè)報(bào)告
- 2025-2030硅錳合金產(chǎn)業(yè)政府戰(zhàn)略管理與區(qū)域發(fā)展戰(zhàn)略研究咨詢報(bào)告
- 2025-2030礦山工程行業(yè)市場(chǎng)深度調(diào)研及前景趨勢(shì)與投資研究報(bào)告
- 2025-2030男女性護(hù)理液市場(chǎng)發(fā)展現(xiàn)狀調(diào)查及供需格局分析預(yù)測(cè)研究報(bào)告
- 2025-2030電熨斗行業(yè)市場(chǎng)風(fēng)險(xiǎn)投資業(yè)發(fā)展分析及運(yùn)作模式與投資融資策略研究報(bào)告
- 2025-2030電壓力鍋行業(yè)風(fēng)險(xiǎn)投資發(fā)展分析及投資融資策略研究報(bào)告
- 心理咨詢師專業(yè)技能培訓(xùn)課件
- 超星爾雅學(xué)習(xí)通《工程倫理(浙江大學(xué))》2025章節(jié)測(cè)試答案
- 2025年招聘社工面試題型及答案
- 2025年駕駛?cè)y(cè)試題及答案
- 中醫(yī)情志調(diào)適在兒童的實(shí)踐與應(yīng)用
- 農(nóng)產(chǎn)品電商農(nóng)村電商供應(yīng)鏈?zhǔn)謨?cè)
- 兒童生長(zhǎng)發(fā)育遲緩
- 肯氏分類課件
- 2025年河南工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案
- 2《再別康橋》 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 2025年國(guó)家公務(wù)員考試公共基礎(chǔ)知識(shí)全真模擬試卷及答案(共七套)
評(píng)論
0/150
提交評(píng)論