建新
发表于 2018-10-20 15:24:50
高手中的高手。{:4_471:}
yjwu
发表于 2018-10-21 11:17:49
本帖最后由 yjwu 于 2018-10-21 11:20 编辑
很精彩的帖子
MOSTEK MK3870/3872 有一個可外接2732/2764 EPROM 的MK38P70 開發版, 只要將健康可工作的MK3870/3872
ROM控ˊ制碼讀出,寫入2764 EPROM則直接可用
問題是如何將00~7FF的程序碼讀出?
ReVox B780也用MOSTEK MK3870/3872,能讀出程序碼可解決多個機種的問題
乡村猎手
发表于 2018-10-21 20:05:40
yjwu 发表于 2018-10-21 11:17
很精彩的帖子
MOSTEK MK3870/3872 有一個可外接2732/2764 EPROM 的MK38P70 開發版, 只要將健康可工作的M ...
谢谢版主的资料,对单片机我还是初学,不知道如何读出别的芯片的程序。不过38p70也是停产多年的ic,本网也卖的只有几个人出,也是当收藏品在出,不定能正常使用了。解决问题是一方面,主要还是玩为主。
乡村猎手
发表于 2018-10-21 20:11:37
搞明白了怎么显示了,先写个显示的demo显示数字0,为了便于仿真,不停输出,实际使用的时候,是可以锁在的,不改变数字时,不用写入,然后再用proteus仿真一下,因为proteus里没有SAA1060这个元件,要不可直接看数码管显示,现在只能看虚拟仪器里的时序了,代码附后,代码写得效率可能不是很好,但看仿真的结果应该是没有问题。
demo 的代码在这里
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
sbit yData = P2^0;
sbit yDLEN= P2^2;
sbit yCLK = P2^1;
const int dailyCount = 200;
void delay(unsigned int i)
{
while(i--);
}
void disp(unsigned int num )
{
unsigned char i ;
unsigned char dispA;
unsigned char dispB;
unsigned char num1;
unsigned char num2;
unsigned char num3;
unsigned char num4;
unsigned char segR ;//右
unsigned char segL; //左
//左
segL = 0x12;
segL = 0xFA;
segL = 0x0E;
segL = 0x2A;
segL = 0xE2;
segL = 0x63;
segL = 0x2A;
segL = 0x7A;
segL = 0x02;
segL = 0x22;
//右
segR = 0x88;
segR = 0xEB;
segR = 0x85;
segR = 0x83;
segR = 0xE2;
segR = 0x92;
segR = 0x90;
segR = 0xCB;
segR = 0x80;
segR = 0x82;
num1=num /1000;
num2=(num /100)%10;;
num3=(num /10)%100;;;
num4=num%10;
dispA = 0;
dispB = 0;
for (i=0;i<8;i++)
{
dispA =(segR>>i)&0x01;
dispB =(segR>>i)&0x01;
dispA =(segL>>i)&0x01;
dispB =(segL>>i)&0x01;
}
dispA = 1;
dispB = 0;
dispA = 0;
dispB = 0;
dispA = 0;
dispB = 0;
yCLK = 1;
for (i = 0;i<20;i++)
{
yCLK = 1;
yData = dispA;
delay(2);
if(i>17)
{yDLEN=0;}
else
{yDLEN=1;}
delay(dailyCount);
yCLK = 0 ;
delay(dailyCount);
}
yCLK=0;
yData=0;
yDLEN=0;
delay(dailyCount*10);
for (i = 0;i<20;i++)
{
yCLK = 1;
yData = dispB;
delay(dailyCount/10);
if(i>17)
{yDLEN=0;}
else
{yDLEN=1;}
delay(dailyCount);
yCLK = 0 ;
delay(dailyCount);
}
yCLK=0;
yData=0;
yDLEN=0;
delay(dailyCount*10);
}
void main()
{
while(1)
{
delay(4000);
disp(0);
}
}
乡村猎手
发表于 2018-10-21 20:38:19
重新买了两面的洞同板和漆包线,重新做了个转换座,那个排阻就是用来做p0口的上拉电阻的,那个电容和单独的电阻是做复位用的。可花了几个小时才焊好。其实在本网上去做个印刷版也不用多少钱,不过动手的乐趣可是用钱买不到的。fb
yjwu
发表于 2018-10-21 20:43:12
動手趣味無窮,愈難的挑戰成就愈大!加油!
bg0abo
发表于 2018-10-26 22:20:44
乡村猎手 发表于 2018-10-19 18:15
兄弟过奖了。收、放带、带头尾检测是利用磁带的引带的是透明状态使用接收管电流变化转成电压给mcu.走带也 ...
磁带计数器:搞定否?弄个全的替代成品C51的MCU,售!造福卡友{:4_472:}{:4_476:}
双木好成林
发表于 2018-10-27 12:52:54
佩服楼主勇敢探索的精神
乡村猎手
发表于 2018-10-27 13:54:49
bg0abo 发表于 2018-10-26 22:20
磁带计数器:搞定否?弄个全的替代成品C51的MCU,售!造福卡友
造福可不敢当。
显示的问题已经解决,其实一开始时序就没有问题,但demo测试的时候一开始总不行,原因是没有接复位,程序总是没有正常运行。
emaxx
发表于 2018-10-27 18:07:02
猎手厉害。
blsxmz
发表于 2018-11-8 20:51:57
还是请猎手做成专用含程序芯片的转接板成品,造福卡座爱好者。{:4_476:}
乡村猎手
发表于 2018-11-9 23:50:13
blsxmz 发表于 2018-11-8 20:51
还是请猎手做成专用含程序芯片的转接板成品,造福卡座爱好者。
还在努力中。
乡村猎手
发表于 2018-11-10 14:51:00
本帖最后由 乡村猎手 于 2018-11-10 14:52 编辑
有段时间没有更新了,继续:后来加入了开关机处理、倒带到头的检测、磁带转轴检测(处理计数和停转的停止),两个电机不同步的停机处理。 这些加入后,基本就可以了。
但是,问题来了,磁带快进或倒带的时候,计数器不准确,因为显示的时候,发送的信号需要一定长度,这样,检测磁带转到的脉冲取样率就不够了,会漏掉一些脉冲。
所以要对于转动的检测要用用计数器和中断来实现,之前在逻辑分板仪里看到原装芯片发出的时钟是长短不一的,现在想想应该就是中间处理中断才会出现这种情况。
如果要改成中断方式,那么这两个脚要接到专门的I/O口,这样要改那个转换座才行,而且原来那个转换座看起还是不是太爽。所以还是重新弄个转换座。
思路是使用一个小封装的单片机,这样,整个东西弄出来就和一个ic差不多大小,之前手工焊过一次了,这次直接做个pcb.
pcb倒是很简单,但对于从没画过的小白来说还是有点麻烦,从选什么软件画,安装软件,选元件,如果没有度娘还真不知道怎么下手。
不过最后交给TB客服看文件只是修改了一次(没有画外形),对最终结果还是挺满意的,比想象中还要顺利。
下面的图是预想类似的效果及画册的PCB图,因为没有高频电路,所以不太要考虑走线的问题,能用就行。
blsxmz
发表于 2018-11-10 17:27:27
既有理论又有实践,还愿意分享,这才是论坛有品位的真正的高手!赞一个!
乡村猎手
发表于 2018-11-18 00:02:08
最终的样子就是这样啦。现在这样好看多了。就弄了这些功能:播放,录音,停止,快进,快退 ,clear ,倒带或快进自停,磁带不转自停,两主轴速度不同步自停,计数器手动加1,计数器清零。
Tesla
发表于 2018-11-18 09:22:17
高手。支持猎手!