[求助] 设计一银行动态密码获取系统,通过单片机的双机通信实现动态密码...

1260954748   2015-12-13 17:34 楼主
甲机:#include
void main()             //主函数
{
   unsigned char i;  
   unsigned char send[]={0x01,0x03,0x05,0x07};    //定义要发送的数据,为了简化显示,发送数据在0~9之间
     TMOD=0x20;                       //定时器T1工作于方式2
         TL1=0xf4;                        //波特率为2400bps
         TH1=0xf4;
         SCON=0x40;                       //定义串行口工作于方式1
     TR1=1;
   for(i=0;i<4;i++)
      {
            SBUF=send[i];                   //发送第i个数据
            while(TI==0);                   //查询等待发送是否完成
            TI=0;                           //发送完成,TI由软件清0
          }
   while(1);

}
乙机:#include
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77};
                                    //定义0~9显示字型码
unsigned char send[]={0x01,0x03,0x05,0x07}

//unsigned char buffer[]={0x00,0x00,0x00,0x00};   //定义接收数据缓冲区
void disp(void);            //显示函数声明
void main()                   //主函数
{
   unsigned char i;
    TMOD=0x20;                //定时器T1工作于方式2
        TL1=0xf4;                 //波特率定义
        TH1=0xf4;
        TR1=1;
        SCON=0x40;                //定义串行口工作于方式1
  
        for(i=0;i<4;i++)
           {
         REN=1;                    //接收允许
             while(RI==0);             //查询等待接收标志为1,表示接收到数据
             buffer[i]=SBUF;           //接收数据
             RI=0;                     //RI由软件清0          
           }
        for(;;)disp();            //显示接收数据
}
//函数名:disp
//函数功能:在4个LED上显示buffer中的4个数
//入口参数:无
//出口参数:无
void disp()
{
    unsigned char w,i,j;
         w=0xfd;                  //位码赋初值
         for(i=0;i<4;i++)
         {
            P1=~(tab[buffer[i]]);     //送显示字型段码,buffer[i]作为数组分量的下标
            P2=~w;                 //送位码
            for(j=0;j<100;j++);    //显示延时
            w<<=1;                 //w左移一位
     }
}

软件PrOteus仿真没有正确1,3,5,7,还出现段码不显示,我认为甲机发送程序,乙机发送程序是正确的,但是显示部分一直没有找到问题,请赐教?谢谢哦哦!

回复评论 (2)

没有正确1,3,5,7,还出现段码不显示。
先用直接查看双击通信数据,好像是数据传递过程中出了问题。
点赞  2015-12-13 22:44
引用: 无罪之宾 发表于 2015-12-13 22:44
没有正确1,3,5,7,还出现段码不显示。
先用直接查看双击通信数据,好像是数据传递过程中出了问题。

我觉得发送与接收程序是对的呀?
好像是显示部分的问题?
点赞  2015-12-15 21:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复