電子定時器的畢業設計論文_第1頁
電子定時器的畢業設計論文_第2頁
電子定時器的畢業設計論文_第3頁
電子定時器的畢業設計論文_第4頁
電子定時器的畢業設計論文_第5頁
已閱讀5頁,還剩43頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

電子定時器的設計學生姓名:xxxx學部:xxxx班級:xxxxxx3專業:電xxxxx程指導教師:xxxx北京城市學院2008年12月日電子定時器的設計學生:xxxx班級:xxxxx3學號:0xxx學部:xxx專業:xx指導老師:xxx指導老師職稱:xxxx工作單位:xxxx畢業設計(論文)完成時間自2008年12月至2009年05月【摘要】隨著時代的進步,電子行業的發展,定時器的應用也越來越廣泛。但傳統的定時器都是使用發條驅動式、電機傳動式或電鐘式等機械定時器。電子定時器相對產痛定時器來說,體積小、重量輕、造價低、精度高、壽命長、而且安全可靠、調整方便、適于頻繁使用。本設計采用AT89C2051單片機為核心,闡述了系統工作原理,給出了軟件流程。該電子定時器滿足對電器的電源進行控制,同時要方便用戶對電子定時器的操作。最大時間能達到30h,切最大精度可以到分鐘關鍵詞:定時器;單片機;AT89C2051;動態掃描;繼電器【Abstract】Progress,developmentofelectronindustry,thetimerapplicationarealsomoreandmorebroadwiththetimes.But,thetraditiontimerallistousespringtodrivemachinerytimerssuchasstyle,electricmotordrivestyleorelectricclockstyle.Cometheelectrontimertosayvolumeissmall,weightislight,costofconstructionislow,accuracyishigh,life-spanislong,andsafetyisreliable,adjusttobesuitableforbeingfrequentlyputintouseconvenientlyrelativelypainfultimerofproduct.HavedesignedthatthemonolithicmachineiscoreoriginallyadoptAT89C2051,havesetforthsystemoperatingprinciple,havegivenasoftwareouttechnologicalprocess.Thepowersourcegoalongbeingtheelectrontimer'sturntobesatisfiedwithelectricalequipmentiscontrolled,iswantstheconvenienceofcustomersoperationtoelectrontimeratthesametime.Maximaltimecanreach30hs,byallmeansmaximalaccuracycanarriveataminuteKeywords:Timer;Monolithicmachine;AT89C2051;Developmentisscanned;Relay目錄1引言 71.1課題的來源和意義 71.2電子定時器的應用 81.3電子定時器的發展前景 8251單片機內部結構及計數原理 82.151單片機內部機構 82.2計數原理 113電子定時器的設計 193.1總體的設計要求 193.2系統硬件電路設計 193.2.1芯片的選擇 193.2.2交流控制接口電路 19顯示電路 193.2.4報警電路 193.3系統程序的設計 203.3.1主程序流程圖 204重要元件及重要電路 214.1AT89C2051的內部結構及功能和引腳說明 214.1.1AT89C2051主要性能 224.1.2AT89C2051的內部結構 224.1.3AT89C2051的引腳說明 244.2繼電器 26、電磁繼電器的工作原理和特性 26、繼電器主要產品技術參數 26、繼電器的電符號和觸點形式 274.3數碼管 28、數碼管的分類 28、數碼管的驅動方式 285軟件設計 295.1偽定義 295.2中斷入口 305.3主程序 315.4倒計時程序 345.5BCD子程序(加1或減1) 355.6加1程序 365.7調時快進程序 375.8功能菜單程序 375.9到點工作程序 405.10響鈴程序 425.11顯示程序 435.12無顯示(滅燈)程序 455.13延時程序 455.14ERR(出錯處理)程序 47結論 48參考文獻 49致謝 50附錄 511引言我們在日常生活中,經常碰到一些需要定時的事情,例如:印相或放大照片,需要定在零點幾秒的時間,洗衣機洗滌衣物需要定在幾分鐘到幾十分鐘的時間,電風扇需要定在數十分鐘的時間。完成這種定時的定時器有多種多樣,在家用電器中采用機械定時器就是根據一般上弦鐘表原理設計的,這種定時器雖然結構簡單,成本低,維修也比較方便,但是它的觸頭頻繁接觸和斷開,大大的縮減了它的使用壽命,也不利于進一步全自動化。在電子技術突飛猛進的今天,電子定時器一定會逐步取而代之,這是不言而喻的。本文是基于51系列單片機設計的一種用于控制家用電器的設計方案。1.1課題的來源和意義本課題是通過導師篩選提出的,電子設計課題不一定很大,只要通過親手做一遍全過程,完成一個產品制作,收獲是很大的。本課題的意義在于通過設計和制作本課題把在學校學習到的知識融會貫通并應用到實際當中。做到學有所成,學有所用。并且希望通過本設計為節能減排做出貢獻。1.2電子定時器的應用電子定時器在家用電器中經常用于延時自動關機、定時。延時自動關機可用于:收音機、電視機、錄音機、催眠器、門燈、路燈、汽車頭燈、轉彎燈以及其他電器的延時斷電及延時自停電源等。定時可用于:照相定時曝光、定時閃光、定時放大、定時調速、定時烘箱、冰箱門開定時報警、水位定時報警、延時催眠器、延時電鈴、延時電子鎖、觸摸定時開關等。例如:空調中的定時器,在工作一段時間之后便能自動切斷電源停止工作。夏季夜間使用,入睡前先頂好時間,等睡熟后到了預定時間,空調自動關機。方便節能。定時器除了應用于家用電器外,還廣泛地用于工業農業生產和服務設施,甚至軍事等。1.3電子定時器的發展前景傳統的定時器絕大多數都是發條驅動式、電機傳動式或電鐘式等機械定時器,部分電子器械中也有試用時間繼電器的。相對于傳統的定時器,電子定時器的體積小、重量輕、造價低、精度高、壽命長、而且安全可靠、調整方便、適于頻繁使用。所以電子定時器的發展必定大有前途。同時隨著現代電子技術的發展,電子定時器也在不斷的進步,朝向著更多用途、更高精度、更小體積發展著。例如:一個可編程電子定時器,它可以設置20組開、關電源設置,可以當時鐘使用,還也可以按星期組合讓它在一周內的任意一天或幾天按設置程序工作。而且它只有長12.5cm×寬5.5cm×厚5cm大小。且它的功耗特別小只有3W。可以說是小巧玲瓏,節能省電。251單片機內部結構及計數原理2.151單片機內部機構51單片機內部有一個8位的CPU,同時CPU內部包含了運算器,控制器及若干寄存器。從上圖中我們可以看到,在虛線框內的就是CPU的內部結構了,8位的MCS-51單片機的CPU內部有數術邏輯單元ALU(ArithmeticLogicUnit)、累加器A(8位)、寄存器B(8位)、程序狀態字PSW(8位)、程序計數器PC(有時也稱為指令指針,即IP,16位)、地址寄存器AR(16位)、數據寄存器DR(8位)、指令寄存器IR(8位)、指令譯碼器ID、控制器等部件組成。1、運算器(ALU)的主要功能A)算術和邏輯運算,可對半字節(一個字節是8位,半個字節就是4位)和單字節數據進行操作。B)加、減、乘、除、加1、減1、比較等算術運算。C)與、或、異或、求補、循環等邏輯運算。D)位處理功能(即布爾處理器)。由于ALU內部沒有寄存器,參加運算的操作數,必須放在累加器A中。累加器A也用于存放運算結果。例如:執行指令ADDA,B

執行這條指令時,累加器A中的內容通過輸入口In_1輸入ALU,寄存器B通過內部數據總線經輸入口In_2輸入ALU,A+B的結果通過ALU的輸出口Out、內部數據總線,送回到累加器A。2、程序計數器PCPC的作用是用來存放將要執行的指令地址,共16位,可對64KROM直接尋址,PC低8位經P0口輸出,高8位經P2口輸出。也就是說,程序執行到什么地方,程序計數器PC就指到哪里,它始終是跟躥著程序的執行。我們知道,用戶程序是存放在內部的ROM中的,我們要執行程序就要從ROM中一個個字節的讀出來,然后到CPU中去執行,那么ROM具體執行到哪一條呢?這就需要我們的程序計數器PC來指示。程序計數器PC具有自動加1的功能,即從存儲器中讀出一個字節的指令碼后,PC自動加1(指向下一個存儲單元)。3、指令寄存器IR指令寄存器的作用就是用來存放即將執行的指令代碼。在這里我們先簡單的了解下CPU執行指令的過程,首先由程序存儲器(ROM)中讀取指令代碼送入到指令寄存器,經譯碼器譯碼后再由定時與控制電路發出相應的控制信號,從而完成指令的功能。關于指令在單片機內部的執行過程,我們在后面將會以另一節課來進行詳細的講解。4、指令譯碼器ID用于對送入指令寄存器中的指令進行譯碼,所謂譯碼就是把指令轉變成執行此指令所需要的電信號。當指令送入譯碼器后,由譯碼器對該指令進行譯碼,根據譯碼器輸出的信號,CPU控制電路定時地產生執行該指令所需的各種控制信號,使單片機正確的執行程序所需要的各種操作。5、地址寄存器AR(16位)AR的作用是用來存放將要尋址的外部存儲器單元的地址信息,指令碼所在存儲單元的地址編碼,由程序計數器PC產生,而指令中操作數所在的存儲單元地址碼,由指令的操作數給定。從上圖中我們可以看到,地址寄存器AR通過地址總線AB與外部存儲器相連。6、數據寄存器DR用于存放寫入外部存儲器或I/O端口的數據信息。可見,數據寄存器對輸出數據具有鎖存功能。數據寄存器與外部數據總線DB直接相連。7、程序狀態字PSW

用于記錄運算過程中的狀態,如是否溢出、進位等。例如,累加器A的內容83H,執行:ADDA,#8AH

;累加器A與立即數8AH相加,并把結果存放在A中。指令后,將產生和的結果為[1]0DH,而累加器A只有8位,只能存放低8位,即0DH,元法存放結果中的最高位B8。為些,在CPU內設置一個進位標志位C,當執行加法運算出現進位時,進位標志位C為1。8、時序部件由時鐘電路和脈沖分配器組成,用于產生微操作控制部件所需的定時脈沖信號2.2計數原理80C51單片機內部設有兩個16位的可編程定時器/計數器。可編程的意思是指其功能(如工作方式、定時時間、量程、啟動方式等)均可由指令來確定和改變。在定時器/計數器中除了有兩個16位的計數器之外,還有兩個特殊功能寄存器(控制寄存器和方式寄存器)。定時器/計數器的結構:從上面定時器/計數器的結構圖中我們可以看出,16位的定時/計數器分別由兩個8位專用寄存器組成,即:T0由TH0和TL0構成;T1由TH1和TL1構成。其訪問地址依次為8AH-8DH。每個寄存器均可單獨訪問。這些寄存器是用于存放定時或計數初值的。此外,其內部還有一個8位的定時器方式寄存器TMOD和一個8位的定時控制寄存器TCON。這些寄存器之間是通過內部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式;TCON主要是用于控制定時器的啟動停止,此外TCON還可以保存T0、T1的溢出和中斷標志。當定時器工作在計數方式時,外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。定時計數器的原理:16位的定時器/計數器實質上就是一個加1計數器,其控制電路受軟件控制、切換。當定時器/計數器為定時工作方式時,計數器的加1信號由振蕩器的12分頻信號產生,即每過一個機器周期,計數器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統的振蕩頻率有關。因一個機器周期等于12個振蕩周期,所以計數頻率fcount=1/12osc。如果晶振為12MHz,則計數周期為:T=1/(12×106)Hz×1/12=1μs這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當選擇定時器的長度(如8位、13位、16位等)。

當定時器/計數器為計數工作方式時,通過引腳T0和T1對外部信號計數,外部脈沖的下降沿將觸發計數。計數器在每個機器周期的S5P2期間采樣引腳輸入電平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數器加1。此后的機器周期S3P1期間,新的計數值裝入計數器。所以檢測一個由1至0的跳變需要兩個機器周期,故外部事年的最高計數頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數頻率為0.5MHz。雖然對外部輸入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數脈沖的高電平與低電平保持時間均需在一個機器周期以上。

當CPU用軟件給定時器設置了某種工作方式之后,定時器就會按設定的工作方式獨立運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU當前操作。CPU也可以重新設置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。

綜上所述,我們已知定時器/計數器是一種可編程部件,所以在定時器/計數器開始工作之前,CPU必須將一些命令(稱為控制字)寫入定時/計數器。將控制字寫入定時/計數器的過程叫定時器/計數器初始化。在初始化過程中,要將工作方式控制字寫入方式寄存器,工作狀態字(或相關位)寫入控制寄存器,賦定時/計數初值。下面我們就提出的控制字的格式及各位的主要功能與大家詳細的講解。控制寄存器定時器/計數器T0和T1有2個控制寄存器-TMOD和TCON,它們分別用來設置各個定時器/計數器的工作方式,選擇定時或計數功能,控制啟動運行,以及作為運行狀態的標志等。其中,TCON寄存器中另有4位用于中斷系統。定時器/計數器方式寄存器TMOD:

定時器方式控制寄存器TMOD在特殊功能寄存器中,字節地址為89H,無位地址。TMOD的格式如下圖所示。由圖可見,TMOD的高4位用于T1,低4使用于T0,4種符號的含義如下:

GATE:門控制位。GATE和軟件控制位TR、外部引腳信號INT的狀態,共同控制定時器/計數器的打開或關閉。C/T:定時器/計數器選擇位。C/T=1,為計數器方式;C/T=0,為定時器方式。

M1M0:工作方式選擇位,定時器/計數器的4種工作方式由M1M0設定。定時器/計數器方式控制寄存器TMOD不能進行位尋址,只能用字節傳送指令設置定時器工作方式,低半字節定義為定時器0,高半字節定義為定時器1。復位時,TMOD所有位均為0。定時器/計數器控制寄存器TCON:TCON在特殊功能寄存器中,字節地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進行位操作。TCON的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時器/計數器;IEl,ITl,IE0和IT0位用于中斷系統。各位定義如下:TF1:定時器1溢出標志位。當字時器1計滿溢出時,由硬件使TF1置“1”,并且申請中斷。進入中斷服務程序后,由硬件自動清“0”,在查詢方式下用軟件清“0”。TR1:定時器1運行控制位。由軟件清“0”關閉定時器1。當GATE=1,且INT1為高電平時,TR1置“1”啟動定時器1;當GATE=0,TR1置“1”啟動定時器1。TF0:定時器0溢出標志。其功能及操作情況同TF1。TR0:定時器0運行控制位。其功能及操作情況同TR1。IE1:外部中斷1請求標志。IT1:外部中斷1觸發方式選擇位。IE0:外部中斷0請求標志。IT0:外部中斷0觸發方式選擇位。TCON中低4位與中斷有關,我們將在下節課講中斷時再給予講解。由于TCON是可以位尋址的,因而如果只清溢出或啟動定時器工作,可以用位操作命令。例如:執行“CLRTF0”后則清定時器0的溢出;執行“SETBTR1”后可啟動定時器1開始工作(當然前面還要設置方式定)。定時器/計數器的初始化:由于定時器/計數器的功能是由軟件編程確定的,所以一般在使用定時/計數器前都要對其進行初始化,使其按設定的功能工作。初始貨的步驟一般如下:1、確定工作方式(即對TMOD賦值);2、預置定時或計數的初值(可直接將初值寫入TH0、TL0或TH1、TL1);3、根據需要開放定時器/計數器的中斷(直接對IE位賦值);4、啟動定時器/計數器(若已規定用軟件啟動,則可把TR0或TR1置“1”;若已規定由外中斷引腳電平啟動,則需給外引腳步加啟動電平。當實現了啟動要求后,定時器即按規定的工作方式和初值開始計數或定時)。因為在不同工作方式下計數器位數不同,因而最大計數值也不同。現假設最大計數值為M,那么各方式下的最大值M值如下:方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:定時器0分成兩個8位計數器,所以兩個M均為256。因為定時器/計數器是作“加1”計數,并在計數滿溢出時產生中斷,因此初值X可以這樣計算:X=M-計數值定時器/計數器的四種工作方式:

定T0或T1無論用作定時器或計數器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀態。下面以T1為例,分述各種工作方式的特點和用法。工作方式0:13位方式由TL1的低5位和TH1的8位構成13位計數器(TL1的高3位無效)。工作方式0的結構見下圖:為定時/計數選擇:C/T=0,T1為定時器,定時信號為振蕩周期12分頻后的脈沖;C/T=l,T1為計數器,計數信號來自引腳T1的外部信號。定時器T1能否啟動工作,還受到了R1、GATE和引腳信號INT1的控制。由圖中的邏輯電路可知,當GATE=0時,只要TR1=1就可打開控制門,使定時器工作;當GATE=1時,只有TR1=1且INT1=1,才可打開控制門。GATE,TR1,C/T的狀態選擇由定時器的控制寄存器TMOD,TCON中相應位狀態確定,INT1則是外部引腳上的信號。在一般的應用中,通常使GATE=0,從而由TRl的狀態控制Tl的開閉:TRl=1,打開T1;TRl=0,關閉T1。在特殊的應用場合,例如利用定時器測量接于INT1引腳上的外部脈沖高電平的寬度時,可使GATE=1,TRl=1。當外部脈沖出現上升沿,亦即INT1由0變1電平時,啟動T1定時,測量開始;一旦外部脈沖出現下降沿,亦即INT1由l變O時就關閉了T1。定時器啟動后,定時或計數脈沖加到TLl的低5位,從預先設置的初值(時間常數)開始不斷增1。TL1計滿后,向THl進位。當TL1和THl都計滿之后,置位T1的定時器回零標志TFl,以此表明定時時間或計數次數已到,以供查詢或在打開中斷的條件下,可向CPU請求中斷。如需進一步定時/計數,需用指令重置時間常數。方式0是13位計數結構的工作方式,其計數器由TH0全部8位和TL0的低5位構成。當TL0的低5位計數溢出時,向TH0進位,而全部13位計數溢出時,則向計數溢出標志位TF0進位。⑵TMOD寄存器初始化為把定時器/計數器1設定為方式0,則M1M0=00;為實現定時功能,應使C/T=0;為實現定時器/計數器1的運行控制,則GATE=0。定時器/計數器0不用,有關位設定為0。因此TMOD寄存器應初始化為00H。⑶由定時器控制寄存器TCON中的TR1位控制定時的啟動和停止TR1=1啟動,TR1=0停止。工作方式1:1是16位計數結構的工作方式,計數器由TH0全部8位和TL0全部8位構成。與工作方式0基本相同,區別僅在于工作方式1的計數器TL1和TH1組成16位計數器,從而比工作方式0有更寬的定時/計數范圍。工作方式2

8位自動裝入時間常數方式。由TLl構成8位計數器,THl僅用來存放時間常數。啟動T1前,TLl和THl裝入相同的時間常數,當TL1計滿后,除定時器回零標志TFl置位,具有向CPU請求中斷的條件外,THl中的時間常數還會自動地裝入TLl,并重新開始定時或計數。所以,工作方式2是一種自動裝入時間常數的8位計數器方式。由于這種方式不需要指令重裝時間常數,因而操作方便,在允許的條件下,應盡量使用這種工作方式。當然,這種方式的定時/計數范圍要小于方式0和方式1。工作方式2的結構見下圖.當計數溢出后,不是像前兩種工作方式那樣通過軟件方法,而是由預置寄存器TH以硬件方法自動給計數器TL重新加載。變軟件加載為硬件加載。

初始化時,8位計數初值同時裝入TL0和TH0中。當TL0計數溢出時,置位TF0,同時把保存在預置寄存器TH0中的計數初值自動加載TL0,然后TL0重新計數。如此重復不止。這不但省去了用戶程序中的重裝指令,而且也有利于提高定時精度。但這種工作方式下是8位計數結構,計數值有限,最大只能到255。這種自動重新加載工作方式非常適用于循環定時或循環計數應用,例如用于產生固定脈寬的脈沖,此外還可以作串行數據通信的波特率發送器使用。工作方式32個8位方式。工作方式3只適用于定時器0。如果使定時器1為工作方式3,則定時器1將處于關閉狀態。當T0為工作方式3時,THo和TL0分成2個獨立的8位計數器。其中,TL0既可用作定時器,又可用作計數器,并使用原T0的所有控制位及其定時器回零標志和中斷源。TH0只能用作定時器,并使用T1的控制位TRl、回零標志TFl和中斷源,見下圖。通常情況下,T0不運行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時,T1往往用作串行口波特率發生器(見1.4),TH0用作定時器,TL0作為定時器或計數器。所以,方式3是為了使單片機有1個獨立的定時器/計數器、1個定時器以及1個串行口波特率發生器的應用場合而特地提供的。這時,可把定時器l用于工作方式2,把定時器0用于工作方式3。下才可能使用。這時,T1往往用作串行口波特率發生器,TH0用作定時器,TL0作為定時器或計數器。所以,方式3是為了使單片機有1個獨立的定時器/計數器、1個定時器以及1個串行口波特率發生器的應用場合而特地提供的。這時,可把定時器l用于工作方式2,把定時器0用于工作方式3。3電子定時器的設計3.1總體的設計要求本文所涉及的電子定時器要求能定時給電器供電或斷電,最大時間可以長達30h,操作使用方便,采用AT89C2051單片機控制,4位共陽數碼管顯示時間,繼電器做電器電源輸出控制。3.2系統硬件電路設計3.2.1芯片的選擇 硬件電路要實現對交流大電流電源的控制、定時時間的設定顯示和到點提醒等功能。若采用40腳的單片機有利于設計,但會增大電路板的體積。本設計采用ATMEL公司的AT89C2051單片機,芯片位20腳,體積小,工作電壓范圍寬(2.7V~6V)。性價比比較高。3.2.2交流控制接口電路交流接口電路可以選擇繼電器控制,也可采用可控硅控制等。本設計采用的是前一種——繼電器控制。顯示電路顯示電路采用4個共陽極LED數碼管。為了在定時達到分(鐘)的時候能顯示出時鐘在計時,兩個數碼管之間增加一個發光二極管,以其閃爍來代表秒走動;為了使硬件電路簡單,采用單片機直接驅動LED數碼管(AT89C2051輸出口能吸收20mA電流),用動態掃描法實現LED顯示。3.2.4報警電路報警電路采用普通的5V成品蜂鳴器。3.3系統程序的設計程序采用模塊化、結構化設計,并采用軟件抗干擾,使軟件的可靠性比較高,可維護性較強。主要模塊有:主程序菜單程序到點工作程序抗干擾程序3.3.1主程序流程圖開始開始關中斷,設置堆棧關中斷,設置堆棧有上電復位標志?NY有上電復位標志?熱啟動恢復正常熱啟動恢復正常冷啟動全面初始化調用顯示程序調用顯示程序F鍵被按下?F鍵被按下?Y調用顯示程序,設定時間調用顯示程序,設定時間開始計時、工作開始計時、工作到點了嗎?N到點了嗎?停止計時,停止計時,調用到點工作程序結束結束4重要元件及重要電路4.1AT89C2051的內部結構及功能和引腳說明4.1.1AT89C2051主要性能AT89C2051是ATMEL公司生產的帶2K字節閃速可編程可擦除只讀存儲器(EEPROM)的8位單片機,它具有如下主要特性:·和MCS-51產品的兼容·2K字節可重編程閃速存儲器

·耐久性:1,000寫/擦除周期

·2.7V~6V的操作范圍·全靜態操作:0Hz~24MHz

·兩級加密程序存儲器

·128×8位內部RAM

·15根可編程I/O引線

·兩個16位定時器/計數器

·六個中斷源

·可編程串行UART通道

·直接LED驅動輸出

·片內模擬比較器

·低功耗空載和掉電方式4.1.2AT89C2051的內部結構AT89C2051是一帶有2K字節閃速可編程可擦除只讀存儲體(EEPROM)的低電壓,高性能8位CMOS微型計算機。如圖2所示。它采用ATMEL的高密非易失存儲技術制造并和工業標準MCS—51指令集和引腳結構兼容。通過在單塊芯片上組合通用的CPL1和閃速存儲器,ATMELAT89C2051是一強勁的微型計算機,它對許多嵌入式控制應用提供一高度靈活和成本低的解決辦法。

圖1AT89C2051的內部結構圖圖2AT89C2051內部示意圖此外,從AT89C2051內部結構圖也可看出,其內部結構與8051內部結構基本一致(除模擬比較器外),引腳RST、XTAL1、XTAL2的特性和外部連接電路也完全與51系列單片機相應引腳一致,但P1口、P3口有其獨特之處4.1.3AT89C2051的引腳說明AT89C2051是一個有20個引腳的芯片,引腳如圖1所示,與8051內部結構進行對比可發現,AT89C2051減少了兩個對外端口(即P0、P2口),使它最大可能地減少了對外引腳,因而芯片尺寸有所減少。

AT89C2051芯片的20個引腳功能為:1.Vcc:電源電壓。2.GND:地。3.P1口:P1口是一8位雙向I/O口。口引腳P1.2~P1.7提供內部上拉電阻。P1.0和P1.1要求外部上拉電阻。P1.0和P1.1還分別作為片內精密模擬比較器的同相輸入(AIN0)和反相輸入(AIN1)。P1口輸出緩沖器可吸收20mA電流并能直接驅動LED顯示。當P1口引腳寫入“1”時,其可用作輸入端。當引腳P1.2~P1.7用作輸入并被外部拉低時,它們將因內部的上拉電阻而流出電流(IIL)。P1口還在閃速編程和程序校驗期間接收代碼數據。4.P3口:P3口的P3.0~P3.5、P3.7是帶有內部上拉電阻的七個雙向I/0引腳。P3.6用于固定輸入片內比較器的輸出信號并且它作為一通用I/O引腳而不可訪問。P3口緩沖器可吸收20mA電流。當P3口引腳寫入“1”時,它們被內部上拉電阻拉高并可用作輸入端。用作輸入時,被外部拉低的P3口引腳將用上拉電阻而流出電流(IIL)。

P3口還用于實現AT89C2051的各種功能,如下表1所示。

P3口還接收一些用于閃速存儲器編程和程序校驗的控制信號。

5.RST:復位輸入。RST一旦變成高電平,所有的I/O引腳就復位到“1”。當振蕩器正在運行時,持續給出RST引腳兩個機器周期的高電平便可完成復位。每一個機器周期需12個振蕩器或時鐘周期。

6.XTAL1:作為振蕩器反相放大器的輸入和內部時鐘發生器的輸入。

7.XTAL2:作為振蕩器反相放大器的輸出。

P3口引腳功能

P3.0

RXD(串行輸入端口)

P3.1

TXD(串行輸出端口)

P3.2

INT0(外中斷0)

P3.3

INT1(外中斷1)

P3.4TO(定時器0外部輸入)

P3.5

T1(定時器1外部輸入)表1

P3口的功能

從上述引腳說明可看出,AT89C2051沒有提供外部擴展存儲器與I/O設備所需的地址、數據、控制信號,因此利用AT89C2051構成的單片機應用系統不能在AT89C2051之外擴展存儲器或I/O設備,也即AT89C2051本身即構成了最小單片機系統。4.2繼電器繼電器是一種電子控制器件,它具有控制系統(又稱輸入回路)和被控制系統(又稱輸出回路),通常應用于自動控制電路中,它實際上是用較小的電流去控制較大電流的一種“自動開關”。故在電路中起著自動調節、安全保護、轉換電路等作用。4.2.1、電磁繼電器的工作原理和特性電磁式繼電器一般由鐵芯、線圈、銜鐵、觸點簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會流過一定的電流,從而產生電磁效應,銜鐵就會在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動銜鐵的動觸點與靜觸點(常開觸點)吸合。當線圈斷電后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力返回原來的位置,使動觸點與原來的靜觸點(常閉觸點)吸合。這樣吸合、釋放,從而達到了在電路中的導通、切斷的目的。對于繼電器的“常開、常閉”觸點,可以這樣來區分:繼電器線圈未通電時處于斷開狀態的靜觸點,稱為“常開觸點”;處于接通狀態的靜觸點稱為“常閉觸點”4.2.2、繼電器主要產品技術參數1、額定工作電壓額定工作電壓是指繼電器正常工作時線圈所需要的電壓。根據繼電器的型號不同,可以是交流電壓,也可以是直流電壓。2、直流電阻直流電阻是指繼電器中線圈的直流電阻,可以通過萬能表測量。3、吸合電流吸合電流是指繼電器能夠產生吸合動作的最小電流。在正常使用時,給定的電流必須略大于吸合電流,這樣繼電器才能穩定地工作。而對于線圈所加的工作電壓,一般不要超過額定工作電壓的1.5倍,否則會產生較大的電流而把線圈燒毀。4、釋放電流釋放電流是指繼電器產生釋放動作的最大電流。當繼電器吸合狀態的電流減小到一定程度時,繼電器就會恢復到未通電的釋放狀態。這時的電流遠遠小于吸合電流。5、觸點切換電壓和電流觸點切換電壓和電流是指繼電器允許加載的電壓和電流。它決定了繼電器能控制電壓和電流的大小,使用時不能超過此值,否則很容易損壞繼電器的觸點。、繼電器的電符號和觸點形式繼電器線圈在電路中用一個長方框符號表示,如果繼電器有兩個線圈,就畫兩個并列的長方框。同時在長方框內或長方框旁標上繼電器的文字符號“J”。繼電器的觸點有兩種表示方法:一種是把它們直接畫在長方框一側,這種表示法較為直觀。另一種是按照電路連接的需要,把各個觸點分別畫到各自的控制電路中,通常在同一繼電器的觸點與線圈旁分別標注上相同的文字符號,并將觸點組編上號碼,以示區別。繼電器的觸點有三種基本形式:1.動合型(H型)線圈不通電時兩觸點是斷開的,通電后,兩個觸點就閉合。以合字的拼音字頭“H”表示。2.動斷型(D型)線圈不通電時兩觸點是閉合的,通電后兩個觸點就斷開。用斷字的拼音字頭“D”表示。3.轉換型(Z型)這是觸點組型。這種觸點組共有三個觸點,即中間是動觸點,上下各一個靜觸點。線圈不通電時,動觸點和其中一個靜觸點斷開和另一個閉合,線圈通電后,動觸點就移動,使原來斷開的成閉合,原來閉合的成斷開狀態,達到轉換的目的。這樣的觸點組稱為轉換觸點。用“轉”字的拼音字頭“z”表示。4.3數碼管4.3.1、4.3.2、數碼管的驅動方式5軟件設計5.1偽定義SLEQU30H;SL存放秒的個位數SHEQU3lH;SH存放秒的十位數MLEQU32H;ML存放分的個位數MHEQU33H;MH存放分的十位數HLEQU34H;HL存放小時的個位數HHEQU35H;HH存放小時的十位數;L0EQU36H;L0~L3:顯示數據存儲器L1EQU37HL2EQU38HL3EQU39HDSPLYPEQU3AH;顯示數據指針(DISPLAY—POINT)PLYTSEQU3BH;顯示次數計數器(DISPLAY—TIMES);LPLMODBIT39H;低兩位顯示方式(LOW—PLAY—MOD)HPLMODBIT3AH;高兩位顯示方式(HIGH—PLAY—MOD)BRIGHTBIT3BH:DISPLAY子程序參數:亮/滅指示位;TCOUNTEQU3CH;時間計數器(TIME—COUNT);ADDRESEQU3DH,加l子程序參數MAXEQU3EH;加l子程序參數IFDECBIT20H;BCD加法子程序參數;R_MODEQU3FH;響鈴方式參數;LED4BIT30H;發光管狀態位BELLBITP1.7;蜂鳴器WITCHBITP3.7;繼電器FKEYBITP3.0;功能鍵(S1)MKEYBITP3.1;修改鍵(S2);WORKINBIT38H;工作狀態指示位5.2中斷入口ORG0000HSTART:LJMPMAIN;0000H引向主程序LJMPERR;0003HNOPNOPLJMPERR;引向出錯處理程序LJMPPGT0;000BH引向中斷處理程序PG丁0NOPNOPLJMPERR;引向出錯處理程序LJMPERR;0013HIN丁1NOPNOPLJMPERRLJMPERR;00lBHT1NOPNOPLJMPERRLJMPERR;0023HNOPNOPLJMPERRLJMPERR;002BHNOPNOP5.3主程序MAIN:MOVlE,#00H;關中斷MOVSP,#57H;設置堆棧指針MOVPSW,#00H;選用寄存器組0MOVTMOD,#11H;設定中斷工作方式為T0和T1,MOVA,56HCJNEA,#0AAH,CSTART;判斷上電復位標志,無標志轉冷啟動MOVA,57HCJNEA,#55H,CSTART;無標志轉冷啟動AJMPHSTART;有上電復位標志轉熱啟動NOPNOPLJMPERR;軟件陷阱,引向出錯處理程序CSTART:MOVP1,#0FFH;冷啟動,全面初始化MOVP3,#0FFHMOVTCON,#00H;計時停止MOVTL0,#0BOH;賦中斷T0初值MOVTH0,#3CHMOVTCOUNT,#0AH;賦定時器初值M()VR5,#00H;R5為一空單元(備用)MOVR4,#00H;R4為工作模式選擇寄存器MOVSI一#00H;定時單元清零MOVSH,#00H;秒MOVML,#00H;MOVMH,#00H;分MOVHL,#00H;MOVHH,#00H;時MOVPLYTS,#64H;賦顯示次數初值為100次MOVDSPLYP,#L0;顯示指針指向顯存單元MOVLO,#0AH;送顯示數據“一一一一一”MOVL1,#0AHMOVL2,#0AHMOVL3,共04HSETBLED4;LED4為數碼管之間的發光二極管SETBLPLMOD;設定顯示方式為閃爍SETBHPLMOD;SETBBRIGHT;允許顯示CLRWORKIN;清工作標志,待命AJMPSETUP;轉開始工作NOPNOPLJMPERR;軟件陷阱HSTART:MOVSCON,#00H;有上電標志,熱啟動,清串行口控制寄存器MOVIP,#00H;清中斷優先控制寄存器SETBFKEY;重設按鍵SETBMKEYSETBEA;開中斷AJMPBEGIN;轉向繼續工作NOPNOPLJMPERR;軟件陷阱SETUP:SETBEA;開中斷;MAINl:ACALLDISPLY;調用顯示JBFKEY,JUDGE;按鍵掃描ACALLKEYDLY;延時消抖動JBFKEY,JUDGE;無鍵按下轉向判斷是否到點CLRET0;功能鍵被按下CLRTR0;暫停計日寸ACALLMENU;調用菜單設置程序BEGIN:SETBWORKIN;置工作標志位,開始工作SETBET0;開中斷SETBTR0;開始計時MOVA,R4;移人工作模式選擇RLA;指針放大MOVDPTR,并M—TABJMP@A+DPTR;根據工作模式跳轉到相應程序段M—TAB:AJMPWORKlAJMPWORK2AJMPWORK3AJMPWORK4NOPNOPLJMPERR;軟件陷阱WORKl:;WORK2:CLRSWITCH;工作方式1和2:開繼電器AJMPMAIN2NOPNOPLJMPERR;軟件陷阱WORK3:;WORK4:SETBSWI丁CH;工作方式3和4:不開繼電器MAIN2,CLRBELL;蜂鳴器短鳴一聲,以示開始工作ACALLDL05SSETBBELLJUDGlJNBWORKIN,MAINl:判斷是否在定時之中MOVA,SL,判斷秒是否為零JNZMAINlMOVA,SH;判斷秒是否為零JNZMAINlMOVA,ML;判斷分是否為零JNZMAINlMOVA,MH;判斷分是否為零JNZMAINlMOVA,HL;判斷時是否為零JNZMAINlMOVA,HH;判斷時是否為零JNZMAINl;若時、分、秒全為零CLRET0;停止計時CLRTR0ACALLACTION;調用到點工作子程序AJMPMAIN‘返回NOPNOPlJMPERR;軟件陷阱;5.4倒計時程序PGTO:CLREA;關中斷PUSHACC;保護現場PUSHPSWPUSHDPIPUSHDPHMOyPSW,#08H;選用寄存器組1CLRTR0;暫停計時MOVA,#0B7H;中斷同步修正ADDA,TL0MOVTL0,AMOVA,#3CHADDA,TH0MOVTH0,ASETBTR0;恢復計時DECTCOUNT;定時器T0每50000ms溢出一次M()VA,TCOUNT;溢出10次為0.5sJNZOUTT0;判斷是否到0.5sMOV丁C()UNT,#0AH;CPLLED4;若到0.5sI。ED取反JNBLED4,OUTT0;LED每閃爍一次是1sMOVR0,#SH;移人秒位的地址SETBIFDEC;BCD子程序參數,使其做減法ACALLADDBCD;調用BCD子程序,秒減lCJNER3,#99H,OUTT0;判斷秒是否要借位MOVSH,#05H;要借位則送數據59(否則顯示99)MOV5L,#09HMOVR0,#MH;移人分位的地址ACALLADDBCD;分減lCJNER3,#99H,OUTT0;判斷分是否要借位MOVMH,#05HMOVML,#09HMOVR0,#HHACALLADDBCDOUTT0:POPDPH;恢復現場POPDPLPOPPSWPOPACCSETBEAR正TI;中斷返回NOPNOPLJMPERR;軟件陷阱;5.5BCD子程序(加1或減1)ADDBCD:M()VA,@R0;移入被操作數的高位DECR0;指針減1SWAPAORLA,@R0;移人被操作數的低位MOVB,#01H;B寄存器送立即數#0\HM()VC,IFDEC;減法標志位為lMOVB.3,C;MOVB.4,C;B寄存器的值被改為#99HMOVB.7,C;ADDA,B;對一個壓縮的BCD碼加捭99H等于對其減1DAA;BCD碼調整MOVR3,A;暫存結果ANI,A,#0FH;取低位碼MOV@R0,A;存數MOVA,R3;取回結果INCR0;指針加1SWAPA;交換ANLA,#0FH;取結果數的高位MOV@R0,A;存數RETNOPNOPLJMPERR;軟件陷阱;5.6加1程序ADDONE:M()VR0,ADDRES;移入被加數單元的地址CLRIFDEC;設定BCD子程序做加法ACAI上ADDBCD;調用BCD子程序CLRC;判斷被加數是否大于MOVA,R3,最大值“MAX”CJNEA,MAK,JGOVERJGOVER:JCENDAD()CI,RA;若大于“MAX”,則清零MOV@R0,ADECR0MOV@R0,AENDADO:RETNOPN[)P;LJMPERR;軟件陷阱;5.7調時快進程序QUICK:CLRLPLMOD;設定顯示方式不閃爍CLRHPLMODACALLADDONE;調用加1子程序MOVLe,R4;將工作模式選擇數移入顯存INCL0;加1轉化成顯示值ACALLKEYDLY;延時ACAI。LDLl00JNBMKEY,QUICK;判斷鍵是否松開SETBLPLMOD;若松開則恢復閃爍顯示方式CJNER6,#02H,ENDQUKSETBHPLMODCLRLPLMODENDQUK:RETNOPNOPLJMPERR;軟件陷阱;5.8功能菜單程序MENU:MOVR6,#00H;初始化;R6計功能鍵按鍵次數MOVADDRES,#05H;將R5的地址送人,以便于改變R4的值MOVMAX,井04H;定義工作模式選擇寄存器R4的最大值MOVDSPLYP,#L0;定義顯示指針指向顯存SETBLPLMOD;設定低兩位數閃爍CLRHPLMODMOVL0,R4;送顯示數據“F一0X”INCL0M()VL1,#00HMOVL2,#0BHMOVL3,#00HSETBLED4:WAITFK:ACALLDISPI。Y;等待F鍵釋放JNBFKEY,WAITFKMENUl:ACAI。LDISPLYJBMKEY,JGFKEY;M鍵掃描ACAI。LKEYDLY;延時消抖動JBMKEY,JGFKEY;未按下則轉F鍵掃描CJNER6,#00H,NEXTl;MOVSL,#00H;若中途改變定時方式,則清除原計時數據M()VSH,#00HMOVML,#00HMOVMH,#00HMOVHI。,#00HMOVHH,#00HNEXTl:MOVR2,#00H;R2用于判斷按鍵時間是否超過0.5sNEXT2:ACALI。ADDONE;調用加1程序MOVL0,R4;移人工作方式選擇數INCL0;WAITMK:ACAI。LDISPLY;等待M鍵釋放INCR2;R2自增1CI。RCCJNER2,#0C8H,JGQUIC;若R2大于等于200則調用快進子程序JGQUIC:JCWATMKlACALLQUICKWATMKl:JNBMKEY,WAITMK;R2小于200則等待M鍵釋放;JGFKEY:JnFKEY,MENUl;功能(F)鍵掃描ACAI。LKEYDLY;延時消抖動JBFKEY,MENUl;鍵未按下則轉修改(M)鍵掃描INCR6;F鍵按鍵次數加1MOVA,R6;移人按鍵次數RLA;指針放大MOVDPTR,#FUNTABJMP@A+DPTR;根據按鍵次數跳轉到相應的程序段FUNTAB:AJMPWAITFKAJMPSETLOWAJMPSETHIAJMPENDMENNOPNOPAJMPENDMEN;STWKMD:;工作模式設定,不需另外改變菜單;SETL()W:MOVMAX,#60H;設置低位(秒位或分位)MOVA,R4;移人工作模式選擇數RLA;指針放大MOVDPTR,#FTABlJMP@A+DPTR;根據工作模式選擇數跳轉到相應的程序段FTABl:AJMPSETSSAJMl’SETM60AJMPSETSSAJMPSETM60NOPNOPAJMPWAITFKSE丁SS:MOVDSPI。YP,#SL;設定顯示區域為MM:SSMOVADDRES,#SHAJMPWAITFKSETM60:MOVDSPLYP,#ML;設定顯示區域為HH:MMMOVADDRES,#MHAJMPWAITFK;SETHI:CLRLPLMOD;設置高位(分位或時位)SETBHPLMOD;高兩位數碼管閃爍MOVMAX,#3lH;最大數為30MOVA,R4;移人工作模式選擇數RLA;指針放大MOVDPTR,#FTAB2;移人表首地址JMP@A十DPTR;根據工作模式選擇數跳轉到相應的程序段F丁AB2:AJMPSETM30AJMPSETHH·AJMPSETM30AJMPSETHHN()PN()PAJMPWAITFK;返回等待鍵釋放SETM30:MOVADDRES,#MH;移人分位的地址AJMPWAITFK;轉向等待鍵釋放SETHH:MOVADDRES,#HH;移人時位的地址AJMPWAITFK;轉向等待鍵釋放;RNDMEN:CI。只HPLMOD;恢復不閃爍顯示方式RETN()PNOPUMPERR;軟件陷阱5.9到點工作程序ACTION:MOVL0,R4;移人工作模式選擇數INCL0;送顯示數“F一0X”MOVL1,#00HM()VI。2,#0BHM()VL3,#00HSETBLED4MOVDSPI。丫P,#L0;指針指向顯存SETBI,PI,MOD;設定顯示方式不閃爍SETBHPLMODMOVA,R4;移人工作模式選擇數RLA;MOVDPTR,#ATABJMP@A+DPTR;根據工作模式選擇數跳轉A—TAB:AJMPACTFl;工作模式一AJMPACTFl;工作模式二AJMPACTF3;工作模式三八JMPACTF3;工作模式四NOPNOPLJMPERR;軟件陷阱ACTFl:SE丁BSWITCH;工作模式一(或二):關繼電器M()VR—MOD,#82H;響鈴模式參數#82HMOVR2,#96H¨向鈴次數參數#96HACTFll:ACALLRING;調用響鈴于程序JNBMKEY,ENDACT;等待鍵按下JNBFKEY,ENDACT;有鍵按下則結束p向鈴DJNZR2,ACTFll;次數未滿繼續響鈴MOVR—MOD,#0FFH;參數#0FF使口向鈴無效AJMPACTnl;無鍵按下返回NOPNOPUMPERR;軟件陷阱ACTF3:ClRSWI了CH;工作模式三(或四):開繼電器CLRBELL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論