本屆國賽題目較為綜合,涉及adc、串列埠、輸入捕獲、輸出比較等。
工程結構
主程式
/*
溫度與數模轉換的關係 t=kn+b,(n為模數轉換值,t是溫度)
由已知條件得 t=80n/4095-20;
濕度與捕獲值得關係
h=m/c+n;(c為捕獲值,h是濕度)
由已知條件得
h=(8000/c+10)/9
*/#include "stm32f10x.h"
#include "lcd.h"
#include "init.h"
#include "i2c.h"
#include "stdio.h"
u32 timingdelay = 0;
u8 string[20];
void key_scan(void);
void delay_ms(u32 ntime);
unsigned int tim3_cap(void);
void usart2_send(u8 *str);
void adc_read(void);
void led_disp(u16 led);
u8 miao_flag=0;
u16 miao=0;
u8 fazhi=0,shuju=0;
u16 led=0;
int i;
signed char sctemp,sctemp1;
unsigned char uchumi,uchumi1,ucfreq; //eeprom只能存整數,所以這裡的頻率是實際頻率的一百分之一
unsigned char uchour,ucmin,ucsec;
unsigned char ucdatano=0,ucdatanum=0,data[60][5];
unsigned long ultick_ms=0;
unsigned char ucinte;
unsigned long ulsec=0,ulsec1=0,ulsec2=0;
u8 shezhi=0,qie=0;
//main body
int main(void)
delay_ms(5);
sctemp1=i2c_read(0x00);
delay_ms(5);
uchumi1=i2c_read(0x01);
delay_ms(5);
ucinte=i2c_read(0x02);
delay_ms(5);
ucfreq=i2c_read(0x03);
tim_setautoreload(tim2,10000/ucfreq-1); //週期值
tim_setcompare2(tim2,5000/ucfreq-1); //佔比1/2
while(1)
else if(shuju==1)
else if(qie==2)
else if(qie==3)
else if(qie==4)
}}while(!rb4); }}
void delay_ms(u32 ntime)
void adc_read(void)
if((ulsec-ulsec2)>=ucinte)}}
unsigned int tim3_cap(void)
else
return 0;
}void usart2_irqhandler(void)
else if(temp=='s')
} }
void usart2_send(u8 *str)
while(str[index]!=0);
}void led_disp(u16 led)
void systick_handler(void)
ultick_ms++;
if(ultick_ms%1000==0)
if(sctemp>=sctemp1)
else led&=0xfe;
if(uchumi>=uchumi1)
else led&=0xfd;
}
藍橋杯嵌入式第七屆省賽程式
1 庫檔案 建議按照需求新增,畢竟比賽的電腦執行速度堪憂 2 中斷服務函式 void systick handler void void usart2 irqhandler void else if temp s 其中,miao flag是秒的標誌位,adc每一秒採集一次 而usart的中斷服務函式...
第七屆藍橋杯題解
純 無解析,第七題和第十題不會答案1 171700 2.26 3.29 4.swap a,p,j 5.f a,k 1,m i,b 6.1580 第一題 煤球數目 有一堆煤球,堆成三角稜錐形。具體 第一層放1個,第二層3個 排列成三角形 第三層6個 排列成三角形 第四層10個 排列成三角形 如果一共有...
第七屆藍橋杯(國賽) 隨意組合
問題描述 小明被綁架到x星球的巫師w那裡。其時,w正在玩弄兩組資料 2 3 5 8 和 1 4 6 7 他命令小明從一組資料中分別取數與另一組中的數配對,共配成4對 組中的每個數必被用到 小明的配法是 巫師凝視片刻,突然說這個配法太棒了!因為 每個配對中的數字組成兩位數,求平方和,無論正倒,居然相等...