出租車計費系統(tǒng)的設計與分析 EDA課程設計
![出租車計費系統(tǒng)的設計與分析 EDA課程設計_第1頁](https://file3.zhuangpeitu.com/fileroot3/2022-5/28/793ed35d-05a7-4dc8-9f8d-bdb89beccab3/793ed35d-05a7-4dc8-9f8d-bdb89beccab31.gif)
![出租車計費系統(tǒng)的設計與分析 EDA課程設計_第2頁](/images/s.gif)
![出租車計費系統(tǒng)的設計與分析 EDA課程設計_第3頁](/images/s.gif)
《出租車計費系統(tǒng)的設計與分析 EDA課程設計》由會員分享,可在線閱讀,更多相關《出租車計費系統(tǒng)的設計與分析 EDA課程設計(61頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第14章 出租車計費系統(tǒng)的設計與分析 14.1 系統(tǒng)設計要求 14.2 系統(tǒng)設計方案 14.3 主要源程序 14.4 系統(tǒng)仿真/硬件驗證 14.5 設計技巧分析 14.6 系統(tǒng)擴展思路 14.1 系統(tǒng)設計要求 以CPLD/FPGA為主體,設計并制作一臺出租車計費系統(tǒng),系統(tǒng)的方框圖如圖14.1所示。 1.計費及顯示 (1) 里程,即汽車行駛里程,用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為km,精確到0.1 km。 (2) 單價,即里程單
2、價,用三位數(shù)字顯示,顯示方式為“X.XX”,單價為元/km,根據(jù)每天不同的時間段有兩種情況:當時間段為06:00~23:00時單價為1.40元/km,其他時間段內(nèi)單價為1.80元/km。 (3) 等候時間,用四位數(shù)字顯示分鐘和秒,顯示方式為“XX:XX”,等候的定義是:當汽車行駛速度小于或等于12 km/h時為“等候”。 (4) 等候單價,等候單價有兩種情況:在等候時間小于1小時的情況下,等候單價為1元每5分鐘;在等候時間大于1小時的情況下,等候單價為20元每小時。 (5) 費用的計算,出租車的起價為5.
3、00元,當里程小于2 km時,按起價計算費用;當里程大于2 km時按下式計算費用: 費用=里程╳里程單價+等候時間╳等候單價 (6) 費用的顯示,用五位數(shù)字顯示,顯示方式為“XXX.XX”,單價為元。 2.時鐘及顯示 當出租車在常運狀態(tài)下,應能顯示當前的時間。在汽車熄火的情況下,時鐘必須正常運行,但是可以不顯示時鐘。 3.計費開始提示 當出租車載上乘客并起步后,將空車指示牌扳倒時,空車指示牌里的指示燈熄滅,并有語音或燈光提示信
4、號。 14.2 系統(tǒng)設計方案 14.2.1 系統(tǒng)總體設計方案 本系統(tǒng)擬采用單片機和FPGA的結(jié)合進行系統(tǒng)的主體設計,系統(tǒng)原理框圖如圖14.2所示。 14.2.2 測控FPGA的VHDL程序設計 ? 根據(jù)系統(tǒng)的設計要求,我們可將整個測控FPGA系統(tǒng)CZJFXT分為七個模塊,它們分別是:分頻器模塊FPQ,等待判別模塊DDPB,里程計算模塊LCJS,里程計費模塊LCJF,等待計時模塊DDJS,等待計費模塊DDJF,輸出數(shù)據(jù)選擇模塊SCXZ。其內(nèi)部組成原理圖如圖14.3所示。 分頻器模塊FP
5、Q:將外部時鐘信號SCLK(設計時假設為200 Hz)經(jīng)過適當分頻后,產(chǎn)生1 Hz的系統(tǒng)工作用基準時鐘信號CLK1HZ,供系統(tǒng)中的有關模塊計時用。 等待判別模塊DDPB:根據(jù)速度傳感器脈沖信號WCLK和分頻器產(chǎn)生的基準時鐘信號CLK1HZ,計算單位時間里WCLK的脈沖個數(shù)(每km產(chǎn)生1000個脈沖信號,即每米產(chǎn)生1個脈沖信號),亦即出租車行駛速度,從而判別出租車是否處于等待狀態(tài),發(fā)出等待標志信號DDBZ。 里程計算模塊LCJS:根據(jù)速度傳感器脈沖信號WCLK和等待標志DDBZ,對出租車行駛的里程數(shù)XSLC進行計算,同時發(fā)出里程標志信號LC
6、BZ和里程計費標志信號JFBZ。 里程計費模塊LCJF:在計費標志信號JFBZ、等待標志信號DDBZ、里程標志信號LCBZ和時段標志信號XDBZ等信號的控制下,計算行駛里程超過2 km以上里程的費用LCFY。 等待計時模塊DDJS:在等待標志信號DDBZ和基準時鐘信號CLK1HZ的控制下,進行等待時間DDSJ的計算,其中DDSJ的低8位表示等待時間的秒數(shù),DDSJ的高8位表示等待時間的分鐘數(shù),同時根據(jù)等待時間的長短發(fā)出一個熄燈標志信號XDBZ。 等待計費模塊DDJF:在等待標志信號DDBZ和熄燈標志信號XDBZ
7、控制下,進行等待費用DDFY的計費操作。 輸出數(shù)據(jù)選擇模塊SCXZ :根據(jù)單片機發(fā)出的數(shù)據(jù)傳輸選擇控制信號SEL,選擇有關計算處理結(jié)果傳輸給單片機。SEL與被傳送數(shù)據(jù)的具體關系如表14.1所示。 14.2.3 單片機控制程序設計 ? 單片機模塊包括單片機AT89C51及其控制的顯示和鍵盤系統(tǒng),控制口如圖14.3(略 )所示。 AT89C51對FPGA的數(shù)據(jù)進行運算,計算出用車總費用并送顯示系統(tǒng)顯示,同時它接收鍵盤信息并處理顯示切換。系統(tǒng)采用6+1顯示,6個數(shù)碼管作常規(guī)顯示,一個數(shù)碼管作狀態(tài)顯示。按鍵共有5個,分別是
8、功能切換鍵、確定鍵、修改鍵、啟動模擬鍵和空車牌壓下模擬鍵。涉及的主要流程圖如圖14.4~14.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;
9、 ENTITY FPQ IS PORT(SCLK: IN STD_LOGIC; --SCLK=200 Hz CLK1HZ: OUT STD_LOGIC); --CLK1HZ=1 Hz END ENTITY FPQ; ARCHITECTURE ART OF FPQ IS SIGNAL CNT100: INTEGER RANGE 0 TO 99; SIGNAL CLK1: STD_LOGIC; BEGIN PROCESS(SCLK) BEGIN IF SCLK'EVENT AND SCLK='1' THEN
10、 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.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC
11、_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
12、); BEGIN --產(chǎn)生60 s周期性跳變信號進程 PROCESS(START, CLK1HZ) IS VARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START='1' THEN CNT60:="00000000"; T60S<='0'; ELSIF CLK1HZ'EVENT AND CLK1HZ='1' THEN IF CNT60="00111100" THEN --CNT60=60 T60S<='1'; CNT60:="000000
13、00"; ELSE CNT60: =CNT60+'1'; T60S<='0'; END IF; END IF; END PROCESS ; --每分鐘行駛距離計算進程 PROCESS(START, WCLK, T60S) IS BEGIN IF START='1' THEN WCLKCOU<="00000000"; ELSIF WCLK'EVENT AND WCLK='1' THEN IF T60S='1' THEN WCLKCOU<="0000
14、0000"; ELSE WCLKCOU<=WCLKCOU+'1'; --距離計算,單位為m END IF; END IF; END PROCESS ; --等待標志判別進程 PROCESS(WCLKCOU,T60S) IS BEGIN IF T60S'EVENT AND T60S='1' THEN IF WCLKCOU<="11001000" THEN --WCLKCOU<=200 D
15、DBZ<='1'; --等待 ELSE DDBZ<='0'; --行駛 END IF; END IF; END PROCESS ; END ARCHITECTURE ART; 3.里程計算模塊LCJS的VHDL源程序 --LCJS.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY LCJS IS PORT(START, DDBZ,
16、 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 --里程計算及標志產(chǎn)生進程 PROCESS(
17、START,WCLK) VARIABLE MS: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START='1' THEN MS:="00000000"; BMS<="0000000000000000";LCBZ<='0'; ELSIF WCLK'EVENT AND WCLK='1' THEN IF DDBZ='0' THEN IF MS="01100011" THEN MS:="00000000"; BMS<=BMS+'1'; --百米數(shù)計算
18、 IF BMS>=20 THEN LCBZ<='1'; --大于2 km標志 END IF; ELSE MS:=MS+'1'; --米數(shù)計算 END IF; END IF; END IF; END PROCESS; --里程計算結(jié)果輸出 XSLC<=BMS; --里程計算結(jié)果轉(zhuǎn)換 BMS1<=CONV_INTEGER(BMS); --產(chǎn)生計費信號進程 PROCESS(BMS1) IS BEGIN CASE BMS1 IS
19、 WHEN 10|20|30|40|50|60|70|80|90|100=>JFBZ1<='1'; WHEN 110|120|130|140|150|160|170|180|190|200=>JFBZ1<='1'; WHEN 210|220|230|240|250|260|270|280|290|300=>JFBZ1<='1'; WHEN 310|320|330|340|350|360|370|380|390|400=>JFBZ1<='1'; WHEN 410|420|430|440|450|460|470|480|490|500=>JFBZ1
20、<='1'; WHEN 510|520|530|540|550|560|570|580|590|600=>JFBZ1<='1'; WHEN 610|620|630|640|650|660|670|680|690|700=>JFBZ1<='1'; WHEN 710|720|730|740|750|760|770|780|790|800=>JFBZ1<='1'; WHEN 810|820|830|840|850|860|870|880|890|900=>JFBZ1<='1'; WHEN 910|920|930|940|950|960|970|980
21、|990|1000=>JFBZ1<='1'; WHEN 1010|1020|1030|1040|1050|1060|1070|1080|1090|1100=>JFBZ1<='1'; WHEN 1110|1120|1130|1140|1150|1160|1170|1180|1190|1200=>JFBZ1<='1'; WHEN 1210|1220|1230|1240|1250|1260|1270|1280|1290|1300=>JFBZ1<='1'; WHEN 1310|1320|1330|1340|1350|1360|1370|1380|1390|14
22、00=>JFBZ1<='1'; WHEN 1410|1420|1430|1440|1450|1460|1470|1480|1490|1500=>JFBZ1<='1'; WHEN 1510|1520|1530|1540|1550|1560|1570|1580|1590|1600=>JFBZ1<='1'; WHEN 1610|1620|1630|1640|1650|1660|1670|1680|1690|1700=>JFBZ1<='1'; WHEN 1710|1720|1730|1740|1750|1760|1770|1780|1790|1800=>JFBZ
23、1<='1'; WHEN 1810|1820|1830|1840|1850|1860|1870|1880|1890|1900=>JFBZ1<='1'; WHEN 1910|1920|1930|1940|1950|1960|1970|1980|1990|2000=>JFBZ1<='1'; WHEN 3910|3920|3930|3940|3950|3960|3970|3980|3990|4000=>JFBZ1<='1'; WHEN OTHERS =>JFBZ1<='0'; END CASE; END PROCESS; --計費標志去毛刺進
24、程 PROCESS(WCLK,JFBZ1) IS BEGIN IF WCLK'EVENT AND WCLK='1' THEN JFBZ<=JFBZ1; END IF; END PROCESS; END ARCHITECTURE ART; 4.里程計費模塊LCJF的VHDL源程序 --LCJF.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY
25、 LCJF IS GENERIC(SD1:INTEGER:=140; --04:00~23:00單價 SD2:INTEGER:=180); --其他時段單價 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 PROC
26、ESS(START, LCBZ, SDBZ, JFBZ) BEGIN IF START='1' THEN LCFY1<="0000000000000000"; ELSIF JFBZ'EVENT 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以上 I
27、F 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.等待計時模塊DDJS的VHDL源程序 --DDJS.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.
28、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: S
29、TD_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 CLK1HZ'EVENT AND CLK1HZ='1' THEN IF DDBZ='1' THEN IF MG=9 THEN MG<="0000";
30、 IF MS=5 THEN MS<="0000"; IF FG=9 THEN FG<="0000"; IF FS=5 THEN XIDENG<='1';FS<="0000"; ELSE FS<=FS+'1'; --分數(shù)十位計算 END IF; ELSE FG<=FG+'1'; --分數(shù)個位計算 END IF; ELSE MS<=MS+'
31、1'; --秒數(shù)十位計算 END IF; ELSE MG<=MG+'1'; --秒數(shù)個位計算 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.等待計費模塊DDJF的VHDL源程序
32、 --DDJF.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY DDJF IS --每分鐘等待費用定義,單位為分 GENERIC(WDJ1: INTEGER:=20; WDJ2: INTEGER:=33); PORT(START, XDBZ, DDBZ, CLK1HZ: IN STD_LOGIC; DDFY:OUT STD_LOGIC_VEC
33、TOR(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周期性跳變信號進程 PROCESS(CLK1HZ) IS BEGIN IF CLK1HZ'EVENT AND CLK1HZ='1' THEN
34、 IF CNT60="00111100" THEN --CNT60=60 T60S<='1';CNT60<="00000000"; ELSE CNT60<=CNT60+'1';T60S<='0'; END IF; END IF; END PROCESS ; --等待費用計算進程 PROCESS(T60S,XDBZ,DDBZ) IS BEGIN IF START='1' THEN DDFY1<="0000000000000000"; ELSIF T60S'E
35、VENT AND T60S='1' THEN IF DDBZ='1' THEN IF XDBZ='0' THEN --等待時間小于1小時 DDFY1<=DDFY1+WDJ1; ELSIF XDBZ='1' THEN --等待時間大于1小時 DDFY1<=DDFY1+WDJ2; END IF; END IF; END IF; END PROCESS; --等待費用計算結(jié)果輸出 DDFY<=DDFY1; END ARCHITECTURE ART; 7.輸出數(shù)據(jù)
36、選擇模塊SCXZ的VHDL源程序 --SCXZ.VHD LIBRARY 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
37、 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="000" ELSE DDSJ(15 DOWNTO 8) WHEN SEL="001" ELSE LCFY(7 DOWNTO 0) WHEN SEL="010" ELSE LC
38、FY(15 DOWNTO 8) WHEN SEL="011" ELSE DDFY(7 DOWNTO 0) WHEN SEL="100" ELSE DDFY(15 DOWNTO 8) WHEN SEL="101" ELSE XSLC(7 DOWNTO 0) WHEN SEL="110" ELSE XSLC(15 DOWNTO 8) WHEN SEL="111" ELSE "00000000"; END ARCHITECTURE ART; 8.系統(tǒng)總體組裝的VHDL源程序 系統(tǒng)總體組裝的VHDL源程序請讀者根據(jù)圖14.3的測
39、控FPGA系統(tǒng)CZJFXT內(nèi)部組成原理圖自行完成。 14.3.2 單片機匯編語言源程序 ; CZJFXT.ASM LED8 EQU 7FH LED7 EQU 7EH ; 時間顯緩 LED6 EQU 7DH LED5 EQU 7CH LED4 EQU 7BH LED3 EQU 7AH LED2 EQU 79H LED1 EQU 78H FUNKEY EQU P1.0 ; 功能 SELKEY EQU P1.1 ; 選擇 FIXKEY EQU P1.2 ; 修改
40、? RUN EQU P1.4 ; 運行信號(傳感器) RUNBZ EQU 28H.4 ? ZK EQU P1.5 ; 載客信號-單片機(傳感器) ZKBZ EQU 28H.2 ; 載客標志 SZKBZ EQU P2.7 ; 送FPGA的載客標志 INT_R1 EQU 46H INT_R0 EQU 47H INT_R2 EQU 48H KEYNUM EQU 49H ? ADA EQU P2.0 ADB EQU P2.1 ADC EQU P2.2 SDBZ
41、 EQU P3.3 ; 時段標志 LCBZ EQU P2.4 ; 里程標志 DDBZ EQU P2.5 ; 等待標志 DDBZC EQU 28H.5 XDBZ EQU P2.6 ; 等待超過1小時標志 ? FYDY8 EQU 3FH ; 費用顯緩 FYDY7 EQU 3EH FYDY6 EQU 3DH FYDY5 EQU 3CH FYDY4 EQU 3BH FYDY3 EQU 3AH FYDY2 EQU 39H FYDY1 EQU 38H ?; 主程序 START:
42、 JMP MAIN ; 轉(zhuǎn)移到主程序 ? ORG 000BH ; 中斷服務入口地址 LJMP PIT0 ? ORG 30H MAIN: CLEAR: MOV R0, #00H MOV R1, #128 MOV A, #00H L1: MOV @R0, A INC R0 DJNZ R1, L1 ? MOV P2, #00H MOV SP, #60H ;
43、 開辟堆棧區(qū) MOV TMOD, #01H ; 定時器0,定時工作方式1,16位 MOV TL0, #0B0H ; 初值為4C00H,50 ms MOV TH0, #03CH SETB TR0 ; 啟動定時器工作 SETB IE.7 ; 中斷總允許 SETB IE.1 ; 允許定時中斷 MOV 30H, #14H ; 中斷循環(huán)次數(shù)初值為20次 ML2: LCALL KKEYI M
44、LL3: CJNE A, #04H, ML4 SETB RUNBZ SJMP ML2 ; 調(diào)用鍵盤掃描程序 ML4: CJNE A, #00H, MLL1 CLR 28H.0 CLR 28H.6 LCALL SJJZ LCALL KKEYI CJNE A, #00H, MLL3 LCALL LCDJDISP ? LCALL KKEYI CJNE A, #00H, MLL3
45、 CLR 28H.0 LJMP ML6 ? LCALL KKEYI MLLL1: CJNE A, #00H, MLL3 LJMP ML5 ? MLL1: JNB RUNBZ, ML2 CJNE A, #05H, ML2 SETB ZKBZ SETB SZKBZ NOP CLR SZKBZ ; LCALL QJDISP ; 起價顯示 ML5: LCALL FYDISP ; 費用顯示 ?
46、 LCALL KKEYII JNB 28H.3, ML3 ; 有鍵按下轉(zhuǎn)ML3 LJMP ML5 ; 沒鍵按下繼續(xù)刷新費用顯示 ML3: LJMP MLL3 ML6: LCALL LCDISP LCALL KKEYII JNB 28H.3, MLLL1 ? LJMP ML6 ? DDDISP: ; 等待時間顯示子程序 ? MOV FYDY8, #0FH
47、 MOV FYDY7, #12H MOV FYDY6, #12H MOV A,R6 CJNE A, #03H, SL0 MOV R0, 40H LCALL DAAD1 MOV A, R2 ; 是否到了60 s? XRL A, #24H JNZ SJL4 ; 不到,轉(zhuǎn)RET1返回 LCALL CLR0
48、 ; 到了60 s,則秒顯示緩沖單元清0 LJMP SJL4 SL0: CJNE A, #02H, SL1 MOV R0, 40H LCALL DAAD1 MOV A, R2 ; 是否到了60 s? XRL A, #60H JNZ SJL4 ; 不到,轉(zhuǎn)RET1返回 LCALL CLR0 ; 到了
49、60 s,則秒顯示緩沖單元清0 LJMP SJL4 SL1: CJNE A, #01H, SJL4 MOV R0, 40H LCALL DAAD1 MOV A, R2 ; 是否到了60 s? XRL A, #60H JNZ SJL4 ; 不到,轉(zhuǎn)RET1返回 LCALL CLR0 ; 到了60 s,則秒顯示緩沖單元清0 LJMP SJL4
50、 SJL4: LCALL KKEYI CJNE A, #01H, SJL1 ? DEC 40H DEC 40H DJNZ R6, SJL3 ? NEXT3: RET ;ENDIF IF 1=2 QJDISP: ; 起價顯示參數(shù)子程序 SETB 28H.0 ? MOV FYDY8, #0FH MOV FYDY7, #12H MOV FYDY6, #12H
51、 JB 28H.1, NEXT9 MOV FYDY5, #00H MOV FYDY4, #00H MOV FYDY3, #05H MOV FYDY2, #00H MOV FYDY1, #00H NEXT9: RET ENDIF LCDJDISP: ; 里程單價顯示子程序 SETB 28H.0 MOV FYDY8, #0DH MOV FYDY7, #12H MOV
52、FYDY6, #12H MOV FYDY5, #12H MOV FYDY4, #12H JNB SDBZ, DJL1 MOV FYDY3, #01H MOV FYDY2, #04H MOV FYDY1, #00H LJMP DJL2 DJL1: MOV FYDY3, #01H MOV FYDY2, #08H MOV FYDY1, #00H DJL2: RET ? LCDISP: ;ANL P
53、2, #0FAH SETB P2.1 MOV R0, #4FH ; 讀入數(shù)據(jù) MOV R3, #02H ; 讀3次P0口 LCDL0: MOV A, P0 MOV @R0, A ? DEC R0 MOV A,P2 INC A ; 指向CPLD下一個數(shù)據(jù)ADRC ADRB ADRA= MOV P2, A ? DJNZ R3, LCDL0 ANL P2, #0F8H
54、? MOV 58H, 4EH ; 另存 MOV 59H, 4FH ? MOV 22H, 4DH MOV 21H, 4EH MOV 20H, 4FH LCALL HEXBCD2 ? SETB 28H.6 MOV FYDY8, #13H MOV FYDY7, #12H MOV FYDY6, #12H MOV FYDY5, #12H RET
55、 ? 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下一個數(shù)據(jù)ADRC ADRB ADRA= MOV P2, A
56、 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 4
57、EH, #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(22~20H)-BCD(26~23H) MUBTD: MOV R0, #23H
58、 MOV R7, #04H CLR A LOPP1: MOV @R0, A INC R0 DJNZ R7, LOPP1 MOV R7, #18H ; 32BIT LOOP4: MOV R1, #20H MOV R6, #03H CLR C LOPP2: MOV A, @R1 RLC A MOV @R1, A INC R1
59、 DJNZ R6, LOPP2 MOV R5, #04H MOV R0, #23H LOOP3: MOV A, @R0 ADDC A, @R0 DA A MOV @R0, A INC R0 DJNZ R5, LOOP3 DJNZ R7, LOOP4 SBCD: MOV R0, #23H ; MOV R1, #38H MOV R3, #04H HE
60、X1: MOV A, @R0 ANL A, #0FH MOV @R1, A INC R1 MOV A, @R0 ANL A, #0F0H SWAP A MOV @R1, A INC R1 INC R0 DJNZ R3, HEX1 NEXT2: RET ? ; 時鐘中斷處理子程序 PIT0: PUSH PSW ; 時鐘中斷服務開始,保護斷點
61、 PUSH ACC SETB PSW.3 ; 選用1組通用寄存器 ; MOV A, TL0 ; 計數(shù)器重新加載,并修正時鐘 ; ADD A, #2 MOV TL0, #0B6H MOV TH0, #03CH MOV A, 30H ; 循環(huán)次數(shù)處理 DEC A ; 循環(huán)次數(shù)減1 MOV 30H, A ; 保存于A中 JNZ RET0 ; 不滿20次轉(zhuǎn)RET1返回 MOV 30H, #14H
62、 ; 滿20次,則重賦循環(huán)次數(shù)初值 MOV R0, #LED2 ; 秒的十位緩沖單元 LCALL DAAD1 ; 秒加1 MOV A, R2 ; 是否到了60 s? XRL A, #60H JNZ RET0 ; 不到,轉(zhuǎn)RET1返回 LCALL CLR0 ; 到了60 s,則秒顯示緩沖單元清0 MOV R0, #LED4 ; 分的十位顯示緩沖單元地址 LCALL DA
63、AD1 ; 分加1 MOV A, R2 ; 是否到了60分? XRL A, #60H JNZ RET0 ; 不到,轉(zhuǎn)RET0返回 LCALLCLR0 ; 到了60分,則分顯示緩沖單元清0 MOV R0, #LED6 ; 時的十位顯示緩沖單元地址 LCALL DAAD1 ; 時加1 MOV A, R2 ; 是否到了24時? XRL A, #24H
64、 JNZ RET0 ; 不到,轉(zhuǎn)RET0返回 LCALL CLR0 ; 到了24時,則時顯示緩沖單元清0 RET0: LCALL SDBJ NEXT5: MOV LED7, #12H MOV LED8, #0AH LCALL DISP POP ACC ; 恢復斷點 POP PSW RETI ; 中斷返回 DAAD1: MOV
65、 A, @R0 ; 加1子程序,十位數(shù)送A DEC R0 ; 指向個位顯示緩沖單元地址 SWAP A ; 十位數(shù)占高四位 ORL A, @R0 ; 個位數(shù)占低四位 ADD A, #01H ; 加1 DA A ; 十進制調(diào)整 MOV R2, A ; 全值暫存R2中
66、 ANL A, #0FH ; 取出個位數(shù) MOV @R0, A ; 個位值送顯示緩沖單元 MOV A, R2 INC R0 ANL A, #0F0H ; 取出十位數(shù) SWAP A ; 使十位數(shù)占低四位 MOV @R0, A ; 十位數(shù)送顯示緩沖單元 RET ; 返回 CLR0: CLR A ; 清緩沖單元地址子程序 MOV @R0, A ; 十位數(shù)緩沖單元清0 DEC R0 MOV @R0, A ; 個位數(shù)緩沖單元清0 RET SDBJ: MOV A, LED6 ; 時段比較子程序 CJNE A, #00H, SDL1 MOV A,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專升本計算機基礎真題-2
- 中學班長競選演講稿
- 某公司工作保證書
- 教育強國建設規(guī)劃綱要(2024—2035年)要點解讀(教育是強國建設民族復興之基)
- 小學英語量詞用法詳解
- 四篇:2024年度民主生活會召開情況總結(jié)報告匯編
- 閥門主體材料
- 蝸桿傳動的效率、潤滑和熱平衡計算
- XX地區(qū)水利部門述職報告工作挑戰(zhàn)與應對
- 初中語文散文閱讀基礎知識點+經(jīng)典例題解析
- 專升本英語:常考動詞搭配
- 21-01《中國近代文學史》自學考試題及答案
- 某公司元旦主題教育活動方案模板
- 廉潔過春節(jié)清風迎新村緊繃紀律弦廉潔過春節(jié)把好廉潔關過個廉潔年
- 小學英語實用口語100句