这是总图 
 
 
这是下位机的代码, 
#include<reg51.h> 
#include<intrins.h> 
void delay();//延时 
void lie();//列控制 
void send8bit(unsigned int n); 
void send8bit1(unsigned int n);//发送字函数 
sbit P15=P3^3;//主信号 
sbit P12=P3^4;//时钟信号 
sbit P13=P3^5;//锁存信号 
sbit P11=P3^2;//154门控信号 
unsigned char count;//列计数器 
unsigned char flage;//标志位 
unsigned int  sum1;//字节数 
unsigned char xdata text[2048];//定义外数据存储器? 
unsigned char code cctab[640]={ 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF00,0x00,0x00, 
               
0x08,0x20,0x44,0x20,0x26,0x7E,0x30,0x80,0x01,0x01,0x20,0x02,0x2E,0x04,0x21,0x88, 
0x20,0x50,0x20,0x20,0x20,0xD0,0x23,0x08,0x7C,0x06,0x20,0x03,0x00,0x02,0x00,0x00, 
0x00,0x40,0x08,0x40,0x30,0x40,0x24,0x40,0x24,0x40,0x24,0x42,0xA4,0x41,0x64,0xFE, 
0x25,0x40,0x26,0x40,0x24,0x40,0x20,0x40,0x28,0x40,0x30,0xC0,0x00,0x40,0x00,0x00, 
0x00,0x02,0x00,0x42,0x00,0x22,0x7F,0xB2,0x49,0x02,0x49,0xFE,0x49,0x02,0x49,0x02, 
0x49,0x02,0x49,0xFE,0x49,0x02,0xFF,0x92,0x40,0x22,0x00,0x66,0x00,0x02,0x00,0x00, 
0x02,0x00,0x02,0x08,0x42,0x10,0x42,0x20,0x42,0x60,0x42,0x02,0x42,0x01,0x43,0xFE, 
0x42,0x00,0x42,0x00,0x42,0x40,0xC2,0x20,0x42,0x30,0x06,0x18,0x02,0x00,0x00,0x00, 
0x00,0x10,0x00,0x10,0x00,0x10,0xFF,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10, 
0x11,0x10,0x11,0x32,0x11,0x11,0x11,0x02,0x33,0xFC,0x11,0x00,0x00,0x00,0x00,0x00, 
0x01,0x00,0x02,0x00,0x04,0x00,0x1F,0xFF,0xE0,0x00,0x08,0x01,0x08,0x02,0x08,0x0C, 
0x8F,0xF0,0x69,0x02,0x09,0x01,0x09,0x02,0x0B,0xFC,0x19,0x00,0x08,0x00,0x00,0x00, 
0x00,0x08,0x20,0x08,0x20,0x09,0x2F,0xFA,0x2A,0xAC,0x2A,0xA8,0x2A,0xA8,0xFA,0xA8, 
0x2A,0xA8,0x2A,0xA8,0x2A,0xAC,0x3F,0xFA,0x68,0x0B,0x20,0x18,0x00,0x08,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF00,0x00,0x00 
};//  han字显示与仿真      
unsigned int y; 
 
void recint() interrupt 4 {//接收中断,串行口的中断n=4; 
P11=1;//关闭屏幕显示防止屏幕出现乱码; 
flage=1; 
y=0; 
//以下代码为从串行口接受数据存如xdata text[]中; 
while(y<1024) 
  {while(!RI);//空语句判断字符是否收完,ri=1跳出循环执行接收;  
  text[y]=SBUF; 
  RI = 0;//清RI 
  y++; 
   }  
sum1=text[1]*32+64; 
return; 
} 
void main() 
{    
     unsigned char i,j; 
     unsigned int m=0; 
     TMOD=0x20;//设置定时器 T1 方式 2 
     PCON=0x00;//使 SMOD 为 0 
     TL1=0x0Fd; 
     TH1=0x0Fd;//波特率为 9600b/s 
     EA=1;//开全局中断 
     ET1=0;//关 T1 中断 
   ES=1;//开串行中断 
   TR1=1;//开T1定时器 
   SCON=0x50;//串行方式 1 ,允许接收 
     flage=0;//标志位置0,发送片内字 
   P11=1;//关闭显示,防止花屏 
       
  if(flage) goto outdisplay; 
  while(flage==0) 
   { count=0x00;  
      P11=1; 
    for(j=0;j<1;j++) 
     
   P12=0; 
    P13=0; 
   {  for(i=1;i<=32;i+=2) 
           {    
       send8bit(i+m+32);//从串口发送字模数据           
            _nop_(); 
           send8bit(i+m+31);  
     _nop_(); 
          send8bit(i+m);  //由于使用移位寄存74hc595,先发送一列的下半部分         
          _nop_();//延时 
          
          send8bit(i+m-1);//后发送一列的上半部分, 
               _nop_();          
          lie();//一个字的上半部分和下半部分发送完毕点燃该列。 
    
          delay();//调用延时子程序 
              P11=1;//关列显示 
             } 
     } 
   m+=2; 
   if(flage) goto outdisplay;// 
   if(m>256)//字数控制 
     m=0; 
    
 } 
 
outdisplay:while(flage) 
         {  P11=1; 
      flage=0; 
      m=6;     
            while(flage==0) 
        {  
      count=0x00;  
              P11=1; 
               
          P12=0; 
          P13=0; 
             {  for(i=1;i<=32;i+=2) 
                {   
  
                      send8bit1(i+m+32);//从串口发送字模数据           
                   _nop_(); 
                  send8bit1(i+m+31);  
                        _nop_(); 
                           
                send8bit1(i+m);  //由于使用移位寄存74hc595,先发送一列的下半部分         
                _nop_();//延时 
          
                send8bit1(i+m-1);//后发送一列的上半部分, 
                    _nop_();          
                lie();//一个字的上半部分和下半部分发送完毕点燃该列。 
    
                delay();//调用延时子程序 
                    P11=1;//关列显示 
                  } 
               } 
           m+=2; 
      if(flage) goto outdisplay; 
       
           if(m>sum1)//字数控制 
             m=2; 
     }  
   } 
    
} 
 
 
void send8bit(unsigned int n)/*机内码发送子程序*/ 
 { 
    unsigned char q; 
     for(q=0;q<8;q++) 
      { 
    P15=((_cror_(cctab[n],q))&0x1);//右移(7-q)位,从低位到高位取。即595发送, 
                                   //为从高到低为:Q7---Q0; 
    
        P12=1;//寄存器时钟上跳沿,将一位数据存入移位寄存器。 
        P12=0; 
  } 
        P13=1;//锁存器上跳沿,8位数据存入所存器,e为底允许发送,数据从并口发送 
        P13=0; 
 } 
 
void send8bit1(unsigned int n)/*片外数据存贮器发送子程序*/ 
 { 
    unsigned char q; 
     for(q=0;q<8;q++) 
      { 
    P15=((_cror_(text[n],q))&0x1);//右移(7-q)位,从高位到低位取。即595发送, 
                                   //为从高到低为:Q7---Q0; 
        P12=1;//寄存器时钟上跳沿,将一位数据存入移位寄存器。 
        P12=0; 
  } 
        P13=1;//锁存器上跳沿,8位数据存入所存器,e为底允许发送,数据从并口发送 
        P13=0; 
 } 
 
 void delay() 
{unsigned int n; 
 for(n=0;n<250;n++) 
   {;} 
} 
void lie()//列控制 
{ 
P11=0;//允许列选择 
P1=count; 
count++; 
} 
 
 
上位机的代码的mscomm该怎么写呢,自己有点不会,请求指导 |