|
時速表需要修改程式,因為我是以輪胎一圈和幾顆感應磁鐵為計算單位,下面會仔細說明懂一點程式和電路的可以把時速表輸出送到之前發表的LCD 16x2轉速表,然後在LCD 16x2上一起顯示轉速和時速
電路圖,2009年做,價錢方面大約300以內
功能說明
- 顯示0~199,無法顯示超過200,可修改電路和程式就能超過,顯示改變時間以反應時間而定
- 以1為單位加減,新舊差4以上才以3為單位加減,不是抓多少就顯示多少
- 反應時間1.16秒(1 km/h)、0.011秒(100 km/h)、0.0058秒(199 km/h)
- 準度請自己以GPS判斷,至少比原廠快樂表準,像我FZR的二代原廠表14X,這個表顯示12X,用轉速和齒比去算也是12X
感應方式如下圖,不一定要放後輪,只要有位置放磁鐵和開關就可以,磁鐵靠近會讓磁簧開關短路
紅色框是強力磁鐵,不用太厚,用快乾黏一下用了快4年都沒掉過,越多顆越好,抓取反應時間比較快
黑色框是放磁簧開關的地方,在搖臂上,上下都可以,一個就好,要做一下保護,因為開關外面是玻璃,弄破也是可以用但是接觸頭可能會歪掉
8051組合語言程式,需修改一些數據,一樣燒錄問題自己解決,不幫忙,謝謝
;時速表(輪胎轉一圈的長度)/(幾個磁鐵)*3600s/100000cm))/幾us感應一次=幾km/h) ;輪胎轉一圈的長度請坐上車腳離地實際往前移動一圈,要注意胎壓有到常用的值 ;兩個感應顯示一次,但只取一個計算 ORG 00H JMP START START: MOV P2,#00000001B MOV P0,#00000000B MOV P3,#0FFH ;十 MOV P1,#0C0H ;個 MOV 30H,#0 ;破100,1表示是 MOV 31H,#0 ;顯示 MOV 32H,#0 ;最新 MOV 33H,#1 ;低於11,1表示是 MOV 34H,#0 ;相差0~1,1表示是 MOV 35H,#1 ;低於41,1表示是 MOV 20H,#0 MOV 21H,#0 START1: JB P2.0,START1 WAIT: MOV A,20H CLR C ADD A,#1 ;18us=+1次 MOV 20H,A MOV A,21H ADDC A,#0 MOV 21H,A NOP NOP NOP NOP NOP ; NOP ;補充時把最前面';'移除,要多增加的話複製到下一行(註5) CJNE A,#0F6H,WAIT1 ;看註4值的hi就用多少 MOV A,#0 JMP SSU0 WAIT1: JNB P2.0,WAIT WAIT2: MOV A,20H CLR C ADD A,#1 ;18us=+1次 MOV 20H,A MOV A,21H ADDC A,#0 MOV 21H,A NOP NOP NOP NOP NOP ;(註6),可依照註3值刪除一些多餘的 ; NOP ;補充時把最前面';'移除,要多增加的話複製到下一行(註5) CJNE A,#0F6H,WAIT3 ;看註4值的hi就用多少 MOV A,#0 JMP SSU0 WAIT3: JB P2.0,WAIT2 WAIT4: MOV 22H,#0BEH ;註4值的low 1137000us(註1)/18us(註2)=63166(註3)=F6BEH(註4) ;註1:自己計算出(輪胎轉一圈的長度)/(幾顆感應磁鐵)*36000=多少 ;註2:18加上補充幾個註5的數量 ;註3:計算出來的值要<65535,超過請補充註5的數量直到<65535 MOV 23H,#0F6H ;註4值的hi MOV 24H,#0 ;餘數 MOV 25H,#0 MOV 26H,#0 ;商=km/h MOV 27H,#0 MOV R7,#10H CLR A LOOP: MOV R0,#22H XCH A,@R0 RLC A XCH A,@R0 INC R0 XCH A,@R0 RLC A XCH A,@R0 MOV R0,#24H MOV A,@R0 RLC A MOV @R0,A INC R0 MOV A,@R0 RLC A MOV @R0,A MOV R3,24H MOV R4,25H MOV R2,#02H CLR C MOV R1,#20H MOV R0,#24H SUB3: MOV A,@R0 SUBB A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,SUB3 JNC SKIP MOV 24H,R3 MOV 25H,R4 SKIP: CPL C MOV R1,#26H XCH A,@R1 RLC A XCH A,@R1 INC R1 XCH A,@R1 RLC A XCH A,@R1 DJNZ R7,LOOP MOV A,26H SSU0: MOV 32H,A CJNE A,31H,SSU ;新.顯示相同 JMP GON4 SSU: JNC SSU2 CLR C MOV A,31H SUBB A,32H DEC 31H ;32H新<31H顯示 MOV R7,#0 CJNE A,#3,SSU04 SSU04: JC SSU00 MOV R7,#1 SSU00: CJNE A,#2,SSU01 SSU01: JNC SSU02 MOV 34H,#1 ;相差0~1 JMP GON02 SSU02: MOV 34H,#0 MOV A,35H JZ GON02 MOV A,R7 JZ SSU03 DEC 31H ;相差<3要減3 SSU03: DEC 31H ;低於41 JMP GON02 SSU2: SUBB A,31H INC 31H ;32H新>31H顯示 MOV R7,#0 CJNE A,#3,SSU24 SSU24: JC SSU20 MOV R7,#1 SSU20: CJNE A,#2,SSU21 SSU21: JNC SSU22 MOV 34H,#1 ;相差0~1 JMP GON02 SSU22: MOV 34H,#0 MOV A,35H JZ GON02 MOV A,R7 JZ SSU23 INC 31H ;相差>3要加3 SSU23: INC 31H ;低於41 GON02: MOV A,32H CJNE A,#41,GON03 GON03: JNC GON04 MOV 35H,#1 JMP GON05 GON04: MOV 35H,#0 GON05: CJNE A,#11,GON06 GON06: JNC GON07 MOV 33H,#1 ;低於11 JMP GON08 GON07: MOV 33H,#0 GON08: MOV A,31H CJNE A,#100,GON1 GON1: JC GON2 CLR C ;顯示>100 MOV 30H,#1 SUBB A,#100 JMP GON3 GON2: MOV 30H,#0 GON3: MOV B,#10 DIV AB MOV R5,A JNZ GON31 MOV A,30H JNZ GON31 MOV P3,#0FFH ;十無顯示 JMP GON32 GON31: MOV A,R5 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P3,A GON32: MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P1,A MOV A,30H JZ GON33 CLR P3.7 JMP GON4 GON33: MOV A,33H ;低於11 JZ GON4 MOV A,32H ;新的=0 JNZ GON5 GON34: MOV R6,#250 DEL1: MOV R5,#200 DEL2: DJNZ R5,DEL2 DJNZ R6,DEL1 MOV A,31H ;舊的=0 JZ GON5 DEC 31H MOV A,31H MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P1,A JMP GON34 GON4: MOV A,35H ;低於41 JNZ GON5 MOV A,34H ;相差0~1 JZ GON5 MOV A,31H ;顯示=0 JZ GON5 MOV R7,#100 ;0.5s DEL3: MOV R6,#50 DEL4: MOV R5,#50 DEL5: DJNZ R5,DEL5 DJNZ R6,DEL4 DJNZ R7,DEL3 GON5: MOV 20H,#0 MOV 21H,#0 JMP START1 TABLE: DB 0C0H,0F9H,0A4H,0B0H,099H DB 092H,083H,0F8H,080H,098H END
計算說明,以我的車為例
註1:自己計算出(輪胎轉一圈的長度192)/(幾顆感應磁鐵6)*36000=1152000
註2:18加上補充幾個註5(NOP)的數量.....註3的值沒超過65535所以不用增加,所以是18
註3:1152000/18=64000計算出來的值要<65535,超過請補充註5的數量直到<65535註4:64000(10進位)=FA00(16進位),hi=FA,LOW=00 註6:假如你註3是1088000/18=60444,但是用1088000/17=64000那麼可以刪掉1行NOP
的程式從感應到顯示後再回到下次開始感應會經過2顆磁鐵,只要計算出0.1公里經過幾顆磁鐵就可以計算出騎程里程,不可能剛好整數顆,所以要加一些補償動作,可用93C46這種EEPROM來存放總里程,我的雙LCD繪圖型表就有加入93C46來存放
無實際影片,要看請參加南橫元旦一日遊,我車上可以看到,如下圖
下次方享檔位表,原車無檔位顯示的可以裝,下次會說明
|
评分
-
2
查看全部评分
-
|