好久来这里了,有个急的问题需要大家帮忙。
怎样通过响串口输出一个指定电压(如10V)来触发一个警报器,警报器和串口连接。
我所知道的就是串口的每个Pin都有固定的电压,但不知道怎么形成一个指定电压。

解决方案 »

  1.   

    寒 (#-_-)不懂这个。印象中对Pin操纵的是输入输出信号,信号以电压不同来表示01。而不能直接控制输出多大电压
      

  2.   

    谢谢 Eastunfail的参与,
    我是这么想的,串口的9个针中有各自的电压,能不能响串口发送某个字符来变换两个针之间的电压。
      

  3.   

    谢谢helodd的回答,请问怎么控制串口去控制电压
      

  4.   

    谢谢ahjoe,
    “改变输出0,1的比例”你可以在讲详细点吗,我不懂,谢谢!
      

  5.   

    通过改变输出0,1的比例应该指得是PWM技术(脉冲宽度调制),通过调节脉冲电压得占空比来得到一个平均值介于逻辑0与逻辑1之间得电压值
      

  6.   

    串口平时状态是1V左右打开的时候是10V左右关闭的时候是-9V左右如果要10V的话可以用打开串口来模拟啊
      

  7.   

    谢谢abc3000的帮助。我试试看。
    再请教你,在写数据时电压是否会变化,比如我要输出一个15V左右的电压该怎么做?
      

  8.   

    串口的电压一般是 -9v 到 0v之间变换,要输出10v得用转换电路,另外我觉得不可能做到像DA输出那样,电压可以任意变换。
    如果要输出一个恒定不变的电压,用windows的API函数也很困难,串行电路在把数据输出后会马上恢复-9v的低电平状态!
      

  9.   

    并口的D0 ~ D7是并行信号输入、输出端,其电压有4v左右,不知道可不可以驱动你的报警器,在Windows98中可以用Delphi嵌入汇编的方式操作并口,一般并口的IO地址为378H,通过对该地址的操作即可控制电压的输出。function ReadPort(Port:WORD):BYTE;
    var
      B:BYTE;
    begin
      ASM
        MOV DX, Port;
        IN AL, DX;
        MOV B, AL;
      END;  Result:=B;
    end;procedure WritePort(Port:WORD;ConByte:BYTE);
    begin
      ASM
        MOV DX, Port;
        MOV AL, ConByte;
        OUT DX, AL;
      END;
    end;
      

  10.   

    串口采用TTL电平,是15V系统,
    不过输出的电流非常小,
    可以参考
    http://www.digihut.net/irda_doc/serial_power.html