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

正文內(nèi)容

基于單片機的超聲波測距儀的設(shè)計參考論文1-資料下載頁

2025-06-27 19:50本頁面
  

【正文】 efined for signed 8bits integer variable 有符號8位整型變量 */typedef unsigned int U16。 /* defined for unsigned 16bits integer variable 無符號16位整型變量 */typedef signed int S16。 /* defined for signed 16bits integer variable 有符號16位整型變量 */typedef unsigned long U32。 /* defined for unsigned 32bits integer variable 無符號32位整型變量 */typedef signed long S32。 /* defined for signed 32bits integer variable 有符號32位整型變量 */typedef float F32。 /* single precision floating point variable (32bits) 單精度浮點數(shù)(32位長度) */typedef double F64。 /* double precision floating point variable (64bits) 雙精度浮點數(shù)(64位長度) *///定時器0的定時值為1mS,即11059/12=922個時鐘脈沖,其補為65536922=64614define SYSTEMCLK 921600 //11059200/12define T0CLK 921600 //11059200/12define T1CLK 921600 //11059200/12define T1PERIOD 1000000/921600 //T1周期時間,以微秒為單位,define TIMER0H 0xFC //64614/256=252define TIMER0L 0x66 //54447%256=102 //管腳定義sbit Trig = P1^2。sbit Echo = P3^2。 //回波必須接在外部中斷引腳上sbit LedAlarm = P3^6。 //報警燈,低電平亮sbit Beep = P3^7。 //報警蜂鳴器//定義標(biāo)志volatile bit FlagSucceed = 0。 //測量成功標(biāo)志volatile bit FlagDisplay = 0。 //顯示標(biāo)志//定義全局變量U16 DisplayCount=0。U32 time=0。U32 distance=0。 //函數(shù)聲明void delay_20us()。void Start_Module()。void INT0_Init(void)。void Data_Init()。void Timer0_Init()。void Timer1_Init()。//20us延時程序,不一定很準(zhǔn)void delay_20us(){ U16 bt 。 for(bt=0。bt200。bt++)。 //8M晶振是100} //數(shù)據(jù)初始化void Data_Init(){ Trig = 0。 distance = 0。 DisplayCount = 0。}//外部中斷初始化函數(shù)void INT0_Init(void){ IT0 = 0。 //負邊沿觸發(fā)中斷 EX0=0。 //關(guān)閉外部中斷}//外部中斷處理用做判斷回波電平void INT0_ISR (void) interrupt 0{ time =TH1*256+TL1。 //取出定時器的值 FlagSucceed = 1。 //置成功測量的標(biāo)志 EX0=0。 //關(guān)閉外部中斷}//定時器0初始化,16位定時模式,初始化為1ms中斷一次。void Timer0_Init(){ TMOD = 0x11。 //定時器0和1工作在16位方式 TH0 = TIMER0H。 TL0 = TIMER0L。 TR0 = 1。 //啟動定時器 ET0 = 1。 //允許定時器0中斷}//定時器0中斷,用做顯示計時void Timer0_ISR(void) interrupt 1 // 定時器0中斷是1號{ TH0 = TIMER0H。 TL0 = TIMER0L。 DisplayCount ++。 if (DisplayCount = 200) // { FlagDisplay = 1。 DisplayCount = 0。 }}//定時器1初始化,16位計數(shù)模式,時鐘為11059200/12=921600Hz//60ms計數(shù)為55296,即0xD800void Timer1_Init(){ TMOD = 0x11。 //定時器0和1工作在16位方式 TH1 =0。 TL1= 0。 ET1 = 1。}//啟動模塊,Trig管腳20us正脈沖void Start_Module() //啟動模塊{ Trig=1。 //啟動一次模塊 delay_20us()。 Trig=0。}/********************************************************************* 名稱 : Main()* 功能 : 主函數(shù)***********************************************************************/void main(){ U16 i, j,H。 EA = 0。 INT0_Init()。 Timer0_Init()。 //定時器0初始化 Timer1_Init()。 //定時器1初始化 Data_Init()。 EA = 1。 L1602_init()。 L1602_string(1,1,Wele to my )。 L1602_string(2,1,distance meter! )。 //延時 for (i=0。i1000。i++) for (j=0。j1000。j++) {。} while(1) { EA= 0。 //以下為一次檢測過程:先發(fā)出Trig電平,打開外部中斷,清零T1, //最后在外部中斷下降沿觸發(fā)時取出T1當(dāng)前值,計算出Trig脈沖寬度。 while (Echo == 1) 。 Start_Module()。 while(Echo==0) 。//等待Echo回波引腳變高電平 FlagSucceed = 0。 EX0=1。 TH1= 0。 TL1= 0。 TF1= 0。 TR1=1。 //啟動定時器1開始計數(shù) EA = 1。 while (TH183) 。 //盲區(qū) TR1 = 0 。 //關(guān)閉定時器1 EX0 = 0。 //關(guān)閉外部中斷 if(FlagSucceed==1) //一次測試成功,則計算距離,單位為厘米 { distance = time * 。 //計算得到脈沖時間(以微秒為單位) //將微秒時間轉(zhuǎn)變成厘米距離的算法: Y米=(X秒*344)/2 // X秒=( 2*Y米)/344 ==》X秒=*Y米 ==》厘米=微秒/58 distance /=58。 //如果距離小于20cm,則聲光報警 //if ((FlagSucceed == 1) amp。amp。 (distance 50)) //{ //LedAlarm = 0。 // Beep = 0。 //} // else //{ // LedAlarm = 1。 // Beep = 1。 // } } if (FlagDisplay == 1) //1秒顯示時間到 { if(FlagSucceed==0) { //LCD提示無回波 L1602_string(1,1,OutOfRange(04m))。 L1602_string(2,1, )。 } else { //LCD顯示數(shù)據(jù) L1602_string(1,1,Distance Result:)。 L1602_string(2,1, cm )。 if(distance50) { if(20distance=50) { Beep = 1。 for(H=0。H30*distance。H++)。 Beep = 0。 } else { Beep=0。 } } if(distance50) { Beep=1。 } L1602_int(2, 5, distance )。 } FlagDisplay = 0。 } } }
點擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1