因为以前从来没做过类似的东西
一点头绪都没有 只得到了一些参数和接口波特率 19200
8位数据位 无校验
例子是C写的:send _com(0x55);
send _com(0xaa);
send _com(0xa5);
send _com(汉字的地址);
send _com(0x01);
send _com(0x01);
for(y=0;y<16;y++)
{
for(x=0;x<屏宽;x++)
{
send _com(数据)
}}希望高手帮忙一下

解决方案 »

  1.   

    问题太模糊:
    你的LED是1602还是12864还是其他什么东西?
    你要控制的是显示文字还是图形?
    如果是控制显示文字,那么LED屏支不支持字库?
    你使用的下位机是别人的产品还是自己的“山寨货”。
    电路使用串行通讯还是并行通讯?
    需不需要考虑下位机的程序或电路问题?
    有没有接口说明?接口说明是怎么样的?
    如果没有接口说明,下位机程序和电路是怎么样的?知道了这些才好写上位机的程序。
      

  2.   

    api接口声明而已,其它就很容易了。
      

  3.   

    LED显示我没有接触过,想来应该不难
    就你的C代码,我按自己的理解来写一个串口输出代码,不知对否哈!dim outByte(6) as byte
    MSComm1.inputMode=0      '二进制形式收发
    outByte(0)=Hex("&H55")
    outByte(1)=Hex("&HAA")
    outByte(2)=Hex("&HA5")
    outByte(3)=Hex("&H10")   '假如你的汉字地址是0x10
    outByte(4)=Hex("&H01")
    outByte(5)=Hex("&H01")
    MSComm1.output=outByte
      

  4.   

    波特率 19200
    8位数据位 无校验 有了以上内容,肯定是串口了。
    vb如果用字符串发16进制,我印象里只能发到00-154(dec)155-255(dec)发不出去。
    可以用下面的方法发送:
    1.按二进制文件发:
    Dim MyFile()    As Byte 
      Open "e:\binary.bin" For Binary As #1 
              ReDim MyFile(LOF(1)) 
              Get #1, , MyFile 
              Debug.Print MyFile 
          Close #1 
      
      Dim Buf    As Variant 
              Buf = MyFile 
              MSComm1.CommPort = 1 
              MSComm1.OutBufferSize = 1024 
              MSComm1.InBufferSize = 512 
              MSComm1.RThreshold = 1 
              MSComm1.SThreshold = 1 
              MSComm1.InputLen = 1 
              MSComm1.Settings = "9600,N,8,1" 
              MSComm1.PortOpen = True 
              MSComm1.OutBufferCount = 0 
              MSComm1.InBufferCount = 0 
      MSComm1.Output = Buf 
    二、按字节发:(感谢zdingyun 在这个问题上的指导)
    Dim b(100) As Byte
    Dim st As Stringst = "72EC087272EC"b(1) = Val("&H" & Mid(st, 3, 2))
      Dim Buf     As Variant
              Buf = b(1)
              MSComm1.CommPort = 1
              MSComm1.OutBufferSize = 1024
              MSComm1.InBufferSize = 512
              MSComm1.RThreshold = 1
              MSComm1.SThreshold = 1
              MSComm1.InputLen = 1
              MSComm1.Settings = "9600,N,8,1"
              MSComm1.PortOpen = True
              MSComm1.OutBufferCount = 0
              MSComm1.InBufferCount = 0
      MSComm1.Output = Hex(Buf)
    Debug.Print b(1)
    Debug.Print Hex(b(1))
      

  5.   


    呵呵!谢谢夸奖,不过我的:
    MSComm1.inputMode=0
    写错了,这样是按文本方式,的改为:
    MSComm1.inputMode=1
      

  6.   

    "VB控制LED显示屏的问题"
    从字面上理解,你的问题是实现不了的,因为LED显示屏这类硬件的东西是不能单纯用VB来控制的。从你提供的什么C程序来说,可以理解为 Keil C,因为通常在Windows里使用的都是C++,如VC++
    、BC++,而 Keil C 则是开发下位机程序比较好的 C 语言。既然是下位机的开发语言,那么你所
    看的范例或提供的代码也有可能是下位机的程序。因为单片机通过下位机程序控制LED屏是可行的,
    所以按这个方向想,你有可能在问下位机程序如何控制LED屏。至于你的标题,就可以综合理解为你
    是想连下位机和上位机一起,如何控制LED显示屏的问题。如果是这样,涉及的东西就比较多一点。
    在单片机中,涉及到单片机的选型、晶振的选型、液晶屏的选型、与PC通讯频率的定位、考虑使用中断的个数等等等等。
    从软件上需考虑如何发包、如何校检、如何弃包、如何使用多中断高效的完成任务等。
    在PC中只是跟随单片机的定位而进行基本的通讯及进行点阵运算等。通常在51单片机上控制LED屏有两种方式
    1、串行通讯方式控制
    2、并行通讯方式控制至于选择什么样的波特率通讯或者说采用什么技术实现目的,这要看你的目的是什么?如果你不是很频繁的控制液晶屏显示某些文字,那么通讯频率9600就可以了
    因为按理想的条件来说,9600的频率每秒钟可以传输960个字节数据,1个起始位,8个数据位,
    1个停止位,加起来10个位,9600/10=960
    即使有干扰或其他因素降低点速度,用来传几个命令和数据字符串还是搓搓有余的。如果你需要很频繁的刷新液晶屏显示的文字或图像,比如作动画效果,那么根据你的液晶屏大小
    可以采用更高的通讯频率或其他的技术实现。如:采用更高频率的晶振、速度更快的单片机,如STC12系列或AVR等,如果要求再高点还可以考虑
    DSP 或 ARM,当然这是个比较麻烦的东西。在程序上,单片机的不同开发方式和工具也不同。与PC通讯也不一定局限于普通串口,也可采用高速USB、PCI等接口技术。至于你要做的是什么?要达到什么目的?有什么样的资源?做到哪一步了?应该说明清楚,
    就上面的代码来说,如果你看的所谓范例是下位机程序,解释给你听成上位机的程序那就会完全乱套。
      

  7.   

    使用的单片机是moxa cp-114 在官方网站找不到任何的的技术文档 郁闷了
      

  8.   

    建议用一个PCI的DO卡,很容易就用VB实现了,呵呵,当然有点大炮打蚊子的感觉。
      

  9.   

    function sendpic(addr:integer):Integer;
    var
      comx:integer;
      x,y:integer;
      b :byte;
    begin
    comx := strtoint(ini.Readstring('sys','COM',''));
    Ini_COM(comx,19200,8,2,0);
    send_COM($55);
    send_COM($aa);
    send_COM($a5);
    send_COM(addr);
    send_COM($01);
    send_COM($01);
      for y:=0 to 15 do
      begin
        for  x:=0 to 512-1 do
         begin
              b:=0;
              if form1.Image1.Canvas.pixels[x,y]      >0 then  b:= b+$80;
              if form1.image1.Canvas.pixels[x,y+16]   >0 then  b:= b+$40;
              if form1.image1.Canvas.pixels[x,y+32]   >0 then  b:= b+$20;
              if form1.image1.Canvas.pixels[x,y+48]   >0 then  b:= b+$10;          if form1.image1.Canvas.pixels[x,y+64]   >0 then  b:= b+$08;
              if form1.image1.Canvas.pixels[x,y+80]   >0 then  b:= b+$04;
              if form1.image1.Canvas.pixels[x,y+96]   >0 then  b:= b+$02;
              if form1.image1.Canvas.pixels[x,y+112]  >0 then  b:= b+$01;
              send_COM(not b);
              b:=0;
              application.ProcessMessages;
         end;
      end;
    Close_COM;
    end;今天获得了以上一段代码  似乎是用图片发送的 不知道能不能改写成VB的 用picturebox吗?
      

  10.   

    能写个下位机接收程式吗?PIC 51 avr的单片机多行
    Veron_04  
    我写的下位只能接收到上位机的一个BYTE。有点迷糊。
    也可以到这里回我的贴,谢谢
    http://topic.csdn.net/u/20090915/08/cb5d7cf5-579d-441a-b408-f9da1a16f5ab.html