3、顯示器的接口方法與接口電路
LED數碼顯示器的接口方法 單片機與LED數碼顯示器有以硬件為主和以軟件為主的兩種接口方法。
從圖上可看出,在數據總和LED顯示器之間,必須有鎖存器或I/O接口電路,此外還應有專用的譯碼器/驅動器,通過譯碼器把1位十六進制數(4位二進制數)或BCD碼譯碼為相應的顯示段碼,然后由驅動器提供足夠的功率去驅動發光二極管。 4、以軟件為主的接口方法 這種接口方法的電路如圖所示,它是以軟件查表代替硬件,不但省去了譯碼器,而且還能顯示更多的字符。但是驅動器是必不可少的,因為僅靠接口提供不了較大的電流供LED顯示器使用。 實際使用的LED數碼顯示器位數較多,為了簡化線路、降低成本,大多采用以軟件為主的接口方法。對于多位LED數碼顯示器,通常采用動態掃描顯示方法,即主個地循環地點亮各位顯示器。這樣雖然任一時刻只有1位顯示器被點亮,但是由于人眼具有視覺殘留效應,看起來與全部顯示器持續點亮的效果基本一樣(在亮度上要有差別)。 為了實現LED顯示器的動態掃描顯示,除了要給顯示段碼之外,還要對顯示器進行位的控制。即通常所說的'段控 `和'位控'。因此對于多位LED數碼顯示器的接口電路來說,需要有兩個輸出口,其中一個用于輸出顯示段碼;另一個用于輸出位控信號。'位控'實際上就是對LED顯示器的公共端進行控制,位控信號的數目與顯示器的位數相同。 8051的P1口為輸出口(段控口),用以輸出8位顯示段碼(包括小數點)?紤]到LED顯示器的段電流為8mA左右,不能用8051的P1口直接驅動,因此要加1級電流驅動。電流驅動器既可以用反相的,也可以用同相的。反相電流驅動器經常使用7406;同相電流驅動器則常用7407或74LS244。P3口作為輸出口(位控口),以P3.1、P3.2 、P3.3 輸出位控信號。由于位控信號控制的是LED顯示器的公共端,驅動電流較大,8段全亮時需約40--60mA。這里需要說明兩點:第一,當LED顯示器的段碼與位控信號均采用反相驅動以后,其控制規律也要顛倒過來,即共陽極的LED顯示器要按共陰極來控制;而共陰極的LED顯示器則要按共陽極來控制。當然,也可以采用1個同相和1個反相驅動器,其控制規律也應作相應的變動。第二, LED顯示器的段碼是并聯連接的,即在同一時刻,6個數碼管的顯示段碼是完全一樣的,這點需要特別加以注意。 5、 LED數碼顯示器的顯示方法 對于多位數碼顯示器來說,為了簡化線路、降低成本,往往采用以軟件為主的接口方法,即不使用專門的硬件譯碼器,而采用軟件程序進行譯碼。如前所述,由于各位數碼管的顯示段碼是互相并聯的,因此在同一時刻只能顯示同一種字符。對于這種接口電路來就,其顯示方法有靜態顯示和動態顯示兩種。 本設計采用的是動態顯示, 如果要在同一時刻顯示不同的字符,從電路上看,這是辦不到的。因此只能利用人眼對視覺的殘留效應,采用動態掃描顯示的方法, 逐個地循環點亮各個數碼管,每位顯示1ms左右,使人看起來就好像在同時顯示不同的字符一樣。 在進行動態掃描顯示時,往往事先并不知道應顯示什么內容,這樣也就無從選擇被顯示字符的顯示段碼。為此,一般采用查表的方法,由待顯示的字符通過查表得到其對應的顯示段碼。 2.6系統運行與精度調試 將調試好程序的目標代碼,通過編程器寫入AT89C51中,并將AT89C51插入用戶板上,接通電源,顯示器上應顯示“000”這3個數字。然后將溫度探頭放在要測試溫度的環境中,觀察數字溫度計與傳統的溫度計是否測量數據是一致的,一致則說明系統運行正常。 在系統的硬件和軟件分別調試成功后,可以進行系統的整體調試。先用仿真器進行調試,插好仿真頭,接好電源,啟動仿真器,將本數字溫度計的系統軟件裝入仿真器中,并運行,調試系統的整體配合的正確性,直到滿意為止。 下圖是AD590的封裝形式和用于測量熱力學溫度的基本應用電路。因為流過AD590的電流與熱力學溫度成正比,當電阻R1和電位器R2的電阻之和為1k時,輸出電壓VO隨溫度的變化為1mV/K。但由于AD590的增益有偏差,電阻也有誤差,因此應對電路進行調整。調整的方法為:把AD590放于冰水混合物中,調整電位器R2,使VO=273.2mV;蛟谑覝叵(25℃)條件下調整電位器,使VO=273.2+25=298.2(mV)。但這樣調整只可保證在0℃或25℃附近有較高精度。 軟件的設計
程序的設計是先利用AD590溫度傳感器將穩定的變化轉化為電壓的變化,然后送給ADC0809,在通過ADC0809將模擬信號轉化為數字信號在送給AT89C51,通過AT89C51進行數據處理,然后推動數碼管來顯示。 3.1軟件設計的總框圖
程序的匡圖如下;
將70H~78H內存循環清,P0、P1、P3端口置1,清累加器A,清P2口,轉換值存放首址,轉換8次控制 , 啟動測試,等A/D轉換結束信號后轉MOVD ,P3.7為0等待,數據處理和顯示 8090輸出允許,將A/D轉換值移入A,放入內存單元,關閉8090輸出,內存地址加1,通道地址移入A,通道地址加1,通道地址送8090,清進位標志,通道地址不等于8轉TESTCONT再測試,通道地址小于8轉TESTCONT再測試大于或等于8,A/D轉換結束 ,取A/D轉換數據結束,跳至WAIT等待A/D轉 換結束信號
3.2 A/D轉換的框圖
A/D轉換數據框圖;
3.3顯示電路的框圖
LED共陽顯示子程序;
賦顯示數據單元首址,掃描字,關顯示,取掃描字,開顯示,取顯示數據,取段碼表首 , 查顯示數據對應段碼,址段碼放入P1口,顯示1MS,指向下一地址,取P3口掃描字,四位顯示完轉ENDOUT結束,掃描字循環左移,掃描字放入R5暫存,顯示暫停,轉PLAY循環,顯示結束,端口置1
3.4 CPU數據處理的框圖
AT89C51進行數據的處理;
顯示數據初址(70H-77H),顯示通道路數(0-7),顯示數據轉為三位十進制BCD碼存入,7AH、79H、78H顯示單元內 , 顯示數據除100,商入7AH, A放入數10,余數與數10交換,余數除10 ,商入79H,余數入78H,每路顯示時間控制 4MS*255,調四位LED顯示程序,每路顯示時間控制,顯示下一路,通道顯示數值加1, 8路顯示未完轉DISLOOP1再循環
;* 主程序和中斷程序入口 * ORG 0000H ;程序執行開始地址 LJMP START ;跳至START執行 ORG 0003H ;外中斷0中斷入口地址 RETI ;中斷返回(不開中斷) ORG 000BH ;定時器T0中斷入口地址 RETI ;中斷返回(不開中斷) ORG 0013H ;外中斷1中斷入口地址 RETI ;中斷返回(不開中斷) ORG 001BH ;定時器T1中斷入口地址 RETI ;中斷返回(不開中斷) ORG 0023H ;串行口中斷入口地址 RETI ;中斷返回(不開中斷) ORG 002BH ;定時器T2中斷入口地址 RETI ;中斷返回(不開中斷) ;* 初始化程序中的各變量 * CLEARMEMIO: CLR A ; MOV P2,A ;P2口置0 MOV R0,#70H ;內存循環清0(70H-7BH) MOV R2,#0CH ; LOOPMEM: MOV @R0,A ; INC R0 ; DJNZ R2,LOOPMEM ; MOV A,#0FFH ; MOV P0,A ;P0、P1、P3端口置1 MOV P1,A ; MOV P3,A ; RET ;子程序返回 ;* 主 程 序 * START: LCALL CLEARMEMIO ;初始化 MAIN: LCALL DISPLAY ;顯示數據一次 LCALL TEST ;測量一次 AJMP MAIN ;返回MAIN循環 NOP ;PC值出錯處理 NOP ;空操作 NOP ;空操作 LJMP START ;重新復位起動 DISPLAY: MOV R3,#08H ;8路信號循環顯示控制 MOV R0,#70H ;顯示數據初址(70H-77H) MOV 7BH,#00H ;顯示通道路數(0-7) DISLOOP1: MOV A,@R0 ;顯示數據轉為三位十進制BCD碼存入 MOV B,#100 ;7AH、79H、78H顯示單元內 DIV AB ;顯示數據除100 MOV 7AH,A ;商入7AH MOV A,#10 ;A放入數10 XCH A,B ;余數與數10交換 DIV AB ;余數除10 MOV 79H,A ;商入79H MOV 78H,B ;余數入78H MOV R2,#0FFH ;每路顯示時間控制 4MS*255 DISLOOP2: LCALL DISP ;調四位LED顯示程序 DJNZ R2,DISLOOP2 ;每路顯示時間控制 INC R0 ;顯示下一路 INC 7BH ;通道顯示數值加1 DJNZ R3,DISLOOP1 ;8路顯示未完轉DISLOOP1再循環 RET ;8路顯示完子程序結束 ; LED共陽顯示子程序,顯示內容在78H-7BH,數據在P1輸出,列掃描在P3.0-P3.3口 DISP: MOV R1,#78H ;賦顯示數據單元首址 MOV R5,#0FEH ;掃描字 PLAY: MOV P1,#0FFH ;關顯示 MOV A,R5 ;取掃描字 ANL P3,A ;開顯示 MOV A,@R1 ;取顯示數據 MOV DPTR,#TAB ;取段碼表首址 MOVC A,@A+DPTR ;查顯示數據對應段碼 MOV P1,A ;段碼放入P1口 LCALL DL1MS ;顯示1MS INC R1 ;指向下一地址 MOV A,P3 ;取P3口掃描字 JNB ACC.3,ENDOUT ;四位顯示完轉ENDOUT結束 RL A ;掃描字循環左移 MOV R5,A ;掃描字放入R5暫存 MOV P3,#0FFH ;顯示暫停 AJMP PLAY ;轉PLAY循環 ENDOUT: MOV P3,#0FFH ;顯示結束,端口置1 MOV P1,#0FFH ; RET ;子程序返回 ;LED數碼顯示管用共陽段碼表,分別對應0-9,最后一個是"熄滅符" TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ; 1MS延時子程序,LED顯示用 DL1MS: MOV R6,#14H ; DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;模數轉換測量子程序 TEST: CLR A ;清累加器A MOV P2,A ;清P2口 MOV R0,#70H ;轉換值存放首址 MOV R7,#08H ;轉換8次控制 LCALL TESTART ;啟動測試 WAIT: JB P3.7,MOVD ;等A/D轉換結束信號后轉MOVD AJMP WAIT ;P3.7為0等待 TESTART: SETB P2.3 ;鎖存測試通道地址 NOP ; 延時2微秒 NOP ; CLR P2.3 ;測試通道地址鎖存完畢 SETB P2.4 ; 啟動測試,發開始脈沖 NOP ; 延時2微秒 NOP ; CLR P2.4 ; 發啟動脈沖完畢 NOP ;延時4微秒 NOP ; NOP ; NOP ; RET ;子程序調用結束 ; 取A/D轉換數據至70H-77H內存單元 MOVD: SETB P2.5 ;8090輸出允許 MOV A,P0 ;將A/D轉換值移入A MOV @R0,A ;放入內存單元 CLR P2.5 ;關閉8090輸出 INC R0 ;內存地址加1 MOV A,P2 ;通道地址移入A INC A ;通道地址加1 MOV P2,A ; 通道地址送8090 CLR C ;清進位標志 CJNE A,#08H,TESTCON ; 通道地址不等于8轉TESTCONT再測試 JC TESTCON ; 通道地址小于8轉TESTCONT再測試 CLR A ; 大于或等于8,A/D轉換結 MOV P2,A ; P2口置0 MOV A,#0FFH ; MOV P0,A ; P0口置1 MOV P1,A ; P1口置1 MOV P3,A ; P3口置1 RET ; 取A/D轉換數據結束 TESTCON: LCALL TESTART ; 再發測試啟動脈沖 LJMP WAIT ; 跳至WAIT等待A/D轉換結束信號 END ; 程序結束
元件清單;
名稱 規格 數量 備注 單片機 AT89C51 1 DIP40 A/D轉換器 ADC0809 1 DIP28 溫度探頭 AD590 1 DIP8 D觸發器 74LS74 1 DIP14 運放放大器 LM741 3 DIP8 數碼管 共陽 3 八段 晶振 6MHZ 1 三極管 PNP 3 9012 電阻 10Ω 4 電阻 20Ω 1 電阻 470Ω 8 電阻 1K 2 電阻 2K 1 電阻 4.7K 3 電阻 5K 1 電阻 9K 1 電阻 50K 1 開關 1 電容 30P 2 瓷片
首頁 上一頁 1 2 3 4 5 下一頁 尾頁 4/5/5 相關論文
首頁 上一頁 1 2 3 4 5 下一頁 尾頁 4/5/5
本站部分文章來自網絡,如發現侵犯了您的權益,請聯系指出,本站及時確認刪除 E-mail:349991040@qq.com
論文格式網(www.donglienglish.cn--論文格式網拼音首字母組合)提供其他論文畢業論文格式,論文格式范文,畢業論文范文