[原创] 基于GD32F450的图标式多功能应用系统设计(3)

jinglixixi   2017-8-15 10:02 楼主
接续上一贴
波形绘制函数如下:
  1. if(i==3)
  2. {
  3.         LCD_Clear(WHITE);
  4.     sp=95;
  5.         POINT_COLOR=RED;
  6.         LCD_DrawLine(10, 304, 230, 304);
  7.         LCD_DrawLine(125, 10, 125, 304);  
  8.         POINT_COLOR=BLUE;
  9.     for ( i = 0 ; i < 64; i++)
  10.         {
  11.                         sj=values[i][0];  
  12.                         sj<<=8;
  13.                         sj|=values[i][1];
  14.                         sj=sj/20;
  15.                         LCD_DrawLine(220-sp, 300-4*(i-1), 220-sj, 300-4*(i));
  16.                         sp=sj;
  17.         }
  18.         delay_1ms(1000);
  19.         LCD_Clear(WHITE);
  20.         rcu_config();
  21.     /* GPIO configuration */
  22.     gpio_config();
  23.     /* SYSTICK configuration */
  24.     systick_config();
  25.     /* ADC configuration */
  26.     adc_config();
  27.         adc_resolution_config(ADC1,ADC_RESOLUTION_12B);
  28. adc_oversample_mode_config(ADC1,ADC_OVERSAMPLING_ALL_CONVERT,ADC_OVERSAMPLING_SHIFT_NONE,ADC_OVERSAMPLING_SHIFT_NONE);
  29.     adc_oversample_mode_disable(ADC1);
  30.     while(SET == gpio_input_bit_get(GPIOA,GPIO_PIN_0))
  31.         {
  32.                 LCD_Clear(WHITE);
  33.                     sp=95;
  34.                     POINT_COLOR=RED;
  35.                     LCD_DrawLine(10, 304, 230, 304);
  36.                     LCD_DrawLine(125, 10, 125, 304);  
  37.                     POINT_COLOR=BLUE;       
  38.             for ( i = 0 ; i < 64; i++)
  39.                     {
  40.                           adc_enable(ADC1);
  41.               adc_software_trigger_enable(ADC1,ADC_REGULAR_CHANNEL);
  42.                           while(RESET == adc_flag_get(ADC1,ADC_FLAG_EOC));
  43.                           sj=ADC_RDATA(ADC1);       
  44.                           sj=sj/10;
  45.                           LCD_DrawLine(320-sp, 300-4*(i-1), 320-sj, 300-4*(i));
  46.                           sp=sj;
  47.                           delay_1ms(20);
  48.             }
  49.                  }
  50.                 goto loop;
  51. }


环境温湿度检测的程序如下:
  1. if(i==4)
  2. {
  3.                 i=0;
  4.                 LCD_Clear(WHITE);
  5.                 show_imageh(10,300,0);        
  6.                 POINT_COLOR=RED;
  7.                 BACK_COLOR=WHITE;      
  8.                 DHT11_Init();
  9.                 while(SET == gpio_input_bit_get(GPIOA,GPIO_PIN_0))
  10.                 {
  11.             DHT11_Read_Data(&temp,&humi);
  12.                 LCD_ShowCharh(100,100,'T',1);
  13.                 LCD_ShowCharh(100,90,'e',1);
  14.                 LCD_ShowCharh(100,80,'m',1);
  15.                 LCD_ShowCharh(100,70,'p',1);
  16.                 LCD_ShowCharh(100,60,':',1);
  17.                 LCD_ShowCharh(100,50,temp/10+'0',0);
  18.                 LCD_ShowCharh(100,40,temp%10+'0',0);
  19.                 LCD_ShowCharh(120,100,'H',1);
  20.                 LCD_ShowCharh(120,90,'u',1);
  21.                 LCD_ShowCharh(120,80,'m',1);
  22.                 LCD_ShowCharh(120,70,'i',1);
  23.                 LCD_ShowCharh(120,60,':',1);
  24.                 LCD_ShowCharh(120,50,humi/10+'0',0);
  25.                 LCD_ShowCharh(120,40,humi%10+'0',0);
  26.                 delay_1ms(200);
  27.           }
  28.                 while(SET == gpio_input_bit_get(GPIOA,GPIO_PIN_0));
  29.                 goto loop;
  30.         }


多时段设置处理的程序如下:
  1. if(i==6)
  2. {
  3.                 LCD_Clear(WHITE);      
  4.             show_imageh(10,300,0);        
  5.                 showhanzi16h(60,80,0,0);
  6.                 showhanzi16h(60,60,1,0);
  7.                 showhanzi16h(60,40,2,0);
  8.                 rtc_show_time();
  9.                 timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_1,0);
  10.                 GPIO_BC(GPIOB) = GPIO_PIN_3;   
  11.                 GPIO_BC(GPIOB) = GPIO_PIN_4;
  12.                 GPIO_BC(GPIOD) = GPIO_PIN_7;
  13.         t=rtc_initpara.minute;       
  14.                 LCD_ShowCharh(100,50,t/16+'0',0);
  15.                 LCD_ShowCharh(100,40,t%16+'0',0);
  16.                 LCD_ShowCharh(100,20,'S',0);
  17.                 LCD_ShowCharh(100,10,'T',0);
  18.                 LCD_ShowCharh(140,50,(t+1)/16+'0',0);
  19.                 LCD_ShowCharh(140,40,(t+1)%16+'0',0);       
  20.         LCD_ShowCharh(160,50,(t+2)/16+'0',0);
  21.                 LCD_ShowCharh(160,40,(t+2)%16+'0',0);       
  22.         LCD_ShowCharh(180,50,(t+3)/16+'0',0);
  23.                 LCD_ShowCharh(180,40,(t+3)%16+'0',0);                               
  24.                 c1=0;
  25.                 c2=0;
  26.                 c3=0;
  27.                 c4=0;
  28.         while(SET == gpio_input_bit_get(GPIOA,GPIO_PIN_0))
  29. {
  30.                 rtc_show_time();
  31.                 i=rtc_initpara.minute;
  32.                 if((i==(t+0x01))&&(c1==0))
  33.                 {                       
  34.                 GPIO_BOP(GPIOB) = GPIO_PIN_4;
  35.                 LCD_ShowCharh(140,20,'O',0);
  36.                 LCD_ShowCharh(140,10,'N',0);
  37.         c1=1;                       
  38.                 playn(1);
  39.                 for ( i = 0 ; i < 10; i++)
  40.                 {
  41.             usart_data_transmit(USART1, cmd3[i]);//  play  ok
  42.                 delay_1ms(10);
  43.                 }       

  44.                 }
  45.                 if((i==(t+0x02))&&(c2==0))
  46.                 {
  47.                 timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_1,8000);
  48.                 LCD_ShowCharh(160,20,'O',0);
  49.                 LCD_ShowCharh(160,10,'N',0);       
  50.                 c2=1;
  51.                 playn(2);
  52.                 for ( i = 0 ; i < 10; i++)
  53.                 {
  54.             usart_data_transmit(USART1, cmd3[i]);
  55.                 delay_1ms(10);
  56.                 }
  57.                 }
  58.                 if((i==(t+0x03)) &&(c3==0))
  59.                 {
  60.                 GPIO_BOP(GPIOD) = GPIO_PIN_7;
  61.                 LCD_ShowCharh(180,20,'O',0);
  62.                 LCD_ShowCharh(180,10,'N',0);       
  63.                 c3=1;
  64.                 playn(3);
  65.                 for ( i = 0 ; i < 10; i++)
  66.                 {
  67.             usart_data_transmit(USART1, cmd3[i]);
  68.                 delay_1ms(10);
  69.                 }
  70.                 }
  71.                        
  72.                 if((i==(t+0x04))&&(c4==0))
  73.         {
  74.                           GPIO_BC(GPIOB) = GPIO_PIN_4;
  75.                           timer_channel_output_pulse_value_config(TIMER1,TIMER_CH_1,0);
  76.                       GPIO_BC(GPIOD) = GPIO_PIN_7;
  77.                           LCD_ShowCharh(140,20,'O',0);
  78.                       LCD_ShowCharh(140,10,'F',0);
  79.                           LCD_ShowCharh(160,20,'O',0);
  80.                       LCD_ShowCharh(160,10,'F',0);
  81.                           LCD_ShowCharh(180,20,'O',0);
  82.                       LCD_ShowCharh(180,10,'F',0);
  83.                           c4=1;
  84.                 }
  85.                
  86.                 }
  87.                 goto loop;
  88.         }


未完待续。。。


此内容由EEWORLD论坛网友jinglixixi原创,如需转载或用于商业用途需征得作者同意并注明出处


回复评论 (2)

加油 加油  
加油!在电子行业默默贡献自己的力量!:)
点赞  2017-8-15 10:37
引用: soso 发表于 2017-8-15 10:37
加油 加油

感谢您的鼓励!!!
点赞  2017-8-16 10:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复