系列單片機(jī)的增強(qiáng)型-AT89C51系列單片機(jī)電子設(shè)計(jì)實(shí)驗(yàn)報告.docx
《系列單片機(jī)的增強(qiáng)型-AT89C51系列單片機(jī)電子設(shè)計(jì)實(shí)驗(yàn)報告.docx》由會員分享,可在線閱讀,更多相關(guān)《系列單片機(jī)的增強(qiáng)型-AT89C51系列單片機(jī)電子設(shè)計(jì)實(shí)驗(yàn)報告.docx(42頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
實(shí)驗(yàn)報告 姓名:宋大威 電氣1302班 學(xué)號20134223067 簡介 本次項(xiàng)目是以51系列單片機(jī)的增強(qiáng)型——AT89C51系列單片機(jī),設(shè)計(jì)與制作單片機(jī)系統(tǒng),按需求設(shè)計(jì)硬件原理圖,編寫、調(diào)試軟件程序 (Keil uVision4) ,硬件電路和軟件程序結(jié)合,進(jìn)行硬件調(diào)試仿真,燒寫調(diào)試后的最終程序,系統(tǒng)上電運(yùn)行。 主要包括流水燈、數(shù)碼管、矩陣鍵盤、蜂鳴器、數(shù)字時鐘、液晶 LCD1602、片外RAM 擴(kuò)展、A/D轉(zhuǎn)換和D/A轉(zhuǎn)換。 所用芯片為AT89C51,CY62256,ADC0809,DAC0832鎖存器74LS373。 目錄 第一章 流水燈 1.1 實(shí)驗(yàn)?zāi)康? 1.2電路圖1 1.3電路原理2 1.4程序設(shè)計(jì)思路2 1.5實(shí)驗(yàn)心得及反思3 第二章 數(shù)碼管 2.1實(shí)驗(yàn)?zāi)康? 2,2電路圖4 2.3電路原理5 2.4程序設(shè)計(jì)思路5 2.5實(shí)驗(yàn)心得及反思5 第三章 矩陣鍵盤及蜂鳴器 3.1實(shí)驗(yàn)?zāi)康? 3.2電路圖6 3.3電路原理7 3.4程序設(shè)計(jì)思路7 3.5實(shí)驗(yàn)心得及反思7 第四章 液晶顯示器LCD1602 4.1實(shí)驗(yàn)?zāi)康? 4.2電路圖8 4.3電路原理9 4.4程序設(shè)計(jì)思路9 4.5實(shí)驗(yàn)心得及反思10 第五章 片外RAM擴(kuò)展 5.1實(shí)驗(yàn)?zāi)康?1 5.2電路圖12 5.3電路原理12 5.4程序設(shè)計(jì)思路13 5.5實(shí)驗(yàn)心得及反思14 第六章A/D轉(zhuǎn)換 6.1實(shí)驗(yàn)?zāi)康?4 6.2電路圖15 6.3電路原理16 6.4程序設(shè)計(jì)思路16 6.5實(shí)驗(yàn)心得及反思17 第六章D/A轉(zhuǎn)換 7.1實(shí)驗(yàn)?zāi)康?7 7.2電路圖18 7.3電路原理19 7.4程序設(shè)計(jì)思路19 7.5實(shí)驗(yàn)心得及反思19 第八章 附錄程序 8.1流水燈20 8.2數(shù)碼管21 8.3矩陣鍵盤22 8.4時鐘23 8.5液晶LCD160224 8.6片外RAM25 8.7A/D轉(zhuǎn)換26 8.8D/A轉(zhuǎn)換27 第九章 參考文獻(xiàn) 第一章 流水燈 1實(shí)驗(yàn)?zāi)康? u 了解單片機(jī)的系統(tǒng)設(shè)計(jì)方法 u 掌握Keil uVision4軟件的使用方法 u 掌握焊接技術(shù) u 在開發(fā)板上實(shí)現(xiàn)八個發(fā)光LED被點(diǎn)亮 2電路原理 3 實(shí)驗(yàn)原理 發(fā)光LED燈需要正向電壓才能導(dǎo)通,單片機(jī)給一個低電平后,所以連接的LED負(fù)極,就會導(dǎo)通發(fā)亮,點(diǎn)亮8個發(fā)光二級管時,先點(diǎn)亮一個,延時,再點(diǎn)亮下一個,再延時,循環(huán)往復(fù),形成流水燈。不同規(guī)格、不同顏色的LED參數(shù)是不一樣的。一般普通發(fā)光二極管,以紅色為例: LED工作電壓:1.8V~2.4V LED工作電流:2mA~20mA 一般取電壓典型值:U=2V R2 ∈[ 5V -2V/0.02A~5V-2V/0.02A ]=[150Ω,1.5KΩ] 4程序設(shè)計(jì)思路 點(diǎn)亮第三盞燈,并且延時 點(diǎn)亮第二盞燈,并且延時 點(diǎn)亮第四盞燈,并且延時 點(diǎn)亮第一盞燈,并且延時 點(diǎn)亮第八盞燈,并且延時 點(diǎn)亮第六盞燈,并且延時 點(diǎn)亮第五盞燈,并且延時 點(diǎn)亮第七盞燈,并且延時 開始 5實(shí)驗(yàn)心得及反思 心得;這是我做的第一個實(shí)驗(yàn)但是我覺得稱呼他為我的作品,從開始時的不知如何下手到后面駕輕就熟,收獲巨大,做完本次實(shí)驗(yàn),讓我們對單片機(jī)有了新的認(rèn)識,也更加的體會到了將理論與實(shí)際結(jié)合的重要性。理論聯(lián)系實(shí)際,才能更好的掌握知識運(yùn)用知識。 反思;在焊接電路板之前,我們要先理解本次實(shí)驗(yàn)的原理以及電路圖的設(shè)計(jì)和布局,然后再開始焊接編程,在做完整個試驗(yàn)后,才明白需要在做實(shí)驗(yàn)之前要有一個大局觀。這樣才能用最少的空間做出最多的東西。也能節(jié)省材料,出現(xiàn)問題時,也有便于我們檢查錯誤。 第二章 數(shù)碼管 1. 實(shí)驗(yàn)?zāi)康? u 了解供陽極數(shù)碼管的使用方法 u 掌握數(shù)碼管動態(tài)顯示電路的連接方法 u 練習(xí)動態(tài)顯示程序的結(jié)構(gòu)及調(diào)試方 2. 電路原理圖 3. 實(shí)驗(yàn)原理 單片機(jī)通過驅(qū)動電路給數(shù)碼管中相應(yīng)各段的發(fā)光二極管加正向電壓,該段發(fā)光二極管就會被點(diǎn)亮。不同段的發(fā)光二極管加正向電壓則亮,不加正向電壓則滅,這樣就可以通過各段的亮滅組合,來顯示不同的數(shù)字和字符了。 本次使用采用P1口為段選,P0.7~0.2分別對應(yīng)第一個數(shù)碼管至第六個數(shù)碼管。采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示頻率較高時,利用人眼的暫留特性,看不出閃爍顯示現(xiàn)象,這種顯示需要一個接口完成字形碼的輸出,另一接口完成各數(shù)碼管的輪流點(diǎn)亮(數(shù)位選擇)。 4. 程序框圖 給P0口0的段選,選通第一個數(shù)碼管(P0.7),延時,關(guān)閉第一個數(shù)碼管 開始 給P0口1的段選,選通第二個數(shù)碼管(P0.6),延時,關(guān)閉第二個數(shù)碼管 給P0口2的段選,選通第三個數(shù)碼管(P0.5),延時,關(guān)閉第三個數(shù)碼管 給P0口3的段選,選通第四個數(shù)碼管(P0.4),延時,關(guān)閉第四個數(shù)碼管 給P0口4的段選,選通第五個數(shù)碼管(P0.3),延時,關(guān)閉第五個數(shù)碼管 給P0口5的段選,選通第六個數(shù)碼管(P0.2),延時,關(guān)閉第六個數(shù)碼管 5. 實(shí)驗(yàn)心得 本次實(shí)驗(yàn)的電路連接有點(diǎn)麻煩,在焊接過程中一分心就容易犯錯,所以在做實(shí)驗(yàn)中我們必須要注意力高度集中,要不然我們就會得不償失了。另外,在調(diào)試程序時,我們的數(shù)碼管的顯示不很穩(wěn)定,當(dāng)時我們沒太在意。當(dāng)老師檢驗(yàn)時提出了這一問題,我們后來明白了,在實(shí)驗(yàn)中出現(xiàn)任何一丁點(diǎn)異常都要引起注意,把問題解決,這樣我們做出的產(chǎn)品才會更有質(zhì)量保證。 第二章 矩陣鍵盤、時鐘與蜂鳴器 1. 實(shí)驗(yàn)?zāi)康? l 掌握4*4矩陣式鍵盤按鍵地設(shè)計(jì)方法 l 掌握4*4矩陣鍵盤程序的識別原理 l 掌握蜂鳴器的使用方法 l 了解定時器的工作原理 l 明白用鍵盤怎樣去調(diào)試時間并在數(shù)碼管上顯示 2. 電路圖 3. 實(shí)驗(yàn)原理 i. 矩陣鍵盤與蜂鳴器 為了減少鍵盤與單片機(jī)接口所占用的I/O口的數(shù)目,所以將鍵盤排列成行列矩陣形式,程序先判斷有無鍵按下,當(dāng)有鍵按下后,判斷哪一個按鍵被按下,采用逐行掃描查詢法。向行線輸出全掃描字00H,把全部行線置為地電平,然后將列線的電平狀態(tài)讀入累加器A中,如果有一根列線電平被拉至低電平,從而使列輸入不全為1。 數(shù)碼顯示第二章已講,這里不再累述。給P0.0一個信號0,使蜂鳴器導(dǎo)通發(fā)聲。 ii. 時鐘 使用6位數(shù)碼管,數(shù)碼管分別顯示時、分、秒,用鍵盤進(jìn)行時間的調(diào)整。選用定時器T0的第一模式工作 。先賦定時器的計(jì)數(shù)初值,賦給TL0, B0H,賦給TH0, 3CH,每次的定時時間為50微妙。開放中斷,啟動定時器。中斷二十次即可得到一秒的時間。每秒的延時達(dá)到,秒計(jì)數(shù)加一。當(dāng)秒計(jì)數(shù)器計(jì)數(shù)滿60,分計(jì)數(shù)加一,秒計(jì)時清零。當(dāng)秒計(jì)數(shù)器計(jì)數(shù)滿60,時計(jì)數(shù)加一,分計(jì)時清零。當(dāng)時計(jì)數(shù)器計(jì)滿24,全部清零。 4. 程序框圖 i. 矩陣鍵盤與蜂鳴器程序框圖 開始 判斷是否有鍵按下 給A以00H,進(jìn)行行掃描,確定按鍵行號,保存行首鍵號 然后掃描列,并將對應(yīng)的列序號保存 鍵號(值)=行首鍵號+列號 延時去抖后再判斷按鍵狀態(tài),確定有鍵按下 輸出顯示,蜂鳴器發(fā)聲 ii. 時鐘程序框圖 開始 初始化并設(shè)定中斷允許 進(jìn)入中斷調(diào)時 調(diào)用鍵盤程序 調(diào)用時間程序,計(jì)時 鍵掃描,確定鍵值 輸入鍵值,進(jìn)行調(diào)時 顯示時間 否 是 5. 實(shí)驗(yàn)心得 做完之前的兩個實(shí)驗(yàn),我們的信心也加強(qiáng)了,因?yàn)槲覀冊趯W(xué)習(xí)的過程有了小小的收獲??蛇@次實(shí)驗(yàn)卻讓我們小小的郁悶了,感覺原理不是特別好懂,特別是時鐘的程序,因?yàn)閷纹瑱C(jī)的內(nèi)部工作原理算是懵懂,不過后來,我們還是通過查找資料,慢慢的完成了實(shí)驗(yàn),可以說過程是艱難的,但是我們沒有放棄,也許毅力的練成就是從一次一次坎坷中積聚的吧。 第三章 液晶顯示器(LCD1602) 1. 實(shí)驗(yàn)?zāi)康? l 了解LCD液晶顯示器的工作原理 l 掌握LCD液晶顯示器的編程控制方法 2. 電路圖 3. 實(shí)驗(yàn)原理 1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼。 4. 程序框圖 是 是 否 否 開始 是否忙 調(diào)LCD顯示功能,清屏 是否忙 送顯示 調(diào)整對比度 返回 5. 實(shí)驗(yàn)心得 這次實(shí)驗(yàn)主要是讓我們了解LCD,知道它作為外設(shè)怎么使用就行。雖然用處我們大家都知道,但是不能因?yàn)楹唵挝覀兙筒蝗フJ(rèn)真學(xué),畢竟學(xué)習(xí)是個積累的過程。 第四章 片外RAM擴(kuò)展 1. 實(shí)驗(yàn)?zāi)康? l 掌握擴(kuò)展片RAM的電路和程序設(shè)計(jì)方法 l 理解擴(kuò)展片RAM時讀寫和ALE等控制線的作用 l 了解片外RAM情況下的單片機(jī)指令MOVX的執(zhí)行進(jìn)程 l 學(xué)習(xí)心得 2. 電路圖 3. 實(shí)驗(yàn)原理 由于89C51單片機(jī)片內(nèi)RAM僅有128字節(jié),當(dāng)系統(tǒng)需要較大容量RAM時,就需要片外擴(kuò)展數(shù)據(jù)存儲器RAM,最大可擴(kuò)展64KB。擴(kuò)展數(shù)據(jù)存儲器空間地址,有P2口提供高8位地址,P0口分時提供8位地址和用作8位雙向數(shù)據(jù)總線,由地址鎖存器74H373控制。 4. 程序框圖 由74LS373傳送到62256 由62256傳送回單片機(jī)中 數(shù)碼管上面顯示數(shù)據(jù) 結(jié)束 數(shù)據(jù)傳輸?shù)?2256中 開始 5. 實(shí)驗(yàn)心得 這次實(shí)驗(yàn)主要是電路的連接,理解時序與有關(guān)芯片的原理之后,就相對來說比較簡單了。所以在以后的實(shí)驗(yàn)中我們既要認(rèn)真地對待硬件,又要深刻地理解有關(guān)軟件,這樣才能真正地做到靈活運(yùn)用知識去解決其他問題。 第五章 AD轉(zhuǎn)換 1. 實(shí)驗(yàn)?zāi)康? l 1、了解AD轉(zhuǎn)換器的工作原理 l 2、掌握AD轉(zhuǎn)換與單片機(jī)的接口方法 l 3、通過實(shí)驗(yàn)了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集 2. 電路圖 3. 實(shí)驗(yàn)原理 從滑動變阻器上得到模擬電壓,將模擬電壓信號輸入ADC0809芯片,ADC0809將模擬量轉(zhuǎn)化為數(shù)字量輸入AT89C51,AT89C51將輸入的數(shù)字量處理,再送到數(shù)碼管顯示。 4. 程序框圖 定義引腳以及顯示緩沖區(qū)單元 清零緩沖區(qū),給DPTR查表表頭,ABC已經(jīng)接地(選擇通道0) 啟動AD轉(zhuǎn)換,待轉(zhuǎn)換結(jié)束則輸出,緩存結(jié)果并關(guān)閉輸出 將AD轉(zhuǎn)換的結(jié)果(二進(jìn)制)轉(zhuǎn)換為BCD碼 將結(jié)果送至顯示緩沖區(qū)(從低位到高位,并且最高位點(diǎn)亮小數(shù)點(diǎn))分別顯示 開始 5. 實(shí)驗(yàn)心得 這個實(shí)驗(yàn)是持續(xù)時間最長的,就因?yàn)槟且痪湓捠拐麄€實(shí)驗(yàn)延長了倆個多月,使我明白了做實(shí)驗(yàn)要了解你所用的器件的所有的功能才能使你掌控大局觀,實(shí)驗(yàn)如此,生活亦是如此,要知己知彼才能百戰(zhàn)不殆。 第六章 DA轉(zhuǎn)換 1. 實(shí)驗(yàn)?zāi)康? l 了解DA轉(zhuǎn)換的基本原理 l 了解運(yùn)算放大器的工作原理 l 了解DA轉(zhuǎn)換芯片的性能及編程方法 l 掌握如何采集產(chǎn)生波形的樣點(diǎn) 2. 電路圖 3. 實(shí)驗(yàn)原理 使用D/A轉(zhuǎn)換實(shí)現(xiàn)數(shù)字信號轉(zhuǎn)換為模擬信號。用運(yùn)算放大器UA741實(shí)現(xiàn)電壓的放大。通過程序控制產(chǎn)生矩形波,三角波,正弦波。 4. 實(shí)驗(yàn)心得 由于這次實(shí)驗(yàn)是需要把數(shù)字信號轉(zhuǎn)換為模擬信號,而模擬信號的產(chǎn)生就需要學(xué)會如何采集生成波形的樣點(diǎn),初次接觸這方面的知識,在理解上與解決問題上給我們帶來了困擾,好在有學(xué)長的幫助以及我們的堅(jiān)持,才做出了實(shí)驗(yàn)效果。通過這次實(shí)驗(yàn),我們感觸很大,因?yàn)閷W(xué)長在傳遞知識時很無私也很友好,也因?yàn)槲覀兊囊懔ψ屛覀冞x擇了接著奮斗。我們相信,以后我們再遇到困難時,繼續(xù)走下去的決心會加強(qiáng),我們也會很樂意與人分享我們的知識的。 第七章 附錄 附錄一 流水燈程序 ORG 0000H AJMP MAIN ORG 0070H MAIN: MOV P1,#0FEH LCALL AXH MOV P1,#0FDH LCALL AXH MOV P1,#0FBH LCALL AXH MOV P1,#0F7H LCALL AXH MOV P1,#0EFH LCALL AXH MOV P1,#0DFH LCALL AXH MOV P1,#0BFH LCALL AXH MOV P1,#07FH LCALL AXH AJMP MAIN AXH:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET END 附錄二 數(shù)碼管程序 ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV P1,#0C0H CLR P0.7 LCALL AXH SETB P0.7 MOV P1,#0F9H CLR P0.6 LCALL AXH SETB P0.6 MOV P1,#0A4H CLR P0.5 LCALL AXH SETB P0.5 MOV P1,#0B0H CLR P0.4 LCALL AXH SETB P0.4 MOV P1,#99H CLR P0.3 LCALL AXH SETB P0.3 MOV P1,#92H CLR P0.2 LCALL AXH SETB P0.2 AJMP MAIN AXH: MOV R7,#2 D1: MOV R6,#30 D2: DJNZ R6,D2 DJNZ R7,D1 END 附錄三 矩陣鍵盤程序 ORG 0000H AJMP KEY ORG 0030H KEY:MOV P2,#00H MOV A,P2 ANL A,#0FH ORL A,#0F0H CPL A JZ KEY LCALL DEL10ms MOV P2,#0FH MOV A,P2 ANL A,#0FH ORL A,#0F0H CPL A JZ KEY SKEY: MOV A,#00 MOV R0,A //行值 MOV R1,A //列值 MOV R3,#7FH //暫存行 SKEY2: MOV A,R3 //SKEY2判斷行數(shù) MOV P2,A NOP NOP NOP MOV A,P2 MOV R1,A ANL A,#0FH ORL A,#0F0H CPL A S123: JNZ SKEY3 INC R0 SETB C MOV A,R3 RRC A MOV R3,A MOV A,R0 CJNE A,#04H,SKEY2 EKEY: RET SKEY3: MOV A,R1 //SKEY3判斷列值 JNB ACC.3,SKEY5 JNB ACC.2,SKEY6 JNB ACC.1,SKEY7 JNB ACC.0,SKEY8 AJMP EKEY SKEY5: MOV A,#00H MOV R2,A AJMP DKEY SKEY6: MOV A,#01H MOV R2,A AJMP DKEY SKEY7: MOV A,#02H MOV R2,A AJMP DKEY SKEY8: MOV A,#03H MOV R2,A AJMP DKEY DKEY: MOV A,R0 ACALL DECODE AJMP MAIN0 DECODE: MOV A,R0 MOV B,#04H MUL AB ADD A,R2 RET MAIN0:CLR P0.2 CJNE A,#00H,MAIN1 CLR P0.0 MOV P1,#0C0H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN1: CJNE A,#01H,MAIN2 CLR P0.0 MOV P1,#0F9H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN2: CJNE A,#02H,MAIN3 CLR P0.0 MOV P1,#0A4H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH JMP KEY MAIN3: CJNE A,#03H,MAIN4 CLR P0.0 MOV P1,#0B0H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN4: CJNE A,#04H,MAIN5 CLR P0.0 MOV P1,#99H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN5: CJNE A,#05H,MAIN6 CLR P0.0 MOV P1,#92H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN6: CJNE A,#06H,MAIN7 CLR P0.0 MOV P1,#82H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN7: CJNE A,#07H,MAIN8 CLR P0.0 MOV P1,#0F8H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN8: CJNE A,#08H,MAIN9 CLR P0.0 MOV P1,#80H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIN9: CJNE A,#09H,MAINA CLR P0.0 MOV P1,#90H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAINA: CJNE A,#0AH,MAINB CLR P0.0 MOV P1,#88H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAINB: CJNE A,#0BH,MAINC CLR P0.0 MOV P1,#83H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAINC: CJNE A,#0CH,MAIND CLR P0.0 MOV P1,#0C6H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAIND: CJNE A,#0DH,MAINE CLR P0.0 MOV P1,#0A1H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAINE: CJNE A,#0EH,MAINF CLR P0.0 MOV P1,#86H LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY MAINF: CJNE A,#0FH,CXF CLR P0.0 MOV P1,#8EH LCALL DEL50ms SETB P0.0 SETB P0.2 MOV P1,#0FFH AJMP KEY CXF: LJMP KEY DEL10ms:MOV R7,#10H TS1: MOV R6,#0FFH TS2: DJNZ R6,TS2 DJNZ R7,TS1 RET DEL50ms: MOV R7,#200 TS3: MOV R6,#125 TS4: DJNZ R6,TS4 DJNZ R7,TS3 RET END 附錄四 時鐘程序 H_BIT EQU 20H M_BIT EQU 21H S_BIT EQU 22H HH EQU 23H MM EQU 24H SS EQU 25H HH_BIT EQU 26H MM_BIT EQU 27H SS_BIT EQU 28H ORG 00H AJMP MAIN ORG 0BH AJMP TIME0 ORG 30H MAIN: MOV SP,#60H MOV P2,#0FH MOV R5,#00H MOV H_BIT,#00H MOV M_BIT,#00H MOV S_BIT,#00H MOV HH_BIT,#00H MOV MM_BIT,#00H MOV SS_BIT,#00H MOV HH,#00H MOV MM,#00H MOV SS,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 SETB TR0 LOOP: LCALL EY LCALL KEY LJMP LOOP EY: LCALL LOOP1 MOV DPTR,#TAB MOV A,H_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.7 LCALL DIS1 SETB P0.7 MOV A,HH_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.6 LCALL DIS1 SETB P0.6 MOV A,M_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.5 LCALL DIS1 SETB P0.5 MOV A,MM_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.4 LCALL DIS1 SETB P0.4 MOV A,S_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.3 LCALL DIS1 SETB P0.3 MOV A,SS_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.2 LCALL DIS1 SETB P0.2 RET LOOP1: MOV A,SS MOV B,#10 DIV AB MOV S_BIT,A MOV SS_BIT,B MOV A,MM MOV B,#10 DIV AB MOV M_BIT,A MOV MM_BIT,B MOV A,HH MOV B,#10 DIV AB MOV H_BIT,A MOV HH_BIT,B RET TIME0: PUSH ACC PUSH PSW MOV TH0,#3CH MOV TL0,#0B0H INC R5 CJNE R5,#20,LOOP2 MOV R5,#00H INC SS MOV A,SS CJNE A,#60,LOOP2 MOV SS,#00H INC MM MOV A,MM CJNE A,#60,LOOP2 MOV MM,#00H INC HH MOV A,HH CJNE A,#24,LOOP2 MOV HH,#00H LOOP2: POP PSW POP ACC RETI KEY: CLR EA LCALL EY JNB P2.3,SS_KEY KEY1: SETB EA RET SS_KEY: LCALL EY1 LCALL DIS1 JNB P2.3,SS_KEY SSA: LCALL EY1 LCALL S_KEY JNB P2.0,KEY3 LJMP SSA KEY3: LJMP KEY1 S_KEY: JNB P2.2,S_ADDKEY JNB P2.1,S_DECKEY LCALL DIS1 JNB P2.3,MM_KEY RET S_ADDKEY: LCALL EY1 LCALL DIS1 JNB P2.2,S_ADDKEY INC SS MOV A,SS CJNE A,#60,SS_KEY1 MOV SS,#00H SS_KEY1: LJMP SSA S_DECKEY: LCALL EY1 LCALL DIS1 JNB P2.1,S_DECKEY MOV A,SS CJNE A,#00,SS_KEY2 MOV SS,#60 SS_KEY2: DEC SS LJMP SS_KEY1 MM_KEY: LCALL EY2 LCALL DIS1 JNB P2.3,MM_KEY MMA: LCALL EY2 LCALL M_KEY JNB P2.0,KEY4 LJMP MMA KEY4: LJMP KEY1 M_KEY: JNB P2.2,M_ADDKEY JNB P2.1,M_DECKEY LCALL DIS1 JNB P2.3,HH_KEY RET M_ADDKEY: LCALL EY2 LCALL DIS1 JNB P2.2,M_ADDKEY INC MM MOV A,MM CJNE A,#60,MM_KEY1 MOV MM,#00H MM_KEY1: LJMP MMA M_DECKEY: LCALL EY2 LCALL DIS1 JNB P2.1,M_DECKEY MOV A,MM CJNE A,#00,MM_KEY2 MOV MM,#60 MM_KEY2: DEC MM LJMP MM_KEY1 HH_KEY: LCALL EY3 LCALL DIS1 JNB P2.3,HH_KEY HHA: LCALL EY3 LCALL H_KEY JNB P2.0,KEY5 LJMP HHA KEY5: LJMP KEY1 H_KEY: JNB P2.2,H_ADDKEY JNB P2.1,H_DECKEY LCALL DIS1 JNB P2.1,SSB RET H_ADDKEY: LCALL EY3 LCALL DIS1 JNB P2.2,H_ADDKEY INC HH MOV A,HH CJNE A,#24,HH_KEY1 MOV HH,#00H HH_KEY1: LJMP HHA H_DECKEY: LCALL EY3 LCALL DIS1 JNB P2.1,H_DECKEY MOV A,HH CJNE A,#00,HH_KEY2 MOV HH,#24 HH_KEY2: DEC HH LJMP HH_KEY1 SSB: LJMP SS_KEY EY1: LCALL LOOP1 MOV DPTR,#TAB MOV A,S_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.3 LCALL DIS1 SETB P0.3 MOV A,SS_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.2 LCALL DIS1 SETB P0.2 RET EY2: LCALL LOOP1 MOV DPTR,#TAB MOV A,M_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.5 LCALL DIS1 SETB P0.5 MOV A,MM_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.4 LCALL DIS1 SETB P0.4 RET EY3: LCALL LOOP1 MOV DPTR,#TAB MOV A,H_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.7 LCALL DIS1 SETB P0.7 MOV A,HH_BIT MOVC A,@A+DPTR MOV P1,A CLR P0.6 LCALL DIS1 SETB P0.6 RET DIS1: MOV R6,#20 DJNZ R6,$ RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END 附錄五 液晶LCD1602程序 ORG 0000H AJMP MAIN ORG 000BH AJMP TIME ORG 0100H MAIN: MOV TMOD,#00H MOV TL0,#00H MOV TH0,#00H SETB EA SETB ET0 SETB TR0 MOV 50H,#32H MOV SP,#60H ACALL MOSHISHEZHI ACALL LCDQP MOV A,#80H ACALL LCDXZL MOV DPTR,#TAB1 ACALL LOOP4 MOV A,#0C0H ACALL LCDXZL MOV DPTR,#TAB2 ACALL LOOP4 LOOP: AJMP LOOP TIME: MOV TL0,#00H MOV TH0,#00H DJNZ 50H,TIME0 MOV 50H,#32H TIME0: RETI MOSHISHEZHI:MOV A,#38H LCALL LCDXZL MOV A,#0EH LCALL LCDXZL MOV A,#06H LCALL LCDXZL RET LOOP2: PUSH Acc LOOP3: CLR P2.6 SETB P2.7 CLR P2.5 SETB P2.5 MOV A,P1 CLR P2.5 JB Acc.7,LOOP3 POP Acc ACALL DELAY RET LCDXZL: ACALL LOOP2 CLR P2.5 CLR P2.6 CLR P2.7 SETB P2.5 MOV P1,A CLR P2.5 RET LCDDXX: ACALL LOOP2 CLR P2.5 SETB P2.6 CLR P2.7 SETB P2.5 MOV P1,A CLR P2.5 RET DELAY: MOV 52H,#05H DELAY1: MOV 51H,#0F8H DJNZ 51H,$ DJNZ 52H,DELAY1 RET LCDQP: MOV A,#01H ACALL LCDXZL RET LOOP4: PUSH Acc LOOP5: CLR A MOVC A,@A+DPTR JZ LOOP6 ACALL LCDDXX INC DPTR AJMP LOOP5 LOOP6: POP Acc RET TAB1: DB " Gue xue ling",00H TAB2: DB " Zhong qiang",00H END 附錄六 片外RAM程序 WR1 BIT P3.6 RD1 BIT P3.7 ORG 0000H AJMP MAIN ORG 0030H MAIN: LCALL WRITE LCALL READ LCALL SY WRITE: SETB WR1 MOV A,#0F8H MOVX @R1,A CLR WR1 SETB WR1 RET READ: SETB RD1 MOVX A,@R1 CLR RD1 SETB RD1 RET SY: MOV P1,A CLR P0.2 RET END 附錄七 AD轉(zhuǎn)換程序 #include- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 系列 單片機(jī) 增強(qiáng) AT89C51 電子設(shè)計(jì) 實(shí)驗(yàn) 報告
鏈接地址:http://www.820124.com/p-8896998.html