程序是网上的,经过我小改了一下.自已没有做实物,以后要用有可能把它自做出来.5V供电,可改成那充电 ,也方便,可能画得不太好.有原理图,
供大家参考,和修改,有源程序,也可供大家,学习和修改.
电路原理图如下:
image.png


单片机源程序如下:
/**********************网线测试仪*****************************
  •         网线测试仪,定义三个按钮作为速度选择
  •         速度选择分别有30ms/1s/2s
  •         程序初始化默认进入1s运行函数
  •         其中网线扫描口用的P2口
  • *************************************************************/
  • #include <STC15.h>
  • #include <intrins.h>                                  //循环左右移头文件
  • #define uchar unsigned char
  • #define uint unsigned int
  • sbit sw1 = P0^0;                                        //k1按键.定义30ms按钮
  • sbit sw2 = P0^1;                                        //k2按键,定义1S按钮
  • sbit sw3 = P0^2;                                        //K3按键,定义2S按钮
  • uint i,a,b;                                                        //定义变量
  • void delay(int t)
  • {
  •         int y;
  •         for(;t>0;t--)
  •                 for(y=110;y>0;y--);
  • }
  • void key1();                                                //函数声明
  • void key2();
  • void key3();
  • void key1()                                                        //30ms运行函数
  • {
  •         if(sw1 == 0)
  •         {
  •                 delay(10);
  •                 if(sw1 == 0)
  •                 {
  •                         sw2 = sw3 = 1;
  •                         P2 = a;
  •                         b = 1;
  •                         while(b)
  •                         {
  •                                 for(i=9;i>0;i--)
  •                                 {
  •                                         P2 = _crol_(a,1);                 
  •                                         for(i=30;i>0;i--)                 //1/2s
  •                                         {
  •                                                 delay(10);                        
  •                                                 if(sw2 == 0)
  •                                                 {
  •                                                         delay(5);
  •                                                         if(sw2 == 0)
  •                                                         {
  •                                                                 key2();
  •                                                         }
  •                                                 }
  •                                                 if(sw3 == 0)
  •                                                 {
  •                                                         delay(5);
  •                                                         if(sw3 == 0)
  •                                                         {
  •                                                                 key3();
  •                                                         }
  •                                                 }
  •                                         }
  •                                         a = P2;
  •                                 }
  •                         }
  •                 }
  •         }        
  • }
  • void key2()                                                  //1S运行函数
  • {
  •         if(sw2 == 0)
  •         {
  •                 delay(10);
  •                 if(sw2 == 0)
  •                 {
  •                         sw1 = sw3 =1;
  •                         P2 = a;
  •                         b = 1;
  •                         while(b)
  •                         {
  •                                 for(i=8;i>0;i--)
  •                                 {
  •                                         P2 = _crol_(a,1);
  •                                         for(i=60;i>0;i--)                 //1S
  •                                         {
  •                                                 delay(10);                        
  •                                                 if(sw1 == 0)
  •                                                 {
  •                                                         delay(5);
  •                                                         if(sw1 == 0)
  •                                                         {
  •                                                                 key1();
  •                                                         }
  •                                                 }
  •                                                 if(sw3 == 0)
  •                                                 {
  •                                                         delay(5);
  •                                                         if(sw3 == 0)
  •                                                         {
  •                                                                 key3();
  •                                                         }
  •                                                 }
  •                                         }
  •                                         a = P2;
  •                                 }
  •                         }
  •                 }
  •         }        
  • }
  • void key3()                                           //2S运行函数
  • {
  •         if(sw3 == 0)
  •         {
  •                 delay(10);
  •                 if(sw3 == 0)
  •                 {
  •                         sw1 = sw2 = 1;
  •                         P2 = a;
  •                         b = 1;
  •                         while(b)
  •                         {
  •                                 for(i=8;i>0;i--)
  •                                 {
  •                                         P2 = _crol_(a,1);
  •                                         for(i=200;i>0;i--)                 //2S
  •                                         {
  •                                                 delay(10);                        
  •                                                 if(sw1 == 0)
  •                                                 {
  •                                                         delay(5);
  •                                                         if(sw1 == 0)
  •                                                         {
  •                                                                 key1();
  •                                                         }
  •                                                 }
  •                                                 if(sw2 == 0)
  •                                                 {
  •                                                         delay(5);
  •                                                         if(sw2 == 0)
  •                                                         {
  •                                                                 key2();
  •                                                         }
  •                                                 }
  •                                         }
  •                                         a = P2;
  •                                 }
  •                         }
  •                 }
  •         }
  • }
  • void main()
  • {
  •         P2 = 0xff;                                  //IO赋初值
  •         a = 0xfe;
  •         sw2 = 0;                                  //初始执行1s函数
  •         while(1)
  •         {
  •                 key1();
  •                 key2();
  •                 key3();
  •         }
  • }
  • 复制代码
    实物以作出来了,用的现成的DB9.接口作的。STC15单片机制作的,I0改下。跟上面原理图有所不同。三个按键。一个控制常亮。全部亮。一个控制流水灯形式。一个按键手动控制,按一下,灯走动一下。下面是制作的实物图。
    image.png