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

正文內(nèi)容

基于單片機(jī)的超速報(bào)警器設(shè)計(jì)-閱讀頁

2024-11-30 02:41本頁面
  

【正文】 flag==0) //這句話在 while 循環(huán)中只運(yùn)行一次 { sprintf(temp,speed:% r/s,(float)a)。//顯示到液晶第二行 flag=1。 //2 個(gè)定時(shí)器打開 TR1=1。 //100ms 過后使 TH0 和 TL0 的值為 0,令計(jì)數(shù)器初值為 0 TL0=0。 //關(guān)閉計(jì)時(shí)計(jì)數(shù)標(biāo)志 sum=sum+a。 i=0。 if(aspeed_limit) { buzzer=0。 } else { buzzer=1。 LCD_Write_String(0,1,temp)。 T0 和 T1 的計(jì)數(shù)脈沖可以由單片機(jī)時(shí)鐘脈沖經(jīng)過 12 秒分頻后提供,故定時(shí)時(shí)間和單片機(jī)時(shí)鐘頻率有關(guān)。設(shè)定時(shí)器 T1 工作于模式 1,定時(shí) 100 毫秒;設(shè)定時(shí)計(jì)數(shù)器 T0 工作于模式 1,計(jì)數(shù)器模式,初值為 0,并利用 TL0 和 TH0 存儲(chǔ) 1000 毫秒內(nèi)外部速度脈沖數(shù)。 程 序流程圖: 否 圖 脈沖計(jì)數(shù)程序流程圖 程序清單: a、定時(shí)器 T0 初始化: void Init_Timer0(void) 開始 中斷等待 T0 初始化 判斷時(shí)間到否? T1 初始化 儲(chǔ)存計(jì)數(shù)值 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 18 { TMOD |= 0x01 | 0x04。 //給定初值 TL0=0x00。 //總中斷打開 ET0=1。 //定時(shí)器 0 開關(guān)打開 } b、定時(shí)器 T1 初始化: void Init_Timer1(void) { TMOD |= 0x10。 //給定初值,使用定時(shí)器最大值從 0 開始計(jì)數(shù)一直到 65535 溢出 TL1=LOW。 //總中斷打開 ET1=1。 //定時(shí)器開關(guān)打開 } c、定時(shí)器 T0 和 T1 中斷子程序: void Timer0_isr(void) interrupt 1 { TH0=00。 OVERFLOWFLAG=1。 TH1=HIGH。 i++。 TR0=0。 TIMERFLAG=1。 //重新賦值 TL1=LOW。 程序清單: a、 LCD1602 寫入命令函數(shù): void LCD_Write_Com(unsigned char ) { while(LCD_Check_Busy())。 RW_CLR。 DataPort= 。 EN_CLR。 //忙則等待 RS_SET。 EN_SET。 _nop_()。 } a、 LCD1602 寫入字符串函數(shù): void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { while (*s) { LCD_Write_Char(x,y,*s)。 x++。 程序流程圖: 否 圖 按鍵程序流程圖 程序清單: void keyscan() { 開始 判斷是否有鍵按下? 按鍵值加 1 不同的按鍵值對(duì)應(yīng)不同的限速模式 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 21 if(key_mode==0) { while(key_mode==0)。 if(mode==1) { speed_limit=140。 } if(mode==3) { speed_limit=90。 } if(mode==5) { mode=1。 程序流程圖: 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 22 否 是 圖 報(bào)警模塊程序流程圖 程序清單: a=TL0+TH0*256。 //擴(kuò)大到實(shí)際值,乘以 10 相當(dāng)于做了變換 , 1 秒鐘的時(shí)間轉(zhuǎn)了 a 圈 a=a/4。 time=time5。 } 報(bào)警子 程序 實(shí)時(shí)速度是否大于設(shè)定閾值速度 報(bào)警 結(jié)束 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 23 結(jié) 論 目前交通問題已經(jīng)普遍成為城市發(fā)展急需解決的難題,隨著科技的深入發(fā)展, 汽車系統(tǒng) 智能化管理已成為必然趨勢(shì)。通過采集光電式傳感器檢測(cè)的脈沖數(shù)直接送入單片機(jī)處理,減少了 A/D 轉(zhuǎn)換等步驟,實(shí)現(xiàn)了快速采樣。軟件設(shè)計(jì)采用 C 語言和單片機(jī)中斷技術(shù),運(yùn)算效率高,滿足了實(shí)時(shí)測(cè)量的要求。因硬件因素和個(gè)人知識(shí)的局限,系統(tǒng)本身也有一些不足。所以本系統(tǒng)不能作為純粹的車速測(cè)量顯示儀,但是超速是在高頻 段,用來測(cè)量顯示高速行駛汽車的速度及實(shí)現(xiàn)超速報(bào)警是比較精確的,作為超速報(bào)警儀是可行的。通過本設(shè)計(jì),使學(xué)過的知識(shí)得到了鞏固,對(duì)一些領(lǐng)域的新知識(shí)有一定的攝入,使自己得到相應(yīng)的提高,以后將會(huì)繼續(xù)努力拓展知識(shí)面。 //定義 LED 端口 sbit key_mode=P2^3。//加速按鍵 sbit key_sub=P3^3。// 當(dāng) pwm_m 為 1 時(shí)電機(jī)轉(zhuǎn)動(dòng) 為 0 時(shí)電機(jī)停止轉(zhuǎn)動(dòng) sbit buzzer=P2^4。 bit TIMERFLAG。 int time=50。 int speed_limit=140。 //使用模式 1,使用 |符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 //0x01 代表定時(shí)器 T0 工作方式 1 為 16 位定時(shí)器 /計(jì)數(shù)器 //0x04 c/t=1,為計(jì)數(shù)器模式 GATE=0 定時(shí)器啟動(dòng)和停止僅受 TR0 控制 TH0=0x00。 EA=1。 //定時(shí)器中斷打開 TR0=1。 //使用模式 1,使用 |符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響 //高四位 用來控制定時(shí)器 1 定時(shí)器工作在方式 1 下 TH1=HIGH。 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 26 EA=1。 //定時(shí)器中斷打開 TR1=1。 EX0=1。 //開外部中斷 1 IT0=1。 //設(shè)置外部中斷觸 1 發(fā)方式為下降沿觸發(fā) } void keyscan() { if(key_mode==0) { while(key_mode==0)。 if(mode==1) { speed_limit=140。 } if(mode==3) { speed_limit=90。 } if(mode==5) { mode=1。 DelayMs(time)。 DelayMs(100time)。 float sum=0。 unsigned long int a。 //定義字符顯示緩沖數(shù)組 Init_Timer0()。 //初始化定時(shí)器 1 Init_zhongduan()。 //初始化液晶屏 DelayMs(10)。 //清屏 while(1) { keyscan()。 LCD_Write_String(0,0,temp)。 if(OVERFLOWFLAG)//檢測(cè)溢出標(biāo)志,如果溢出表明頻率過高,顯示溢出信息 { OVERFLOWFLAG=0。 } if(TIMERFLAG) //定時(shí) 100ms 到,做數(shù)據(jù)處理 (每 100ms 處理一次數(shù)據(jù) ) { i++。//讀取計(jì)數(shù)值 a=a*10。 //除以 4 是因?yàn)? 轉(zhuǎn) 盤上面有 4 個(gè)孔 除以 4 表示 實(shí)際轉(zhuǎn)的圈數(shù) if(flag==0) //這句話在 while 循環(huán)中只運(yùn)行一次 { sprintf(temp,speed:% r/s,(float)a)。//顯示到液晶第二行 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 28 flag=1。 //2 個(gè)定時(shí)器打開 TR1=1。 //每 100ms 過后應(yīng)該使 TH0 和 TL0 的值為 0,保證計(jì)數(shù)器初值為 0 TL0=0。 //關(guān)閉計(jì)時(shí)計(jì)數(shù)標(biāo)志 sum=sum+a。 i=0。 if(aspeed_limit) { buzzer=0。 } else { buzzer=1。 LCD_Write_String(0,1,temp)。 //重新給定初值 TL0=00。 //溢出標(biāo)志 } void Timer1_isr(void) interrupt 3 { static unsigned char i。 //重新賦值 10ms TL1=LOW。 長(zhǎng)沙學(xué)院 畢業(yè)設(shè)計(jì) (論文 ) 29 if(i==10) //100ms 計(jì)數(shù)時(shí)間,得出 100ms 脈沖個(gè)數(shù) x10 就是 1s 中脈沖個(gè)數(shù) { i=0。 //2 個(gè)定時(shí)器關(guān)閉 TR1=0。 //標(biāo)志位清零 TH1=HIGH。 } } void jiasu(void) interrupt 0 { //EX0=0。 if(time100) { time=100。 //EX0=1。 time=time5。 } DelayMs(5)。 } 附錄 2: LCD1602 驅(qū)動(dòng) 程序 include include define CHECK_BUSY sbit RS = P2^1。 sbit EN = P2^0。 RS_CLR。 EN_CLR。 EN_SET。 0x80)。 endif } void LCD_Write_Com(unsigned char ) { while(LCD_Check_Busy())。 RW_CLR。 DataPort= 。 EN_CLR。 //忙則等待 RS_SET。 EN_SET。 _nop_()。 } void LCD_Clear(void) { LCD_Write_Com(0x01)。 } void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { while (*s) { LCD_Write_Char(x,y,*s)。 x++。 } else { LCD_Write_Com(0xC0 + x)。 } void LCD_Init(void) { LCD_Write_Com(0x38)。 LCD_Write_Com(0x38)。 LCD_Write_Com(0x3
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1