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

正文內(nèi)容

汽車車輛安全行駛速度智能控制畢業(yè)論文-資料下載頁

2025-06-21 19:11本頁面
  

【正文】 收緩沖器發(fā)送緩沖器能夠在正常模式設(shè)置之前或者之后設(shè)置,并且僅僅用于設(shè)置一次,在傳輸中一直保持常數(shù)[14]。//set TXB0,設(shè)置發(fā)送緩沖器0的標(biāo)識符和發(fā)送的數(shù)據(jù),以及發(fā)送的數(shù)據(jù)長度SPIByteWrite(TXB0SIDH,0xFF)。//設(shè)置發(fā)送緩沖器0的標(biāo)準(zhǔn)標(biāo)識符,待修改***SPIByteWrite(TXB0SIDL,0xE0)。//用到標(biāo)準(zhǔn)標(biāo)識符SPIByteWrite(TXB0DLC,DLC_1)。//設(shè)置發(fā)送數(shù)據(jù)的長度為8個字節(jié)//設(shè)置接收緩沖器0的標(biāo)識符和初始化數(shù)據(jù)SPIByteWrite(RXB0SIDH,0x00)。//設(shè)置接收緩沖器0的標(biāo)準(zhǔn)標(biāo)識符,待修改***SPIByteWrite(RXB0SIDL,0x60)。//用到標(biāo)準(zhǔn)標(biāo)識符SPIByteWrite(RXB0CTRL,0x60)。//僅僅接收標(biāo)準(zhǔn)標(biāo)識符的有效信息,F(xiàn)IILHIT0=0表示RXB0 ,采用FILHIT0SPIByteWrite(RXB0DLC,DLC_8)。//設(shè)置接收數(shù)據(jù)的長度為8個字節(jié)SPIByteWrite(RXF0SIDH,0xFF)。//初始化接收濾波器0,待修改***SPIByteWrite(RXF0SIDL,0xE0)。SPIByteWrite(RXM0SIDH,0xFF)。//初始化接收屏蔽器0,待修改***SPIByteWrite(RXM0SIDL,0xE0)。//設(shè)置接收緩沖器0中斷SPIByteWrite(CANINTF,0x00)。//清空中斷標(biāo)志位SPIByteWrite(CANINTE,0x01)。//接收緩沖器0滿中斷使能位 下位機(jī)程序設(shè)計下位機(jī)主要負(fù)責(zé)實(shí)時檢測并顯示兩路速度值,并上傳數(shù)據(jù)。因此,程序可分為安全行駛速度采集子程序、實(shí)時速度采集子程序、顯示子程序、數(shù)據(jù)上傳子程序和主程序。安全行駛速度采集子程序針對電路中的紅外測量經(jīng)ADC0832轉(zhuǎn)換電路,獲取ADC0832轉(zhuǎn)換所得數(shù)字量的值。實(shí)時速度采集子程序主要針對電路中的霍爾傳感器A3144電路,將timer0作為計數(shù)器,計數(shù)A3144發(fā)出的脈沖數(shù)。timer1作為定時器,500ms刷新一次數(shù)據(jù)。顯示子程序主要針對六位數(shù)碼管顯示電路,負(fù)責(zé)兩路速度值的顯示。數(shù)據(jù)上傳子程序主要針對CAN總線通信模塊,實(shí)現(xiàn)將數(shù)據(jù)發(fā)送到CAN總線的目的。 常量、變量說明為了后續(xù)使用方便,特在此說明有關(guān)變量的定義。include include include include include include define uint unsigned intdefine uchar unsigned charuchar ADC0832_RESULT,A3144_RESULT。uchar CNT。//定義計數(shù)器刷新頻率sbit SCK= P2^3。//SPI接口sbit SI= P2^2。sbit SO= P2^1。sbit CS= P2^0。sbit CS32= P2^6。//ADC0832安全行駛速度模數(shù)轉(zhuǎn)換輸入sbit CLK= P2^7。sbit DIO= P2^8。sbit A3144_3= P3^4。//霍爾傳感器計數(shù)脈沖輸入 安全行駛速度采集子程序以紅外對管作為測量空氣能見度的傳感器,用ADC0832對紅外對管調(diào)理電路輸出的模擬信號進(jìn)行模數(shù)轉(zhuǎn)換。uchar Get_AD_Result(){ uchar i,dat1=0,dat2=0。 CS32 = 0。 CLK = 0。 DIO = 1。 _nop_()。 _nop_()。 CLK = 1。 _nop_()。 _nop_()。 CLK = 0。DIO = 1。 _nop_()。 _nop_()。 CLK = 1。 _nop_()。 _nop_()。 CLK = 0。DIO = 1。 _nop_()。 _nop_()。 CLK = 1。DIO = 1。 _nop_()。 _nop_()。 CLK = 0。DIO = 1。 _nop_()。 _nop_()。 for(i=0。i8。i++) { CLK = 1。 _nop_()。 _nop_()。 CLK = 0。 _nop_()。 _nop_()。 dat1 = dat1 1 | DIO。 } for(i=0。i8。i++) { dat2 = dat2 ((uchar)(DIO)i)。 CLK = 1。 _nop_()。 _nop_()。 CLK = 0。 _nop_()。 _nop_()。 } CS32 = 1。 return (dat1 == dat2) ? dat1:0。} 實(shí)時速度采集子程序/*timer0作為計數(shù)器計算A3144發(fā)出的脈沖數(shù),timer1作為定時器,500ms刷新一次數(shù)據(jù)*/void timer_init(){ TMOD=0x15。 //設(shè)置timer1為定時器,timer0為計數(shù)器TH1=0x3c。 //設(shè)置timer1為50ms中斷一次TL1=0xb0。TH0=0。TL0=0。 //timer0從0開始計數(shù)IE=0x8a。 //開放中斷TR0=1。TR1=1。 //開啟定時計數(shù)器}/*定時器1發(fā)生溢出中斷,50ms刷新一次ADC0832和A3144,對兩種速度值進(jìn)行更新*/void timer1() interrupt 3{ uchar adcout。 CNT++。 TR0=0。TR1=0。if(CNT==10){ uchar tA。//假設(shè)汽車的最高設(shè)計速度為10000r/min,則每500ms不超過90轉(zhuǎn),因此TH0一定為0,所以只需要一個字節(jié)存儲。 tA=TL0。 A3144_RESULT=***tA。//,則500ms行駛的路程為(pi**t)m,除以500ms的時間,就 //得到以m/s為單位的速度值,再乘以3。6,就得到以KM/h為單位的速度 adcout=Get_AD_Result()。//當(dāng)輸入電壓為3V時,ADC0832輸出為0xa0,對應(yīng)安全行駛速度為0 //當(dāng)輸入電壓為1(此為設(shè)定值)V時,ADC0832輸出為0x30,對應(yīng)安全行駛速度為120Km/hif(adcout0xa0)//ADC0832_RESULT根據(jù)此算法求解 { ADC0832_RESULT=0x00。 adcout=0xa0。 }if(adcout0x30) { ADC0832_RESULT=0x78。 adcout=0x30。 }else ADC0832_RESULT=(0xa0adcout)*。//120/112= } TH1=0x3c。 //設(shè)置timer1為50ms中斷一次 TL1=0xb0。 TH0=0。TL0=0。 TR0=1。TR1=1。 //開啟定時計數(shù)器} 顯示子程序//LED顯示程序[15]void led() { uchar dat[6],wei=0x80,i。 dat[0]=ADC0832_RESULT/100。 dat[1]=ADC0832_RESULT/10%10。 dat[2]=ADC0832_RESULT%10。 dat[3]=A3144_RESULT/100。 dat[4]=A3144_RESULT/10%10。 dat[5]=A3144_RESULT%10。 for(i=0。i6。i++) { wei=_crol_(wei,1)。 P1=wei。 P0=DSY_CODE[dat[i]]。 DelayMS(1)。 } } MCP2515發(fā)送子程序//CAN發(fā)送程序void CAN_Send(unsigned char *CAN_TX_Buf){ unsigned char tempdata。 tempdata=SPIByteRead(CAN_RD_STATUS)。 SPIByteWrite(TXB0D0,CAN_TX_Buf[0])。 SPIByteWrite(TXB0D1,CAN_TX_Buf[1])。 SPIByteWrite(TXB0D2,CAN_TX_Buf[2])。 SPIByteWrite(TXB0D3,CAN_TX_Buf[3])。 SPIByteWrite(TXB0D4,CAN_TX_Buf[4])。 SPIByteWrite(TXB0D5,CAN_TX_Buf[5])。 SPIByteWrite(TXB0D6,CAN_TX_Buf[6])。 SPIByteWrite(TXB0D7,CAN_TX_Buf[7])。 if(tempdataamp。0x04)//判斷TXREQ標(biāo)志位 { delay_ms(1)。 SPIByteWrite(TXB0CTRL,0)。//清除TXREQ標(biāo)志位 while(SPIByteRead(CAN_RD_STATUS)amp。0x04)。//等待TXREQ清零 } CS=LOW。 WriteSPI(CAN_RTS_TXB0)。//發(fā)送緩沖器0請求發(fā)送 CS=HIGH。}void CAN_Send_onebyte(unsigned char k){ unsigned char tempdata。 tempdata=SPIByteRead(CAN_RD_STATUS)。 SPIByteWrite(TXB0D0,k)。 if(tempdataamp。0x04)//判斷TXREQ標(biāo)志位 { delay_ms(1)。 SPIByteWrite(TXB0CTRL,0)。//清除TXREQ標(biāo)志位 while(SPIByteRead(CAN_RD_STATUS)amp。0x04)。//等待TXREQ清零 } CS=LOW。 WriteSPI(CAN_RTS_TXB0)。//發(fā)送緩沖器0請求發(fā)送 CS=HIGH。} 下位機(jī)主程序主程序流程主程序完成對各個子程序的調(diào)用,從而實(shí)現(xiàn)下位機(jī)的整體功能。主程序的流程圖見圖41[16]。void main(){ uchar b[2]。 Init2515()。 timer_init()。 Cpu_init()。 while(1) { b[0]=ADC0832_RESULT。b[1]=A3144_RESULT。 //獲取兩路速度值數(shù)據(jù) led()。 //顯示輸出兩路數(shù)據(jù)值 CAN_Send(b)。 //向總線發(fā)送數(shù)據(jù) delay_ms(100)。 }}圖41 下位機(jī)主程序流程 上位機(jī)程序設(shè)計上位機(jī)系統(tǒng)通過CAN總線通信定時讀取下位機(jī)采集的數(shù)據(jù),并根據(jù)數(shù)據(jù)判斷和發(fā)出相應(yīng)的控制信號,并通過LCD1602進(jìn)行顯示。因此,軟件設(shè)計包括顯示子程序、聲光控制子程序、步進(jìn)電機(jī)子程序、通信子程序和主程序。顯示子程序針對電路中的LCD1602顯示電路,負(fù)責(zé)顯示兩路速度信號值。聲光控制子程序通過單片機(jī)判斷兩路速度信號所得汽車車輛安全狀態(tài)而進(jìn)行工作。通過判斷實(shí)時行駛速度與安全行駛速度是否有偏差,和偏差的大小來控制步進(jìn)電機(jī)轉(zhuǎn)動的角度和轉(zhuǎn)動的快慢,即通過控制單片機(jī)所發(fā)脈沖個數(shù)和頻率來達(dá)到控制要求。通信子程序主要為MCP2515接收數(shù)據(jù)子程序,與下位機(jī)設(shè)計中的發(fā)送子程序相對應(yīng)。 常量、變量說明include include include include include include include define uint unsigned intdefine uchar unsigned charsbit LED=P3^6。//光提示信號sbit LS1=P3^7。//聲音提示信號sbit RS = P2^5。//LCD1602控制信號sbit RW = P2^6。sbit EN = P2^7。sbit SCK=P2^3。//MCP2515SPI總線接口sbit SI=P2^2。sbit SO=P2^1。sbit CS=P2^0。 LCD1602顯示子程序/*1602LCD子程序*///讀LCD狀態(tài)uchar Read_LCD_State(){ uchar state。 RS=0。RW=1。EN=1。DelayMS(1)。 state=P0。 EN = 0。DelayMS(1)。 return state。}//LCD忙等待void LCD_Busy_Wait(){ while((Read_LCD_State()amp。0x80)==0x80)。 DelayMS(5)。}//LCD寫數(shù)據(jù)void Write_LCD_Data(uchar dat){ LCD_Busy_Wait()。 RS=1。RW=0。EN=0。P0=dat。EN=1。DelayMS(1)。EN=0。 }//LCD寫指令void Write_LCD_Command(uchar cmd){ LCD_Busy_Wait()。 RS=0。RW=0。EN=0。P0=cmd。EN=1。DelayMS(1)。EN=0。 }//LCD初始化void Init_LCD(){ Write_LCD_Command(0x38)。 DelayMS(1)。 Write_LCD_Command(0x01)。 DelayMS(1)。 Write_LCD_Command(0x06)。 DelayMS(1)。 Write_LCD_Command(0x0c)。 DelayM
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1