Zclub討論區 Z板

 找回密码
 註冊
搜索
查看: 2589|回复: 0

[教學] 自製數字型LED時速表,非囀速表

[复制链接]
发表于 2013-12-4 09:27:00 | 显示全部楼层 |阅读模式
時速表需要修改程式,因為我是以輪胎一圈和幾顆感應磁鐵為計算單位,下面會仔細說明懂一點程式和電路的可以把時速表輸出送到之前發表的LCD 16x2轉速表,然後在LCD 16x2上一起顯示轉速和時速


電路圖2009年做,價錢方面大約300以內
S.jpg

功能說明

  • 顯示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年都沒掉過,越多顆越好,抓取反應時間比較快
黑色框是放磁簧開關的地方,在搖臂上上下都可以,一個就好要做一下保護,因為開關外面是玻璃,弄破也是可以用但是接觸頭可能會歪掉
fzr rider.mp4_snapshot_01.46_[2013.12.02_21.23.12].jpg
1111111.jpg
1098456587.jpg

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來存放


無實際影片,要看請參加南橫元旦一日遊,我車上可以看到,如下圖
下次方享檔位表,原車無檔位顯示的可以裝,下次會說明
fzr rider.mp4_snapshot_01.32_[2013.12.02_21.27.31].jpg

评分

2

查看全部评分

回复

使用道具 举报

Yahoo
您需要登录后才可以回帖 登录 | 註冊

本版积分规则

手機版|Archiver|Z板 Sitetag 訪客統計

GMT+8, 2024-4-26 19:47 , Processed in 0.112578 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表