久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3323|回復: 0
收起左側

藍橋杯嵌入式模擬題—STM32里程儀的設計程序

[復制鏈接]
ID:705656 發表于 2020-3-10 11:27 | 顯示全部樓層 |閱讀模式
這是我最近剛完成的藍橋杯嵌入式模擬題--里程儀的程序設計,經實驗在開發板上功能基本實現。附件里包含程序源碼,歡迎各位前來下載。

實驗結果圖片

實驗結果圖片


單片機源程序如下:
#include "stm32f10x.h"
#include "lcd.h"

#include "io.h"
#include "i2c.h"
#include <stdio.h>


__IO u8 Flag_key = 1;//50ms
__IO u8 Flag_led = 0;//500ms
__IO u8 Flag_catch = 0;//pwm捕獲標志位i
__IO u8 Flag_check = 0;//200ms刷新顯示信息
__IO u8 Flag_stop_check = 0;//1500ms檢測是否停車
__IO u8 Flag_car = 0;//開車監測
__IO u8 Flag_time = 0;//時間標志位
__IO u32 TimeVar=0;//計時緩存
u8 THH=0,TMM=0,TSS=0;//時間顯示
__IO uint16_t IC2Value;//pwm捕獲緩存
__IO uint32_t Frequency_in;//輸入頻率
__IO uint32_t Frequency_out = 0;//輸出頻率
#if PWM_MODE
__IO uint16_t CCR1_Val = 5000;//頻率=10000/CCR1_Val;
#else

#endif

__IO u8 Total_km = 0;//總公里數
__IO float Total_km_temp;//總公里計數緩存
__IO float km = 0;//本次行車路程
__IO float Vim = 0;//瞬時速度
__IO float Vavg = 0;//本次平均速度

u8 string[20];
u32 TimingDelay = 0;
void delay_ms(u32 nTime);
//Main Body
int main(void)
{

SysTick_Config(SystemCoreClock/1000);



io_init();

STM3210B_LCD_Init();
LCD_Clear(White);

i2c_init();

#if PWM_MODE
TIM3OUT_Init(0xffff,3600-1);//時鐘頻率20khz
TIM3CH1_set(0);//關閉輸出pwm
#else

pwm_init();

#endif

TIM2IN_Init(0xffff,7200-1);//時鐘頻率10khz


sprintf(string,"Vim(km/h):  %0.1f   ",Vim);
LCD_DisplayStringLine(Line1,string);
   
sprintf(string,"Vavg(km/h): %0.1f   ",Vavg);
LCD_DisplayStringLine(Line3,string);

sprintf(string,"T(h:m:s): %0.2d:%0.2d:%0.2d",THH,TMM,TSS);
LCD_DisplayStringLine(Line5,string);

sprintf(string,"S(km):  %0.1f  ",km);
LCD_DisplayStringLine(Line7,string);


Total_km = eeprom_read(0x01);
Total_km_temp = (float)(Total_km*500);
delay_ms(2);
sprintf(string,"    Total(km):%d   ",Total_km);
LCD_DisplayStringLine(Line9,string);

while(1)
{
  //50ms
  if(Flag_key)
  {
   Flag_key = 0;
   
   key_read();
   
   if(key_sum==1)
   {
   
   
    Frequency_out++;
    if(Frequency_out>=20)
    {
     Frequency_out = 20;
    }
   
    #if PWM_MODE
   
    CCR1_Val =  10000/Frequency_out;
    if(Frequency_out<=1)
    TIM3CH1_set(1);
    Flag_stop_check=1;
    //Flag_catch = 1;
   
    #else
   
   
    #endif
   
   }
   if(key_sum==2)
   {
    Frequency_out--;
   
    #if PWM_MODE
   
    CCR1_Val =  10000/Frequency_out;
    if((Frequency_out<=0)||(Frequency_out>20))
    {
     Frequency_out=0;
     TIM3CH1_set(0);
    }
    #else
    if((Frequency_out<=0)||(Frequency_out>20))
    {
     Frequency_out=0;
    }
    #endif
   }
   
   
  }
  if(Flag_check)
  {
   //瞬時
   Vim = (float)(Frequency_in)*7.2;
   sprintf(string,"Vim(km/h):  %0.1f     ",Vim);
   LCD_DisplayStringLine(Line1,string);
  }
  //200ms
  if((Flag_check)&&(Flag_car))
  {
   Flag_check = 0;
   
   Vavg = ((km*1000)/TimeVar)*3.6;
   
   sprintf(string,"Vavg(km/h): %0.1f   ",Vavg);
   LCD_DisplayStringLine(Line3,string);
   
   sprintf(string,"S(km):  %0.1f   ",km);
   LCD_DisplayStringLine(Line7,string);
   
   eeprom_write(0x01,Total_km);
   delay_ms(2);
   Total_km = eeprom_read(0x01);
   delay_ms(2);
   sprintf(string,"    Total(km):%d   ",Total_km);
   LCD_DisplayStringLine(Line9,string);
   
   
  }
  if((Flag_time)&&(Flag_car))
  {
   Flag_time = 0;
   TimeVar++;
   if (TimeVar >= 21390039)
   {
    TimeVar = 0;
   }
   THH = TimeVar / 3600;
   TMM = (TimeVar % 3600) / 60;
   TSS = (TimeVar % 3600) % 60;
   
   sprintf(string,"T(h:m:s): %0.2d:%0.2d:%0.2d",THH,TMM,TSS);
   LCD_DisplayStringLine(Line5,string);
  }

  if(Flag_stop_check)
  {
   Flag_stop_check = 0;
   
   if(Flag_catch)
   {Flag_car = 1;}
   
   else
   {Flag_car = 0;}
   
   Flag_catch = 0;
  }
  if(Flag_car==0)//停車
  {
   TimeVar = 0;
   Frequency_in = 0;
   Vavg = 0;
   km = 0;
  }
  //1s閃爍報警
  if((Flag_led)&&(Flag_car)&&(Vim>90))
  {
   Flag_led = 0;
   
   LED ^= (0x01<<0);
   led_set();
  }

  if((Flag_led)&&((Flag_car)||(Vim<90)))
  {
   Flag_led = 0;
   
   LED |= (0x01<<0);
   led_set();
  }
}

}

全部資料51hei下載地址:
第四屆模擬題及答案.7z (586.15 KB, 下載次數: 19)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 蜜桃视频在线观看免费视频网站www | 国产91精品在线 | 日韩国产在线 | 在线看成人av | 精品伊人久久 | 在线观看中文字幕 | 男女在线免费观看 | 午夜视频在线 | 欧美不卡视频 | 午夜爽爽爽男女免费观看影院 | 午夜伊人 | 国产成人精品一区二区 | 国产精品久久久久久久粉嫩 | 日韩精品一区中文字幕 | 欧美日韩综合 | 欧美成人影院在线 | 999久久久久久久久6666 | 久久99久久99精品免视看婷婷 | 成人国产精品久久久 | 亚洲三级av | 欧美成人免费在线视频 | 一级a爱片久久毛片 | 大学生a级毛片免费视频 | 日本不卡免费新一二三区 | 小草久久久久久久久爱六 | 国产精品午夜电影 | 中文字幕一区二区三区四区五区 | 欧美高清一级片 | 国产成人a亚洲精品 | 激情欧美一区二区三区中文字幕 | 久久精品99| 一级网站 | 亚洲一区二区在线视频 | 欧美日韩视频网站 | 在线国产欧美 | 中文亚洲字幕 | 国产欧美二区 | 免费爱爱视频 | 日韩电影中文字幕 | 欧美精品一区二区免费 | 欧美爱爱视频 |