1.并口简介
并口标准:http://www.fapo.com/1284int.htm
 
并口使用了3个8位的端口寄存器,分别是(默认状态下):
数据寄存器:端口0x378+0,用于输出数据,Bit0-Bit7,针脚2-9
状态寄存器:端口0x378+1,用于输入数据,Bit3-Bit7,针脚15、13、12、10、11(反相)
控制寄存器:端口0x378+2,用于输出数据,Bit0-Bit3,针脚1(反相)、14、16(反相)、17(反相)
2.并口与BH1415F模块的连接
并口的输出不足以驱动BH1415F,这里使用三极管作为驱动(信号被反相了,编程时需要注意),电路图如下:


3.并口编程
这里采用http://www.internals.com出品的WinIO库来操作端口。
编程步骤:
//初始化WinIO
InitializeWinIo();
 
//操作数据端口
BOOL SetData(IN BYTE byteData )
{
    return ::SetPortVal(0x378,byteData,1);
}
 
//读取状态端口
BOOL GetStatus(OUT PDWORD lpStatus )
{
    return ::GetPortVal(0x378+1,lpStatus,1);
}
 
//操作控制端口
BOOL SetControl(IN BYTE byteControl )
{
    //并口Bit0,2,3相位是反的
    byteControl ^= 0x01;
    byteControl ^= 0x02;
    byteControl ^= 0x08;
    return ::SetPortVal(0x378+2,byteControl,1);
}
 
//释放WinIO
ShutdownWinIo();
4.控制BH1415F
点击这里下载BH1415Fdatasheethttp://www.pira.cz/pdf/bh1415f.pdf
a.频率计算程序:
int CalcFrequncy(double fMhz,BOOL bStero)
{
    int d1_d10=(int)(fMhz*10);//bit0-bit10
    int nData=d1_d10;
 
    if (bStero){
        nData|=18432;//0b 01 00 1 000 0000 0000
    }
    else{
        nData|=16384;//0b 01 00 0 000 0000 0000
    }
    return nData;
}
 
b.控制数据写入芯片,根据时序图写出控制程序:


//bit 1, 并口01:BH1415Chip Enable
//bit 2, 并口14:BH1415Clock
//bit 3, 并口16:BH1415Data
//bit 4, 并口17:BH1415MutingH=Mute on,L=Mute Off
MUTE(0);
 
CE(1);
for (int i=0;i<=15;i++)
{
    int bit=(nData>>i) & 0x01;
   
    DATA(bit);
    CLK(1);
    CLK(0);
}
 
CE(0);
 
控制软件界面:

万用板焊接的电路:


本文链接地址: 用并口控制BH1415F调频发射芯片
http://qingfengju.com/index.asp?id=189

分类:Win32/C++ 查看次数:11402 发布时间:2009-12-31 23:23:39