找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7110|回复: 0
收起左侧

51单片机:LED灯 的所有代码(集中在一起)

[复制链接]
ID:103513 发表于 2016-1-17 01:22 | 显示全部楼层 |阅读模式
  1. /*
  2. 点亮LED灯:方1  位操作方式   sbit D1=P1^0;
  3.     方2  总线方工     P1=0x??;
  4. 让LED灯闪烁
  5. */
  6. /*
  7. //方1:位操作方式点亮LED
  8. #include<reg52.h>
  9. sbit  D1=P1^0;      //P1^0的P必须是大写
  10. void main()
  11. {
  12.     D1=0;        //使用P1^0必须先经过sbit定义,而不能直接用P1^0=0;否则编译过不了
  13. }
  14. */

  15. //-----------------------------------------------------------------------------------------------------------
  16. /*
  17. //方2:总线方式点亮LED
  18. #include<reg52.h>
  19. void main()
  20. {
  21.     P1=0xfd;         //1111 1100 LED是共阳的,低电平时点亮,所以就是LED1和2灯被点亮
  22. }
  23. */

  24. //-----------------------------------------------------------------------------------------------------------
  25. /* 让LED灯闪烁    采用位点亮+内部循环进行延时
  26. #include <reg52.h>
  27. sbit D1=P1^3;              //随便一个你也可改为P1^0,注意P要大写的才可以
  28. unsigned int a;
  29. void main()
  30. {
  31. D1=0;
  32. for (a=0;a<=20000;a++) {};       //for循环 {}空操作即可形成延时效果
  33. D1=1;
  34. for (a=0;a<=20000;a++) {};
  35. }
  36. */

  37. //-----------------------------------------------------------------------------------------------------------
  38. /*
  39. //让LED灯闪烁    采用位方式+delay延时函数方式
  40. #include <reg52.h>
  41. sbit D1=P1^0;    //位操作方式
  42. unsigned int a;
  43. void delay(int x)         //延时
  44. {
  45. int a,b;
  46. for(a=x;a>0;a--)
  47. for(b=110;b>0;b--);
  48. }
  49. void  main()
  50. {
  51. D1=0;
  52. delay(50);         

  53. D1=1;
  54. delay(50);
  55. /
  56. }
  57. */

  58. //-----------------------------------------------------------------------------------------------------------
  59. /*
  60. //让3个灯一起闪烁  ,采用总线方式
  61. #include<reg52.h>
  62. unsigned int a;
  63. void delay(int x)          //延时
  64. {
  65. int a,b;
  66. for(a=x;a>0;a--)
  67. for(b=110;b>0;b--);
  68. }
  69. void main()
  70. {
  71. P1=0xf8;             //1111 1000,点亮前3个灯,3个灯一起闪烁
  72. delay(500);
  73. P1=0xff;
  74. delay(500);
  75. }
  76. */

  77. //-----------------------------------------------------------------------------------------------------------
  78. /*
  79. //让LED灯闪烁   采用wlile方式
  80. #include <reg52.h>
  81. sbit P10=P1^0;
  82. int a;
  83. void main()
  84. {
  85. while(1)
  86.   {
  87.      a=51000;
  88.      P10=0;         //点亮灯
  89.      while(a--);    //程序停在这里,一直执行减法,直到a从51000减到0后退出循环,这就形成延时
  90.      a=5100;      //前面a已经减成0了,这里再给它个初值
  91.      P10=1;
  92.     while(a--);    //又从初值51000减到0为止,形成延时效果
  93. }
  94. }
  95. */
  96. //-----------------------------------------------------------------------------------------------------------
  97. /*
  98. //流水灯 ,在PIC单片机里流水灯只要设整个端的0x??值然后采用端口值=端口值<<1左移1位即可形成流水灯
  99. //而在52单片机里却不行,得用_crol关皱字,而这个关键字又是在另一头文件intrins.h里,所以在开头就得先包含它_
  100. #include <reg52.h>
  101. #include <intrins.h>     //因为要用到corol这一关键字
  102. #define uchar unsigned char
  103. sbit P23=P2^3 ;
  104. sbit D1=P1^0;
  105. void delay(int x)
  106. {
  107. int a,b;
  108. for(a=x;a>0;a--)
  109. for(b=110;b>0;b--);
  110. }
  111. void main()
  112. {
  113. uchar a,temp;
  114. temp=0xfe;
  115.   for (a=8;a>0;a--)   //循环8次

  116.       {
  117.         P1=temp;
  118.        temp=_crol_(temp,1); //移动
  119.       delay(100);
  120.      }
  121. }
  122. */

  123. //-----------------------------------------------------------------------------------------------------------

  124. //流水灯 :正流+倒流;在PIC里流水灯只要设整个端的0x??值然后采用端口值=端口值<<1左移1位即可形成流水灯
  125. //而在52单片机里却不行,得用_crol关皱字,而这个关键字又是在另一头文件intrins.h里,所以在开头就得先包含它
  126. #include <reg52.h>
  127. #include <intrins.h>     //因为要用到corol这一关键字
  128. #define uchar unsigned char
  129. sbit P23=P2^3 ;
  130. sbit D1=P1^0;
  131. void delay(int x)
  132. {
  133. int a,b;
  134. for(a=x;a>0;a--)
  135. for(b=110;b>0;b--);
  136. }
  137. void main()
  138. {
  139. uchar a,temp;
  140. temp=0xfe;
  141.   for (a=8;a>0;a--)   //循环8次

  142.      {
  143.       P1=temp;
  144.       temp=_crol_(temp,1); //移动
  145.       delay(100);
  146.      }
  147. temp=0x7f;              //注意这一句,如果没有这一句,下面的语句循环是循环了,却没东西出来
  148.     for (a=8;a>0;a--)   //循环8次,即流水灯8个循环8次即可点亮8个
  149.    {
  150.      P1=temp;
  151.     temp=_crol_(temp,-1); //移动
  152.      delay(100);
  153.    }
  154. }
复制代码


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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