




已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
智能儀器設計課程設計報告 采用RS 485標準的主從式多機系統(tǒng)設計學生姓名: 王* 學 號: * 班 級: * 任課教師: * 成 績: 1、 設計要求 a) 系統(tǒng)基本結構:1個51系列單片機主機、2個51系列單片機從機(從機1 和從機2)、采用RS 485組成主從式多機系統(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ā)給主機。2、 方案論證(1) 系統(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ù)碼管顯示。 圖 1 系統(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所示: 圖 2 MAX485工作電路 其中管腳、DE是收發(fā)器的控制腳,根據(jù)MAX485的邏輯功能表,、DE都置為高電平,則發(fā)送器可工作,接收器不工作; 、DE 都置為低電平,則接收器可工作,發(fā)送器不工作(發(fā)送器和接收器無法同時工作),所以可用單片機的io口使能、DE來實現(xiàn)半雙工通信。51與MAX485的接口示意圖如下: 圖 3 單片機與MAX485連接示意圖 (3)鍵盤設計:根據(jù)題意,主機由于只需使用到兩個按鍵,所以主機的按鍵可使用獨立式按鍵方式,即兩個按鍵接入單片機的兩個io口,通過判斷高低電平判斷哪個鍵被按下;從機則需要使用矩陣式鍵盤,本組使用44的矩陣式鍵盤,并用線反轉法進行鍵值掃描。(4) 顯示單元:由于需要顯示的信息比較簡單,所以可以簡單的使用LED數(shù)碼管來顯示,本組使用的單片機開發(fā)板上集成了4個數(shù)碼管,共用一個譯碼器,可以通過循環(huán)點亮的方式顯示多個數(shù)字。3、 硬件設計 主機和從機通過MAX485連接的電氣圖:圖 4 主機和從機通過MAX485連接的電氣圖主機和按鍵、數(shù)碼管的連接圖從機和鍵盤、數(shù)碼管的連接圖圖 5 主機和按鍵、數(shù)碼管的連接圖圖 6 從機和鍵盤、數(shù)碼管的連接圖4、 軟件設計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 程序代碼:#define uchar unsigned char sbit P2_0 = P20; /用來點亮數(shù)碼管1sbit P2_1 = P21; /用來點亮數(shù)碼管2sbit P2_2 = P22; /用來點亮數(shù)碼管3sbit P2_3 = P23; /用來點亮數(shù)碼管4uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90 ;/液晶查詢表void display_1(unsigned int number);void display_2(unsigned int number);void display_3(unsigned int number);void display_4(unsigned int number);/*函數(shù)名:void display_1參數(shù):(unsigned int number)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管1*/void display_1(unsigned int number) P0=tablenumber; P2_0 = 0; /*函數(shù)名:void display_2參數(shù):(unsigned int number)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管2*/void display_2(unsigned int number) P0=tablenumber; P2_1 = 0; /*函數(shù)名:void display_3參數(shù):(unsigned int number)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管3*/void display_3(unsigned int number) P0=tablenumber; P2_2 = 0;/*函數(shù)名:void display_4參數(shù):(unsigned int number)作用:根據(jù)輸入的數(shù)字點亮顯示數(shù)碼管4*/void display_4(unsigned int number) P0=tablenumber; 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)寫好的鍵值表,獲取鍵值。 線反轉法掃鍵流程圖: 圖 7 鍵盤子程序流程圖 掃描鍵盤子程序代碼:#includeint hang;/定義行號int lie; /定義列號unsigned int Key_Val=1;/保存鍵值unsigned int keymap = 1,2,3,0,4,5,6,0,7,8,9,0,0,0,0,0;/設置鍵盤邏輯鍵值int KeyScan();/掃鍵子函數(shù)void Delay(); /延時/* 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)*/void Delay()/延時子函數(shù)long i;for(i=1000;i0;i-);int KeyScan()/掃鍵子函數(shù)P1=0xF0;/列輸出全0;if(P1&0xF0)!=0xF0)/掃描行,如果不全為0,則進入switch(P1)/獲得行號 case 0x70: hang=1; break; case 0xB0: hang=2; break; case 0xD0: hang=3; break; case 0xE0: hang=4; break; default: break;Delay();/延時去抖動P1=0x0F;/行輸出全0if(P1&0x0F)!=0x0F)/掃描列,如果不全為0,則確認按鍵按下 switch(P1)/獲得列號 case 0x07: lie=1; break; case 0x0B: lie=2; break; case 0x0D: lie=3; break; case 0x0E: lie=4; break; default: break; return 1;/掃描到按鍵按下,則返回1else return 0;/未掃描到按鍵按下,返回0主機程序: 在主機主程序中首先進行串口的配置,需要將串口置為模式3;然后程序一直循環(huán)查詢是否有按鍵按下(K1或K2),如果有按鍵按下,則進入與從機通信的子程序。 主機主程序流程圖: 圖 8 主機主程序流程圖 主機與從機通信的子程序是主機程序的最關鍵部分,負責主機與從機建立聯(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)。 圖 9 主機與子程序通信流程圖主機程序代碼:/主機程序#include#include#includesbit RE = P32;/MAX485的控制腳RE和DEsbit DE = P33;/發(fā)送時置高,接收時置地unsigned char temp=0xff;sbit KEY1=P24; /P2.4,P2.5是兩個按鍵sbit KEY2=P25; /延時1ms函數(shù)void delay_1ms(unsigned int t) unsigned int x,y; for(x=t;x0;x-) for(y=110;y0;y-);/串口初始化函數(shù)void serial_init() TMOD=0x20; /定時器1工作于方式2 TH1=0xfd; TL1=0xfd; /波特率為9600 PCON=0; SCON=0xd0; /串口工作于方式3 TR1=1; /開啟定時器 TI=0; RI=0;/向指定從機地址發(fā)送數(shù)據(jù)/和從機通信void ADDR_data(unsigned addr) int j=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ù)碼管上顯示,直到接收到0 do 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;j50;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; void main() 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)。從機主程序流程圖: 圖 10 從機程序流程圖從機程序代碼(從機1):/從機1程序#include#include#include#include#define addr 0x01/從機2的地址sbit RE = P32;/MAX485的控制腳RE和DEsbit DE = P33;/發(fā)送時置高,接收時置地unsigned char aa=0xff;/主機與從機之間通信標志/延時1ms函數(shù)void delay_1ms(unsigned int t) unsigned int x,y; for(x=t;x0;x-) for(y=110;y0;y-);/串口初始化函數(shù)void serial_init() TMOD=0x20; /定時器1工作于方式2 TH1=0xfd; TL1=0xfd; /波特率為9600 PCON=0; SCON=0xd0; /串口工作于方式3 TR1=1; /開啟定時器 TI=0; RI=0;void main() unsigned int Key; unsigned int j; 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; SBUF=addr; while(!TI); TI=0; S
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安卓的面試題及答案
- 工程晉升面試題及答案
- 傳染病考試題及答案
- 公關商務面試題及答案
- 翻譯教材考試題及答案
- 地圖英文面試題及答案
- T/CAEPI 55-2023污染土壤原位熱傳導修復工藝設計指南
- 某自治縣工貿(mào)行業(yè)領域重大隱患督導檢查工作方案
- 收費站應聘班長演講稿
- 人生規(guī)劃課件
- 《中醫(yī)美容》課件
- 10.2事件的相互獨立性 說課課件高一下學期數(shù)學人教A版(2019)必修第二冊
- 民辦學校檔案管理制度
- 工業(yè)固體廢棄物的資源化處理
- DB11 637-2015 房屋結構綜合安全性鑒定標準
- 教學評一體化含義
- 24秋國家開放大學《馬克思主義基本原理》專題測試參考答案
- 下月監(jiān)理工作計劃模板
- 科技查新報告樣例
- 2024株洲市中考地理試題
- 壓力管道分部工程竣工報告
評論
0/150
提交評論