出租車計費系統(tǒng)的設(shè)計與分析 EDA課程設(shè)計

上傳人:愛** 文檔編號:104015532 上傳時間:2022-06-09 格式:DOC 頁數(shù):61 大?。?14.50KB
收藏 版權(quán)申訴 舉報 下載
出租車計費系統(tǒng)的設(shè)計與分析 EDA課程設(shè)計_第1頁
第1頁 / 共61頁
出租車計費系統(tǒng)的設(shè)計與分析 EDA課程設(shè)計_第2頁
第2頁 / 共61頁
出租車計費系統(tǒng)的設(shè)計與分析 EDA課程設(shè)計_第3頁
第3頁 / 共61頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《出租車計費系統(tǒng)的設(shè)計與分析 EDA課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《出租車計費系統(tǒng)的設(shè)計與分析 EDA課程設(shè)計(61頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第14章 出租車計費系統(tǒng)的設(shè)計與分析 14.1 系統(tǒng)設(shè)計要求 14.2 系統(tǒng)設(shè)計方案 14.3 主要源程序 14.4 系統(tǒng)仿真/硬件驗證 14.5 設(shè)計技巧分析 14.6 系統(tǒng)擴展思路 14.1 系統(tǒng)設(shè)計要求 以CPLD/FPGA為主體,設(shè)計并制作一臺出租車計費系統(tǒng),系統(tǒng)的方框圖如圖14.1所示。 1計費及顯示 (1) 里程,即汽車行駛里程,用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為km,精確到0.1 km。 (2) 單價,即里程單價,用三位數(shù)字顯示,顯示方式為“X.XX”,單價為元/km,根據(jù)每天不同的時間段有兩種情況:當時間段為06:0023:00時單價為1.40元/km,其他時間段

2、內(nèi)單價為1.80元/km。 (3) 等候時間,用四位數(shù)字顯示分鐘和秒,顯示方式為“XX:XX”,等候的定義是:當汽車行駛速度小于或等于12 km/h時為“等候”。 (4) 等候單價,等候單價有兩種情況:在等候時間小于1小時的情況下,等候單價為1元每5分鐘;在等候時間大于1小時的情況下,等候單價為20元每小時。 (5) 費用的計算,出租車的起價為5.00元,當里程小于2 km時,按起價計算費用;當里程大于2 km時按下式計算費用: 費用=里程里程單價+等候時間等候單價 (6) 費用的顯示,用五位數(shù)字顯示,顯示方式為“XXX.XX”,單價為元。 2時鐘及顯示 當出租車在常運狀態(tài)下,應能顯示當前的時

3、間。在汽車熄火的情況下,時鐘必須正常運行,但是可以不顯示時鐘。 3計費開始提示 當出租車載上乘客并起步后,將空車指示牌扳倒時,空車指示牌里的指示燈熄滅,并有語音或燈光提示信號。14.2 系統(tǒng)設(shè)計方案 14.2.1 系統(tǒng)總體設(shè)計方案 本系統(tǒng)擬采用單片機和FPGA的結(jié)合進行系統(tǒng)的主體設(shè)計,系統(tǒng)原理框圖如圖14.2所示。 14.2.2 測控FPGA的VHDL程序設(shè)計 根據(jù)系統(tǒng)的設(shè)計要求,我們可將整個測控FPGA系統(tǒng)CZJFXT分為七個模塊,它們分別是:分頻器模塊FPQ,等待判別模塊DDPB,里程計算模塊LCJS,里程計費模塊LCJF,等待計時模塊DDJS,等待計費模塊DDJF,輸出數(shù)據(jù)選擇模塊SCX

4、Z。其內(nèi)部組成原理圖如圖14.3所示。 分頻器模塊FPQ:將外部時鐘信號SCLK(設(shè)計時假設(shè)為200 Hz)經(jīng)過適當分頻后,產(chǎn)生1 Hz的系統(tǒng)工作用基準時鐘信號CLK1HZ,供系統(tǒng)中的有關(guān)模塊計時用。 等待判別模塊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ā)出里程標志信號LCB

5、Z和里程計費標志信號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控制下,進行等待費用DDFY的計費操作。 輸出數(shù)據(jù)選擇模塊SCXZ :根據(jù)單片機發(fā)出的

6、數(shù)據(jù)傳輸選擇控制信號SEL,選擇有關(guān)計算處理結(jié)果傳輸給單片機。SEL與被傳送數(shù)據(jù)的具體關(guān)系如表14.1所示。 14.2.3 單片機控制程序設(shè)計 單片機模塊包括單片機AT89C51及其控制的顯示和鍵盤系統(tǒng),控制口如圖14.3(略 )所示。 AT89C51對FPGA的數(shù)據(jù)進行運算,計算出用車總費用并送顯示系統(tǒng)顯示,同時它接收鍵盤信息并處理顯示切換。系統(tǒng)采用6+1顯示,6個數(shù)碼管作常規(guī)顯示,一個數(shù)碼管作狀態(tài)顯示。按鍵共有5個,分別是功能切換鍵、確定鍵、修改鍵、啟動模擬鍵和空車牌壓下模擬鍵。涉及的主要流程圖如圖14.414.8所示。14.3 主 要 源 程 序 14.3.1 主要VHDL源程序 1分頻

7、器模塊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; S

8、IGNAL 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.ST

9、D_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周期性跳變信號進程 PROCESS(START, CLK1HZ) IS VA

10、RIABLE 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 ; -每分鐘行駛距離計算進程 PROCESS(START, WCLK, T60S) IS BEGIN IF STAR

11、T=1 THEN WCLKCOU=00000000; ELSIF WCLKEVENT AND WCLK=1 THEN IF T60S=1 THEN WCLKCOU=00000000; ELSE WCLKCOU=WCLKCOU+1; -距離計算,單位為m END IF; END IF; END PROCESS ; -等待標志判別進程 PROCESS(WCLKCOU,T60S) IS BEGIN IF T60SEVENT AND T60S=1 THEN IF WCLKCOU=11001000 THEN -WCLKCOU=200 DDBZ=1; -等待 ELSEDDBZ=0; -行駛 END IF;

12、 END IF; END PROCESS ; END ARCHITECTURE ART;3里程計算模塊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 ENTI

13、TY 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(START,WCLK) VARIABLE MS: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START=1 THEN MS:=00000000; BMS=0000000000000000;LCBZ=0; ELSIF WCLKE

14、VENT AND WCLK=1 THEN IF DDBZ=0 THEN IF MS=01100011 THEN MS:=00000000; 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)換 BMS1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1JFBZ1J

15、FBZ1JFBZ1=0; END CASE; END PROCESS; -計費標志去毛刺進程 PROCESS(WCLK,JFBZ1) IS BEGIN IF WCLKEVENT AND WCLK=1 THEN JFBZ=JFBZ1; END IF; END PROCESS;END ARCHITECTURE ART;4里程計費模塊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

16、IS GENERIC(SD1:INTEGER:=140; -04:0023: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 PROCESS(START, LCBZ, SDBZ, JFBZ) BEGIN IF START=1 TH

17、EN 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等待

18、計時模塊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 I

19、S 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 TH

20、EN XIDENG=1;FS=0000; ELSE FS=FS+1; -分數(shù)十位計算 END IF; ELSE FG=FG+1; -分數(shù)個位計算 END IF; ELSE MS=MS+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等待計費模塊DDJ

21、F的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 -每分鐘等待費用定義,單位為分 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;A

22、RCHITECTURE 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 CLK1HZEVENT AND CLK1HZ=1 THEN IF CNT60=00111100 THEN -CNT60=60 T60S=1;CNT60=00000000; ELSE CNT60=CNT60+1;T60S

23、=0; END IF; END IF; END PROCESS ; -等待費用計算進程 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 -等待時間小于1小時 DDFY1=DDFY1+WDJ1; ELSIF XDBZ=1 THEN -等待時間大于1小時 DDFY1=DDFY1+WDJ2; END IF; END IF; END IF; END PROCESS; -等待費用計算結(jié)

24、果輸出 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_VECT

25、OR(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 DOW

26、NTO 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源程序請讀者根據(jù)圖14.3的測控FPGA系統(tǒng)CZJFXT內(nèi)部組成原理圖自行完成。14.3.2 單片機匯編語言源程序; CZJFXT.ASMLED8 EQU 7FHLED7 EQU 7EH ; 時間顯緩LED6 EQU 7DHLE

27、D5 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 ; 運行信號(傳感器)RUNBZ EQU 28H.4ZK EQU P1.5 ; 載客信號-單片機(傳感器)ZKBZ EQU 28H.2 ; 載客標志SZKBZ EQU P2.7 ; 送FPGA的載客標志INT_R1 EQU 46HINT_R0 EQU 47HINT_R2 EQU 48HKEYNUM EQU 49HADA EQU P2.0

28、ADB EQU P2.1ADC EQU P2.2SDBZ EQU P3.3 ; 時段標志LCBZ EQU P2.4 ; 里程標志DDBZ EQU P2.5 ; 等待標志DDBZC EQU 28H.5XDBZ EQU P2.6 ; 等待超過1小時標志FYDY8 EQU 3FH ; 費用顯緩FYDY7 EQU 3EHFYDY6 EQU 3DHFYDY5 EQU 3CHFYDY4 EQU 3BHFYDY3 EQU 3AHFYDY2 EQU 39HFYDY1 EQU 38H; 主程序START: JMPMAIN ; 轉(zhuǎn)移到主程序 ORG 000BH ; 中斷服務入口地址LJMP PIT0 ORG 30

29、HMAIN:CLEAR: MOVR0, #00H MOVR1, #128 MOVA, #00HL1: MOVR0, A INC R0 DJNZR1, L1 MOVP2, #00H MOV SP, #60H ; 開辟堆棧區(qū)MOV TMOD, #01H ; 定時器0,定時工作方式1,16位MOV TL0, #0B0H ; 初值為4C00H,50 msMOV TH0, #03CH SETBTR0 ; 啟動定時器工作SETBIE.7 ; 中斷總允許SETBIE.1 ; 允許定時中斷MOV30H, #14H ; 中斷循環(huán)次數(shù)初值為20次ML2: LCALLKKEYIMLL3: CJNEA, #04H,

30、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

31、; 起價顯示ML5: LCALL FYDISP; 費用顯示 LCALL KKEYII JNB28H.3, ML3 ; 有鍵按下轉(zhuǎn)ML3 LJMPML5 ; 沒鍵按下繼續(xù)刷新費用顯示ML3: LJMPMLL3ML6: LCALLLCDISP LCALLKKEYII JNB28H.3, MLLL1 LJMPML6 DDDISP: ; 等待時間顯示子程序 MOVFYDY8, #0FH MOV FYDY7, #12H MOV FYDY6, #12H MOVA,R6 CJNEA, #03H, SL0 MOVR0, 40H LCALLDAAD1 MOV A, R2 ; 是否到了60 s? XRL A, #

32、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)R

33、ET1返回 LCALL CLR0 ; 到了60 s,則秒顯示緩沖單元清0 LJMPSJL4SJL4: LCALLKKEYI CJNE A, #01H, SJL1 DEC40H DEC 40H DJNZ R6, SJL3NEXT3:RET ;ENDIF IF 1=2QJDISP: ; 起價顯示參數(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,

34、#00HNEXT9: RET ENDIF LCDJDISP: ; 里程單價顯示子程序 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

35、, #4FH ; 讀入數(shù)據(jù) MOVR3, #02H ; 讀3次P0口LCDL0: MOVA, P0 MOVR0, A DECR0 MOVA,P2INCA ; 指向CPLD下一個數(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

36、 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下一個數(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 4F

37、H, #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 MO

38、V 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, R0 ANL A, #0F0H SWAP AMOV R1, A

39、 INC R1 INC R0 DJNZ R3, HEX1NEXT2: RET ; 時鐘中斷處理子程序PIT0: PUSH PSW ; 時鐘中斷服務開始,保護斷點 PUSH ACC SETB PSW.3 ; 選用1組通用寄存器; MOV A, TL0 ; 計數(shù)器重新加載,并修正時鐘 ; ADD A, #2 MOV TL0, #0B6H MOV TH0, #03CHMOV A, 30H ; 循環(huán)次數(shù)處理DEC A ; 循環(huán)次數(shù)減1MOV 30H, A ; 保存于A中JNZ RET0 ; 不滿20次轉(zhuǎn)RET1返回MOV 30H, #14H ; 滿20次,則重賦循環(huán)次數(shù)初值MOV R0, #LED2

40、; 秒的十位緩沖單元 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 DAAD1 ; 分加1 MOV A, R2 ; 是否到了60分?XRL A, #60H JNZ RET0 ; 不到,轉(zhuǎn)RET0返回 LCALLCLR0 ; 到了60分,則分顯示緩沖單元清0 MOVR0, #LED6 ; 時的十位顯示緩沖單元地址 LCALL DAAD1 ; 時加1 MOV A, R

41、2 ; 是否到了24時? XRL A, #24H JNZ RET0 ; 不到,轉(zhuǎn)RET0返回 LCALL CLR0 ; 到了24時,則時顯示緩沖單元清0RET0: LCALL SDBJNEXT5: MOV LED7, #12H MOV LED8, #0AH LCALL DISP POP ACC ; 恢復斷點 POP PSW RETI ; 中斷返回DAAD1: MOV 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中 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 MOVR0, A ; 個位數(shù)緩沖單元清0 RETSDBJ: 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!