#include #include #define uint unsigned int
#define uchar unsigned char
/*微控制器型號stc12c5a60s2、感測器gp2y1014au*/
uchar set_st;
uchar tab[5];
uint dust_set=150; //固體顆粒的閾值
//bit shanshuo_st; //閃爍間隔標誌
bit beep_st; //蜂鳴器間隔標誌
uchar x=4; //計數器
//定義標識
uchar flagstart = 0;
float dust_value;
uint dust;
uchar num=0;
uchar mm;
uchar abc;
uchar adc_get[10]=; //定義ad取樣陣列
uchar str[5]=;
/*****初始化定時器0*****/
void inittimer(void)
/*****lcd1602程式*****/
void delay1ms(uint ms)//延時1ms
if(set_st==0)
else if(set_st==1)
while(dec==0);
if(dust_set>0)dust_set--;
if(dust_set==0)dust_set=0;
} if(add==0)
while(add==0);
dust_set++;
if(dust_set>800)dust_set=800;
} }tab[0]=dust_set/1000;
tab[1]='.';
tab[2]=dust_set%1000/100;
tab[3]=dust_set%100/10;
tab[4]=dust_set%10;
}/*****報警子程式*****/
void alarm()
if(dust>dust_set&&beep_st==1)beep=0;
else beep=1;
// if(dust>0&&dust<100)
// if(dust>=10&&dust<300)
// if(dust>=300)
}/*****ad0832轉換程式*****/
uchar adc0832(bit mode,bit channel) //ad轉換,返回結果
//以下**詳細注釋詳見我的資源
ndat = 0;
if(addo == 1)
ndat |= 0x80;
for(i = 0;i < 7;i++)
adcs=1;
adclk=0;
addi=1;
if(dat==ndat)
return(dat);
else
return 0;
}void timer0(void) interrupt 1
uchar error_correct(uchar *str,uchar num)
tl0 = (65536-10000)/256;
th0 = (65536-10000)%256;
tr0 = 1;
ea = 1;
flagstart=0;
} alarm();
} disp(dust);
baojing();
if(set_st==1)
}}
51微控制器 按鍵,鍵盤檢測
但凡做和51微控制器有關的東西,我們組都會用到按鍵.迷之有緣 獨立按鍵的原理很簡單,沒有按鍵按下時,全部為高電平,按下時接觸地變為地電平,檢測是否有低電平來檢測按下動作。矩陣鍵盤稍微複雜一點,分別檢測行,檢測列,以此來確定按鍵位置。注意的是,按下時會有抖動,因為寫程式時,需要消抖。常用的方式是延時函...
51微控制器
數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...
51微控制器
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...