freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機空氣pm25濃度檢測系統(tǒng)設(shè)計畢業(yè)論文-資料下載頁

2025-06-27 20:51本頁面
  

【正文】 。 write_string(2,0,:000ug/m3 )。 write_sfm_pm(2,8,s_pm)。 //}/***********讀數(shù)模轉(zhuǎn)換數(shù)據(jù)********************************************************/ //請先了解ADC0832模數(shù)轉(zhuǎn)換的串行協(xié)議,再來讀本函數(shù),主要是對應時序圖來理解,本函數(shù)是模擬0832的串行協(xié)議進行的 // 1 0 0 通道 // 1 1 1 通道 unsigned char ad0832read(bit SGL,bit ODD){ unsigned char i=0,value=0,value1=0。 SCL=0。 DO=1。 CS=0。 //開始 SCL=1。 //第一個上升沿 SCL=0。 DO=SGL。 SCL=1。 //第二個上升沿 SCL=0。 DO=ODD。 SCL=1。 //第三個上升沿 SCL=0。 //第三個下降沿 DO=1。 for(i=0。i8。i++) { SCL=1。 SCL=0。 //開始從第四個下降沿接收數(shù)據(jù) value=1。 if(DO) value++。 } for(i=0。i8。i++) { //接收校驗數(shù)據(jù) value1=1。 if(DO) value1+=0x80。 SCL=1。 SCL=0。 } CS=1。 SCL=1。 if(value==value1) //與校驗數(shù)據(jù)比較,正確就返回數(shù)據(jù),否則返回0 return value。 return 0。}/*************定時器0初始化程序***************/void time_init() { EA = 1。 //開總中斷 TMOD = 0X02。 //定時器0、定時器1工作方式1 TH0=216。 //每40us進一次中斷 TL0=216。 ET0 = 1。 //開定時器0中斷 TR0 = 0。 //允許定時器0定時}/********************獨立按鍵程序*****************/uchar key_can。 //按鍵值void key() //獨立按鍵程序{ static uchar key_new。 key_can = 20。 //按鍵值還原 P3 |= 0xf0。 if((P3 amp。 0xf0) != 0xf0) //按鍵按下 { delay_1ms(1)。 //按鍵消抖動 if(((P3 amp。 0xf0) != 0xf0) amp。amp。 (key_new == 1)) { //確認是按鍵按下 key_new = 0。 switch(P3 amp。 0xf0) { case 0xd0: key_can = 3。 break。 //得到k1鍵值 case 0xb0: key_can = 2。 break。 //得到K2鍵值 case 0x70: key_can = 1。 break。 //得到k3鍵值 } } } else key_new = 1。 }/****************按鍵顯示函數(shù)***************/void key_with(){ if(key_can == 1) //設(shè)置鍵 { menu_1 ++。 if(menu_1 1) { menu_1 = 0。 init_1602()。 //lcd1602初始化 } } if(menu_1 == 1) // { if(key_can == 2) { s_pm ++ 。 // if(s_pm = 999) s_pm = 999。 } if(key_can == 3) // { s_pm 。 if(s_pm = 1) s_pm = 1。 } write_sfm_pm(2,8,s_pm)。 // write_(0x80+0x40+7)。 //將光標移動到秒個位 write_(0x0f)。 //顯示光標并且閃爍 write_eeprom()。 //保存數(shù)據(jù) } } /****************報警函數(shù)***************/void clock_h_l(){ static uchar value。 if(pm = s_pm) { value ++。 if(value = 2) beep = ~beep。 //蜂鳴器報警 } else { beep = 1。 value = 0。 } }/************************************/ void PM25_void(){ uint PM_AD_buf=0。 uint PM_AD_dat=0。 uint AD_dat1=0。 float PM_js=。 bit flag1=0 。 GP2Y_LED = 1。 TR0=1。 //開啟中斷 while(1) { if(time_num15) //大約 break。 } AD_dat1 = ad0832read(1,0)。 //模數(shù)轉(zhuǎn)換 PM_AD_dat=AD_dat1。 PM_AD_dat=PM_AD_dat*8+AD_dat1。 PM_AD_dat/=9。 //模數(shù)轉(zhuǎn)換后計算平均值 PM_js=((float)(PM_AD_dat/+))*17291。// if(PM_js 0) PM_js = 0。 PM_dat=(uint)(PM_js)。 b=PM_dat。 if(b=999) b=99。 //數(shù)據(jù)修正 pm = b。}/******************主程序**********************/ void main(){ uint PM_AD_buf=0。 uint PM_AD_dat=0。 uint AD_dat1=0。 float PM_js=。 bit flag1=0 。 beep = 0。 //開機叫一聲 delay_1ms(150)。 P0 = P1 = P2 = P3 = 0xff。 init_eeprom()。 ////開始初始化保存的數(shù)據(jù) time_init()。 //定時器初始化 init_1602()。 //lcd1602初始化 GP2Y_LED = 0。// GP2Y_LED = 1。 while(1) { flag_300ms ++。 if(flag_300ms = 300) { flag_300ms = 0。 if(menu_1 == 0) //開始界面顯示的內(nèi)容 { PM25_void()。 write_sfm_pm(1,8,pm) 。 //顯示PM } clock_h_l()。 //報警函數(shù) } key()。 if(key_can 10) { key_with()。 //設(shè)置報警 } delay_1ms(1)。 }}/*************定時器0中斷服務程序***************/ void time0_int() interrupt 1 //定時中斷函數(shù) 每40us進一次中斷 { time_num1++。 //定時計數(shù)變量+1 if(time_num1==8) { GP2Y_LED=0。 //輸出低電平,驅(qū)動傳感器 } else if(time_num1250) //10MS后計數(shù)器清零,關(guān)閉定時器 { time_num1=0。 TR0=0。 } }附 錄 B電路原理圖46 河南科技大學畢業(yè)論文
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1