项目一:使用三色灯实现多种颜色变化

科技 科技 1352 人阅读 | 0 人回复

<
1、尝试目标
使用库函数编写,熟习GPIO的使用。
2、尝试道理
使用PWM道理完成色彩变革,使一个周期内乱三种单色光差别的占空比。
3、电路道理图
105156ryd22eidoa2iy2d6.jpg

105157b61666sggrkxe6le.jpg
 

 4、代码完成
main
  1. #include "led.h"
  2. #include "stdio.h"
  3. #include "delay.h"
  4. #include "stm32f10x.h"
  5. u8 UART3_data,UART1_data;
  6. u8 UART3_rcv[20],UART3_rcv_count;
  7. u8 UART1_rcv[50],UART1_rcv_count,Uart1_finish;
  8. int main(void)
  9. {
  10.         delay_init();
  11.         led_init();
  12.   while (1)
  13.   {         
  14.         //每1次改动色
  15.                 int num;
  16.                 for(num=1;num<=12;num++)
  17.                 {
  18.                         led_pwm(num);
  19.                        
  20.                 }         
  21.      led_mode_A();               
  22.         }
  23. }
复造代码
led.h
  1. #include "led.h"
  2. #include "stdio.h"
  3. #include "led.h"
  4. #include "delay.h"
  5. void led_init(void)
  6. {
  7.         GPIO_InitTypeDef GPIO_InitStruct_A,GPIO_InitStruct_B;
  8.         //翻开引足A,B的时钟
  9.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
  10.         RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
  11.         // 设置管足
  12.         GPIO_InitStruct_B.GPIO_Mode=GPIO_Mode_Out_PP;
  13.         GPIO_InitStruct_B.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
  14.         GPIO_InitStruct_B.GPIO_Speed=GPIO_Speed_50MHz;
  15.         // 设置管足A
  16.         GPIO_InitStruct_A.GPIO_Mode=GPIO_Mode_Out_PP;
  17.         GPIO_InitStruct_A.GPIO_Pin=GPIO_Pin_7;
  18.         GPIO_InitStruct_A.GPIO_Speed=GPIO_Speed_50MHz;
  19.         //A,B管足的的初初化
  20.         GPIO_Init(GPIOB,&GPIO_InitStruct_B);
  21.         GPIO_Init(GPIOA,&GPIO_InitStruct_A);
  22.         //
  23.         GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN);
  24.         GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
  25.         GPIO_ResetBits(LED_B_GPIO_PORT,LED_B_GPIO_PIN);
  26. }
  27. void  led_pwm(int k)
  28. {
  29.           int i=2000;//两秒变革周期
  30.     for (;i>0;i--)
  31.                 {
  32.                         //
  33.                 GPIO_SetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  34.                 GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  35.                 GPIO_SetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  36.                 switch(k)
  37.                 {
  38.                         case 1:
  39.                                                         delay_us(200);
  40.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  41.                                                         delay_us(200);
  42.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  43.                                                         delay_us(200);
  44.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  45.                                                         delay_us(400);
  46.                         break;
  47.                         case 2:
  48.                                                         delay_us(300);
  49.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  50.                                                         delay_us(300);
  51.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  52.                                                         delay_us(300);
  53.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  54.                                                         delay_us(100);
  55.                         break;
  56.                         case 3:
  57.                                                         delay_us(50);
  58.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  59.                                                         delay_us(550);
  60.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  61.                                                         delay_us(200);
  62.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  63.                                                         delay_us(200);
  64.                         break;
  65.                         case 4:
  66.                                                         delay_us(200);
  67.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  68.                                                         delay_us(200);
  69.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  70.                                                         delay_us(200);
  71.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  72.                                                         delay_us(400);
  73.                         break;
  74.                         case 5:
  75.                                                         delay_us(300);
  76.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  77.                                                         delay_us(300);
  78.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  79.                                                         delay_us(300);
  80.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  81.                                                         delay_us(100);
  82.                         break;
  83.                         case 6:
  84.                                                         delay_us(50);
  85.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  86.                                                         delay_us(550);
  87.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  88.                                                         delay_us(200);
  89.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  90.                                                         delay_us(200);
  91.                         break;
  92.                         case 7:
  93.                                                         delay_us(200);
  94.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  95.                                                         delay_us(200);
  96.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  97.                                                         delay_us(200);
  98.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  99.                                                         delay_us(400);
  100.                         break;
  101.                         case 8:
  102.                                                         delay_us(300);
  103.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  104.                                                         delay_us(300);
  105.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  106.                                                         delay_us(300);
  107.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  108.                                                         delay_us(100);
  109.                         break;
  110.                         case 9:
  111.                                                         delay_us(50);
  112.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  113.                                                         delay_us(550);
  114.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  115.                                                         delay_us(200);
  116.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  117.                                                         delay_us(200);
  118.                         break;
  119.                 case 10:
  120.                                                         delay_us(200);
  121.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  122.                                                         delay_us(200);
  123.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  124.                                                         delay_us(200);
  125.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  126.                                                         delay_us(400);
  127.                         break;
  128.                         case 11:
  129.                                                         delay_us(300);
  130.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  131.                                                         delay_us(300);
  132.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  133.                                                         delay_us(300);
  134.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  135.                                                         delay_us(100);
  136.                         break;
  137.                         case 12:
  138.                                                         delay_us(50);
  139.                                                         GPIO_ResetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  140.                                                         delay_us(550);
  141.                                                         GPIO_ResetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  142.                                                         delay_us(200);
  143.                                                         GPIO_ResetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  144.                                                         delay_us(200);
  145.                         break;
  146.                 }       
  147.                 }
  148. }
  149. void  led_mode_A(void)
  150. {
  151.     GPIO_SetBits(LED_R_GPIO_PORT, LED_R_GPIO_PIN);
  152.                 delay_ms(20000);
  153.                 GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN);
  154.                
  155.                 GPIO_SetBits(LED_G_GPIO_PORT, LED_G_GPIO_PIN);
  156.                 delay_ms(20000);
  157.                 GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
  158.                
  159.                 GPIO_SetBits(LED_B_GPIO_PORT, LED_B_GPIO_PIN);
  160.                 delay_ms(20000);
  161.                 GPIO_ResetBits(LED_B_GPIO_PORT,LED_B_GPIO_PIN);
  162. }
  163.        
  164.        
复造代码
代码很小利剑,列位看民不雅多斧正哦~

免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

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

本版积分规则