找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3722|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的控制led与8x8点阵的设计

[复制链接]
跳转到指定楼层
楼主
本帖最后由 上善-若水 于 2018-9-14 17:03 编辑

1.正常行驶时,左右两侧指示灯处于熄灭状态;
2.右转行驶时,右侧的指示灯按右循环顺序点亮;
3.左转行驶时,左侧的指示灯按左循环顺序点亮;
4.临时制动时,左右两侧指示灯处于同时闪烁状态

电路原理图如下:


单片机源程序:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit kaishi=P3^0;
  6. sbit keystop=P3^1;
  7. sbit keyzuozhuan=P3^2;
  8. sbit keyyouzhuan=P3^3;
  9. sbit keyyaokong=P3^4;
  10. sbit led1=P1^0;
  11. sbit led2=P1^1;
  12. sbit led3=P1^2;
  13. sbit led4=P1^3;
  14. sbit led5=P1^4;
  15. sbit led6=P1^5;
  16. sbit ledyk=P3^7;
  17. unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行选
  18. unsigned char code tabb[]={0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F};//"出"
  19. unsigned char code tabc[]={0x00,0x02,0x04,0x08,0x18,0x24,0x42,0x81};//"入"
  20. unsigned char code tabd[]={0xFF,0x4A,0x2A,0x1C,0xFF,0x08,0x08,0x08};//"平"
  21. unsigned char code tabe[]={0x08,0xFF,0x89,0x04,0x7F,0x14,0x1C,0x63};//"安"
  22. unsigned char i,j;

  23. void delay2(void)//延时5ms
  24. {
  25.   unsigned char i,j;
  26.   for(i=10;i>0;i--)
  27.   for(j=248;j>0;j--);
  28. }

  29. void delay1(void)//延时10ms
  30. {
  31.   unsigned char i,j,k;
  32.   for(k=10;k>0;k--)
  33.   for(i=20;i>0;i--)
  34.   for(j=248;j>0;j--);

  35. }

  36. void delay(uint z)
  37. {
  38.         uint i,j;
  39.         for(i=z;i>0;i--)
  40.         for(j=110;j>0;j--);
  41. }
  42. void zuozhuan()                //左转子程序
  43. {
  44.           if(keyzuozhuan==0)
  45.           {
  46.           led3=1;
  47.           delay(100);
  48.           led3=0;
  49.           delay(500);
  50.           led2=0;
  51.           delay(500);
  52.           led1=0;
  53.           delay(500);
  54.           P1=0xff;
  55.           }
  56. }
  57. void youzhuan()                   //右转子程序
  58. {
  59.            if(keyyouzhuan==0)
  60.           {
  61.           led4=1;
  62.           delay(100);
  63.           led4=0;
  64.           delay(500);
  65.           led5=0;
  66.           delay(500);
  67.           led6=0;
  68.           delay(500);
  69.           P1=0xff;
  70.           }
  71. }
  72. void stop()                   //停车子程序
  73. {
  74.           if(keystop==0)
  75.           {
  76.            P1=0x00;
  77.            delay(500);
  78.            P1=0x3f;
  79.            delay(500);
  80.           }
  81. }
  82. void yaokong()           //遥控子程序
  83. {
  84.           if(keyyaokong==0)
  85.           {
  86.            ledyk=~ledyk;
  87.            delay(500);
  88.           }
  89. }
  90. void main()
  91. {
  92. while(1)
  93.         {  zuozhuan();        //调用左转子程序
  94.            youzhuan();
  95.            stop();
  96.            yaokong();
  97.           if(kaishi==0)
  98.           {
  99.                    uchar i;

  100.                 for(i=0;i<8;i++)
  101.                 {
  102.         for(j=0; j<10; j++) //from 上 to 下 3 time
  103.         {
  104.           for(i=0;i<8;i++)
  105.             {
  106.               P0=taba[i];
  107.               P2=tabb[i];
  108.               delay2();
  109.             }
  110.         }
  111.           for(i=0;i<8;i++)
  112.             {
  113.               P0=taba[i];
  114.                           P2=0xff;
  115.              // delay1();
  116.             }
  117.      for(j=0; j<10; j++) //from 上 to 下 3 time
  118.         {
  119.           for(i=0;i<8;i++)
  120.             {
  121.               P0=taba[i];
  122.               P2=tabc[i];
  123.               delay2();
  124.             }
  125.         }
  126.      for(i=0;i<8;i++)
  127.             {
  128.              //delay1();
  129.                  }
  130.      for(j=0; j<10; j++) //from 上 to 下 3 time
  131.         {
  132.           for(i=0;i<8;i++)
  133.             {
  134.               P0=taba[i];
  135.               P2=tabd[i]; //"平"
  136.               delay2();
  137.             }
  138.         }
  139.     for(i=0;i<8;i++)
  140.             {
  141.               P0=taba[7-i];
  142.                           P2=0xff;
  143.              // delay1();
  144.             }
  145.            for(i=0;i<8;i++)
  146.             {
  147.              //delay1();
  148.                  }
  149.       for(j=0; j<10; j++) //from 上 to 下 3 time
  150.         {
  151.           for(i=0;i<8;i++)
  152.             {
  153.               P0=taba[i];
  154.               P2=tabe[i];
  155.               delay2();
  156.             }
  157.         }
  158.          for(i=0;i<8;i++)
  159.             {
  160.                 P0=0xff;
  161.                 P2=0xff;
  162.              delay1();
  163.                  }
  164.             }
  165.       }
  166.           }
  167.           }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-9-14 17:34 | 只看该作者
好资料,51黑有你更精彩!!!要是有工程分享就更佳
回复

使用道具 举报

板凳
ID:398134 发表于 2018-9-14 22:13 | 只看该作者
真心希望可以有什么帮忙的,可惜不会
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表