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

正文內(nèi)容

基于單片機和can總線的企業(yè)現(xiàn)場信息監(jiān)控系統(tǒng)-資料下載頁

2025-06-27 19:24本頁面
  

【正文】 檢查電源的電壓端與接地端是否短路,單片機和各個芯片之間的連接是否完好等,這些檢查都是通過萬用表短路報警功能來實現(xiàn)的。但是也應該注意萬用表短路報警是在萬用表的兩個表筆之間的電阻小于一定阻值時就會報警的,所以使用時也應注意。在硬件電路檢查沒有問題后,然后分別加載LED顯示程序和報警功能程序。首先對LED進行初始化,讓數(shù)碼管顯示全8或全0,發(fā)現(xiàn)沒有問題。但是讓數(shù)碼管顯示特定字符(如1234)時,發(fā)現(xiàn)總是亂碼。通過一系列反復檢查之后,發(fā)現(xiàn)硬件電路中數(shù)碼管的接地端及74LS164的串行輸入端連接有誤。其次檢查系統(tǒng)報警功能,發(fā)現(xiàn)上/下限時,紅/黃燈亮且蜂鳴器發(fā)出響聲,滿足系統(tǒng)設計要求。通過對這兩部分功能的調(diào)試,學習到不少東西,也體會到理論和實際的差距。在制作電路板之前,一定要仔細檢查硬件原理圖連接是否正確,最好是先在面包上搭線并實驗之后,再進行PCB板的制作。 CAN通信模塊調(diào)試首先用萬用表檢查硬件電路各個器件引腳連接情況,特別是CAN收發(fā)器PCA82C251,因為用的是貼片式的,尤其要檢查芯片相鄰引腳是否短路。然后用杜邦頭線和單片機最小系統(tǒng)電路板連接起來。接下來測試SJA1000的好壞,因為CAN控制器SJA1000是完成CAN總線通信的最主要的芯片之一,如果它損壞了,系統(tǒng)是不可能正常工作的。這里采用的方法是讀取SJA1000硬件復位后幾個寄存器的值,以判斷SJA1000的好壞。檢查完硬件以后就可以進行CAN通信功能調(diào)試了。由單片機向CAN控制器SJA1000寫一幀數(shù)據(jù),置位自接收請求位,CAN控制器SJA1000發(fā)送數(shù)據(jù)的同時接收數(shù)據(jù),接收完后,CAN控制器SJA1000產(chǎn)生接收中斷,通過INT0執(zhí)行接收中斷程序,把SJA1000接收緩沖區(qū)的數(shù)據(jù)讀回來,同時顯示。 總結現(xiàn)場總線幾乎涵蓋了所有工業(yè)領域,由于現(xiàn)場總線適應了工業(yè)控制系統(tǒng)向分散化、網(wǎng)絡化、智能化發(fā)展的方向,它一經(jīng)產(chǎn)生便成為全球工業(yè)自動化技術的熱點。CAN屬于總線式串行通信網(wǎng)絡,由于其采用了許多新技術和獨特的設計,與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有可靠性高、實時性和靈活性強等優(yōu)點。ATmega8L單片機較強的驅(qū)動能力、豐富的內(nèi)部資源以及高速性能,可以作為多數(shù)系統(tǒng)中智能節(jié)點的微處理器?;诖?,本文設計了基于ATmega8L單片機和CAN總線的企業(yè)現(xiàn)場信息監(jiān)控系統(tǒng)的智能節(jié)點部分,兩個智能節(jié)點和上位機分別通CAN接口連接到CAN總線網(wǎng)絡上,組建包含有兩個節(jié)點的簡單CAN網(wǎng)絡,可以很容易地實現(xiàn)如節(jié)點識別、監(jiān)控節(jié)點等功能,進而對企業(yè)現(xiàn)場信息進行實時、有效的進行監(jiān)控。參考文獻1. 史久根,張培仁,[M].北京:國防工業(yè)出版社,20042. [M].北京:機械工業(yè)出版社,20053. 王慧鋒,[M].北京:化學工業(yè)出版社,20064. [M].北京:北京航空航天大學出版社,20045. 孫道宗,[J].現(xiàn)代電子技術,2006(10)6. [J].電子技術應用,2003(1)7. 姜竹勝,[J].計算機應用,2006(9)8. 張紹忠, 的CAN 總線智能節(jié)點實現(xiàn)[J].電子技術應用,2006(8)9. [M].北京:機械工業(yè)出版社,200710. [M].北京:機械工業(yè)出版社,200511. [M].北京:中國水利水電出版社,200712. 陳在平,[M].北京:機械工業(yè)出版社,200613. 戴梅萼,[M].北京:清華大學出版社,200314. [M].西安:西安電子科技大學出版社,200715. 潘新民,[M].北京:電子工業(yè)出版社200816. [M].北京:化學工業(yè)出版社,2007附錄A智能節(jié)點原理圖及PCB圖 智能節(jié)點原理圖單片機最小系統(tǒng)部分 智能節(jié)點原理圖CAN通信模塊部分 溫濕度檢測電路圖 單片機最小系統(tǒng)PCB圖 CAN通信模塊PCB圖附錄B智能節(jié)點源程序includeincludedefine uint unsigned intdefine uchar unsigned chardefine REG_MODE 0 //模式寄存器define REG_CMD 1 //命令寄存器define REG_SR 2 //狀態(tài)寄存器define REG_IR 3 //中斷寄存器define REG_IR_ABLE 4 //中斷使能寄存器define REG_BTR0 6 //總線定時寄存器0define REG_BTR1 7 //總線定時寄存器1define REG_OCR 8 //輸出控制寄存器define REG_ALC 11 //仲裁丟失捕捉寄存器 define REG_ECC 12 //錯誤代碼寄存器define REG_EMLR 13 //錯誤報警限制寄存器define REG_RXERR 14 //RX錯誤計數(shù)器define REG_TXERR 15 //TX錯誤計數(shù)器define REG_ACR0 16 //驗收代碼寄存器define REG_ACR1 17define REG_ACR2 18define REG_ACR3 19define REG_AMR0 20 //驗收屏蔽寄存器define REG_AMR1 21define REG_AMR2 22define REG_AMR3 23define REG_ID0 16 //標識符define REG_ID1 17 //識別碼define REG_ID2 18 //識別碼define REG_DataBuffer 19 //數(shù)據(jù)區(qū)define REG_Rece_Count29 //RX信息計數(shù)器define REG_RBSA 30 //RX緩沖器起始地址define REG_CDR 31 //時鐘分頻寄存器uchar rx_buffer[]。uchar tab[]={0xEE,0x28,0xCD,0x6D,0x2B,0x67,0xE7,0x2C,0xEF,0x6F}。uchar TH_alar,TL_alar,pH_alar,pL_alar,flag=0,data_flag=0; // flag=0:溫度標記,data_flag=0:顯示溫度標記void sendbyte(uchar byte){ uchar num,c。 //置位(|=) 清零(amp。=~) 取反(^=) num=tab[byte]。 for(c=0。c8。c++) { PORTDamp。=~(11)。 if(0x80amp。num) //寫數(shù)據(jù)gao位開始 PORTD|=(10)。 //1 else PORTDamp。=~(10)。 //0 PORTD|=(11)。 num=1。 }}void delay_us(int time) //us延時 { do { time。 } while (time1)。 } void delay_ms(unsigned int time) //ms延時 { while(time!=0) { delay_us(100)。 time。 } }uint adc(void) { uchar adc_h。 uint retn。 ADCSRA=0xF8。 // (AD使能,開始轉(zhuǎn)換位為1) delay_ms(5)。 //延時 adc_h=ADCH。 retn=adc_h。 return(retn)。//返回測到的電壓值 } //**************************讀SJA1000*************************// uchar RID_SJA(uint address) { uchar data。 PORTDamp。=~(17)。 PORTD|=(15)。 PORTD|=(14)。 PORTDamp。=~(16)。 // DDRB=0xff。 //數(shù)據(jù)口為輸出 PORTB=address。 //輸出數(shù)據(jù)的地址 PORTD|=(17)。 DDRB=0xff。 //數(shù)據(jù)口為輸出 PORTB=address。 //輸出數(shù)據(jù)的地址 //再次輸出地址,確保一致。 delay_us(10)。 PORTDamp。=~(17)。 PORTD|=(16)。 PORTDamp。=~(14)。 delay_us(10)。 DDRB=0x00。 //數(shù)據(jù)口為輸入 PORTB=0xff。 //上拉 data=PINB。 //獲得數(shù)據(jù) PORTD|=(14)。 PORTD|=(16)。 return data。 } //**************************寫SJA10000*************************// void WRIT_SJA(uint address,uint data) { DDRB=0xff。 //數(shù)據(jù)口為輸出 PORTB=address。 //輸出數(shù)據(jù)的地址 delay_us(10)。 PORTD|=(16)。 PORTDamp。=~(17)。 PORTD|=(15)。 PORTD|=(14)。 PORTD|=(17)。 delay_us(10)。 DDRB=0xff。 //數(shù)據(jù)口為輸出 PORTB=address。 //輸出數(shù)據(jù)的地址 再次輸出地址,確保數(shù)據(jù)準確 PORTDamp。=~(17)。 PORTD|=(16)。 PORTDamp。=~(15)。 delay_us(10)。 DDRB=0xff。 PORTB=data。 //輸出數(shù)據(jù) PORTD|=(15)。 PORTB=data。 //再次輸出數(shù)據(jù),取保一致 PORTDamp。=~(16)。 } void SJA_INIT(void) //CAN控制器初始化{uchar temp。 uchar i。 for(i = 0。i 25。i++)。 PORTCamp。=~(16)。 for(i = 0。i 25。i++)。 PORTC|=(16)。 //關閉硬件復位 SREG=0x00。 //主控制器關中斷 WRIT_SJA(REG_IR_ABLE,0x00)。 //SJA1000中斷使能寄存器禁止 delay_us(10)。 do { WRIT_SJA(REG_MODE,0X01)。 //進入復位模式 temp =RID_SJA(REG_MODE)。 temp = tempamp。0X01。 }while(temp!=0x01)。WRIT_SJA(REG_CDR,0XC8)。 //時鐘分頻器,PeliCAN模式 WRIT_SJA(REG_BTR0,0x02)。 //150kbps baud rate WRIT_SJA(REG_BTR1,0xfa)。 WRIT_SJA(REG_OCR,0X1A)。 //設置輸出控制寄存器 正常輸出模式;Tx0推挽;Tx1懸空 WRIT_SJA(REG_ACR0,0x00)。 //設置驗收代碼寄存器 WRIT_SJA(REG_ACR1,0x00)。 WRIT_SJA(REG_ACR2,0x00)。 WRIT_SJA(REG_ACR3,0x00)。 WRIT_SJA(REG_AMR0,0xff)。 //設置驗收代碼屏蔽寄存器 WRIT_SJA(REG_AMR1,0xff)。 WRIT_SJA(REG_AMR2,0xff)。 WRIT_SJA(REG_AMR3,0xff)。 do //退出復位模式
點擊復制文檔內(nèi)容
數(shù)學相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1