![基于CAN總線的通信系統(tǒng)實現(xiàn)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/d8d2522b-3ea8-4bbc-994b-bd9651971aef/d8d2522b-3ea8-4bbc-994b-bd9651971aef1.gif)
![基于CAN總線的通信系統(tǒng)實現(xiàn)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/d8d2522b-3ea8-4bbc-994b-bd9651971aef/d8d2522b-3ea8-4bbc-994b-bd9651971aef2.gif)
![基于CAN總線的通信系統(tǒng)實現(xiàn)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/d8d2522b-3ea8-4bbc-994b-bd9651971aef/d8d2522b-3ea8-4bbc-994b-bd9651971aef3.gif)
![基于CAN總線的通信系統(tǒng)實現(xiàn)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/d8d2522b-3ea8-4bbc-994b-bd9651971aef/d8d2522b-3ea8-4bbc-994b-bd9651971aef4.gif)
![基于CAN總線的通信系統(tǒng)實現(xiàn)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/7/d8d2522b-3ea8-4bbc-994b-bd9651971aef/d8d2522b-3ea8-4bbc-994b-bd9651971aef5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、 . . . 基于CAN總線的通信系統(tǒng)實現(xiàn)2901302001 景夢園CAN總線通信是一個非常實用的技術(shù),無論在工業(yè),制造業(yè)還是生活中都有相關(guān)的應(yīng)用。這次我們所做的基于CAN總線的通信系統(tǒng)實現(xiàn)是一個最基本的應(yīng)用。在這項技術(shù)中,我們采用了C51、SJA1000、TJA1050三種芯片來實現(xiàn)兩個節(jié)點之間的通信。為了方便演示,加入MAX232芯片與單片機相連實現(xiàn)單片機與計算機的串口通信。1、 CAN總線節(jié)點技術(shù):控制局域網(wǎng)絡(luò)CAN(Controller Area Network)總線是德國BOSCH公司20世紀(jì)80年代初為解決汽車中眾多控制與測試儀器間的數(shù)據(jù)交換而開發(fā)的串行數(shù)據(jù)通信協(xié)議。這是一種多主
2、總線,無論是在高速網(wǎng)絡(luò)還是在低成本的節(jié)點系統(tǒng),應(yīng)用都很廣泛。由于采用了許多新技術(shù)與獨特的設(shè)計,與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性,其主要特點如下: 通信方式靈活,可以多主方式工作,網(wǎng)絡(luò)上任意一個節(jié)點均可以在任意時刻主動向網(wǎng)絡(luò)上的其他節(jié)點發(fā)送信息,不分主從。 CAN節(jié)點只需對報文的標(biāo)識符濾波即可實現(xiàn)點對點、點對多點與全局廣播方式發(fā)送和接收數(shù)據(jù),其節(jié)點可分成不同的優(yōu)先級,節(jié)點的優(yōu)先級可通過報文標(biāo)識符進行設(shè)置。CAN總線通信格式采用短幀格式,每幀字節(jié)數(shù)量多為8個字節(jié),可滿足一般工業(yè)領(lǐng)域中控制命
3、令、工作狀態(tài)與測試數(shù)據(jù)的要求,同時,8個字節(jié)不會占用總線時間過長,保證了通信的實時性。 采用非破壞性總線仲裁技術(shù),當(dāng)多個節(jié)點同時向總線發(fā)送信息出現(xiàn)沖突時,優(yōu)先級低的節(jié)點會主動退出數(shù)據(jù)發(fā)送,而優(yōu)先級高的節(jié)點可不受影響地繼續(xù)傳輸數(shù)據(jù),大大節(jié)省了總線沖突仲裁時間,在網(wǎng)絡(luò)重載的情況下也不會出現(xiàn)網(wǎng)絡(luò)癱瘓。 直接通信距離最大可達(dá)10 km (速率在5 kb/s以下),最高通信速率可達(dá)1 Mb/s (此時距離最長為40 m);節(jié)點數(shù)可達(dá)110個,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。 CAN總線采用CR
4、C檢驗并可提供相應(yīng)的錯誤處理功能,保證數(shù)據(jù)通信的可靠性,其節(jié)點在錯誤嚴(yán)重的情況下具有自動關(guān)閉輸出功能,使總線上其他節(jié)點的操作不受影響。2、89C51單片機芯片:89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓、高性能CMOS8位微處理器(MCU),俗稱單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的89C51是一種高效微控制器,89C2051是它的一種精簡版本。89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價
5、廉的方案。3、 SJA1000芯片:SJA1000是PHILIPS公司生產(chǎn)的一種獨立控制器,用于移動目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制(CAN),支持CAN總線通信協(xié)議。 SJA1000有兩種工作模式:基本模式和增強模式。在基本模式下,SJA1000只可收發(fā)標(biāo)準(zhǔn)數(shù)據(jù)幀(標(biāo)準(zhǔn)數(shù)據(jù)幀的標(biāo)識符為11位),且錯誤報警的極限值不能修改;在增強模式下,SJA1000既可接收標(biāo)準(zhǔn)數(shù)據(jù)幀,也可接收擴展數(shù)據(jù)幀(擴展數(shù)據(jù)幀的標(biāo)識符為29位),可修改錯誤報警的極限值,并且SJA1000具有更加靈活的濾波方式,能夠根據(jù)數(shù)據(jù)幀的標(biāo)識符有選擇地接收一些數(shù)據(jù)幀。另外,增強模式下的SJA1000能夠進行自檢,即可通過自發(fā)自收
6、一組報文來判斷該控制節(jié)點是否正常地掛在CAN總線上。使用者所要做的主要工作是SJA1000的初始化,收發(fā)報文的處理以與對節(jié)點脫離總線的檢測量與處理。4、 TJA1050芯片:TJA1050 是控制器區(qū)域網(wǎng)絡(luò)(CAN)協(xié)議控制器和物理總線之間的接口,是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器。TJA1050可以為總線提供差動發(fā)送性能,為CAN控制器提供差動接收性能。TJA1050 是PCA82C250和PCA82C251高速CAN收發(fā)器的后繼產(chǎn)品。5、 MAX232芯片:MAX232芯片是美信公司專門為電腦的RS-232標(biāo)準(zhǔn)串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。具有如下特性:1、符合所有的RS-
7、232C技術(shù)標(biāo)準(zhǔn)2、只需要單一 +5V電源供電3、片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10V和-10V電壓V+、V-4、功耗低,典型供電電流5mA5、部集成2個RS-232C驅(qū)動器6、部集成兩個RS-232C接收器電路圖:C語言程序:/一號單片機程序#include<reg51.h>#include"lcd.h"/#include"DS1820'h"#include"SJA1000gai.h"#define key P22char table1="Message is sending"
8、;char table2="Sengding succeded"char table3="Receiveing succeded"/定義BUF數(shù)據(jù)結(jié)構(gòu)/*struct BASICCAN_BUFstructunsigned char FrameID_H;/標(biāo)識符高八位(信息功能2加節(jié)點號6)unsigned char FrameLENTH;/數(shù)據(jù)長度碼unsigned char FrameKIND;/RTR位(1為遠(yuǎn)程幀,0為數(shù)據(jù)幀)unsigned char FrameID_L3;/低3位(信息格式)unsigned char FrameData;/數(shù)據(jù)
9、BASICCAN_FRAME,receive_BUF,send_BUF;*/*char temp_buffer2;/溫度緩沖char disp_char="Temperature is: "char disp_temp=' ',' ',' ',' ','.',' ','c','e','n','t','i','g','r','a','d',
10、'e'/溫度顯示存儲;uchar dot_temp=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;/溫度精確到小數(shù)點一為以后void read_temp() init_ds1820(); write_byte(0xcc); write_byte(0x44); delay1ms(500); init_ds1820(); write_byte(0xcc); write_byte(0xbe); temp_buffer0=read_byte();temp_buffer1=read_byte(); void display_temp(void)uchar i;bit f
11、lag;if(temp_buffer1&0xf8)=0xf8)temp_buffer1=temp_buffer1;temp_buffer0=temp_buffer0+1;if(temp_buffer0=0) temp_buffer1+;flag=1;disp_temp5=dot_temptemp_buffer0&0x0f+0x30;temp_buffer1=(temp_buffer0>>4)|(temp_buffer1&0x07)<<4);disp_temp3=temp_buffer1%10+0x30;disp_temp2=temp_buffer
12、1%100/10+0x30;disp_temp1=temp_buffer1/100+0x30;if(disp_temp1=0x30) disp_temp1=' 'if(disp_temp1=0x30&&disp_temp2=0x30) disp_temp2=' 'if(flag)disp_temp0='-'elsedisp_temp0=' 'for(i=0;i<16;i+) write_(0x80+i);write_data(disp_chari);write_(0xc0+i);write_data(disp
13、_tempi); */void send() uchar Data,sdat; uchar i,j; if(!key) Data=0xaa; for(i=0;i<18;i+) write_data(table1i); delay1ms(200); write_reg(0x10,0x41); write_reg(0x11,0x21); write_reg(0x12,Data); write_reg(0x01,0x01);/置位發(fā)送請求位 delay1ms(500); sdat=read_reg(0x02); if(sdat&0x10!=0) for(j=0;j<17;j+)
14、write_data(table21); delay1ms(200); void receive() uchar temp,sdat; uchar i; sdat=read_reg(0x02); if(sdat&0x01=1)/接受緩沖不為空 temp=read_reg(0x22); delay1ms(50); write_reg(0x01,0x04);/清除緩存 for(i=0;i<19;i+) write_data(table3i); delay1ms(200); write_(0x01);/清屏 write_data(temp); void main() init_lcd(
15、); init_SJA1000NO1(); /void read_temp(); /display_temp(); while(1) send(); receive(); /二號單片機程序#include<reg51.h>#include"lcd.h"#include"ser.h"#include"SJA1000gai.h"#define key P22char table1="Message is sending"char table2="Sengding succeded"cha
16、r table3="Receiveing succeded"void send() uchar Data,sdat; uchar i,j; if(!key) Data=0xaa; for(i=0;i<18;i+) write_data(table1i); delay1ms(200); write_reg(0x10,0x42); write_reg(0x11,0x21); write_reg(0x12,Data); write_reg(0x01,0x01);/置位發(fā)送請求位 delay1ms(500); sdat=read_reg(0x02); if(sdat&
17、0x10!=0) for(j=0;j<17;j+) write_data(table21); delay1ms(200); void receive() uchar temp,sdat; uchar i; sdat=read_reg(0x02); if(sdat&0x01=1)/接受緩沖不為空 temp=read_reg(0x22); delay1ms(50); write_reg(0x01,0x04);/清除緩存 for(i=0;i<19;i+) write_data(table3i); delay1ms(200); write_(0x01);/清屏 write_data
18、(temp); void sendser() if(flag) ES=0; flag=0; SBUF=0xaa; while(!TI); TI=0; ES=1; void main() init_lcd(); init_SJA1000NO2(); init_ser(); while(1) send(); receive(); sendser(); 頭文件DS1802.H#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P33;vo
19、id init_ds1820();void delay_us(uchar us);void write_byte(uchar);uchar read_byte();void delay5us();void delay5us();void delay_us(uchar us)/調(diào)用函數(shù)24us,每一次計數(shù)16us(11.0592M晶振) uchar i; for(i=0;i<us;i+);void init_ds1820() DQ=0; delay_us(29);/480us DQ=1; delay_us(3);/等待DS1820回應(yīng)void write_byte(uchar dat) u
20、char i,temp; for(i=0;i<8;i+) temp=dat&0x01; DQ=0; delay5us(); if(temp) DQ=1; delay_us(2); DQ=1; dat>>=1; uchar read_byte() uchar i; bit j; uchar dat=0; for(i=0;i<8;i+) DQ=0;/下降沿,讀時間隙開始 delay5us(); DQ=1;/釋放總線 delay5us(); j=DQ; if(j) dat=dat|0x80; delay_us(2); dat>>=1; return(dat
21、);LCD.H#include<reg51.h>sbit RS=P25;sbit RW=P24;sbit lcden=P23;void delay1ms(int s);void write_(int comd);void write_data(int dat);void init_lcd();void delay1ms(int s) int i,j; for(i=0;i<s;i+) for(j=0;j<110;j+);void write_(int comd) RS=0; P1=comd;delay1ms(5); lcden=1; delay1ms(5); lcden=
22、0;void write_data(int dat) RS=1; P1=dat;delay1ms(5); lcden=1; delay1ms(5); lcden=0; void init_lcd() RW=0; lcden=0; write_(0x38); write_(0x0f); write_(0x06); write_(0x01); write_(0x80+0x01);SER.H#include<reg51.h>void init_ser();void ser() interrupt 4;char flag,a;void init_ser() TMOD=0x20;/設(shè)置定時器
23、1為工作方式2TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;void ser() interrupt 4RI=0;P1=SBUF;a=SBUF;flag=1;SJA1000GAI.H#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit CS=P27;/T1=P35;sbit WR=P36;sbit RD=P37;void nop();void write_reg(uchar);uchar read_reg(uchar);void init_SJA1000NO1();void init_SJA1000NO2();void nop();/寫寄存器void write_reg(uchar adr,uchar date ) ALE=1; P0=adr; nop(); ALE=0; CS=0; n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭綠化服務(wù)居間合同
- 2025年度安全班組安全生產(chǎn)責(zé)任落實合同
- 質(zhì)量現(xiàn)場問題處理方案
- 浙江移動攀巖墻施工方案
- 清理管道施工方案
- 分紅入股合同范本
- 蚌埠中考題數(shù)學(xué)試卷
- 成人自考數(shù)學(xué)試卷
- 職教教材招標(biāo)方案
- 單位電器購買合同范例
- 跨領(lǐng)域安檢操作標(biāo)準(zhǔn)化的現(xiàn)狀與挑戰(zhàn)
- 大模型落地應(yīng)用實踐方案
- 催收質(zhì)檢報告范文
- 2025年八省聯(lián)考內(nèi)蒙古高考生物試卷真題答案詳解(精校打印)
- 2024山東一卡通文化旅游一卡通合作協(xié)議3篇
- 人教版八年級上冊地理 2024-2025學(xué)年八年級上冊地理期中測試卷(二)(含答案)
- 2024-2025年江蘇專轉(zhuǎn)本英語歷年真題(含答案)
- 投標(biāo)廢標(biāo)培訓(xùn)
- 腦卒中課件完整版本
- 藥房保潔流程規(guī)范
- 電子信息工程基礎(chǔ)知識單選題100道及答案解析
評論
0/150
提交評論