初学51,自己写的LED灯程序,希望和大家交流,互相学习

2020-02-05 09:18发布

初学51,自己写的LED灯程序,希望和大家交流,互相学习
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
goolloo
1楼-- · 2020-02-06 01:02
  1. /***************************************************************************************************
  2. *AT89C52RC单片机操作8个led灯
  3. *菜鸟一号
  4. *2012.5.8
  5. ****************************************************************************************************/
  6. #include<reg52.h>
  7. //sbit LED=P2^0;
  8. typedef unsigned int uInt;
  9. typedef unsigned char uChar;

  10. void delay(uInt);            //the function to delay for a moment
  11. void BothToMid();
  12. void MidToBoth();
  13. void LeftToRight();
  14. void RightToLeft();
  15. void Lighter();
  16. void Darker();
  17. /************************************************main()********************************************/
  18. void main()
  19. {
  20.   void BothToMid();
  21.   void MidToBoth();
  22.   void LeftToRight();
  23.   void RightToLeft();
  24.   void Lighter();
  25.   void Darker();
  26.   while(1)
  27.   {
  28.    
  29.     BothToMid();
  30.     MidToBoth();
  31.         LeftToRight();
  32.         RightToLeft();
  33.         Lighter();
  34.         Darker();
  35.         delay(500);
  36.        
  37.   }
  38. }
  39. /*************************************************
  40. *function: delay for a moment
  41. *input:    time     type:unsigned int
  42. *output:   none
  43. **************************************************/
  44. void delay(uInt time)
  45. {
  46.   uInt i;
  47.   uChar j;
  48.   for(i=0;i<time;i++)
  49.      for(j=0;j<125;j++);
  50. }
  51. /**************************************************
  52. *function: let the led light from left to right one by one
  53. *input:    none
  54. *output:   none
  55. ***************************************************/
  56. void LeftToRight()
  57. {
  58.     uChar i;
  59.     uChar temp=0xfe;
  60.         for(i=0;i<8;i++)
  61.         {
  62.          P2=temp;
  63.          temp=(temp<<1)|1;
  64.          delay(500);
  65.          }
  66. }
  67. /**************************************************
  68. *function: let the led light from  right to left one by one
  69. *input:    none
  70. *output:   none
  71. ***************************************************/
  72. void RightToLeft()
  73. {
  74.     uChar i;
  75.     uChar temp=0x7f;
  76.         for(i=0;i<8;i++)
  77.         {
  78.          P2=temp;
  79.          temp=(temp>>1)|0x80;
  80.          delay(500);
  81.          }
  82. }
  83. /***************************************************
  84. *function: let the led light from both edge to middle one by one
  85. *input:    none
  86. *output:   none
  87. ****************************************************/
  88. void BothToMid()
  89. {
  90.   uChar temp[4]={0x7e,0xbd,0xdb,0xe7};
  91.   uChar i;
  92.   for(i=0;i<4;i++)
  93.   {
  94.     P2=temp[i];
  95.         delay(1000);
  96.   }
  97. }
  98. /****************************************************
  99. *function: let the led light from middle to both edge one by one
  100. *input:    none
  101. *output:   none
  102. *****************************************************/
  103. void MidToBoth()
  104. {
  105.   
  106.   uChar temp[4]={0xe7,0xdb,0xbd,0x7e,};
  107.   uChar j;
  108.   for(j=0;j<4;j++)
  109.   {
  110.     P2=temp[j];
  111.         delay(1000);
  112.   }
  113. }
  114. /*****************************************************
  115. *function :wait for a moment to let the led become lighter or darker
  116. *input: timer   type:unsigned char
  117. *output: none
  118. *******************************************************/
  119. void delay1(uChar timer)
  120. {
  121.   uChar i;
  122.   while(timer--)
  123.   {
  124.    for(i=0;i<1;i++);
  125.   }
  126. }
  127. /******************************************************
  128. *function:let the led become lighter and lighter
  129. *input:none
  130. *output:none
  131. ********************************************************/
  132. void Lighter()
  133. {
  134. void delay1(uChar);
  135. uChar maxNum;
  136. uChar timer;
  137. unsigned char j;
  138. P2=0xff;
  139. maxNum=250;
  140. timer=0;

  141. for(j=0;j<maxNum;j++)
  142. {
  143.    timer++;
  144.    delay1(timer);
  145.    P2=0xff;
  146.    timer=~timer;
  147.    delay1(timer);
  148.    P2=0x00;
  149.    timer=~timer;
  150.    
  151. }
  152. }
  153. /*********************************************************
  154. *function:let the led become darker and darker
  155. *input:none
  156. *output:none
  157. **********************************************************/
  158. void Darker()
  159. {
  160. void delay1(uChar);
  161. uChar maxNum;
  162. uChar timer;
  163. unsigned char j;
  164. P2=0x00;
  165. maxNum=250;
  166. timer=0;

  167. for(j=0;j<maxNum;j++)
  168. {
  169.    timer++;
  170.    delay1(timer);
  171.    P2=0x00;
  172.    timer=~timer;
  173.    delay1(timer);
  174.    P2=0xff;
  175.    timer=~timer;
  176.    
  177. }
  178. }
复制代码楼主的代码格式还是很好看的~~~
天涯行客
2楼-- · 2020-02-06 01:21
楼主初学51就能写出这样的程序,看来c语言功底不浅啊!程序格式也很到位....我很好奇楼主是在学51看那些比较好的资料啊
hqk1992
3楼-- · 2020-02-06 03:36
楼主最后那两段使LED渐亮渐灭的代码很巧啊,学习了不少。
chenxujiaoyang
4楼-- · 2020-02-06 03:40
 精彩回答 2  元偷偷看……
niukai
5楼-- · 2020-02-06 04:21
無智 发表于 2012-5-12 17:23
是啊,最希望这类分享的帖子,如果有附件,能大概介绍一下附件内容的细节。 ...

赞同!!!顶你!
niukai
6楼-- · 2020-02-06 06:33
/***************************************************************************************************
*AT89C52RC单片机操作8个led灯
*菜鸟一号
*2012.5.8
****************************************************************************************************/
#include<reg52.h>
//sbit LED=P2^0;
typedef unsigned int uInt;
typedef unsigned char uChar;

void delay(uInt);            //the function to delay for a moment
void BothToMid();
void MidToBoth();
void LeftToRight();
void RightToLeft();
void Lighter();
void Darker();
/************************************************main()********************************************/
void main()
{
  void BothToMid();
  void MidToBoth();
  void LeftToRight();
  void RightToLeft();
  void Lighter();
  void Darker();
  while(1)
  {
   
    BothToMid();
    MidToBoth();
        LeftToRight();
        RightToLeft();
        Lighter();
        Darker();
        delay(500);
        
  }
}
/*************************************************
*function: delay for a moment
*input:    time     type:unsigned int
*output:   none
**************************************************/
void delay(uInt time)
{
  uInt i;
  uChar j;
  for(i=0;i<time;i++)
     for(j=0;j<125;j++);
}
/**************************************************
*function: let the led light from left to right one by one
*input:    none
*output:   none
***************************************************/
void LeftToRight()
{
    uChar i;
    uChar temp=0xfe;
        for(i=0;i<8;i++)
        {
         P2=temp;
         temp=(temp<<1)|1;
         delay(500);
         }
}
/**************************************************
*function: let the led light from  right to left one by one
*input:    none
*output:   none
***************************************************/
void RightToLeft()
{
    uChar i;
    uChar temp=0x7f;
        for(i=0;i<8;i++)
        {
         P2=temp;
         temp=(temp>>1)|0x80;
         delay(500);
         }
}
/***************************************************
*function: let the led light from both edge to middle one by one
*input:    none
*output:   none
****************************************************/
void BothToMid()
{
  uChar temp[4]={0x7e,0xbd,0xdb,0xe7};
  uChar i;
  for(i=0;i<4;i++)
  {
    P2=temp[i];
        delay(1000);
  }
}
/****************************************************
*function: let the led light from middle to both edge one by one
*input:    none
*output:   none
*****************************************************/
void MidToBoth()
{
  
  uChar temp[4]={0xe7,0xdb,0xbd,0x7e,};
  uChar j;
  for(j=0;j<4;j++)
  {
    P2=temp[j];
        delay(1000);
  }
}
/*****************************************************
*function :wait for a moment to let the led become lighter or darker
*input: timer   type:unsigned char
*output: none
*******************************************************/
void delay1(uChar timer)
{
  uChar i;
  while(timer--)
  {
   for(i=0;i<1;i++);
  }
}
/******************************************************
*function:let the led become lighter and lighter
*input:none
*output:none
********************************************************/
void Lighter()
{
void delay1(uChar);
uChar maxNum;
uChar timer;
unsigned char j;
P2=0xff;
maxNum=250;
timer=0;

for(j=0;j<maxNum;j++)
{
   timer++;
   delay1(timer);
   P2=0xff;
   timer=~timer;
   delay1(timer);
   P2=0x00;
   timer=~timer;
   
}
}
/*********************************************************
*function:let the led become darker and darker
*input:none
*output:none
**********************************************************/
void Darker()
{
void delay1(uChar);
uChar maxNum;
uChar timer;
unsigned char j;
P2=0x00;
maxNum=250;
timer=0;

for(j=0;j<maxNum;j++)
{
   timer++;
   delay1(timer);
   P2=0x00;
   timer=~timer;
   delay1(timer);
   P2=0xff;
   timer=~timer;
   
}
}
这代码格式挺好的,细节很重要啊,相信你!

一周热门 更多>