免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 891 | 回复: 0

mirco2440 裸机程序 之流水灯蜂鸣器 [复制链接]

论坛徽章:
0
发表于 2011-12-21 08:41 |显示全部楼层
  1. /*****************************************************************
  2. *程序名称:LED C语言控制程序        
  3. *程序功能: 流水灯演示
  4. *开发板:     micro2440        
  5. *端口定义: BEEP=GPB0
  6.              LED1=GPB5                    
  7. *         LED2=GPB6                
  8. *         LED3=GPB7
  9. *     LED4=GPB8
  10.                              
  11. *创建者 :     workman    
  12. ** 日 期: 2011年 05月 13日    
  13. ****************************************************************/
  14. #include "s3c2440.h"
  15. #define BEEP_ON (1<<0)         //    高电平蜂鸣器响
  16. #define LED1_ON ~(1<<5)        
  17. #define LED2_ON ~(1<<6)        
  18. #define LED3_ON ~(1<<7)    
  19. #define LED4_ON ~(1<<8)
  20.                                   // 想要某位置1 就用该位与1或
  21.                                  // 想要某位置0 就用该位与0与
  22. #define BEEP_OFF ~(1<<0)     // 低电平蜂鸣器不响
  23. #define LED1_OFF (1<<5)    
  24. #define LED2_OFF (1<<6)
  25. #define LED3_OFF (1<<7)
  26. #define LED4_OFF (1<<8)

  27. void Gpio_Init(void);
  28. void Display_Led1(void);
  29. void Display_Led2(void);
  30. void Display_Led3(unsigned int date);

  31. /*********************************************************
  32. ** 函数名称:void delay(int times)
  33. ** 功能描述: 普通延时函数
  34. ** 说明: 延时作用
  35. ** 注意:     无
  36. ********************************************************/
  37. void delay(int times)
  38. {
  39.     int i;
  40.      for(;times>0;times--)
  41.      for(i=0;i<400;i++);
  42. }
  43. /*********************************************************
  44. ** 函数名称: int main(void)
  45. ** 功能描述: 主函数
  46. ** 说明: 无
  47. ** 注意:     无
  48. ********************************************************/
  49. int main(void)
  50. {    // unsigned int i;
  51.       Gpio_Init();
  52.    while(1)
  53.     {
  54.         Display_Led1();
  55.     //    Display_Led2();    
  56.         /*for(i=1;i<7;i++)
  57.          {
  58.              Display_Led3(i);
  59.              delay(1000);
  60.             }*/    
  61.      GPBDAT=BEEP_ON;
  62.             delay(1000);
  63.          GPBDAT=BEEP_OFF;                                  
  64.      }
  65. }
  66. /*********************************************************
  67. ** 函数名称: void Gpio_Init(void)
  68. ** 功能描述: I/O设置
  69. ** 说明: 00=输入 01=输出 01=第二功能 11=保留
  70. ** 注意:     无
  71. ********************************************************/
  72. void Gpio_Init(void)
  73. {
  74. GPBCON = (1<<0)|(1<<10)|(1<<12)|(1<<14)|(1<<16);    // 01 01 01 01 000000000 设置GPBCON为5,6,7,8 为输出口 00=输入 01=输出 01=第二功能 11=保留
  75.  //GPBCON =0x15400;        // 00 01 01 01 01 00 0000 0000
  76.      //    GPB8 GPB7 GPB6     GPB5 设置GPBCON为5,6,7,8 为输出口 00=输入 01=输出 01=第二功能 11=保留
  77.       GPBUP =0x3fE;         // 总共10位 设置上拉电阻     0为上拉电阻使能。 1为禁止上拉电阻

  78. }
  79.                 
  80. /*********************************************************
  81. ** 函数名称: void Display_Led1(void)
  82. ** 功能描述: 点亮发光二极管
  83. ** 说明: LED1 LED2 LED3 LED4 所接的管脚为GPB5 GPB6 GPB7 GPB8
  84.               0为亮 1为灭
  85. ** 注意:     无
  86. ********************************************************/
  87. void Display_Led1(void)
  88.   {
  89.       GPBDAT =0x000;
  90.      delay(8000);    
  91.      GPBDAT =0xfff;
  92.      delay(8000);
  93.        GPBDAT=0x1c0;     //0001 1100 0000
  94.      delay(8000);
  95.      GPBDAT=0x1a0;     //0001 1010 0000
  96.      delay(8000);
  97.      GPBDAT=0x160;     //0001 0110 0000
  98.      delay(8000);
  99.      GPBDAT=0x0e0;     //0000 1110 0000
  100.      delay(8000);
  101.   
  102.   }
  103. /*********************************************************
  104. ** 函数名称: void Display_Led2(void)
  105. ** 功能描述: 点亮发光二极管
  106. ** 说明: LED1 LED2 LED3 LED4 所接的管脚为GPB5 GPB6 GPB7 GPB8
  107.               0为亮 1为灭
  108. ** 注意:     1:想要某位置1 就用该位与1或
  109.               2:想要某位置0 就用该位与0与
  110. ********************************************************/
  111. void Display_Led2(void)
  112.  {
  113.      GPBDAT = GPBDAT&((LED1_ON)&(LED2_ON)&(LED3_ON)&(LED4_ON));
  114.       delay(1000);
  115.      GPBDAT = GPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
  116.       delay(1000);
  117.      GPBDAT = GPBDAT&(LED1_ON);
  118.      delay(1000);
  119.      GPBDAT = GPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
  120.      delay(1000);
  121.      GPBDAT = GPBDAT&(LED2_ON);
  122.      delay(1000);
  123.      GPBDAT = GPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
  124.      delay(1000);
  125.      GPBDAT = GPBDAT&(LED3_ON);
  126.      delay(1000);
  127.      GPBDAT = GPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
  128.      delay(1000);
  129.      GPBDAT = GPBDAT&(LED4_ON);
  130.      delay(1000);
  131.      GPBDAT = GPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF);
  132.      delay(1000);
  133.  }
  134. /*********************************************************
  135. ** 函数名称: void Display_Led3(unsigned int date)
  136. ** 功能描述: 点亮发光二极管 可以由date取值。确定怎么亮
  137. ** 说明: LED1 LED2 LED3 LED4 所接的管脚为GPB5 GPB6 GPB7 GPB8
  138.               0为亮 1为灭
  139. ** 注意:     1:想要某位置1 就用该位与1或
  140.               2:想要某位置0 就用该位与0与
  141.              此程序在while容易出问题。
  142. ********************************************************/
  143.  void Display_Led3(unsigned int date)
  144.  {
  145.    switch(date)
  146.            {        
  147.              case 1:    GPBDAT = GPBDAT&(LED1_ON); break;
  148.             case 2: GPBDAT = GPBDAT&(LED2_ON); break;
  149.             case 3:    GPBDAT = GPBDAT&(LED3_ON); break;
  150.             case 4:    GPBDAT = GPBDAT&(LED4_ON); break;
  151.             case 5: GPBDAT = GPBDAT&((LED1_ON)&(LED2_ON)&(LED3_ON)&(LED4_ON))&(BEEP_ON); break;    
  152.             case 6: GPBDAT = GPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF)|(BEEP_OFF); break;
  153.          }
  154.  }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP