2051單片機(jī)仿PT2272軟件解碼程序
本程序是用51單片機(jī)來(lái)軟件解碼pt2262編碼,是一個(gè)無(wú)線服務(wù)呼叫器的代碼已經(jīng)成功的在產(chǎn)品的應(yīng)用,有LED顯示.
并有原理圖與pcb文件以及完整的代碼提供下載:
http://www.51hei.com/ziliao/file/37724122PT2272.rar
; =========================================================; ================================================================; PT2272 模擬解碼器(接收來(lái)自射頻解碼模塊的2262格式串行數(shù)據(jù)流); 管理三位數(shù)碼管顯示器; 利用AT24C32實(shí)現(xiàn)堆棧式掉電緩存保護(hù),通過(guò)特殊的清除發(fā)射器清除堆棧; 顯示器具有兩級(jí)亮度變化; 具有蜂鳴器,新的編碼收到后,蜂鳴器鳴響2/3次,顯示器高亮,三秒后正常;; CPU: AT89C2051@12MHz;; COPYRIGHT yanggt@163.net SEP 9, 2004; ===============================================================; ===================================================================EESIZE EQU 32768 ;EEPROM容量(32768/16384/8192/4096/2048/1024/512)PWDF EQU 50H ;EEPROM中用于標(biāo)識(shí)歷史記錄有效MYA0_3 EQU 00010101B ;有效識(shí)別碼,不匹配則不響應(yīng)MYCLRL EQU 00H ;主控手機(jī)編碼值(目前為 0000H)MYCLRH EQU 00H ;根據(jù)A4-A11計(jì)算得到(00 D7 D6 D5 D4 D3 D2 D1)(D0)BELONT EQU 40 ;聲音鳴響時(shí)間BELOFT EQU 20 ;靜音時(shí)間SCL BIT P3.0 ;AT24C32(4K字節(jié))SDA BIT P3.1SIGPIN BIT P3.2 ;接收信號(hào)入口BELL BIT P3.3 ;蜂鳴器控制VSEL BIT P1.0 ;LED亮度選擇,H=高亮度U0E BIT P3.5 ;個(gè)位LED位選U1E BIT P3.4 ;十位LED位選U2E BIT P3.7 ;百位LED位選BELLSW BIT 78H ;蜂鳴器運(yùn)行期間=1EEEMPTY BIT 79H ;EEPROM空標(biāo)志BELLON BIT 7AH ;通知蜂鳴器鳴響CODEOK BIT 7BH ;收到的編碼正確TMK250 BIT 7CH ;250us標(biāo)志,每250us置位一次SIGING BIT 7DH ;手機(jī)發(fā)射信號(hào)正在持續(xù)=1,無(wú)信號(hào)=0LEDHIGH BIT 7EH ;顯示器亮度標(biāo)志=0:正常;=1:高亮TOUTMK BIT 7FH ;顯示器降低亮度時(shí)間已到=1RBUF81 DATA 20H ;后8位第一次采樣結(jié)果A4-A11RBUF82 DATA 21H ;后8位第二次采樣結(jié)果A4-A11RBUF44 DATA 22H ;前4位第12次采樣結(jié)果A0-A3SIGPOT DATA 23H ;接收引腳上次電平,直接保存P3口全部?jī)?nèi)容SIGMSK EQU 04H ;SIG----P3.2TCNTL DATA 24H ;定時(shí)計(jì)數(shù)器(4ms時(shí)基)TCNTH DATA 25HTMX16 DATA 26H ;16*250=4000us=4msBELLTM DATA 27H ;鳴響時(shí)間DBUF0 DATA 28H ;個(gè)位顯示緩沖區(qū)DBUF1 DATA 29H ;十位DBUF2 DATA 2AH ;百位EEPTRL DATA 2BH ;EEPROM當(dāng)前位置指針EEPTRH DATA 2CHEEPOL DATA 2DH ;保存清除指針EEPOH DATA 2EH ;RES2F DATA 2FH ;使用其中的標(biāo)志位EEBUF DATA 30H ;30-37H, I2C緩沖區(qū)BELLCNT DATA 38H ;鳴響次數(shù)計(jì)數(shù)器(3/2/1)BELLTMK DATA 39HCODEL DATA 40H ;接收到編碼低位CODEH DATA 41H ; 高位CODELK DATA 42H ;保存上一個(gè)編碼CODEHK DATA 43H ;CODE1L DATA 44HCODE1H DATA 45H; =======================================================; =============================================================ORG 0000HLJMP START; ===================================================================; 250us進(jìn)入一次,每16次(4ms)切換一次顯示位; ==================================================================ORG 000BH ;定時(shí)器0中斷入口,獨(dú)占 R7TM0SUB: SETB TMK250TM0_4MS:DJNZ TMX16, TM0_EMOV TMX16, #10HJNB BELLSW, TM0_CLYDJNZ BELLTM, TM0_CLYSETB BELLONTM0_CLY:JB TOUTMK, TM0_0 ;每4ms執(zhí)行一次DJNZ TCNTL, TM0_0DJNZ TCNTH, TM0_0SETB TOUTMKTM0_0: CJNE R7, #0, TM0_1 ;當(dāng)前顯示位CLR U2EMOV P1, DBUF0INC R7SETB U0ERETITM0_1: CJNE R7, #1, TM0_2CLR U0EMOV P1, DBUF1INC R7SETB U1ERETITM0_2: CLR U1EMOV P1, DBUF2MOV R7, #0SETB U2ERETITM0_E: RETI; ===============================================================; =======================================================START: MOV P1, #00H ;關(guān)閉顯示器,正常亮度CLR BELLONCLR BELLACALL EECHK ;檢查EEPROM,確定指針,提取其中最后一個(gè)歷史記錄號(hào)碼ACALL TOBUFMOV TMX16, #10H ;中斷計(jì)數(shù)寄存器置初始值16SETB TOUTMK ;延遲定時(shí)器處于停止?fàn)顟B(tài)CLR U0ECLR U1ECLR U2EMOV R7, #00H ;從第一位開(kāi)始顯示MOV TMOD, #12H ;TIMER0, MODE 2, TIMER1, MODE 1MOV TL0, #06HMOV TH0, #06H ;時(shí)間=250usSETB TR0SETB ET0SETB EAMOV A, #6-1 ;開(kāi)機(jī)時(shí)蜂鳴器自動(dòng)鳴響ACALL BELL_SMOV BELLTM, #BELONT-20ACALL LEDOFFCLR LEDHIGH ;關(guān)閉高亮度MOV SIGPOT, #00H ;假設(shè)開(kāi)始時(shí)接收引腳=0CLR SIGINGSETB F0;=--=--=--=--=--=--=--=--=--=--==--=--=--=--=--=--MAIN: JNB BELLSW, MAIN_S0ACALL BELL_MMAIN_S0:JNB LEDHIGH, MAIN_00 ;顯示器普通亮度,不檢查標(biāo)志JNB TOUTMK, MAIN_0ACALL LEDOFF ;顯示器回到正常亮度CLR LEDHIGHJB EEEMPTY, MAIN_0 ;沒(méi)有尚未確認(rèn)的編碼AJMP MAIN_01MAIN_00:JB EEEMPTY, MAIN_0 ;沒(méi)有尚未確認(rèn)的編碼JNB TOUTMK, MAIN_0MOV A, #2-1ACALL BELL_S ;鳴響MAIN_01:MOV TCNTL, #LOW(5000/4) ;高亮度持續(xù)3000ms=3s后恢復(fù)MOV TCNTH, #HIGH(5000/4)CLR TOUTMKMOV BELLTM, #30MAIN_0: MOV A, P3 ;監(jiān)視SIG引腳電平變化XCH A, SIGPOTXRL A, SIGPOTANL A, #SIGMSKJZ MAIN ;A=0表示引腳電平無(wú)變化SETB F0ACALL GETCOD ;開(kāi)始接收,出錯(cuò)后直接返回JC MAIN ;接收代碼無(wú)效,舍棄。ACALL FINDJC MAIN ;C=1,表示代碼無(wú)效,什么也不發(fā)生MOV CODE1L, CODELMOV CODE1H, CODEHCLR F0ACALL GETCOD ;開(kāi)始接收,出錯(cuò)后直接返回SETB F0JC MAIN ;接收代碼無(wú)效,舍棄。ACALL FINDJC MAIN ;C=1,表示代碼無(wú)效,什么也不發(fā)生MOV B, AMOV A, CODE1LXRL A, CODELJNZ MAIN_0DMOV A, CODE1HXRL A, CODEHJZ MAIN_0CMAIN_0D:MOV CODE1L, CODELMOV CODE1H, CODEHCLR F0ACALL GETCOD ;開(kāi)始接收,出錯(cuò)后直接返回SETB F0JC MAIN ;接收代碼無(wú)效,舍棄。ACALL FINDJC MAIN ;C=1,表示代碼無(wú)效,什么也不發(fā)生MOV B, AMOV A, CODE1LXRL A, CODELJNZ MAIN_EMOV A, CODE1HXRL A, CODEHJNZ MAIN_EMAIN_0C:MOV A, BJNZ MAIN_1 ;A=1:主控手機(jī),轉(zhuǎn)去退棧MOV BELLCNT, #4-1MOV A, CODELXRL A, CODELKJNZ MAIN_0AMOV A, CODEHXRL A, CODEHKJZ MAIN_0B;這里可以進(jìn)行編碼過(guò)濾=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-MAIN_0A:MOV BELLCNT, #6-1ACALL EEPUSH ;其他手機(jī),轉(zhuǎn)去保存、顯示ACALL TOBUFMAIN_0B:SETB TOUTMKMOV TCNTL, #LOW(3000/4) ;高亮度持續(xù)3000ms=3s后恢復(fù)MOV TCNTH, #HIGH(3000/4)CLR TOUTMKSETB LEDHIGH ;顯示器進(jìn)入高亮狀態(tài)MOV A, BELLCNTACALL BELL_S ;鳴響MOV BELLTM, #BELONTAJMP MAINMAIN_1: MOV A, CODEL ;核對(duì)手機(jī)號(hào)碼XRL A, #MYCLRLJNZ MAIN_EMOV A, CODEHXRL A, #MYCLRHJNZ MAIN_EACALL EEPOP ;執(zhí)行退棧操作MAIN_E: AJMP MAIN; =============================================================; 主程序結(jié)束; ============================================================BELL_S: MOV BELLCNT, ASETB BELLSWSETB BELLRET; ===============================================================BELL_M: JBC BELLON, BELLMRETBELLM: MOV A, BELLCNTBELLM0: JNB ACC.0, BELLM1MOV BELLTM, #BELOFT ;A.0=1,正在鳴響,應(yīng)該關(guān)閉CLR BELLAJMP BELLM9BELLM1: MOV BELLTM, #BELONT ;靜音狀態(tài),應(yīng)該打開(kāi)SETB BELLBELLM9: DJNZ BELLCNT, BELLMECLR BELLSWCLR BELLBELLME: RET; ===================================================================LEDOFF: ANL DBUF0, #0FEHANL DBUF1, #0FEHANL DBUF2, #0FEHRET; ================================================================; ============================================================TM1SET: CLR TR1 ;1,ACALL=2CLR TF1 ;1MOV TL1, DPL ;2MOV TH1, DPH ;2SETB TR1 ;1RET ;2, TOTAL=2+1+1+2+2+1+2=11us; =====================================================================; 接收代碼,收到兩個(gè)相同的編碼即認(rèn)可。; 發(fā)射結(jié)束后接收下一個(gè)。; =============================================================GETCOD: NOPGETC_S: MOV DPTR, #65535-50000 ;在50ms內(nèi)搜索至少持續(xù)4ms的低電平 [***]ACALL TM1SETGETC_S0:MOV R6, #16 ;16*250us=4000us=4msGETC_S1:CLR TMK250GETC_S2:JB TF1, GETC_E ;這里超時(shí)認(rèn)為目前無(wú)發(fā)射器工作,或上次發(fā)射已結(jié)束。JB SIGPIN, GETC_S0JNB TMK250, GETC_S2DJNZ R6, GETC_S1MOV R5, #4*2 ;首先接收A0-A3,共4位,8個(gè)采樣點(diǎn)MOV DPTR, #65535-8000 ;在接下來(lái)的8ms內(nèi)必須出現(xiàn)上升沿 [***]ACALL TM1SETGETC_0: JB TF1, GETC_E ;這里超時(shí)認(rèn)為目前無(wú)發(fā)射器工作,或上次發(fā)射已結(jié)束。JNB SIGPIN, GETC_0; JB SIGING, GETC_F ;上次發(fā)射尚未結(jié)束,直接返回,不接收編碼。; AJMP GETC_20JNB SIGING, GETC_20 ;上次發(fā)射尚未結(jié)束,直接返回,不接收編碼。JNB F0, GETC_20AJMP GETC_FGETC_1P:MOV DPTR, #65535-1250+11+2 ;在接下來(lái)的1250us內(nèi)必須出現(xiàn)低電平 [***]ACALL TM1SETGETC_1: JB TF1, GETC_F ;超時(shí)JB SIGPIN, GETC_1MOV DPTR, #65535-1250+11+2 ;在接下來(lái)的1250us內(nèi)必須出現(xiàn)上升沿 [***]ACALL TM1SETGETC_2: JB TF1, GETC_F ;超時(shí)JNB SIGPIN, GETC_2GETC_20:MOV DPTR, #65535-500+11+2 ;固定延遲500us后采樣ACALL TM1SETJNB TF1, $MOV C, SIGPIN ;采樣接收信號(hào)MOV A, RBUF44RLC AMOV RBUF44, ADJNZ R5, GETC_1P ;循環(huán)接收4個(gè)數(shù)據(jù)位,進(jìn)行8次采樣MOV R5, #8*2 ;接收A4-A11,共8個(gè)數(shù)據(jù)位,16個(gè)采樣點(diǎn)MOV R0, #RBUF81 ;RBUF81存放第一次采樣值GETC_3P:MOV DPTR, #65535-1250+11+2 ;在接下來(lái)的1250us內(nèi)必須出現(xiàn)低電平 [***]ACALL TM1SETGETC_3: JB TF1, GETC_F ;超時(shí)JB SIGPIN, GETC_3MOV DPTR, #65535-1250+11+2 ;在接下來(lái)的1250us內(nèi)必須出現(xiàn)上升沿 [***]ACALL TM1SETGETC_4: JB TF1, GETC_F ;超時(shí)JNB SIGPIN, GETC_4GETC_40:MOV DPTR, #65535-500+11+2 ;固定延遲500us后采樣ACALL TM1SETJNB TF1, $MOV C, SIGPIN ;采樣接收信號(hào)MOV A, @R0RLC AMOV @R0, AXRL 00H, #RBUF81 ;在RBUF81和RBUF82之間切換XRL 00H, #RBUF82DJNZ R5, GETC_3P ;循環(huán)接收8個(gè)數(shù)據(jù)位,進(jìn)行16次采樣SETB SIGINGCLR CRETGETC_E: CLR SIGINGGETC_F: SETB CRET; ===========================================================; ===============================================================FIND: MOV A, RBUF44 ;分析代碼CJNE A, #MYA0_3, FIND_EMOV R4, RBUF81MOV R5, RBUF82MOV R6, #7MOV R0, #00HMOV R1, #00HFIND_L: MOV A, R0 ;結(jié)果乘以 3CLR CRLC AMOV B, AMOV A, R1RLC AXCH A, BADD A, R0MOV R0, AMOV A, BADDC A, R1MOV R1, A ;結(jié)果乘以 3 結(jié)束MOV A, R4RLC AMOV R4, A ;D7-->CMOV A, R5RL AMOV R5, AANL A, #01H ;D7-->A.0ADDC A, R0 ;A.0+C+R0MOV R0, AMOV A, R1ADDC A, #00HMOV R1, ADJNZ R6, FIND_L ;確定A4-A10的編碼結(jié)果CLR AMOV C, RBUF81.0 ;分析代碼,確定是否主控手機(jī)MOV ACC.0, CMOV C, RBUF82.0ADDC A, #00H ;A=(0,1,2)。A=0:非主控手機(jī);A=1:主控手機(jī);A=2:無(wú)效手機(jī)JB ACC.1, FIND_E ;A=2!MOV CODEL, R0MOV CODEH, R1CLR CRET ;A=0/1FIND_E: SETB CRET; ===============================================================; ======================================================================EECHK: MOV EEPTRL, #00H ;0000H記錄不用,因?yàn)?000H用于判斷EEPROM是否空MOV EEPTRH, #00HMOV EEBUF, #00HMOV EEBUF+1, #00HEECHK0: MOV CODEL, EEBUF ;放到編碼緩沖區(qū)MOV CODEH, EEBUF+1ANL CODEH, #0FHMOV DPL, EEPTRL ;讀取棧底的兩個(gè)字節(jié)MOV DPH, EEPTRHINC DPTRINC DPTR ;指向下一個(gè)記錄,但是暫時(shí)不修改指針MOV A, DPHADD A, #HIGH(65536-EESIZE) ;???JC EECHK9 ;已經(jīng)檢查完所有記錄空間。MOV EEPOL, DPLMOV EEPOH, DPH ;暫時(shí)保存在這里MOV R0, #EEBUFMOV B, #02HACALL I2CD_RMOV A, EEBUF+1ANL A, #0F0HXRL A, #PWDFJNZ EECHK9MOV EEPTRL, EEPOLMOV EEPTRH, EEPOHAJMP EECHK0EECHK9: CLR EEEMPTY ;假設(shè)非空MOV A, EEPTRLORL A, EEPTRHJNZ EECHKESETB EEEMPTY ;聲明EEPROM空EECHKE: RET; =======================================================================; =============================================================EEPUSH: MOV EEBUF, CODEL ;寫入EEPROM棧,采用實(shí)棧頂MOV EEBUF+1, CODEHORL EEBUF+1, #PWDF ;標(biāo)志,50HMOV DPL, EEPTRLMOV DPH, EEPTRHINC DPTR ;每個(gè)記錄進(jìn)入,指針加 2INC DPTRMOV A, DPH ;進(jìn)行堆棧溢出檢查ADD A, #HIGH(65536-EESIZE)JC EEPUSHEANL DPL, #0FEHMOV EEPTRL, DPLMOV EEPTRH, DPHMOV R0, #EEBUFMOV B, #02HACALL I2CD_WCLR EEEMPTY ;聲明EEPROM非空EEPUSHE:RET; ============================================================; ================================================================EEPOP: MOV A, EEPTRL ;EEPROM退出操作ORL A, EEPTRHJZ EEPOPBEEPOP0: MOV EEPOL, EEPTRLMOV EEPOH, EEPTRHCLR C ;指針減 2,指向上一個(gè)數(shù)據(jù)MOV A, EEPTRLSUBB A, #02HMOV EEPTRL, AMOV A, EEPTRHSUBB A, #00HMOV EEPTRH, A ;指針已經(jīng)更新MOV A, EEPTRL ;檢查退出一個(gè)記錄后,堆棧是否變空?ORL A, EEPTRHJNZ EEPOP1MOV CODEL, AMOV CODEH, ASETB EEEMPTY ;聲明EEPROM空AJMP EEPOP9EEPOP1: MOV DPL, EEPTRL ;讀取棧頂記錄MOV DPH, EEPTRHMOV R0, #EEBUFMOV B, #02HACALL I2CD_RMOV CODEL, EEBUF ;放到編碼緩沖區(qū)MOV CODEH, EEBUF+1ANL CODEH, #0FH ;屏蔽掉標(biāo)志EEPOP9: MOV EEBUF, #00H ;清除剛才已經(jīng)退棧的記錄MOV EEBUF+1, #00HMOV DPL, EEPOLMOV DPH, EEPOHMOV R0, #EEBUFMOV B, #02HACALL I2CD_WACALL TOBUF ;送到顯示緩沖區(qū)ACALL LEDOFFEEPOPB: MOV A, #2-1ACALL BELL_S ;鳴響; MOV BELLTM, #30EEPOPE: RET; ======================================================; =====================================================================TOBUF: MOV A, CODEL ;填寫顯示緩沖區(qū)MOV B, CODEH ;/100MOV R2, #00HTOBUF_0:CLR CSUBB A, #100XCH A, BSUBB A, #00HXCH A, BJC TOBUF_8INC R2AJMP TOBUF_0TOBUF_8:ADD A, #100MOV B, #10DIV ABMOV DPTR, #FONTMOVC A, @A+DPTRMOV DBUF1, AMOV A, BMOVC A, @A+DPTRMOV DBUF0, AMOV A, R2MOVC A, @A+DPTRMOV DBUF2, AMOV CODELK, CODELMOV CODEHK, CODEHRET; =================================================================; ===========================================================DELAY: PUSH ACC ;延遲時(shí)間=A*10msMOV A, #20DLY1: PUSH ACCMOV A, #250DJNZ ACC, $ ;500usPOP ACCDJNZ ACC, DLY1POP ACCDJNZ ACC, DELAYRET;======= I2C 子程序 =========================================; I2CD_W, I2CD_R ;LAYER 1; I2C_O, I2C_I ;LAYER 2; I2C_BG, I2C_ED ;LAYER 3;==========================================================; 向存儲(chǔ)器寫入幾個(gè)字節(jié),最多8個(gè)字節(jié)。; 入口:DPTR 要寫的EEPROM存儲(chǔ)單元地址。; R0 指向要寫入字節(jié)在RAM的首地址。; B 寫入字節(jié)個(gè)數(shù)。; 出口:如果 C=1,說(shuō)明寫出錯(cuò)。I2CD_W: ACALL I2C_BGMOV A, #10100000B ;寫命令A(yù)CALL I2C_OJC I2CD_WE ;C=1, 未收到 ACK 位,出錯(cuò),不再繼續(xù)處理,直接返回MOV A, DPHACALL I2C_OJC I2CD_WEMOV A, DPLACALL I2C_OJC I2CD_WEI2CD_WL:MOV A, @R0ACALL I2C_OJC I2CD_WEINC R0DJNZ B, I2CD_WLACALL I2C_EDCLR CRETI2CD_WE:ACALL I2C_EDSETB CRET; ========================================================; 從 EEPROM 讀入幾個(gè)字節(jié); 入口:DPTR 要讀的存儲(chǔ)單元地址。; R0 指向要讀緩沖區(qū)在RAM的首地址。; B 讀入字節(jié)個(gè)數(shù)。; 出口:讀到的內(nèi)容在緩沖區(qū)中,如果 C=1,說(shuō)明讀出錯(cuò)。I2CD_R: ACALL I2C_BGMOV A, #10100000B ;先發(fā)送[寫]命令A(yù)CALL I2C_OJC I2CD_RE ;C=1, 未收到 ACK 位,出錯(cuò),不再繼續(xù)處理,直接返回MOV A, DPH ;發(fā)送地址低位ACALL I2C_OJC I2CD_REMOV A, DPL ;發(fā)送地址低位ACALL I2C_OJC I2CD_REACALL I2C_BGMOV A, #10100001B ;發(fā)送讀命令A(yù)CALL I2C_OJC I2CD_REI2CD_IB:MOV DPL, #08H ;取得一個(gè)字節(jié)SETB SDAI2CD_IL:SETB SCL ;SCL=1NOPMOV C, SDA ;MCU 采樣 SDA,送到 C 中RLC A ;C->ACC.0CLR SCL ;SCL=0DJNZ DPL, I2CD_IL ;得到的一個(gè)字節(jié)在 ACC 中MOV @R0, AINC R0MOV A, BXRL A, #01HJZ I2CD_GOCLR SDANOPI2CD_GO:SETB SCLNOPCLR SCLDJNZ B, I2CD_IB ;取得不止一個(gè)字節(jié)ACALL I2C_EDCLR CRETI2CD_RE:ACALL I2C_EDSETB CRET; =================================================================;向 IIC 總線發(fā)送一個(gè)字節(jié)I2C_O: PUSH BMOV B, #08HI2C_OLP:RLC A ;ACC.7 -> CMOV SDA, CSETB SCL ;SCL=1NOPCLR SCL ;SCL=0DJNZ B, I2C_OLPSETB SDA ;準(zhǔn)備接收 ACK 位SETB SCL ;SCL=1, [SDA=1]NOPMOV C, SDACLR SCLPOP BRET ;C=1, 未收到 ACK 位,出錯(cuò), C=0, 收到 ACK 位,正常; =====================================================I2C_BG: SETB SCL ;確保SCL=HIGHCLR SDA ;向 IIC 總線發(fā)送開(kāi)始位NOPCLR SCLRET; =========================================================================================I2C_ED: CLR SDASETB SCLNOPSETB SDA ;向 IIC 總線發(fā)送停止位RET; ================================================================;最好顯示000-999=1000個(gè),否則容易造成誤解,這里顯示全部2187個(gè),0-9,A-F,H,L,P,U,Y; ==============================================================FONT: DB 0FDH ;"0"DB 061H ;"1"DB 0DBH ;"2"DB 0F3H ;"3"DB 067H ;"4"DB 0B7H ;"5"DB 0BFH ;"6"DB 0E1H ;"7"DB 0FFH ;"8"DB 0F7H ;"9"DB 0EFH ;"A"DB 03FH ;"B"DB 09DH ;"C"DB 07BH ;"D"DB 09FH ;"E"DB 08FH ;"F"DB 06FH ;"H"DB 071H ;"J"DB 01DH ;"L"DB 0CFH ;"P"DB 07DH ;"U"DB 077H ;"Y"; ==================================================END
led顯示器相關(guān)文章:led顯示器原理
蜂鳴器相關(guān)文章:蜂鳴器原理
評(píng)論