今年是一個不平凡的一年,病毒的對抗體現(xiàn)著我們的大國風(fēng)范。
下半場和上半場的省賽題都是一個類型的。下半場相對于上半場要簡單一些。考察的都是AD的使用。想必大家也都用的很嫻熟了。
由于本人準(zhǔn)備很充分,得了省一。代碼在下面,有需要的同學(xué)可以參考一下,能力有限,代碼的算法處理不到位,省一中等的成績,我一個學(xué)長,這個省第三,可想別人的代碼是多簡練 哈哈 一起加油吧
單片機(jī)源程序如下:
#include "key.h"
#include "smg.h"
#include "timer.h" //定時器中斷函數(shù)
#include "delay.h" //軟件延時函數(shù)
#include "ds18b20.h"
#include "pcf8591.h"
#include "userconfig.h" //配置15所使用的功能函數(shù)
unsigned char tempture; //DS18B20的讀取溫度值
bit flag_readtem; //溫度數(shù)據(jù)刷新標(biāo)志位
bit flag_writedac; //DAC響應(yīng)標(biāo)志位
void main()
{
Init_STC15MCU(); //初始化MCU外設(shè)
tempture = Read_Temperature(); //初始化數(shù)碼管顯示值
Init_Timer0(2); //定時2ms
while(1)
{
if(flag_readtem) //每隔 0.4s 刷新一下溫度數(shù)據(jù)
{
flag_readtem = 0;
tempture = Read_Temperature();
}
com_date(); //默認(rèn)參數(shù)比較函數(shù)
Key_Read(); //按鍵檢測函數(shù)
out_DAC(); //DAC 每隔 0.1s 響應(yīng)一次
}
}
/*===========定時器0中斷響應(yīng)函數(shù)=========*/
void InterruptTime0(void) interrupt 1
{
static unsigned char i;
static unsigned char cnt;
cnt ++;i++;
if(cnt > 8)
cnt = 1;
if(i % 50 == 0)
flag_writedac = 1; //0.1s到
if(i> 200)
{
i = 0;
flag_readtem = 1; //0.4s到
}
display(cnt); //數(shù)碼管顯示函數(shù)=== 顯示界面切換時間:遠(yuǎn)遠(yuǎn) ≤ 0.3 秒
signal_Led(); //指示燈函數(shù)
}
|