智能儀器課程設計報告_第1頁
智能儀器課程設計報告_第2頁
智能儀器課程設計報告_第3頁
智能儀器課程設計報告_第4頁
智能儀器課程設計報告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

智能儀器設計課程設計報告―――采用RS485標準的主從式多機系統(tǒng)設計學生姓名:王**學號:*********班級:********任課教師:***成績:設計要求a)系統(tǒng)根本構造:1個51系列單片機主機、2個51系列單片機從機〔從機1和從機2〕、采用RS485組成主從式多機系統(tǒng);b)系統(tǒng)根本功能:在主機鍵盤上按“1〞鍵,從機1的LED數(shù)碼顯示器上顯示“1〞,此后從機1鍵盤上每按下1個數(shù)字鍵,主機LED數(shù)碼顯示器上能顯示對應的數(shù)字,當從機1鍵盤上按下“0〞鍵時,此次通信完畢,從機1鍵盤上再按下任意數(shù)字鍵,主機不顯示相應數(shù)字;在主機鍵盤上按“2〞,從機2的LED數(shù)碼顯示器上顯示“2〞,此后從機2鍵盤上每按下1個數(shù)字鍵,主機LED數(shù)碼顯示器上能顯示對應的數(shù)字,當從機2鍵盤上按下“0〞鍵時,此次通信完畢,從機2鍵盤上按下任意數(shù)字鍵后,主機不顯示相應數(shù)字;c)選做:從機1和從機2可設計成相關物理量的測量系統(tǒng),當主機呼叫從機時,從機能把最新的測量值發(fā)給主機。方案論證系統(tǒng)組成:由三個51單片機構成主從通信系統(tǒng)〔本組使用的芯片型號是STC89C52,其功能是一致的〕,每個單片機搭配LED數(shù)碼管顯示器和鍵盤;通信采用RS-485標準,可使用MAX485芯片作為通信收發(fā)器,單片機控制MAX485的使能端進展發(fā)送和承受邏輯控制;單主機多從機的通訊系統(tǒng)需要區(qū)分地址信息和數(shù)據(jù)信息,可利用51串口模式中的模式2進展通信,修改主機的SCON.3狀態(tài)說明主機發(fā)送的是否是地址信息,修改某臺從機的SM2狀態(tài)來建立和主機的唯一通信;數(shù)據(jù)輸入使用鍵盤輸入,數(shù)據(jù)顯示可簡單的使用數(shù)碼管顯示。圖SEQ圖\*ARABIC1系統(tǒng)構造圖〔2〕串口模式分析:51單片機串口的2/3模式下是作為11位異步通信用,8位數(shù)據(jù)位后的第九位是可編程位SCON.3,主機可以對此位進展0或1賦值,進展地址信息和數(shù)據(jù)信息的區(qū)分,通常賦為1表示地址信息,為0表示數(shù)據(jù)信息;51單片機的串行口控制存放器SCON的SM2位是專門用來使通信接口具有識別功能的多機控制位,在串行口以方式2/3接收時,假設SM2=1,此時出現(xiàn)兩種情況:第一,接收到的第九位為1〔單片機接收時可編程位進入SCON.2〕,則前8位數(shù)據(jù)裝入SBUF,并置RI為1,產(chǎn)生中斷標志;第二,接收到的第九位為0,則不產(chǎn)生中斷標志,接收信息被棄。假設SM2=0,則接收到的第九位無論為0還是1,RI均為1,產(chǎn)生中斷標志,接收到的前8位數(shù)據(jù)裝入SBUF。所以多機通信可按下述過程進展:①參與通信的所有從機的SM2位置1,即從機處于只接收地址幀的狀態(tài);②主機發(fā)送一幀地址信息,包括8位地址及第九位地址/數(shù)據(jù)標志位〔該位應為1,表示該幀信息的前8位為地址〕;③由于從機的SM2位已置1,故主機發(fā)送的地址信息被所有從機收到,各從機鑒別接收到的地址信息是否與本機地址一樣〔每個從機已規(guī)定其相應的地址〕。對于接收到的地址與本機地址相符的從機,通過程序將其SM2置為0,這樣主機之后發(fā)送的其他數(shù)據(jù)信息將被選中的從機接收到,主機與所選的從機之間通信,主機可向從機發(fā)送命令數(shù)據(jù)或從機向主機發(fā)送相關的測量結果等。由于未選中的從機的SM2仍為1,故未選中的從機將不理會主機與選中從機之間傳送的數(shù)據(jù)信息〔因為這些信息的第九位均為0〕,直到主機發(fā)送新的地址幀為止。MAX485芯片的使用:MAX485是MAXIM公司推出的專門用于RS-485標準通信的接口芯片,它是半雙工工作的收發(fā)器,其典型工作電路如圖2所示:圖SEQ圖\*ARABIC2MAX485工作電路其中管腳、DE是收發(fā)器的控制腳,根據(jù)MAX485的邏輯功能表,、DE都置為高電平,則發(fā)送器可工作,接收器不工作;、DE都置為低電平,則接收器可工作,發(fā)送器不工作〔發(fā)送器和接收器無法同時工作〕,所以可用單片機的io口使能、DE來實現(xiàn)半雙工通信。51與MAX485的接口示意圖如下:圖SEQ圖\*ARABIC3單片機與MAX485連接示意圖〔3〕鍵盤設計:根據(jù)題意,主機由于只需使用到兩個按鍵,所以主機的按鍵可使用獨立式按鍵方式,即兩個按鍵接入單片機的兩個io口,通過判斷上下電平判斷哪個鍵被按下;從機則需要使用矩陣式鍵盤,本組使用4×4的矩陣式鍵盤,并用線反轉法進展鍵值掃描。顯示單元:由于需要顯示的信息比擬簡單,所以可以簡單的使用LED數(shù)碼管來顯示,本組使用的單片機開發(fā)板上集成了4個數(shù)碼管,共用一個譯碼器,可以通過循環(huán)點亮的方式顯示多個數(shù)字。硬件設計①主機和從機通過MAX485連接的電氣圖:圖SEQ圖\*ARABIC4主機和從機通過MAX485連接的電氣圖②主機和按鍵、數(shù)碼管的連接圖③從機和鍵盤、數(shù)碼管的連接圖圖SEQ圖\*ARABIC5主機和按鍵、數(shù)碼管的連接圖圖SEQ圖\*ARABIC6從機和鍵盤、數(shù)碼管的連接圖軟件設計①led數(shù)碼管顯示子程序:單片機開發(fā)板上的LED數(shù)碼管是共陽極連接方式,數(shù)碼管的a-h腳分別連到P0.0-P0.7,四個LED的控制角分別接到P2.0-P2.3;在數(shù)碼管上需要顯示的數(shù)字或字符的共陽極代碼如下:顯示內(nèi)容共陽極代碼顯示內(nèi)容共陽極代碼顯示內(nèi)容共陽極代碼顯示內(nèi)容共陽極代碼顯示內(nèi)容共陽極代碼0C0H3B0H682H96FHdA1H1F9H499H7F8HE79H2A4H592H880HNC8H程序代碼:#defineucharunsignedcharsbitP2_0=P2^0;//用來點亮數(shù)碼管1sbitP2_1=P2^1;//用來點亮數(shù)碼管2sbitP2_2=P2^2;//用來點亮數(shù)碼管3sbitP2_3=P2^3;//用來點亮數(shù)碼管4ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//液晶查詢表voiddisplay_1(unsignedintnumber);voiddisplay_2(unsignedintnumber);voiddisplay_3(unsignedintnumber);voiddisplay_4(unsignedintnumber);函數(shù)名:voiddisplay_1參數(shù):(unsignedintnumber)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管1voiddisplay_1(unsignedintnumber){P0=table[number];P2_0=0;函數(shù)名:voiddisplay_2參數(shù):(unsignedintnumber)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管2voiddisplay_2(unsignedintnumber){P0=table[number];P2_1=0;函數(shù)名:voiddisplay_3參數(shù):(unsignedintnumber)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管3voiddisplay_3(unsignedintnumber){P0=table[number];P2_2=0;函數(shù)名:voiddisplay_4參數(shù):(unsignedintnumber)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管4voiddisplay_4(unsignedintnumber){P0=table[number];P2_3=0;②鍵盤掃描子程序使用線反轉法掃描鍵盤,矩陣鍵盤的1-4行接入P1.7-P1.4,1-4列接入P1.3-P1.0,同時P1.3-P1.0接上拉電阻,線反轉法的步驟:1、將列線作為輸出線,行線作為輸入線,置輸出線全部為0,此時行線中呈低電平0的為按鍵所在行,如果全部都不是0,則沒有按鍵按下;2、將第一步反過來,即將行線作為輸出線,列線作為輸入線,置輸出線全部為0,此時列線中呈低電平0的為按鍵所在列,至此便確定了按鍵的位置,可根據(jù)行列參數(shù)查詢實現(xiàn)寫好的鍵值表,獲取鍵值。線反轉法掃鍵流程圖:圖SEQ圖\*ARABIC7鍵盤子程序流程圖掃描鍵盤子程序代碼:#include<stdio.h>inthang;//定義行號intlie;//定義列號unsignedintKey_Val=1;//保存鍵值unsignedintkeymap[]={1,2,3,0,4,5,6,0,7,8,9,0,0,0,0,0};//設置鍵盤邏輯鍵值 intKeyScan();//掃鍵子函數(shù)voidDelay();//延時key_Val對應鍵值列:[p13][p12][p11][p10]行:[p17]→1(1)2(2)3(3)4(A)[p16]→5(4)6(5)7(6)8(B)[p15]→9(7)10(8)11(9)12(C)[p14]→13(*)14(0)15(#)16(D)voidDelay()//延時子函數(shù)longi;for(i=1000;i>0;i--);intKeyScan()//掃鍵子函數(shù)P1=0xF0;//列輸出全0;if((P1&0xF0)!=0xF0)//掃描行,如果不全為0,則進入switch(P1)//獲得行號case0x70:hang=1; break;case0xB0:hang=2; break;case0xD0:hang=3; break;case0xE0:hang=4; break;default: break;Delay();//延時去抖動P1=0x0F;//行輸出全0if((P1&0x0F)!=0x0F)//掃描列,如果不全為0,則確認按鍵按下switch(P1)//獲得列號case0x07:lie=1; break;case0x0B:lie=2; break;case0x0D:lie=3; break;case0x0E:lie=4; break;default: break;return1;//掃描到按鍵按下,則返回1elsereturn0;//未掃描到按鍵按下,返回0③主機程序:在主機主程序中首先進展串口的配置,需要將串口置為模式3;然后程序一直循環(huán)查詢是否有按鍵按下〔K1或K2〕,如果有按鍵按下,則進入與從機通信的子程序。主機主程序流程圖:圖SEQ圖\*ARABIC8主機主程序流程圖主機與從機通信的子程序是主機程序的最關鍵局部,負責主機與從機建立聯(lián)系、數(shù)據(jù)通信和終止連接的任務。以按下按鍵K1為例,按下K1表示應與從機1通信,程序進入通信子程序,首先主機向所有從機發(fā)送從機1的地址“0x01〞,然后主機等待從機1的回應〔從機1收到請求會發(fā)回本機的地址信號0x01作為回應〕,接收到回應則繼續(xù)進展通信;然后主機一直處于接收狀態(tài),循環(huán)接收從機發(fā)送的數(shù)據(jù),并將數(shù)據(jù)通過數(shù)碼管顯示,直到接收到數(shù)據(jù)0,則退出子程序;注意由于單片機外接MAX485進展通信,所以在發(fā)送或接收前需要改變控制腳、DE改變MAX485的收發(fā)狀態(tài)。圖SEQ圖\*ARABIC9主機與子程序通信流程圖主機程序代碼://主機程序#include<reg51.h>#include<string.h>#include<ye_jing_xian_shi.h>sbitRE=P3^2; //MAX485的控制腳RE和DEsbitDE=P3^3; //發(fā)送時置高,接收時置地unsignedchartemp=0xff;sbitKEY2=P2^5; ////延時1ms函數(shù)voiddelay_1ms(unsignedintt)unsignedintx,y;for(x=t;x>0;x--)for(y=110;y>0;y--);//串口初始化函數(shù)voidserial_init()TMOD=0x20;//定時器1工作于方式2TH1=0xfd;TL1=0xfd;//波特率為9600PCON=0;SCON=0xd0;//串口工作于方式3TR1=1;//開啟定時器TI=0;RI=0;//向指定從機地址發(fā)送數(shù)據(jù)//和從機通信voidADDR_data(unsignedaddr)intj=0;while(temp!=addr)//主機等待從機返回其地址作為應答信號RE=1; //發(fā)送狀態(tài)DE=1;TI=0;//發(fā)送從機地址TB8=1;//發(fā)送地址幀SBUF=addr;while(!TI);TI=0;RE=0; //接收狀態(tài)DE=0;RI=0; //接收從機應答信號while(!RI);temp=SBUF;//從時機發(fā)送自己的地址作為回應RI=0;}//選通從機后跳出循環(huán)display_1(addr);//接通后在數(shù)碼管上顯示1或2//主機循環(huán)接收從機發(fā)過來的數(shù)字信號并在數(shù)碼管上顯示,直到接收到0do{RE=0; //接收狀態(tài)DE=0;RI=0;while(!RI);temp=SBUF;RI=0;display_1(temp);//在數(shù)碼管上顯示數(shù)字}while(temp!=0);//接收到0,表示此次通信完畢,數(shù)碼管閃爍表示for(j=0;j<50;j++)display_1(addr); delay_1ms(10); P2_0=1; P0=0x86; P2_1=0; delay_1ms(10);P2_1=1; P0=0xc8; P2_2=0; delay_1ms(10); P2_2=1; P0=0xa1; P2_3=0; delay_1ms(10); P2_3=1;voidmain()RE=1;DE=1;//初始為發(fā)送狀態(tài)serial_init();while(1)if(KEY1==0)delay_1ms(5);//消抖if(KEY1==0)while(!KEY1);ADDR_data(0x01);if(KEY2==0)delay_1ms(5);if(KEY2==0)while(!KEY2);ADDR_data(0x02);RE=1;DE=1;//重置為發(fā)送狀態(tài)④從機程序:從機首先進展串口初始化,然后處于循環(huán)接收狀態(tài),即等待主機的請求,如果接收緩存區(qū)有數(shù)據(jù),判斷是否等于本機地址,等于則說明有主機請求,則再向主機發(fā)送本機地址作為回應;然后從機進入讀鍵子程序,循環(huán)讀出鍵值并將鍵值發(fā)送到主機,直到有0鍵按下,從機將0發(fā)送后退出子程序,即完畢此次通信,重新開場主循環(huán)。注意由于單片機外接MAX485進展通信,所以在發(fā)送或接收前需要改變控制腳、DE改變MAX485的收發(fā)狀態(tài)。從機主程序流程圖:圖SEQ圖\*ARABIC10從機程序流程圖從機程序代碼〔從機1〕://從機1程序#include<reg51.h>#include<string.h>#include<ye_jing_xian_shi.h>#include<jian_pan.h>#defineaddr0x01//從機2的地址sbitRE=P3^2; //MAX485的控制腳RE和DEsbitDE=P3^3; //發(fā)送時置高,接收時置地unsignedcharaa=0xff;//主機與從機之間通信標志//延時1ms函數(shù)voiddelay_1ms(unsignedintt)unsignedintx,y;for(x=t;x>0;x--)for(y=110;y>0;y--);//串口初始化函數(shù)voidserial_init()TMOD=0x20;//定時器1工作于方式2TH1=0xfd;TL1=0xfd;//波特率為9600PCON=0;SCON=0xd0;//串口工作于方式3TR1=1;//開啟定時器TI=0;RI=0;voidmain()unsignedintKey;unsignedintj;RE=0;DE=0;//初始為接收狀態(tài)serial_init();while(1)SM2=1;//接收地址幀while(aa!=addr)//從機等待主機請求自己的地址RE=0; //接收狀態(tài)DE=0;RI=0;while(!RI);aa=SBUF;RI=0;RE=1; //發(fā)送狀態(tài)DE=1;TI=0;//一旦被請求,從機返回自己地址作為應答,等待接收數(shù)據(jù)TB8=0;SB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論