收藏本站

开盘机音响技术网

 找回密码
 注册加入
楼主: 乡村猎手
收起左侧

REVOX B710 MCU芯片MK3870替换方案(连载)

  [复制链接]

473 小时

在线时间

6

帖子

1020

积分

二星开友 ★★

Rank: 2

积分
1020
发表于 2018-10-20 15:24:50 | 显示全部楼层
高手中的高手。

5344 小时

在线时间

1636

帖子

9676

积分

荣誉版主

Rank: 7Rank: 7Rank: 7

积分
9676

开网十周年纪念奖章

发表于 2018-10-21 11:17:49 | 显示全部楼层
本帖最后由 yjwu 于 2018-10-21 11:20 编辑 ; ?; K/ k* x0 j: E5 ^1 Q
7 ], s. O, O8 j9 E# m
很精彩的帖子3 a3 C  {' @% o, @( i; e$ `$ M3 X5 h' |

+ y1 }  f: j. y0 y3 R# RMOSTEK MK3870/3872 有一個可外接2732/2764 EPROM 的MK38P70 開發版, 只要將健康可工作的MK3870/3872
3 y2 H' R- V1 x  _ ROM控ˊ制碼讀出,寫入2764 EPROM  則直接可用
' r+ Z5 Z1 P* Z3 K% Z1 A9 _6 z3 A0 L7 D
問題是如何將00~7FF的程序碼讀出?
& z7 v4 C, f3 G6 V0 H$ E, A& A, M4 KReVox B780也用MOSTEK MK3870/3872,能讀出程序碼可解決多個機種的問題0 k1 X. ]1 N: L& R
MK38P70_ROM_Address.PNG
MK38P70_Block.PNG
MOSTEK 38P70_2732_2764.jpg
image.jpeg

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-10-21 20:05:40 | 显示全部楼层
yjwu 发表于 2018-10-21 11:17
) _. G- ^+ c/ s& e1 L很精彩的帖子
  o& B) I( ]7 y6 Q9 d9 u% {' {
: N7 l/ y9 D- [4 D1 jMOSTEK MK3870/3872 有一個可外接2732/2764 EPROM 的MK38P70 開發版, 只要將健康可工作的M ...

/ A% z9 {* L- A; b$ G0 ^谢谢版主的资料,对单片机我还是初学,不知道如何读出别的芯片的程序。不过38p70也是停产多年的ic,本网也卖的只有几个人出,也是当收藏品在出,不定能正常使用了。解决问题是一方面,主要还是玩为主。

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-10-21 20:11:37 | 显示全部楼层
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。& Q* y- j4 b1 n% G  @

2 Y9 b6 }8 ^, ?9 _, I  s
% O( ~8 b8 b" E; ^5 U, [
1060仿真.png
4 Q" V7 F: r/ i9 u1 L, s

3 E$ |- F* A: Y9 l  E0 U, A; H, `' O/ D8 o; y7 J$ g) v0 N& I: C) a& r
, s- g1 D9 W6 {; O
demo 的代码在这里
7 }2 u4 D  m  B$ q# K1 M1 \% a9 x* @) s! {7 o
, C- o+ s) I6 N; }, y
#include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器
! O# ^: H( c# a* O' f- {7 N+ W! A" X
sbit yData = P2^0;& [/ R; D  H6 P* N/ p- a$ L0 l. I8 e
sbit yDLEN  = P2^2;
; v) U+ ?/ k6 q. csbit yCLK = P2^1;
1 _9 y3 H* G- Y' wconst int   dailyCount = 200;# G6 @: U* O* ~8 T, a2 \; L

% H! Z8 V7 x6 L% Z+ `3 A7 P6 H5 q5 c6 Y0 G/ q( G) T" i
  z" t. e1 t7 j& {& `: Z0 u
void delay(unsigned int i)  f% z$ n9 M# S, n" f8 q
{
( {5 B1 e; {* T* G2 r        while(i--);        
, I. D1 C% G5 H0 ?! z% Z) z& T}
* x9 c2 _3 [: ]' |6 {" D
- P/ I1 ?$ [+ F! t" S3 V7 t1 G" f* g$ p9 b( _# V  i) e; _
void disp(unsigned int num )
# d- P2 p. q" L{" _& }5 e4 B7 {# p5 O
        unsigned char i ;# N; p! T. Q6 A$ Z

6 n6 y# \# G( A8 V: _: h        unsigned char dispA[20];: S% S- v8 X8 ^- A* `0 @' M
        unsigned char dispB[20];% F9 s: F9 v- ]# z; V8 d
( Q5 ^" n( B) U4 x$ |5 L2 d
        unsigned char num1;7 y9 o; t% ]( W- f
        unsigned char num2;        - O) q$ [" d# B; \! X5 `+ X" Z
        unsigned char num3;7 d8 f8 E* r  y( z' m' L6 D4 C- ~
        unsigned char num4;
2 y3 B+ {% Y' D0 L$ Y9 n0 Q+ G    unsigned char segR[10]   ;  //右0 T% M4 p7 F# k; K2 d
           unsigned char segL[10];         //左: `6 q7 N; t# f% {

$ T/ t, o& B+ j! N' X        //左
1 ?$ f4 q8 \7 P0 ^) E                 segL[0] = 0x12;1 Q: r2 a. X6 D% D* T
                 segL[1] = 0xFA;
% R1 ^, j5 O; Q! ~% d( H3 ^# X: C                 segL[2] = 0x0E;
- _( `* F5 n% @- K) n2 x6 x. [$ _                 segL[3] = 0x2A;
8 V- W$ L0 I* U) P) }5 s                 segL[4] = 0xE2;  _+ z" |7 ?: A4 j
                 segL[5] = 0x63;
4 c* I! a2 V( \: t; Z                 segL[6] = 0x2A;
7 c( l) |% v5 O( i% L( z                 segL[7] = 0x7A;  O8 s  T6 d% r8 Y  Y9 I' y
                segL[8] = 0x02;- |) J  y+ r! R& V
                segL[9] = 0x22;
# `# H- e1 x; }& {3 I1 T7 A; E. `2 V& }        
* j0 t8 e' b& j1 t/ Y0 j% c+ d        # e+ I- F% K) d1 p
        8 Q* Y+ \8 D* v# h
                //右; s  t) {2 |+ {9 n8 X/ _. r
                segR[0] = 0x88;
& b$ A# ^! U1 R  [! l! g4 u' e$ g' u6 P% y                 segR[1] = 0xEB;
9 R* J# e) ]- |+ d, j                 segR[2] = 0x85;3 v6 t1 L7 \3 W: l( c* M
                 segR[3] = 0x83;; `5 R; T3 E( F( h" F; ?) X
                 segR[4] = 0xE2;$ x+ \- q. {1 ]1 u4 S( ]
                 segR[5] = 0x92;
2 I8 i2 l3 a" [( G                 segR[6] = 0x90;
) L4 q9 H% Z0 W0 Q0 i                 segR[7] = 0xCB;) b5 t3 H4 I: I' o) q$ u9 y& M
                segR[8] = 0x80;
4 }# S' N1 S# N- [' ^                segR[9] = 0x82;4 A: J/ @6 J( i, c7 M& J
/ g; r- v' F" i6 O  w$ p) {( r6 g
        
/ H0 d  x$ H! e% k- c        num1=num /1000;) p! B; P# V" p3 R# P2 @6 C/ M% M  p
        num2=(num /100)%10;;$ }- D5 n, b% T# o2 v
        num3=(num /10)%100;;;
( @! q5 }7 Q% Q: q9 }( i/ E         num4=num%10;
8 K: e9 d) ]& i* {  x3 T5 s* a6 i$ S
0 Y- r) I4 g$ ?$ m
: D$ o* z( v4 ]; y% k

" J" {& u6 h* z# h) N. j8 B        dispA[0] = 0;1 a& h, d* X+ u3 V
        dispB[0] = 0;8 d/ c# ?( c% \- b, {  `! y

+ B, {: y+ V. J: F& ]4 h, U6 S% k' [5 R+ ?7 N" p8 i
        for (i=0;i<8;i++). k0 _6 G. J& a$ c0 S( g0 i4 C( Q
        {
2 @. W. U+ \% K6 Y4 \  _" r) _                dispA[i+1] =  (segR[num2]>>i)&0x01;
8 b/ z1 z. |2 W1 v$ o                dispB[i+1] =  (segR[num1]>>i)&0x01;        
+ a: O; {2 i/ w$ N' N, r8 ^% E2 n# R7 B+ i. ]  a  C$ U8 O9 w% D
                dispA[i+9] =  (segL[num4]>>i)&0x01;2 x; P" T  E; W/ o5 g
                dispB[i+9] =  (segL[num3]>>i)&0x01;$ ~4 \$ n0 X+ I% n
        }
5 `+ [: l% M) j  `) C        ) h! x* s; y# Z0 i! b3 Z
* r7 l/ y9 q- G

4 l4 c- [9 s  Y6 X, S        dispA[17] = 1;" Z6 M  N. A3 ?7 _6 A" M* M- b
        dispB[17] = 0;1 E  @" x3 X6 E; h1 c. ?" u
1 t' @6 r6 c" Y$ D
        dispA[18] = 0;
# Y0 U1 }- y& J6 v        dispB[18] = 0;6 E  h$ j2 I5 G* l
6 n0 h1 k- G$ ], c1 b# I+ r
        dispA[19] = 0;
+ c& v9 _$ A$ t$ R8 ^1 L6 d# ^3 G        dispB[19] = 0;
1 m" L' V( ^- L
9 t2 m( b& `  n( Y' h1 A2 O# q        yCLK = 1;+ \+ C$ H2 \* z  y" }) f

  |& z9 a$ m) d  W2 Q$ h' u6 @' M1 a4 u- B. c" X

/ m: r* d. e( o: N+ Q8 \7 t6 a        for (i = 0;i<20;i++)* U6 j' Z5 F7 T# T- z
        {8 M6 y- y/ V# G; y
                yCLK = 1;8 M) n1 F" _$ ?3 P9 f2 C& K/ ^
                yData = dispA;2 @$ r, J/ C% g# S- j; `
                delay(2);5 N  z2 [1 [- s; w
                if(i>17)
  o! O' }9 z; k" i3 A                {yDLEN=0;}2 t- L0 z4 k3 d! i- S8 |* U: L
                else
" _! h1 |' h/ J6 Q  {8 \+ u, o                {yDLEN=1;}9 G" w" x6 Y2 h* G, l8 X0 k
, ^, L$ D. M8 g3 y" \
                delay(dailyCount);
- P5 f0 A0 D' ]0 Y5 v                yCLK = 0 ;
: \" v6 \/ I7 t                delay(dailyCount);
& ]  v" o: S# @# o- S1 b9 R+ k: Z        }; a3 c9 ?' w4 f) Q

# ~# [+ x- ^% Q: o        yCLK=0;5 W3 `7 B7 i& B4 ?% }# O
        yData=0;7 a  i& S8 h7 |+ L' J0 T/ I: ?0 v
        yDLEN=0;
5 d" ?- b. q: {0 y. s. ~' T        delay(dailyCount*10);4 c7 w+ [% o* m
        
% S: D4 j4 d3 F: H
, i# I' Q. R! V) j
* r" r" p5 p; M& ~/ [        for (i = 0;i<20;i++)1 e) z" N) S! c3 d
        {
1 X! e- i1 [2 P# z( F9 a9 R6 w6 E, r                yCLK = 1;, Z' h9 R$ ^+ ?; {5 |" ~$ H& V
                yData = dispB;
) e' ?. q0 d9 A9 X* w& V; ?0 }                delay(dailyCount/10);  n  D# `; e: q1 S
                if(i>17)* A' _& `1 E: a' R- t+ w
                {yDLEN=0;}! F4 m& {' s5 E+ m* X3 `6 e
                else, y6 Y4 t- F% }' O
                {yDLEN=1;}
& V' t* g; W( e+ j
- O( x; U8 Z$ X# [, g: K, y! s8 {; W0 C% U                delay(dailyCount);( j" ?  ?. a# E3 O8 q
                yCLK = 0 ;; c, T9 m" i: @+ H# q# P
                delay(dailyCount);" }! c9 t/ G& u2 U6 f% f5 ~
        }
2 O( Z1 l2 o7 j' G0 Z) v- j0 s6 }: ]: n1 y
        yCLK=0;
$ E& X! ^4 Q. [" V* Q        yData=0;$ w6 Z! F2 |- }/ X7 H3 a- C
        yDLEN=0;6 j# ~" ?9 @9 a9 }% F) B
        delay(dailyCount*10);
4 X* l- ^' V9 ~" w8 f! O9 X}! g6 Z; [, k4 L" s4 {5 \' Q
( x0 ~+ o9 P& [$ y1 d+ T( V  Y+ z

' N& g1 i' s6 Y" {
' @3 Z' p5 m* w6 w6 Q9 L  m/ f- k
void main()
+ S! [' X: F# D6 `{2 h* A0 l+ n- x8 E
        while(1)
% K% N+ h# @! R/ F8 t5 F4 B        {! d$ T' C7 r& R4 ~
                delay(4000);
% F2 h5 I+ q# f8 }; O5 r                  disp(0);
, ]7 _  V: \9 J7 O, t0 ?! o        }                ) B+ g2 W9 k" c3 h4 I7 ?
}
6 S- t' w! j$ j
* h( C/ _# |& W
* g" Q3 p/ `' \8 Y' D  J6 R6 c3 @

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-10-21 20:38:19 | 显示全部楼层
重新买了两面的洞同板和漆包线,重新做了个转换座,那个排阻就是用来做p0口的上拉电阻的,那个电容和单独的电阻是做复位用的。可花了几个小时才焊好。其实在本网上去做个印刷版也不用多少钱,不过动手的乐趣可是用钱买不到的。fb
) o1 H0 E0 }& f6 H. W: ^  g3 E
转换座2.jpg 转换座1.jpg
. m2 k/ Y3 v. e/ C  B7 a) b0 ?, o+ d7 [# n
. T1 \6 h4 u4 R$ c
$ f+ b+ k8 f& g' G/ y

5344 小时

在线时间

1636

帖子

9676

积分

荣誉版主

Rank: 7Rank: 7Rank: 7

积分
9676

开网十周年纪念奖章

发表于 2018-10-21 20:43:12 | 显示全部楼层
動手趣味無窮,愈難的挑戰成就愈大!加油!

1006 小时

在线时间

373

帖子

2993

积分

三星开友 ★★★

Rank: 3Rank: 3

积分
2993
发表于 2018-10-26 22:20:44 | 显示全部楼层
乡村猎手 发表于 2018-10-19 18:15& G5 z/ N2 X6 {( X
兄弟过奖了。收、放带、带头尾检测是利用磁带的引带的是透明状态使用接收管电流变化转成电压给mcu.走带也 ...
* t' H) I# e0 v+ V! q0 B
磁带计数器:搞定否?弄个全的替代成品C51的MCU,售!造福卡友
喜欢开盘&卡座的声音!

1241 小时

在线时间

634

帖子

2847

积分

三星开友 ★★★

Rank: 3Rank: 3

积分
2847

开网十周年纪念奖章19年网站运行奉献奖

QQ
发表于 2018-10-27 12:52:54 | 显示全部楼层
佩服楼主勇敢探索的精神

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-10-27 13:54:49 | 显示全部楼层
bg0abo 发表于 2018-10-26 22:20
  K" b0 g$ g0 a8 D- U0 @: O磁带计数器:搞定否?弄个全的替代成品C51的MCU,售!造福卡友
  L7 l0 U1 f7 `+ s
造福可不敢当。* v$ ^7 y) x1 o4 n! f/ t( h
显示的问题已经解决,其实一开始时序就没有问题,但demo测试的时候一开始总不行,原因是没有接复位,程序总是没有正常运行。

2516 小时

在线时间

620

帖子

2527

积分

三星开友 ★★★

Rank: 3Rank: 3

积分
2527
发表于 2018-10-27 18:07:02 | 显示全部楼层
猎手厉害。

7656 小时

在线时间

471

帖子

4502

积分

四星开友 ★★★★

Rank: 4

积分
4502
发表于 2018-11-8 20:51:57 | 显示全部楼层
还是请猎手做成专用含程序芯片的转接板成品,造福卡座爱好者。

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-11-9 23:50:13 | 显示全部楼层
blsxmz 发表于 2018-11-8 20:51
& O) k. {$ N$ X还是请猎手做成专用含程序芯片的转接板成品,造福卡座爱好者。

6 X9 O9 Y( R& @4 p还在努力中。

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-11-10 14:51:00 | 显示全部楼层
本帖最后由 乡村猎手 于 2018-11-10 14:52 编辑
/ `0 X( e) G- K- r- _7 u0 b
5 O/ x! k+ X5 Q+ o" L* D有段时间没有更新了,继续:后来加入了开关机处理、倒带到头的检测、磁带转轴检测(处理计数和停转的停止),两个电机不同步的停机处理。 这些加入后,基本就可以了。. w$ }: c( M; b$ U( H# T
但是,问题来了,磁带快进或倒带的时候,计数器不准确,因为显示的时候,发送的信号需要一定长度,这样,检测磁带转到的脉冲取样率就不够了,会漏掉一些脉冲。% ~) {& `! g0 X8 v, Z: j. K

- s: K7 Q) }& C! d7 z& y; {所以要对于转动的检测要用用计数器和中断来实现,之前在逻辑分板仪里看到原装芯片发出的时钟是长短不一的,现在想想应该就是中间处理中断才会出现这种情况。
$ J$ L+ m1 D4 L# G, H' U+ G7 b8 j如果要改成中断方式,那么这两个脚要接到专门的I/O口,这样要改那个转换座才行,而且原来那个转换座看起还是不是太爽。所以还是重新弄个转换座。
3 u. O* u  D2 g. x! G) @! g思路是使用一个小封装的单片机,这样,整个东西弄出来就和一个ic差不多大小,之前手工焊过一次了,这次直接做个pcb.
3 |1 q, S0 u6 g8 M# I8 g, apcb倒是很简单,但对于从没画过的小白来说还是有点麻烦,从选什么软件画,安装软件,选元件,如果没有度娘还真不知道怎么下手。7 x" m- X5 W$ k+ W9 {! E$ V
不过最后交给TB客服看文件只是修改了一次(没有画外形),对最终结果还是挺满意的,比想象中还要顺利。' {0 c# a8 {; e% o& D8 e7 k
下面的图是预想类似的效果及画册的PCB图,因为没有高频电路,所以不太要考虑走线的问题,能用就行。
& i+ S' h1 M  [0 R& }2 H- G' [* m* u9 S
效果.png pcb.png
" B0 f6 Y6 W: P" N
5 C5 D. u( j3 {: B9 W; t/ B

7656 小时

在线时间

471

帖子

4502

积分

四星开友 ★★★★

Rank: 4

积分
4502
发表于 2018-11-10 17:27:27 | 显示全部楼层
既有理论又有实践,还愿意分享,这才是论坛有品位的真正的高手!赞一个!

4272 小时

在线时间

899

帖子

9535

积分

四星开友 ★★★★

Rank: 4

积分
9535

开网十周年纪念奖章2018年度网站奉献奖2020年度网站运行费用奉献奖章19年网站运行奉献奖17年网站建设费用捐助纪念章

 楼主| 发表于 2018-11-18 00:02:08 | 显示全部楼层
最终的样子就是这样啦。现在这样好看多了。就弄了这些功能:播放,录音,停止,快进,快退 ,clear ,倒带或快进自停,磁带不转自停,两主轴速度不同步自停,计数器手动加1,计数器清零。
' ]& ?1 [3 M. R3 `
, l/ Q6 f' W* j* N9 U  M 685253505224920258.jpg
6 I8 V6 W0 w- `) n
* f9 \& ]2 T5 ]" f$ \% b 550841738535406684.jpg # g& Y- i5 H* o6 |& R

0 ]/ A( \. T. T, A! G) e
" o% _6 A* H$ l9 n4 q! j' P& _, Y: ^+ |. v

9 l3 y( q5 b( H. z3 ^' W" c

383 小时

在线时间

32

帖子

639

积分

一星开友★

Rank: 1

积分
639
发表于 2018-11-18 09:22:17 | 显示全部楼层
高手。支持猎手!
您需要登录后才可以回帖 登录 | 注册加入

本版积分规则

手机版|开盘机音响技术网 ( 桂ICP备20003207号-1  公安部备 45010302002201 客服:18077773618

GMT+8, 2026-5-15 13:36 , Processed in 0.083081 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

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