單片機課程設計正弦波發(fā)生器論文.doc_第1頁
單片機課程設計正弦波發(fā)生器論文.doc_第2頁
單片機課程設計正弦波發(fā)生器論文.doc_第3頁
單片機課程設計正弦波發(fā)生器論文.doc_第4頁
單片機課程設計正弦波發(fā)生器論文.doc_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

北 華 航 天 工 業(yè) 學 院課程設計報告(論文) 設計名稱: 單片機技術課程設計 設計地點: 單片機實驗室(教7209) 班 級: B09221 姓 名: 學 號: 指導教 師: 完 成 時 間: 2012 年 4 月 18 日北華航天工業(yè)學院電子工程系課程設計任務書姓 名:學號:班 級:指導教師:職 稱:教授課程設計題目:正弦信號發(fā)生器的設計主要課程支撐:模擬電子技術、數字電子技術、微機原理與接口技術設計目標:1 熟練掌握單片機匯編指令的使用方法2 熟練掌握行列式鍵盤、LED顯示器的控制與管理方法3 掌握A/D、/D/A的應用4掌握單片機應用系統(tǒng)設計方法、軟硬件調試方法5熟練使用單片機仿真軟件基本要求:1完成單片機綜合設計(每人選做一個題目)2編程實現題目要求的基本功能,程序運行通過。3撰寫課程設計報告(設計思路、實現方法、硬件資源分配、程序流程圖、運行結果分析等),要求用A4紙打印設計報告。所需儀器設備:偉福Lab6000綜合實驗仿真系統(tǒng)一臺套微機一臺成果驗收形式:程序上機運行、現場回答問題參考文獻:Lab6000綜合實驗仿真系統(tǒng)說明書時間安排(1) 8周:完成選題、方案設計(2) 第1-4次上機調試程序(3) 第5次上機課題驗收(4) 第10周上交實踐報告指導教師: 教研室主任: 年 月 日 一、概述 1、設計目的 了解單片機系統(tǒng)中實現D/A(數字、模擬)轉換的原理及方法 詳細了解D/A轉換芯片0832的性能及編程方法 了解單片機系統(tǒng)中擴展D/A轉換的基本原理,了解單片機如何盡行數據采集 掌握DAC0832,AT89C51輸入/輸出接口電路設計方法 掌握DAC0832轉換實現的程序設計方法 掌握WAVE 軟件的操作,掌握單片機程序設計的流程2、設計要求 正弦波頻率范圍:1HZ100HZ,100HZ1000HZ 頻率步進值:1HZ100HZ檔步進是10HZ,100HZ1000HZ檔步進是100HZ 輸出電壓:15V幅值可調(1V步進) 具有顯示輸出波形頻率和幅度的功能 顯示位數:6位 鍵盤設置頻率值二、方案設計與論證(設計思路、題目分析、解決方法)1編程語言的選擇進行單片機開發(fā),既可以用C語言,也可以用匯編語言。在本設計中選擇合適的語言進行設計很重要。匯編語言是一種用文字助記符來表示機器指令的符號語言。其主要優(yōu)點是占用資源少,執(zhí)行效率高。但是不同的CPU,其匯編語言可能有所差異,所以不易移植。C語言是一種結構化的高級語言。其優(yōu)點是可讀性好,移植容易,是一種普遍使用的計算機語言,缺點是占用資源較多,沒有匯編語言執(zhí)行效率高。對于目前普遍使用RISC架構的8位單片機來說,其內部ROM、 RAM、STACK等資源有限,如果使用C語言編寫,一條C語言編譯后就會變成很多機器碼,很容易出現ROM空間不夠、堆棧溢出等問題。而匯編語言,一條指令就對應一條機器碼,每一步的執(zhí)行動作都很清楚,并且程序大小和堆棧條用情況都容易控制,調試起來也比較方便。就正弦波發(fā)生器設計而言,對程序指令執(zhí)行的精度、時間要求比較嚴格,因此本次設計采用匯編語言進行編程較為合理。2如何利用單片機進行控制輸出-5V+5V電壓-5V+5V為模擬量輸出,單片機本身并不具備此功能,單片機只能進行數字量輸出,因此需要用到DAC(數模轉換)芯片DAC0832簡要介紹DAC轉換器是一種將數字量轉換成模擬量的器件,其特點是接受、保持和轉換的是數字信息,不存在溫度和事件的漂移問題,因此電路的抗干擾性能較好。DAC0832是8位分辨率的D/A轉換集成芯片,它具有價格低廉、接口簡單及轉換控制容易等特點。它由8位輸入鎖存器、8位DAC寄存器、8位DIA轉換電路及轉換控制電路組成,能和CPU數據總線直接連接,屬中速轉換器,大約在1uS內將一個數字量轉換成模擬量輸出。DAC0832的結構D0D7: 8位數據輸入線,TTL電平,有效時間應大于90nS(否則鎖存器的數據會出錯);ILE:數據鎖存允許控制信號輸入線,高電平有效;CS:片選信號輸入線(選通數據鎖存器),低電平有效;WR1:數據鎖存器寫選通輸入線,負脈沖(賣寬應大于500nS)有效。由ILE、CS、WR1的邏輯組合產生LE1,當LE1為高電平時,數據鎖存器狀態(tài)隨輸入數據線變換,LE1的負跳變時將輸入數據鎖存;XFER: 數據傳輸控制信號輸入線,低電平有效,負脈沖(脈寬應大于500nS)有效;WR2:DAC寄存器選通輸入線,負脈沖(脈寬應大于500nS)有效。由WR1、XFER的邏輯組合產生LE2,當LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負跳變時將數據鎖存器的內容打入DAC寄存器并開始D/A轉換。IOUT1:電流輸出端1,其值隨DAC寄存器的內容線性變化;IOUT2:電流輸出段2,其值與IOUT1值之和為一常數;Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調整轉換滿量程度;Vcc:電源輸入端,Vcc的范圍為+5V+5V;VREF:基準電壓輸入線,VREF的范圍為-10V+10V;AGND:模擬信號地;DGND:數字信號地; 0832的引腳圖和內部結構圖如圖1、圖2所示圖1 DAC0832引腳圖圖2 DAC0832內部結構圖DAC0832的三種工作方式1、直通方式直通方式是使DAC0832內部的兩個寄存器(輸入寄存器和DAC寄存器)處于不鎖存狀態(tài),數據一旦到達輸入端DI7DI0,就直接送入D/A轉換器,被轉換成模擬量。當ILE為高電平,CS和WR1、WR2和XFER端都接數字帝,這時鎖存信號LE1、LE2均為高電平,輸入寄存器和DAC寄存器均處于不鎖存狀態(tài),即直通方式。2、單緩沖方式單緩沖方式就是使兩個寄存器中的一個處于緩沖方式,另一個處于鎖存方式,數據只同故宮一級緩沖器送入D/A轉換器。通的做法是將CS和XFER均姐弟,使DAC寄存器處于直通凡事,而把ILE接高電平,接端口地址譯碼信號。WR1接CPU系統(tǒng)總顯線的IOW信號,是輸入寄存器處于鎖存方式。但換種方式只需執(zhí)行一次寫操作即可完成D/A轉換。一般不需要多個模擬量同時輸出,可采用單緩沖方式。3、雙緩沖方式雙緩沖方式就是使兩個寄存器均處于鎖存方式,數據要經過兩級鎖存(即兩級緩沖)后再送入D/A轉換器,就是說,要執(zhí)行兩次寫操作才能完成一次D/A轉換。只要將ILE接高電平,WR1和WR2接CPU的IOW,CS和XFER分別接兩個不同的I/O地址譯碼信號即可。在本設計中,令0832工作在單緩沖方式,其片選端接138譯碼器單元的CS1,其地址為0x9000H。DAC0832的輸出方式DAC0832為電流型輸出,若需要電壓輸出可使用運算放大器構成單極性輸出和雙極性,圖3 中a、b分別為0832的單極性輸出和雙極性輸出的電路連接方式。若采用單極性輸出,則只能產生0V5V電壓,不能得到既有正脈波又有負脈波的正弦波。因此本設計采用DAC0832的雙極性輸出,其輸出電壓為-5+5V;當DI0DI7為0000000B時輸出-5V,為10000000B時輸出0V,為11111111B是輸出+5V。這樣可以產生既有正脈波又有服脈波的正弦波。圖3 DAC0832的單極性輸出和雙極性輸出3.如何產生正弦波 (a) (b)圖4 正弦波的分解 用單片機控制DAC0832來產生正弦波有個問題,就是數模轉換總是有其分辨率的,輸出的電壓并不是連續(xù)變化的。例如:8位DAC輸出為-5V+5V,那么分辨率就是:,所以產生的正弦波會有一定的誤差。如何利用單片機控制DAC0832產生正弦波呢?我們可以先把一個正弦波按橫軸等間距分別為若干個點(如圖 4分為51個點)。把每個點電壓幅值所對應的8位二進制數值做成表,放在CPU的ROM中。例如:圖4中左起第一個點幅值是0V,對應的送給DAC0832的8位二進制數為80H,所以表的第一元素為80H制成下表:(下表中數據以十進制表示)TAB1: DB 128, 144, 160, 175, 190, 203, 216, 227, 236, 244, 250, 254, 255, 255, 254, 250, 244, 236, 227, 216, 203, 190, 175, 160, 144, 128, 112, 96, 81, 66, 53, 40, 29, 20, 12, 6, 2, 0, 0, 2, 6, 12, 20, 29, 40, 53, 66, 81, 96, 112, 128 先取表中第一個元素送給0832,0832輸出第一個電壓0V,再取第二個數送給0832輸出下一個電壓,依次類推,取到表的最后一個元素時,從頭開始取表的第一個元素。循環(huán)往復,就輸出了一個連續(xù)的正弦波形。只產生一個正弦波是不夠的,我們還要求其頻率和幅值可調。可以看一下哪些因素會影響輸出波形的頻率和幅值頻率的影響因素由圖4可知,該正弦波的頻率 (為所取的兩個點之間的間隔),所以只要改變就可以改變輸出波形的頻率。我采用的方案是:用一個定時器,每隔產生一次中斷,在中斷服務程序里控制DAC0832輸出。如果想要改變只要改變定時器的時間就行了。也就改變了輸出波形的頻率。采用這個方案需要驗證兩個問題: 本設計要求輸出頻率在1HZ1000HZ可調,所以定時器的定時時間需要達到S,即定時器的定時時間要在S之間可調,并且其分辨率滿足要求。經驗證51單片機的定時器0工作在方式1時,其性能滿足要求,故采用定時器的方案可行。 不可能無限小,假設單片機晶振為6MHZ,那么定時器的分辨率為2S即0.000002S。單片機執(zhí)行指令是需要時間的,當定時器溢出產生中斷時,需要執(zhí)行一系列指令,包括對斷點地址進行壓棧、給PC賦值等操作,都是需要占用時間的,這一部分占用的時間是不可避免的。除此之外,進入中斷服務子程序中,順序執(zhí)行里面的程序,在執(zhí)行MOVX DPTR,A 給DAC0832送數據讓其輸出電壓之前會有一些必須的程序,包括賦初值給定時器的TH0和TL0,查表程序等。綜合上面幾個因素,這時定時器的定時時間并不是理論上計算出的時間,而大于這個時間,這樣輸出波形的頻率就會有誤差。為了減小誤差,第一,盡量減少定時中斷服務程序中的指令,以減少其占用的時間;第二:給TH0,TL0幅值時,減去延時的時間,以抵消掉指令占用的時間。幅值的影響因素從前面介紹的DAC0832的原理可知,只要改變DAC0832數字量輸入就可以改變其輸出模擬量的幅度。由于產生波形的幅度是在存儲于單片機內部ROM的表中,按順序取出的。因此我們需要從新建立一個表,這樣定時中斷服務程序中,該表所查的表,就改變了輸出波形的幅度。本設計要求幅值1V5V可調,因此需要建立5個表。建立5個表的時候如果一個元素一個元素的算,未免太麻煩。可以用MATLAB分別算出5個表,然后粘貼到程序中,稍作修改就可以使用(圖5為輸出幅值為4V時表的計算方法算法)。算法: (U為需要得的到的幅值,此時b數組就是對應的表)圖5 表的計算方法(輸出幅值為4V時) 綜合上面改變頻率和幅值的方法,就可以得到符合本設計的設計要求的波形。3.頻率與幅值的設置方案:利用單脈沖發(fā)生器,當需要設置幅值和頻率時,產生中斷,暫停正在工作的定時器,停止波形輸出,進入外部中斷0中斷服務程序,通過按鍵,對波形進行設置。按鍵0:頻率/幅值切換;按鍵1:頻率/幅值增加;按鍵2:退出外部中斷,開啟定時器,輸出波形4.鍵盤與顯示 利用WAVE6000 實驗環(huán)境中的顯示程序和鍵盤掃描電路及程序。改程序提供了三個子程序:TestKey;GetKey;DispLedBuf。三、硬件設計1硬件電路本設計由單片機、D/A轉換電路、鍵盤及顯示電路幾個組成部分,各部分采用的電路形式及主要器件確定如下:(1)單片機部分選用89C51單片機作為主機,同時要設計89C51單片機的晶振電路和復位電路,具體電路略。(2)D/A轉換電路部分直接利用單片機實驗箱上的D/A轉換電路正弦波信號的輸出。電路如圖6所示。圖6 DAC0832連接電路(3)按鍵與顯示部分 直接利用單片機試驗箱上的按鍵與顯示電路。如圖7、圖8所示 圖7 顯示器電路連接圖圖8 鍵盤電路連接圖四、程序設計 1程序流程圖 主程序流程圖:開始初始化(中斷允許、定時器初始化等)SJMP $ 循環(huán)等待圖9 主程序流程圖 定時器0中斷服務程序流程圖:是否開始定時器重賦初值Mov TH0,CTH0Mov TL0,CTL0表的首地址賦DPTRMov DPH,#CDPHMov DPH,#0根據R0內容進行查表把查表的內容送到0832INC R0R0等于50?Mov R0,#0圖10定時器0中斷服務程序流程圖否開始停止定時器0的中斷初始化工作F0清零顯示清空調用顯示程序DisplayLED檢測有無按鍵TestKey無按鍵有按鍵取鍵值GetKey鍵值為#0?CPL F0 并且根據F0來顯示U或F是鍵值為#1?鍵值為#2?否否F0為零INC CU否則INC CHZ并把顯示被容送入LEDBuf是允許定時器0中斷RETI結束外部中斷0中斷服務程序流程圖:圖11外部中斷0中斷服務程序流程圖2程序模塊功能主程序:進行一系列初始化后,主程序最后停在SJMP $等待。定時器0中斷服務程序:每隔一定時間按次序查表,把相應數值送給DAC0832進行數模轉換,實現正弦波輸出。外部中斷0中斷服務程序:配合按鍵掃描程序和數碼管顯示程序,對正弦波參數進行設置。3.硬件資源分配表存儲單元、寄存器用途備注R0定時器0中斷服務程序中,用作循環(huán)50個點的查表每來一次定時器中斷加1,到50后清0F0標志位用來判斷現在調整頻率還是幅值CU(09H)查表計數(用作頻率調整)每次加1,到21之后清0CHZ(12H)查表計數(用作幅值調整)每次加1,到5之后清0CTH0(10H)存儲調整后的TH0的初值CTL0(11H)存儲調整后的TL0的初值CDPH存儲調整后的DPH的值OUTBIT(08002H)位控制端口OUTSEG(08004H)段控制端口IN(08001H)鍵盤讀入端口LEDBuf(60H)顯示緩沖區(qū)首地址60H65H四、運行結果分析1.軟硬件調試(出現的問題、如何解決。)搭建PROTEUS仿真電路,進行軟件模擬仿真(圖12)圖12 PROTEUS仿真電路此電路和實際電路有差異,主要用于前期的軟件仿真,基本的波形發(fā)生,測試MATLAB軟件計算出的數值運行后是否滿足設計要求。此外,我還用此電路測試了取不同點數時,波形差異。分別測試了30點、50點、70點以及100點,點數越多越接近正弦,點數越少失真越嚴重。但是點數過多,所能達到的頻率最低值越大,不能滿足本設計中頻率達到1000HZ的要求。經試驗,取50點可以達到最好的效果,是頻率達到要求,波形又不失真嚴重。前期仿真完成后,進行上機調試。起初,加上鍵盤顯示程序時,鍵盤和顯示程序時鐘程序始終不正常。經老師指點,改變思路,在進行頻率和幅度設置時,關掉波形發(fā)生功能。順利完成調試。2.運行結果系統(tǒng)上電,產生50HZ,-5V+5V正弦波。按單脈沖發(fā)生鍵,進入設置程序,按鍵盤0鍵決定調節(jié)頻率還是幅值;按1鍵進行調節(jié);按2鍵完成設置,開始輸出波形。(圖13、圖14、圖15、圖16分別為幾種不同頻率和幅值的輸出波形)圖13 正弦波(100HZ,-5V+5V)圖13 正弦波(100HZ,-4V+4V)圖14 正弦波(200HZ,-4V+4V)五、設計總結本次設計題目是正弦信號發(fā)生器。用到的硬件有按鍵、數碼管顯示、譯碼電路、DAC0832、8051單片機。通過這次設計,進一步熟悉了這些硬件的用法。熟悉了WAVE編程軟件的使用。對匯編語言進行單片機程序設計有了更深一步的認識。完成本次設計后,學到了一種新的編程思路:大量的應用查表的方式進行程序設計,可以有效的增加程序執(zhí)行的效率,縮短其執(zhí)行時間,一些對程序執(zhí)行時間有嚴格要求的場合,可以用此思路進行設計。當然,查表方式進行程序設計亦有其缺點:占用大量的內部ROM空間,對于一些內部ROM空間不是很充足的單片機,過多的表可能導致ROM空間不足。因此,進行程序設計時要將查表方式和算法方式進行綜合考慮,選擇效率較高的方式進行設計,也可以將兩種方式有效結合起來。 此次設計能順利完成,要感謝李老師的指導,在加入鍵盤和顯示程序時,遇到了困難,是李老師的指導,使我走出了泥潭。六、參考資料1 胡宴如. 高頻電子線路M.高教出版社. 2001.9:12-19 2 盧屹. 數字鎖相環(huán)的參數設計及其應用J 通信技術2001,(9):12-153 涂時亮等. 單片微機軟件設計技術.重慶:科學技術文獻出版社重慶分社,19884 張志良. 單片機原理及控制技術.北京:機械工業(yè)出版社,20015 徐君毅等,單片微型計算機原理與應用.上海:上海科學技術版社,19886 成都木馬科技. 單片機原理及應用.北京:北京希望電子出版社,19887 宋培義等.單片機原理、接口技術及應用.北京:中國廣播電視出版社,19998 何利民.I2C總線應用系統(tǒng)設計.北京:北京航空航天大學出版社,1994附錄:源程序ORG 0000H AJMP MAIN ORG 0003H LJMP WBZD0 ORG 000BH LJMP DSZD0 ORG 0030H CU EQU 09H CTH0 EQU 10H CTL0 EQU 11H CHZ EQU 12H CDPH EQU 13H OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 IN equ 08001h ; 鍵盤讀入口 LEDBuf equ 60h ; 顯示緩沖MAIN: MOV CHZ,#0 MOV A,#00H MOV DPTR,#09000H MOV TMOD,#11H MOV TH0,#0FFH MOV TL0,#0EDH SETB EA SETB ET0 SETB ET1 SETB EX1 SETB IT0 SETB IT1 MOV CDPH,#09H SETB EX0 MOV CTH0,#0FFH MOV CTL0,#0FH SETB TR0 SJMP $Delay: mov r7, #0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6個八段管 mov r2, #00100000b ; 從左邊開始顯示Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 關所有八段管 mov a, r0 mov dptr, #OUTSEG movx dptr, a mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 顯示一位八段管 mov r6, #1 call Delay mov a, r2 ; 顯示下一位 rr a mov r2, a inc r0 djnz r1, Loop retTestKey: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 輸出線置為0 mov dptr, #IN movx a, dptr ; 讀入鍵狀態(tài) cpl a anl a, #0fh ; 高四位不用 retGetKey: mov dptr, #OUTBIT mov P2, dph mov r0, #Low(IN) mov r1, #00100000b mov r2, #6KLoop: mov a, r1 ; 找出鍵所在列 cpl a movx dptr, a cpl a rr a mov r1, a ; 下一列 movx a, r0 cpl a anl a, #0fh jnz Goon1 ; 該列有鍵入 djnz r2, KLoop mov r2, #0ffh ; 沒有鍵按下, 返回 0ffh sjmp ExitGoon1: mov r1, a ; 鍵值 = 列 X 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ; r2 = (r2-1)*4 mov a, r1 ; r1中為讀入的行值 mov r1, #4LoopC: rrc a ; 移位找出所在行 jc Exit inc r2 ; r2 = r2+ 行值 djnz r1, LoopCExit: mov a, r2 ; 取出鍵碼 mov dptr, #KeyTable movc a, a+dptr mov r2, aWaitRelease: mov dptr, #OUTBIT ; 等鍵釋放 clr a movx dptr, a mov r6, #10 call Delay call TestKey jnz WaitRelease mov a, r2 retKeyTable: ; 鍵碼定義 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08h db 00h, 01h, 04h, 07h LEDMAP: ; 八段管顯示碼 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hWBZD0 : CLR ET0; ;禁止定時器中斷,不再產生波形 CLR F0 ; ;flag mov LEDBuf+0, #0h ; 顯示 8.8.8.8. mov LEDBuf+1, #0h mov LEDBuf+2, #0h mov LEDBuf+3, #0h mov LEDBuf+4, #0 mov LEDBuf+5, #0 K1: CALL DisplayLED ; ;顯示程序 call TestKey ;;檢測按鍵 JZ K1 call GetKey ; ;獲取鍵值 ANL A,#0FH CJNE A,#0,NE1 ;;判斷是否按下0鍵,0鍵功能:輸入頻率還是幅值的轉換 CPL F0 JB F0,BB ; ;輸入幅值還是頻率的標志 MOV LEDBuf+0, #71H SJMP BB1 BB: MOV LEDBuf+0, #00111110B BB1:LJMP K1 NE1:CJNE A,#1,EE SJMP CC EE:LJMP NE2 CC:JB F0,AF MOV A,CU MOV DPTR,#TABSJH ;CTH0里面內容TH0,CTL0里面內容TL0 MOVC A,A+DPTR MOV CTH0,A MOV A,CU MOV DPTR,#TABSJL MOVC A,A+DPTR MOV CTL0,A INC CU MOV A,CU CJNE A,#21,S1 MOV CU,#0S1: mov LEDBuf+1, #0h mov LEDBuf+2, #0h mov LEDBuf+3, #0h mov LEDBuf+4, #0 mov LEDBuf+5, #0 MOV A,CU MOV DPTR,#TAB7SEG6 MOVC A,A+DPTR MOV LEDBuf+5,A MOV A,CU MOV DPTR,#TAB7SEG5 MOVC A,A+DPTR MOV LEDBuf+4,A MOV A,CU MOV DPTR,#TAB7SEG4 MOVC A,A+DPTR MOV LEDBuf+3,A MOV A,CU MOV DPTR,#TAB7SEG3 MOVC A,A+DPTR MOV LEDBuf+2,A SJMP K1 AF: INC CHZ MOV A,CHZ CJNE A,#1,MM1 MOV CDPH,#0CH SJMP W1MM1: CJNE A,#2,MM2 MOV CDPH,#0BH SJMP W1MM2: CJNE A,#3,MM3 MOV CDPH,#0AH SJMP W1MM3: CJNE A,#4,MM4 MOV CDPH,#09H SJMP W1MM4: MOV CDPH,#0DH MOV CHZ,#0 SJMP W1 W1: mov LEDBuf+1, #0h mov LEDBuf+2, #0h mov LEDBuf+3, #0h mov LEDBuf+4, #0 mov LEDBuf+5, #0 MOV DPTR,#TAB7SEG1 MOV A,CHZ MOVC A,A+DPTR MOV LEDBuf+5,A LJMP K1 NE2: CJNE A,#2,NE3 SJMP MEND NE3: LJMP K1 MEND: SETB ET0; RETI DSZD0: MOV TH0,CTH0 MOV TL0,CTL0 MOV DPH,CDPH MOV DPL,#0 MOV A,R0 MOVC A,A+DPTR MOV DPTR,#09000H MOVX DPTR,A INC R0 CJNE R0,#50,LL MOV R0,#0 LL: RETITAB7SEG1:DB 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h DB 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hTAB7SEG2:DB 0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0TAB7SEG3:DB 0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,06H,0TAB7SEG4:DB 0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,0H ,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH ,0TAB7SEG5:DB 0H ,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,0TAB7SEG6:DB 06H ,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,0TABSJH:DB 0F8H,0FCH,0FDH,0FEH,0FEH,0FEH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHTABSJL:DB 30H,18H,65H,0CH,70H,0B2H,0E2H,06H,21H,38H,38H,9cH,0bdH,0ceH,0D8H,0DEH,0E3H,0E7H,0E9H,0ECHORG 0900HTAB1: DB 128, 144, 160, 175, 190, 203, 216, 227, 236, 244, 250, 254, 255, 255, 254, 250, 244

溫馨提示

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

評論

0/150

提交評論