磁动力电子--本站原创--光驱改装CD播放机 (上篇)  点击数量阅读数:    关 闭
 
 
 

光驱改装CD播放机(上篇)

作者:温正伟 原载:无线电杂志

  本文的相关程序下载:点击下载
   源码文件说明
    demo.c C源码文件
    demo.Uv2 keil项目文件
    demo.hex 编译好的单片机HEX文件

  CD播放机经过了多年的发展已是很普及的音响器材了,光盘也成为电脑媒体的重要载体之一,在多数的电脑爱好者手中很多都会有二台或更多的光驱,也许你和我一样新买了支持DVD光盘的光驱,旧的CDROM读盘能力下降,很少再使用了,丢弃了也可惜。在这一期里借着介绍IDE接口的机会我们来尝试把CDROM改装成CD播放机,旧光驱也可以有新用途,当然这里介绍的改装不是指利用CDROM本身所带的播放键(大部分CDROM没有播放键)去改装,而是通过单片机对光驱的ATAPI接口进行对光驱的控制,从而学习一些IDE/ATAPI接口的相关知识和单片机的应用认识。

 一、电路原理及编程思路
  
  IDE 是 Integrated Drive Electronics 的缩写,是由 Compaq 和 Western Digital 公司开发,AT架构的计算机出现后,新版的 IDE 命名为 ATA 即 AT bus Attachment,但在更多的时候人们会习惯叫回旧名"IDE",这种接口一直被应用在硬盘的连接上。而ATAPI则是在ATA上扩展出来的,ATAPI是AT Attachment Packet Interface的缩写,意思是AT计算机上附加设备的信息包接口。支持ATAPI的IDE接口可以像连接硬盘一样连接ATAPI设备。目前几乎所有的IDE接口都支持ATAPI,它被广泛应用于光驱,ZIP驱动器等设备上。所说的这三种设备界面都是使用如图1和图2所示的40PIN连接件。像图1的连接件是用于主机板和IDE设备上,是40PIN的针式接头,主板上有两个这样的接口,可以用于连接4个IDE设备。图2则是用于连接主机和IDE设备的40芯IDE线缆,现在也有80芯线缆用于连接更新版的高速ATA。图3则是IDE接口连接件的引脚号定义图。

图1:光驱后面板的接口

图2:连接电缆

图3:引脚号定义图

元件名
数 量
说 明
AT89C51
1
可以用AT89C52,AT89S51等代换
8.2K电阻
1
 
3K电阻
1
 
10K排阻
1
8位
LED发光管
1
 
30pF瓷片电容
2
 
10uF电解电容
1
 
11.0592M晶振
1
可以用6-12M
40Pin插针式插座
1
 
40芯IDE连接线
1
电脑的硬盘或光驱连线
小型按钮
5
 
+12V +5V开关电源
1
要求+5V+12V都要有1.5A以上电流
表一 制作元件表

Pin
Name
Dir
Description
Pin
Name
Dir
Description
1 /RESET 输入 复位   21 DMARQ 输出 DMQ请求
2 GND /   22 GND /
3 DD7 输入/输出 Data 7   23 /DIOW 输入 写控制
4 DD8 输入/输出 Data 8   24 GND /
5 DD6 输入/输出 Data 6   25 /DIOR 输入 读控制
6 DD9 输入/输出 Data 9   26 GND /
7 DD5 输入/输出 Data 5   27 IORDY 输出 IO就绪指示
8 DD10 输入/输出 Data 10   28 CSEL / 装置编号
9 DD4 输入/输出 Data 4   29 /DMACK / 输入
10 DD11 输入/输出 Data 11   30 GND /
11 DD3 输入/输出 Data 3   31 IRQR 输出 中断请求
12 DD12 输入/输出 Data 12   32 NC / 保留
13 DD2 输入/输出 Data 2   33 DA1 输入 寄存器地址A1
14 DD13 输入/输出 Data 13   34 /PDIAG / 自诊断标识
15 DD1 输入/输出 Data 1   35 DA0 输入 寄存器地址A0
16 DD14 输入/输出 Data 14   36 DA2 输入 寄存器地址A2
17 DD0 输入/输出 Data 0   37 /CS0 输入 寄存器选择
18 DD15 输入/输出 Data 15   38 /CS1 输入 寄存器选择
19 GND /   39 /DASP 输入 装置活动指示
20 KEY / Key   40 GND /
*注:在引脚名前有"/"的引脚为低电平有效
表2 ATAPI接口的引脚定义说明

  图4是电路原理图,表1是元件列表,本实例中使用51单片机做为控制芯片,用它的P1,P2口组成16位的数据输入输出口,连接IDE的D0-D15数据线。P0口用于连接IDE的读写控制、复位和寄存器控制,由于P0口的驱动力比较低,所以用10K的排阻对其上拉。晶振没有什么特别的要求,这里可以选用11.0592M或12M,加上上电复位电路组成典型的单片机最小系统。P3口则用于播放,前进,后退,停止和开关托盘控制按键的输入,P3.7接一个发光二极管是用于显示光驱是否装载了CD光盘或是否出错了,出错或没有光盘时该LED会点亮。电路连接无误后烧录编译好的HEX文件到51芯片上,就可以正常工作了。本文提供的源码只实现这几种功能,在这个基础上可以加上LED数码管或LCD显示曲目时间等信息,也可以加入遥控接收等功能。

点击看大图
图4:原理图(点击看大图)

  图5是笔者用于实验和调试的电路实物照片。调试时使用自制兼容F-MON51的仿真器和KEIL集成开发环境连接可以方便的进行单步和断点调试,同时也可以查看名RAM和变量的值,这样的查看对于类似这样的制作是很关键的,因为在发送或读取设备的寄存器后,通常设备会有一些状态值返回,程序则要求根据这些值做相应的处理,如果是直接烧片调试则会使得程序的调试过程变得非常的困难。光驱需要的电流比较大,一般要一点几安培的电流,且要用到+5V和+12V两个电压,在制作时可以使用开关电源模块或使用旧电脑上的AT电源(也是开关电源),如果用普通的电压器加7805、7812则不能满足要求。还有一点值得注意的是IDE连接电缆的红色线为一号线,其它则顺序排列到40号,同时要把光驱后面板上的跳线设置为主盘(MASTER)。
  像其它电脑接口或单片机应用制作一样,本实例的难点在于单片机控制程序的编写。ATAPI协议是在ATA协议发展出来的,它的控制命令和返回的数据格式十分繁复,用于光驱时对于不同形式的光盘,控制命令的使用方式也不太一样,本文是把光驱改为CD播放器,所以编程的着重点在于CD音频光盘的控制命令如何发送到光驱上的ATAPI接口。ATAPI有许多寄存器,操作这些不同的寄存器便可以实现相应的功能,如读状态寄存器应先设置好CS和DA选定要操作的是状态寄存器,把DIOW拉低,这时就可以读ATAPI的数据线DD了,得到当前的设备状态,再把DIOW拉高完成读取,在本文的源码中可以参看void ReadStatus(void)函数。在发送控制命令时,可以分为二类,分别为ATA Command(ATA命令)和ATAPI Packet Command(ATAPI信息包命令),前者只要先选择要操作的是命令寄存器,再向数据口发一命令字节就可以实现所要的功能,如先选择命令寄存器再发送A1H到数据口,就可以执行识别光驱的自检命令,命令完成后读数据口可以得到光驱的相关信息,如型号、序列号等,源码中可以参看void InitCDROM(void)中的相关语句。后者的使用则相对复杂一些,发送信息包时,先要向传输字节计数寄存器写要发送的字节数,再送A0H信息命令字到命令寄存器通知设备要发送信息包,最后则是向数据寄存器发送信息包。一般信息包为12个字节,第一个字节为命令字,代表不此信息包的功能,其后的是参数,程序实现可以参看void SendPacket(unsigned char SkipDRQ)函数。对于常用的寄存器和信息包命令的具体介绍可以看下篇。
  大家也许知道,CDROM播放CD时有一系列的动作,先是上电复位、光盘托盘打开、放入光盘托盘关闭、读取曲目播放。同样使用单片机对光驱进行CD播放控制时也应要有这样的顺序,在本文源码中的主程序中先是调用初始化函数,对光驱进行复位和识别,初始化成功后就会调用读取TOC函数读取曲目和相关值。然后就是对按钮进行判断,做出相应的控制。图6是播放CD时的基本顺序图。

图5:实验电路

点击看大图
图6:CD播放基本顺序(点击看大图)

 
本文相关信息:

收录时间:2005年前
整理时间:2006.10.20
作者:温正伟
原载:无线电杂志

相关阅读:

光驱改装CD播放机(上篇)
光驱改装CD播放机(下篇)
ATAPI-CDROM的相关手册资料

相关网站:
广告:
 
 
   最佳浏览 800*600 粤ICP备06079880号
Copyright(C) 2001-2008 www.cdle.net All rights reserved.
GOTO TOP
 
 
网警