标题: 蓝桥杯嵌入式程序设计(STM32里程仪) [打印本页]

作者: 刘小生    时间: 2019-1-8 21:19
标题: 蓝桥杯嵌入式程序设计(STM32里程仪)
这是我用了2天写的嵌入式程序, 经检验,功能基本上都实现了,欢迎各位下载。

单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "lcd.h"
  3. #include "led.h"
  4. #include "seg.h"
  5. #include "pwm.h"
  6. #include "stdio.h"
  7. u32 Delayms=0;
  8. unsigned char flag_T=0;


  9. unsigned char k_PWM=1,k_Cuty=1;
  10. __IO u8 Total_km = 0;
  11. float Total_km_temp=0;

  12. unsigned char flag_stop_check = 0;//1500ms检测是否停车
  13. __IO u32 TimeVar=0;//计时缓存
  14. u8 THH=0,TMM=0,TSS=0;//时间显示
  15. //uint32_t flag_stop_temp=0;
  16. __IO u8 flag_check = 0;//200ms刷新显示信息
  17. // u8 string[20];
  18. extern __IO uint32_t TIM2Freq;
  19. extern unsigned char flag_time;
  20. extern unsigned char flag_Car;
  21. extern __IO u8  flag_Cath;
  22. void RCC_Configuration(void);
  23. void GPIO_Configuration(void);
  24. void NVIC_Configuration(void);
  25. void Delay_ms(u32 ntime);
  26. void Key_Pro(void);
  27. int main(void)       
  28. {
  29.   u8 string[20];
  30.         SysTick_Config(SystemCoreClock/1000);       
  31.   PWM_Init();
  32.         Get_PWM(10000/k_PWM,5000/k_Cuty);
  33.         STM3210B_LCD_Init();
  34.         LED_init();
  35.         LCD_Clear(Blue);
  36.         LCD_SetBackColor(Blue);
  37.         LCD_SetTextColor(White);                                                         
  38.         // InputCaputure(0xffff,7199);
  39.         TIM2IN_Init(0xffff,7200-1);//时钟频率10khz
  40.         Total_km_temp = (float)(Total_km*500);
  41.         sprintf((char *)string,"    Total(km):%d   ",Total_km);
  42.         LCD_DisplayStringLine(Line9,string);
  43.   while (1)
  44.         {
  45.                
  46.                 Key_Pro();
  47.   display();

  48.         }
  49. }





  50. void Key_Pro(void)
  51. {
  52.         if(RB1==0)
  53.         {
  54.                 Delay_ms(10);
  55.                 if(RB1==0)
  56.                 {
  57.                         flag_T=1;
  58.                  k_PWM++;
  59.                  k_Cuty++;
  60.                         if(k_PWM==20) k_PWM=0;
  61.                         else if(k_Cuty==20) k_Cuty=0;

  62.                 }while(!RB1);
  63.                
  64.         }
  65.        
  66.                 if(RB2==0)
  67.         {
  68.                 Delay_ms(10);
  69.                 if(RB2==0)
  70.                 {
  71.                        
  72.                         k_PWM--;
  73.                   k_Cuty--;
  74.                         if(k_PWM==20) k_PWM=0;
  75.                         else if(k_Cuty==20) k_Cuty=0;


  76.                 }while(!RB2);
  77.                
  78.         }
  79.        
  80.        
  81. }

  82. void NVIC_Configuration(void)
  83. {
  84.   NVIC_InitTypeDef NVIC_InitStructure;

  85.   /* Enable the TIM3 global Interrupt */
  86.   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  87.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  88.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  89.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  90.   NVIC_Init(&NVIC_InitStructure);
  91. }

  92. void Delay_ms(u32 ntime)
  93. {
  94.                
  95.                   Delayms=ntime;
  96.            while(Delayms!=0);
  97.        
  98. }
复制代码

所有资料51hei提供下载:
里程仪.7z (144.66 KB, 下载次数: 38)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1