找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7631|回復(fù): 0
收起左側(cè)

51單片機(jī):LED燈 的所有代碼(集中在一起)

[復(fù)制鏈接]
ID:103513 發(fā)表于 2016-1-17 01:22 | 顯示全部樓層 |閱讀模式
  1. /*
  2. 點(diǎn)亮LED燈:方1  位操作方式   sbit D1=P1^0;
  3.     方2  總線方工     P1=0x??;
  4. 讓LED燈閃爍
  5. */
  6. /*
  7. //方1:位操作方式點(diǎn)亮LED
  8. #include<reg52.h>
  9. sbit  D1=P1^0;      //P1^0的P必須是大寫
  10. void main()
  11. {
  12.     D1=0;        //使用P1^0必須先經(jīng)過sbit定義,而不能直接用P1^0=0;否則編譯過不了
  13. }
  14. */

  15. //-----------------------------------------------------------------------------------------------------------
  16. /*
  17. //方2:總線方式點(diǎn)亮LED
  18. #include<reg52.h>
  19. void main()
  20. {
  21.     P1=0xfd;         //1111 1100 LED是共陽(yáng)的,低電平時(shí)點(diǎn)亮,所以就是LED1和2燈被點(diǎn)亮
  22. }
  23. */

  24. //-----------------------------------------------------------------------------------------------------------
  25. /* 讓LED燈閃爍    采用位點(diǎn)亮+內(nèi)部循環(huán)進(jìn)行延時(shí)
  26. #include <reg52.h>
  27. sbit D1=P1^3;              //隨便一個(gè)你也可改為P1^0,注意P要大寫的才可以
  28. unsigned int a;
  29. void main()
  30. {
  31. D1=0;
  32. for (a=0;a<=20000;a++) {};       //for循環(huán) {}空操作即可形成延時(shí)效果
  33. D1=1;
  34. for (a=0;a<=20000;a++) {};
  35. }
  36. */

  37. //-----------------------------------------------------------------------------------------------------------
  38. /*
  39. //讓LED燈閃爍    采用位方式+delay延時(shí)函數(shù)方式
  40. #include <reg52.h>
  41. sbit D1=P1^0;    //位操作方式
  42. unsigned int a;
  43. void delay(int x)         //延時(shí)
  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個(gè)燈一起閃爍  ,采用總線方式
  61. #include<reg52.h>
  62. unsigned int a;
  63. void delay(int x)          //延時(shí)
  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,點(diǎn)亮前3個(gè)燈,3個(gè)燈一起閃爍
  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;         //點(diǎn)亮燈
  89.      while(a--);    //程序停在這里,一直執(zhí)行減法,直到a從51000減到0后退出循環(huán),這就形成延時(shí)
  90.      a=5100;      //前面a已經(jīng)減成0了,這里再給它個(gè)初值
  91.      P10=1;
  92.     while(a--);    //又從初值51000減到0為止,形成延時(shí)效果
  93. }
  94. }
  95. */
  96. //-----------------------------------------------------------------------------------------------------------
  97. /*
  98. //流水燈 ,在PIC單片機(jī)里流水燈只要設(shè)整個(gè)端的0x??值然后采用端口值=端口值<<1左移1位即可形成流水燈
  99. //而在52單片機(jī)里卻不行,得用_crol關(guān)皺字,而這個(gè)關(guān)鍵字又是在另一頭文件intrins.h里,所以在開頭就得先包含它_
  100. #include <reg52.h>
  101. #include <intrins.h>     //因?yàn)橐玫絚orol這一關(guān)鍵字
  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--)   //循環(huán)8次

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

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

  124. //流水燈 :正流+倒流;在PIC里流水燈只要設(shè)整個(gè)端的0x??值然后采用端口值=端口值<<1左移1位即可形成流水燈
  125. //而在52單片機(jī)里卻不行,得用_crol關(guān)皺字,而這個(gè)關(guān)鍵字又是在另一頭文件intrins.h里,所以在開頭就得先包含它
  126. #include <reg52.h>
  127. #include <intrins.h>     //因?yàn)橐玫絚orol這一關(guān)鍵字
  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--)   //循環(huán)8次

  142.      {
  143.       P1=temp;
  144.       temp=_crol_(temp,1); //移動(dòng)
  145.       delay(100);
  146.      }
  147. temp=0x7f;              //注意這一句,如果沒有這一句,下面的語句循環(huán)是循環(huán)了,卻沒東西出來
  148.     for (a=8;a>0;a--)   //循環(huán)8次,即流水燈8個(gè)循環(huán)8次即可點(diǎn)亮8個(gè)
  149.    {
  150.      P1=temp;
  151.     temp=_crol_(temp,-1); //移動(dòng)
  152.      delay(100);
  153.    }
  154. }
復(fù)制代碼


相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表