以下是修改后的接收代码:

#include <reg51.h> #include <intrins.h> #include <string.h>

#define uchar unsigned char #define uint unsigned int

uchar code Table[]= { 0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,//0 0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,//1 0x00,0x7E,0x02,0x02,0x7E,0x40,0x40,0x7E,//2 0x00,0x7E,0x02,0x02,0x7E,0x02,0x02,0x7E,//3 0x00,0x48,0x48,0x48,0x7E,0x08,0x08,0x08,//4 0x00,0x7E,0x40,0x40,0x7E,0x02,0x02,0x7E,//5 0x00,0x7C,0x40,0x40,0x7C,0x44,0x44,0x7C,//6 0x00,0x7C,0x04,0x04,0x04,0x04,0x04,0x04,//7 0x00,0x7C,0x44,0x44,0x7C,0x44,0x44,0x7C,//8 0x00,0x7E,0x42,0x42,0x7E,0x02,0x02,0x7E,//9 }; uint r= 0; char offset = 0; uchar Current_Level = 1,Dest_Level=1,x=0,t =0;

void main() { Current_Level = 1;//初始为1层 TMOD = 0x01; //T0模式1 TH0 = -4000/256;//4ms TL0 = -4000%256; TR0=1; IE = 0x82; EA =1; while(1);
}

void Led_Dispaly() interrupt 1 { uchar i; static char buffer[3]; //用于存储接收到的数据 static int count = 0; //计数器,用于记录已经接收到的字符数 // 接收数据 if (RI) { buffer[count] = SBUF; //将接收到的字符存入缓冲区 count++; //计数器加1 if (count == 2) //当接收到2个字符时,表示完整的数据已经接收完成 { buffer[count] = '\0'; //将缓冲区末尾置为'\0',表示字符串结束 Dest_Level = atoi(buffer); //将字符串转换为整数,并赋值给目标楼层 count = 0; //计数器清零 } RI = 0; //清除接收中断标志位 } TH0 = -4000/256;//4ms TL0 = -4000%256; i = Current_Level *8 + r + offset; P0 = ~Table[i];

// 上升
if (Current_Level < Dest_Level )
{
    if ( ++r ==8)
    {
        r =0;
        if( ++x ==4)
        {
            x = 0;
            if(++offset ==8)
            {
                offset = 0;
                Current_Level++;                
            }
            
        }
    }
    
}
// 下降
else if(Current_Level > Dest_Level )
{
    if ( ++r ==8)
    {
        r =0;
        if( ++x ==4)
        {
            x = 0;
            if(--offset == -8)
            {
                offset = 0;
                Current_Level--;                
            }
            
        }
    }
    
}
// 停止,保持当前楼层
else
{
    if ( ++r ==8) r =0;
    offset = 0;
}
processing的发送程序如下import processingserial;Serial port;void setup port=new SerialthisCOM39600; Arduino板的端口号 size200500; textSize150;void draw background225; String floors =F9 F8 F7 F6 F5 F4 F3 F2

原文地址: https://www.cveoy.top/t/topic/dI4P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录