出租車計(jì)費(fèi)系統(tǒng)項(xiàng)目設(shè)計(jì)方案.doc_第1頁
出租車計(jì)費(fèi)系統(tǒng)項(xiàng)目設(shè)計(jì)方案.doc_第2頁
出租車計(jì)費(fèi)系統(tǒng)項(xiàng)目設(shè)計(jì)方案.doc_第3頁
出租車計(jì)費(fèi)系統(tǒng)項(xiàng)目設(shè)計(jì)方案.doc_第4頁
出租車計(jì)費(fèi)系統(tǒng)項(xiàng)目設(shè)計(jì)方案.doc_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

出租車計(jì)費(fèi)系統(tǒng)項(xiàng)目設(shè)計(jì)方案14.1 系統(tǒng)設(shè)計(jì)要求 以CPLD/FPGA為主體,設(shè)計(jì)并制作一臺(tái)出租車計(jì)費(fèi)系統(tǒng),系統(tǒng)的方框圖如圖14.1所示。 1計(jì)費(fèi)及顯示 (1) 里程,即汽車行駛里程,用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為km,精確到0.1 km。 (2) 單價(jià),即里程單價(jià),用三位數(shù)字顯示,顯示方式為“X.XX”,單價(jià)為元/km,根據(jù)每天不同的時(shí)間段有兩種情況:當(dāng)時(shí)間段為06:0023:00時(shí)單價(jià)為1.40元/km,其他時(shí)間段內(nèi)單價(jià)為1.80元/km。 (3) 等候時(shí)間,用四位數(shù)字顯示分鐘和秒,顯示方式為“XX:XX”,等候的定義是:當(dāng)汽車行駛速度小于或等于12 km/h時(shí)為“等候”。 (4) 等候單價(jià),等候單價(jià)有兩種情況:在等候時(shí)間小于1小時(shí)的情況下,等候單價(jià)為1元每5分鐘;在等候時(shí)間大于1小時(shí)的情況下,等候單價(jià)為20元每小時(shí)。 (5) 費(fèi)用的計(jì)算,出租車的起價(jià)為5.00元,當(dāng)里程小于2 km時(shí),按起價(jià)計(jì)算費(fèi)用;當(dāng)里程大于2 km時(shí)按下式計(jì)算費(fèi)用: 費(fèi)用=里程里程單價(jià)+等候時(shí)間等候單價(jià) (6) 費(fèi)用的顯示,用五位數(shù)字顯示,顯示方式為“XXX.XX”,單價(jià)為元。 2時(shí)鐘及顯示 當(dāng)出租車在常運(yùn)狀態(tài)下,應(yīng)能顯示當(dāng)前的時(shí)間。在汽車熄火的情況下,時(shí)鐘必須正常運(yùn)行,但是可以不顯示時(shí)鐘。 3計(jì)費(fèi)開始提示 當(dāng)出租車載上乘客并起步后,將空車指示牌扳倒時(shí),空車指示牌里的指示燈熄滅,并有語音或燈光提示信號(hào)。14.2 系統(tǒng)設(shè)計(jì)方案 14.2.1 系統(tǒng)總體設(shè)計(jì)方案 本系統(tǒng)擬采用單片機(jī)和FPGA的結(jié)合進(jìn)行系統(tǒng)的主體設(shè)計(jì),系統(tǒng)原理框圖如圖14.2所示。 14.2.2 測(cè)控FPGA的VHDL程序設(shè)計(jì) 根據(jù)系統(tǒng)的設(shè)計(jì)要求,我們可將整個(gè)測(cè)控FPGA系統(tǒng)CZJFXT分為七個(gè)模塊,它們分別是:分頻器模塊FPQ,等待判別模塊DDPB,里程計(jì)算模塊LCJS,里程計(jì)費(fèi)模塊LCJF,等待計(jì)時(shí)模塊DDJS,等待計(jì)費(fèi)模塊DDJF,輸出數(shù)據(jù)選擇模塊SCXZ。其內(nèi)部組成原理圖如圖14.3所示。 分頻器模塊FPQ:將外部時(shí)鐘信號(hào)SCLK(設(shè)計(jì)時(shí)假設(shè)為200 Hz)經(jīng)過適當(dāng)分頻后,產(chǎn)生1 Hz的系統(tǒng)工作用基準(zhǔn)時(shí)鐘信號(hào)CLK1HZ,供系統(tǒng)中的有關(guān)模塊計(jì)時(shí)用。 等待判別模塊DDPB:根據(jù)速度傳感器脈沖信號(hào)WCLK和分頻器產(chǎn)生的基準(zhǔn)時(shí)鐘信號(hào)CLK1HZ,計(jì)算單位時(shí)間里WCLK的脈沖個(gè)數(shù)(每km產(chǎn)生1000個(gè)脈沖信號(hào),即每米產(chǎn)生1個(gè)脈沖信號(hào)),亦即出租車行駛速度,從而判別出租車是否處于等待狀態(tài),發(fā)出等待標(biāo)志信號(hào)DDBZ。 里程計(jì)算模塊LCJS:根據(jù)速度傳感器脈沖信號(hào)WCLK和等待標(biāo)志DDBZ,對(duì)出租車行駛的里程數(shù)XSLC進(jìn)行計(jì)算,同時(shí)發(fā)出里程標(biāo)志信號(hào)LCBZ和里程計(jì)費(fèi)標(biāo)志信號(hào)JFBZ。 里程計(jì)費(fèi)模塊LCJF:在計(jì)費(fèi)標(biāo)志信號(hào)JFBZ、等待標(biāo)志信號(hào)DDBZ、里程標(biāo)志信號(hào)LCBZ和時(shí)段標(biāo)志信號(hào)XDBZ等信號(hào)的控制下,計(jì)算行駛里程超過2 km以上里程的費(fèi)用LCFY。 等待計(jì)時(shí)模塊DDJS:在等待標(biāo)志信號(hào)DDBZ和基準(zhǔn)時(shí)鐘信號(hào)CLK1HZ的控制下,進(jìn)行等待時(shí)間DDSJ的計(jì)算,其中DDSJ的低8位表示等待時(shí)間的秒數(shù),DDSJ的高8位表示等待時(shí)間的分鐘數(shù),同時(shí)根據(jù)等待時(shí)間的長(zhǎng)短發(fā)出一個(gè)熄燈標(biāo)志信號(hào)XDBZ。 等待計(jì)費(fèi)模塊DDJF:在等待標(biāo)志信號(hào)DDBZ和熄燈標(biāo)志信號(hào)XDBZ控制下,進(jìn)行等待費(fèi)用DDFY的計(jì)費(fèi)操作。 輸出數(shù)據(jù)選擇模塊SCXZ :根據(jù)單片機(jī)發(fā)出的數(shù)據(jù)傳輸選擇控制信號(hào)SEL,選擇有關(guān)計(jì)算處理結(jié)果傳輸給單片機(jī)。SEL與被傳送數(shù)據(jù)的具體關(guān)系如表14.1所示。 14.2.3 單片機(jī)控制程序設(shè)計(jì) 單片機(jī)模塊包括單片機(jī)AT89C51及其控制的顯示和鍵盤系統(tǒng),控制口如圖14.3(略 )所示。 AT89C51對(duì)FPGA的數(shù)據(jù)進(jìn)行運(yùn)算,計(jì)算出用車總費(fèi)用并送顯示系統(tǒng)顯示,同時(shí)它接收鍵盤信息并處理顯示切換。系統(tǒng)采用6+1顯示,6個(gè)數(shù)碼管作常規(guī)顯示,一個(gè)數(shù)碼管作狀態(tài)顯示。按鍵共有5個(gè),分別是功能切換鍵、確定鍵、修改鍵、啟動(dòng)模擬鍵和空車牌壓下模擬鍵。涉及的主要流程圖如圖14.414.8所示。14.3 主 要 源 程 序 14.3.1 主要VHDL源程序 1分頻器模塊FPQ的VHDL源程序 -FPQ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY FPQ IS PORT(SCLK: IN STD_LOGIC; -SCLK=200 Hz CLK1HZ: OUT STD_LOGIC); -CLK1HZ=1 HzEND ENTITY FPQ; ARCHITECTURE ART OF FPQ IS SIGNAL CNT100: INTEGER RANGE 0 TO 99; SIGNAL CLK1: STD_LOGIC; BEGIN PROCESS(SCLK)BEGIN IF SCLKEVENT AND SCLK=1 THEN IF CNT100=99 THEN CNT100=0; CLK1=NOT CLK1; ELSE CNT100=CNT100+1; END IF; ELSE CLK1=CLK1; END IF; CLK1HZ=CLK1; END PROCESS;END ARCHITECTURE ART;2等待判別模塊DDPB的VHDL源程序-DDPB.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDPB IS PORT(START,WCLK:IN STD_LOGIC; CLK1HZ:IN STD_LOGIC; DDBZ:OUT STD_LOGIC); END ENTITY DDPB;ARCHITECTURE ART OF DDPB IS SIGNAL T60S:STD_LOGIC; SIGNAL WCLKCOU:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN -產(chǎn)生60 s周期性跳變信號(hào)進(jìn)程 PROCESS(START, CLK1HZ) IS VARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START=1 THENCNT60:=00000000; T60S=0; ELSIF CLK1HZEVENT AND CLK1HZ=1 THEN IF CNT60=00111100 THEN -CNT60=60 T60S=1; CNT60:=00000000; ELSE CNT60: =CNT60+1; T60S=0; END IF; END IF; END PROCESS ; -每分鐘行駛距離計(jì)算進(jìn)程 PROCESS(START, WCLK, T60S) IS BEGIN IF START=1 THEN WCLKCOU=00000000; ELSIF WCLKEVENT AND WCLK=1 THEN IF T60S=1 THEN WCLKCOU=00000000; ELSE WCLKCOU=WCLKCOU+1; -距離計(jì)算,單位為m END IF; END IF; END PROCESS ; -等待標(biāo)志判別進(jìn)程 PROCESS(WCLKCOU,T60S) IS BEGIN IF T60SEVENT AND T60S=1 THEN IF WCLKCOU=11001000 THEN -WCLKCOU=200 DDBZ=1; -等待 ELSEDDBZ=0; -行駛 END IF; END IF; END PROCESS ; END ARCHITECTURE ART;3里程計(jì)算模塊LCJS的VHDL源程序-LCJS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITYLCJS IS PORT(START, DDBZ, WCLK: IN STD_LOGIC; XSLC: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LCBZ,JFBZ:OUT STD_LOGIC);END ENTITY LCJS;ARCHITECTURE ART OF LCJS IS SIGNAL BMS:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL BMS1: INTEGER RANGE 0 TO 99999; SIGNAL JFBZ1: STD_LOGIC; BEGIN -里程計(jì)算及標(biāo)志產(chǎn)生進(jìn)程 PROCESS(START,WCLK) VARIABLE MS: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START=1 THEN MS:=00000000; BMS=0000000000000000;LCBZ=0; ELSIF WCLKEVENT AND WCLK=1 THEN IF DDBZ=0 THEN IF MS=01100011 THEN MS:=00000000; BMS=20 THEN LCBZ=1; -大于2 km標(biāo)志 END IF; ELSE MS:=MS+1; -米數(shù)計(jì)算 END IF; END IF; END IF; END PROCESS;-里程計(jì)算結(jié)果輸出 XSLC=BMS; -里程計(jì)算結(jié)果轉(zhuǎn)換 BMS1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1=0; END CASE; END PROCESS; -計(jì)費(fèi)標(biāo)志去毛刺進(jìn)程 PROCESS(WCLK,JFBZ1) IS BEGIN IF WCLKEVENT AND WCLK=1 THEN JFBZ=JFBZ1; END IF; END PROCESS;END ARCHITECTURE ART;4里程計(jì)費(fèi)模塊LCJF的VHDL源程序-LCJF.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LCJF IS GENERIC(SD1:INTEGER:=140; -04:0023:00單價(jià) SD2:INTEGER:=180); -其他時(shí)段單價(jià)PORT(LCBZ,JFBZ,START,DDBZ,SDBZ:IN STD_LOGIC; LCFY:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY LCJF;ARCHITECTURE ART OF LCJF IS SIGNAL LCFY1: STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN PROCESS(START, LCBZ, SDBZ, JFBZ) BEGIN IF START=1 THEN LCFY1=0000000000000000; ELSIF JFBZEVENT AND JFBZ=1 THEN IF DDBZ=0 THEN -行駛狀態(tài) IF LCBZ=0 THEN -2 km以內(nèi) LCFY1=0000000000000000; ELSIF LCBZ=1 THEN -2 km以上 IF SDBZ=0 THEN LCFY1=LCFY1+SD1; ELSIF SDBZ=1 THEN LCFY1=LCFY1+SD2; END IF; END IF; END IF; END IF; END PROCESS; LCFY=LCFY1;END ARCHITECTURE ART;5等待計(jì)時(shí)模塊DDJS的VHDL源程序-DDJS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDJS IS PORT(START, DDBZ: IN STD_LOGIC; CLK1HZ: IN STD_LOGIC; DDSJ: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); XDBZ: OUT STD_LOGIC);END ENTITY DDJS;ARCHITECTURE ART OF DDJS IS SIGNAL MS,MG,FS, FG: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL XIDENG: STD_LOGIC; BEGIN PROCESS(START, DDBZ, CLK1HZ) IS BEGIN IF START=1 THEN MS=0000;MG=0000; FS=0000;FG=0000; ELSIF CLK1HZEVENT AND CLK1HZ=1 THEN IF DDBZ=1 THEN IF MG=9 THEN MG=0000; IF MS=5 THEN MS=0000; IF FG=9 THEN FG=0000; IF FS=5 THEN XIDENG=1;FS=0000; ELSE FS=FS+1; -分?jǐn)?shù)十位計(jì)算 END IF; ELSE FG=FG+1; -分?jǐn)?shù)個(gè)位計(jì)算 END IF; ELSE MS=MS+1; -秒數(shù)十位計(jì)算 END IF; ELSE MG=MG+1; -秒數(shù)個(gè)位計(jì)算 END IF; END IF; END IF; END PROCESS; XDBZ=XIDENG; DDSJ(15 DOWNTO 12)=FS; DDSJ(11 DOWNTO 8)=FG; DDSJ(7 DOWNTO 4)=MS; DDSJ(3 DOWNTO 0)=MG;END ARCHITECTURE ART;6等待計(jì)費(fèi)模塊DDJF的VHDL源程序-DDJF.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDJF IS -每分鐘等待費(fèi)用定義,單位為分 GENERIC(WDJ1: INTEGER:=20; WDJ2: INTEGER:=33); PORT(START, XDBZ, DDBZ, CLK1HZ: IN STD_LOGIC; DDFY:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY DDJF;ARCHITECTURE ART OF DDJF IS SIGNAL DDFY1: STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL T60S: STD_LOGIC; BEGIN -產(chǎn)生60 s周期性跳變信號(hào)進(jìn)程 PROCESS(CLK1HZ) IS BEGIN IF CLK1HZEVENT AND CLK1HZ=1 THEN IF CNT60=00111100 THEN -CNT60=60 T60S=1;CNT60=00000000; ELSE CNT60=CNT60+1;T60S=0; END IF; END IF; END PROCESS ; -等待費(fèi)用計(jì)算進(jìn)程 PROCESS(T60S,XDBZ,DDBZ) IS BEGIN IF START=1 THEN DDFY1=0000000000000000; ELSIF T60SEVENT AND T60S=1 THEN IF DDBZ=1 THEN IF XDBZ=0 THEN -等待時(shí)間小于1小時(shí) DDFY1=DDFY1+WDJ1; ELSIF XDBZ=1 THEN -等待時(shí)間大于1小時(shí) DDFY1=DDFY1+WDJ2; END IF; END IF; END IF; END PROCESS; -等待費(fèi)用計(jì)算結(jié)果輸出 DDFY=DDFY1;END ARCHITECTURE ART;7輸出數(shù)據(jù)選擇模塊SCXZ的VHDL源程序-SCXZ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCXZ IS PORT( SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0); XSLC: IN STD_LOGIC_VECTOR(15 DOWNTO 0);LCFY: IN STD_LOGIC_VECTOR(15 DOWNTO 0); DDSJ: IN STD_LOGIC_VECTOR(15 DOWNTO 0); DDFY: IN STD_LOGIC_VECTOR(15 DOWNTO 0); DATA: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY SCXZ;ARCHITECTURE ART OF SCXZ IS BEGIN DATA= DDSJ(7 DOWNTO 0) WHEN SEL=000ELSE DDSJ(15 DOWNTO 8) WHEN SEL=001ELSE LCFY(7 DOWNTO 0) WHEN SEL=010ELSE LCFY(15 DOWNTO 8) WHEN SEL=011ELSE DDFY(7 DOWNTO 0) WHEN SEL=100ELSE DDFY(15 DOWNTO 8) WHEN SEL=101ELSE XSLC(7 DOWNTO 0) WHEN SEL=110ELSE XSLC(15 DOWNTO 8) WHEN SEL=111ELSE 00000000;END ARCHITECTURE ART; 8系統(tǒng)總體組裝的VHDL源程序 系統(tǒng)總體組裝的VHDL源程序請(qǐng)讀者根據(jù)圖14.3的測(cè)控FPGA系統(tǒng)CZJFXT內(nèi)部組成原理圖自行完成。14.3.2 單片機(jī)匯編語言源程序; CZJFXT.ASMLED8 EQU 7FHLED7 EQU 7EH ; 時(shí)間顯緩LED6 EQU 7DHLED5 EQU 7CHLED4 EQU 7BHLED3 EQU 7AHLED2 EQU 79HLED1 EQU 78HFUNKEY EQU P1.0 ; 功能SELKEY EQU P1.1 ; 選擇FIXKEY EQU P1.2 ; 修改RUN EQU P1.4 ; 運(yùn)行信號(hào)(傳感器)RUNBZ EQU 28H.4ZK EQU P1.5 ; 載客信號(hào)-單片機(jī)(傳感器)ZKBZ EQU 28H.2 ; 載客標(biāo)志SZKBZ EQU P2.7 ; 送FPGA的載客標(biāo)志INT_R1 EQU 46HINT_R0 EQU 47HINT_R2 EQU 48HKEYNUM EQU 49HADA EQU P2.0ADB EQU P2.1ADC EQU P2.2SDBZ EQU P3.3 ; 時(shí)段標(biāo)志LCBZ EQU P2.4 ; 里程標(biāo)志DDBZ EQU P2.5 ; 等待標(biāo)志DDBZC EQU 28H.5XDBZ EQU P2.6 ; 等待超過1小時(shí)標(biāo)志FYDY8 EQU 3FH ; 費(fèi)用顯緩FYDY7 EQU 3EHFYDY6 EQU 3DHFYDY5 EQU 3CHFYDY4 EQU 3BHFYDY3 EQU 3AHFYDY2 EQU 39HFYDY1 EQU 38H; 主程序START: JMPMAIN ; 轉(zhuǎn)移到主程序 ORG 000BH ; 中斷服務(wù)入口地址LJMP PIT0 ORG 30HMAIN:CLEAR: MOVR0, #00H MOVR1, #128 MOVA, #00HL1: MOVR0, A INC R0 DJNZR1, L1 MOVP2, #00H MOV SP, #60H ; 開辟堆棧區(qū)MOV TMOD, #01H ; 定時(shí)器0,定時(shí)工作方式1,16位MOV TL0, #0B0H ; 初值為4C00H,50 msMOV TH0, #03CH SETBTR0 ; 啟動(dòng)定時(shí)器工作SETBIE.7 ; 中斷總允許SETBIE.1 ; 允許定時(shí)中斷MOV30H, #14H ; 中斷循環(huán)次數(shù)初值為20次ML2: LCALLKKEYIMLL3: CJNEA, #04H, ML4 SETB RUNBZ SJMPML2; 調(diào)用鍵盤掃描程序ML4: CJNEA, #00H, MLL1 CLR28H.0CLR28H.6 LCALLSJJZ LCALLKKEYI CJNEA, #00H, MLL3 LCALLLCDJDISP LCALLKKEYI CJNEA, #00H, MLL3 CLR 28H.0 LJMPML6 LCALLKKEYIMLLL1: CJNE A, #00H, MLL3 LJMPML5MLL1: JNBRUNBZ, ML2 CJNE A, #05H, ML2 SETB ZKBZ SETBSZKBZ NOP CLR SZKBZ ; LCALLQJDISP; 起價(jià)顯示ML5: LCALL FYDISP; 費(fèi)用顯示 LCALL KKEYII JNB28H.3, ML3 ; 有鍵按下轉(zhuǎn)ML3 LJMPML5 ; 沒鍵按下繼續(xù)刷新費(fèi)用顯示ML3: LJMPMLL3ML6: LCALLLCDISP LCALLKKEYII JNB28H.3, MLLL1 LJMPML6 DDDISP: ; 等待時(shí)間顯示子程序 MOVFYDY8, #0FH MOV FYDY7, #12H MOV FYDY6, #12H MOVA,R6 CJNEA, #03H, SL0 MOVR0, 40H LCALLDAAD1 MOV A, R2 ; 是否到了60 s? XRL A, #24H JNZ SJL4 ; 不到,轉(zhuǎn)RET1返回 LCALLCLR0 ; 到了60 s,則秒顯示緩沖單元清0 LJMPSJL4SL0: CJNE A, #02H, SL1 MOVR0, 40H LCALL DAAD1 MOVA, R2 ; 是否到了60 s? XRLA, #60H JNZ SJL4 ; 不到,轉(zhuǎn)RET1返回 LCALL CLR0 ; 到了60 s,則秒顯示緩沖單元清0 LJMPSJL4SL1: CJNE A, #01H, SJL4 MOV R0, 40H LCALL DAAD1 MOV A, R2 ; 是否到了60 s? XRLA, #60H JNZ SJL4 ; 不到,轉(zhuǎn)RET1返回 LCALL CLR0 ; 到了60 s,則秒顯示緩沖單元清0 LJMPSJL4SJL4: LCALLKKEYI CJNE A, #01H, SJL1 DEC40H DEC 40H DJNZ R6, SJL3NEXT3:RET ;ENDIF IF 1=2QJDISP: ; 起價(jià)顯示參數(shù)子程序 SETB28H.0 MOVFYDY8, #0FH MOV FYDY7, #12H MOV FYDY6, #12H JB 28H.1, NEXT9 MOV FYDY5, #00H MOV FYDY4, #00H MOV FYDY3, #05H MOV FYDY2, #00H MOV FYDY1, #00HNEXT9: RET ENDIF LCDJDISP: ; 里程單價(jià)顯示子程序 SETB28H.0 MOVFYDY8, #0DH MOVFYDY7, #12H MOV FYDY6, #12H MOV FYDY5, #12H MOV FYDY4, #12H JNB SDBZ, DJL1 MOV FYDY3, #01HMOV FYDY2, #04H MOV FYDY1, #00H LJMP DJL2DJL1: MOV FYDY3, #01H MOV FYDY2, #08H MOV FYDY1, #00HDJL2: RETLCDISP: ;ANLP2, #0FAH SETBP2.1 MOVR0, #4FH ; 讀入數(shù)據(jù) MOVR3, #02H ; 讀3次P0口LCDL0: MOVA, P0 MOVR0, A DECR0 MOVA,P2INCA ; 指向CPLD下一個(gè)數(shù)據(jù)ADRC ADRB ADRA= MOVP2, A DJNZR3, LCDL0 ANL P2, #0F8H MOV 58H, 4EH ; 另存 MOV 59H, 4FH MOV 22H, 4DH MOV 21H, 4EH MOV 20H, 4FHLCALL HEXBCD2 SETB 28H.6 MOV FYDY8, #13H MOV FYDY7, #12H MOV FYDY6, #12H MOV FYDY5, #12H RET FYDISP:ANL P2, #0F8H MOV R0, #4FH ; 讀入數(shù)據(jù) MOV R3, #02H ; 讀3次P0口FYL1: MOV A, P0 MOV R0, A DEC R0 MOV A, P2 INC A ; 指向CPLD下一個(gè)數(shù)據(jù)ADRC ADRB ADRA= MOV P2, A DJNZ R3, FYL1 ANL P2, #0F8H MOV 58H, 4EH ; 另存 MOV 59H, 4FH MOV 5FH, #0F4H MOV 5EH, #01h LCALL ADDMB MOV 22H, 4DH MOV 21H, 4EH MOV 20H, 4FH MOV 4FH, #00H MOV 4EH, #00H MOV 4DH, #00H LCALL HEXBCD2 SETB 28H.0 MOV FYDY8, #0FH MOV FYDY7, #12H MOV FYDY6, #12H RET; BCD轉(zhuǎn)換及送顯緩HEXBCD2: NOP ; 3BYTE HEX TO 4BYTE BCD HEX(2220H)-BCD(2623H)MUBTD: MOVR0, #23H MOV R7, #04H CLR ALOPP1: MOV R0, A INC R0 DJNZ R7, LOPP1 MOV R7, #18H ; 32BITLOOP4: MOV R1, #20H MOV R6, #03H CLR CLOPP2: MOVA, R1 RLCA MOV R1, A INC R1 DJNZ R6, LOPP2 MOV R5, #04H MOV R0, #23HLOOP3: MOV A, R0 ADDC A, R0 DAA MOV R0, A INC R0DJNZ R5, LOOP3 DJNZ R7, LOOP4SBCD: MOV R0, #23H ; MOV R1, #38H MOV R3, #04HHEX1: MOV A, R0 ANL A, #0FH MOV R1, A INC R1 MOV A, R

溫馨提示

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

評(píng)論

0/150

提交評(píng)論