版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、南京航空航天大學(xué)微機接口技術(shù)南京航空航天大學(xué)微機接口技術(shù)微機接口技術(shù)大作業(yè)作業(yè)要求:設(shè)計一外部設(shè)備監(jiān)控系統(tǒng),采用CPU為51系列單片機,用C51或ASM51編寫軟件,給出SCH原理圖和軟件清單(要求有功能注釋),系統(tǒng)要求如下:系統(tǒng)帶有電子時鐘,2路模擬量和8路數(shù)字量的檢測;4個按鍵,分別為設(shè)置、+、-、-可以可以完成相應(yīng)的設(shè)置過程(包括時間設(shè)置和外部監(jiān)控值的上下限設(shè)置);采用I2C8583時鐘芯片(可以查相關(guān)資料);8個8段LED顯示(可以采用SPI總線芯片7219)以輔助完成設(shè)置,顯示內(nèi)容:時-分-秒;8個按鍵分別可以模擬外部8個故障點;2路電位器可以模擬外部模擬信號;EEPROM(I2C總
2、線芯片24c256)保存最近100個外部故障數(shù)據(jù)(包含故障點和故障時間);RS485上位機接口。系統(tǒng)軟件完成的功能:上電時電子鐘方式顯示當前時間;設(shè)置按鍵進入設(shè)置狀態(tài),可以重新設(shè)置新時間值和外部監(jiān)控值的上下限,結(jié)果寫入8583。設(shè)置完成后電子鐘方式顯示當前時間;實時監(jiān)測外部8個數(shù)字故障點和模擬數(shù)字,一旦故障記錄其故障數(shù)據(jù)、故障發(fā)生時間和恢復(fù)時間;上位機傳來命令字0 xaa向上位機發(fā)送所保存的外部故障數(shù)據(jù),發(fā)送完成后清除保存數(shù)據(jù)。(自定義通訊協(xié)議)。一、元器件選擇芯片名稱型號接口類型線數(shù)其它AD轉(zhuǎn)換芯片TLC1549SPI32塊共陰極數(shù)碼管顯示驅(qū)動器MAX7219SPI3時鐘芯片PCF8583I
3、2C2EPROM24WC256I2C2串口RS485MAX487E3二、MCS-51單片機引腳連接單片機I/O弓1腳外部器件連接及功用器件名稱引腳代號功用P0A0SW1按鈕1,模擬外部故障點1P0A1SW2按鈕2,模擬外部故障點2P0A2SW3按鈕3,模擬外部故障點3P0A3SW4按鈕4,模擬外部故障點4P0A4SW5按鈕5,模擬外部故障點5P0A5SW6按鈕6,模擬外部故障點6P0A6SW7按鈕7,模擬外部故障點7P0A7SW8按鈕8,模擬外部故障點8P1A0MAX7219DIN數(shù)碼管顯示串行數(shù)據(jù)輸入端P1A1MAX7219LOAD數(shù)碼管顯示數(shù)據(jù)鎖存端P1A2MAX7219CLK數(shù)碼管顯示時
4、鐘輸入端P1A3P1A4SPI/TLC1549CS模擬SPI片選信號P1A5SPI/TLC1549DATAOUT模擬SPI數(shù)據(jù)傳送位P1A6SPI/TLC1549CLK模擬SPI時鐘控制位P1A7P2A0P2A1SW9按鈕9,系統(tǒng)參數(shù)“設(shè)置”鍵P2A2SW10按鈕10,系統(tǒng)參數(shù)增加“+”鍵P2A3SW11按鈕11,系統(tǒng)參數(shù)減小“-”鍵P2A4SW12按鈕12,系統(tǒng)參數(shù)項目選擇“-”鍵P2A5P2A6MAX487EDE485串口通信P2A7MAX487ERE485串口通信P3A0/RXDMAX487ERXD485串口通信P3A1/TXDMAX487ETXD485串口通信P3A2/INT0PCF8
5、583INTP3A3/INT1P3A4/T0P3A5/T1P3A6/WRI2C總線SCL模擬I2C時鐘控制位P3A7/RDI2C總線SDA模擬I2C數(shù)據(jù)傳送位微機接口技術(shù)微機接口技術(shù)微機接口技術(shù)微機接口技術(shù)南京航空航天大學(xué)三、SCH原理圖234615(P1.012/P1.2產(chǎn)P14-5/P1568C13q1215ID14P10/TP00P11/TP01P12P02P13P03P14P04P15P05P16P06P17P07INT1P20INT0P21P22T1P23T0-P24P25EA/VPP26P27X1X2RESETRXD.TXDRDALE/PWRPSENU4VccREF+ANALOGI
6、NI/OCIKCSGNDDATAOUTU5VccREF+I/OCLKANALOGINCSGNDDATAOUTU3DIG0V+DIG1ISETDIG2DIG3SEGADIG4SEGBDIG5SEGCDIG6SEGDDIG7SEGESEGFDINSEGGLOADSEGDPCLKGNDDOUTGNDTitleSizeNumberRevisionB南索航堂航天大學(xué)微機接口技術(shù)南索航堂航天大學(xué)微機接口技術(shù)1.I2C器件接線圖3.AD轉(zhuǎn)換器件接線圖5.485串口接線電路四、軟件程序清單.延時程序:voiddelay(void);.啟動I2C總線:voidI_start(void);.停止I2C總線:voi
7、dI_stop(void);.初始化I2C總線:voidI_int(void);.提供時鐘信號,并返回時鐘為高電平時SDA的狀態(tài):bitI_clock(void);.向SDA發(fā)送一個字節(jié),并檢驗應(yīng)答信號:bitI_send(ucharI_data);.從SDA上讀取8位數(shù)據(jù)信號,并作為一個數(shù)據(jù)信號返回:byteI_receive(void);.發(fā)送應(yīng)答信號:voidI_ack(void);.毫秒級延時程序:voiddelay_ms(intn);.向8583時鐘芯片內(nèi)指定地址寫入數(shù)據(jù),并檢驗應(yīng)答信號,成功則返回TRUE,否則返回FAULSE:bitWrite_8583(ucharAddress,
8、uchardata1);.從8583時鐘芯片指定地址讀出數(shù)據(jù),如成功讀取,則發(fā)送應(yīng)答信號,并返回TRUE,否則返回FAULSE:ucharRead_8583(ucharAddress);南京航空航天大學(xué)微機接口技術(shù)南京航空航天大學(xué)微機接口技術(shù)南京航空航天大學(xué)微機接口技術(shù)南京航空航天大學(xué)微機接口技術(shù).初始化始83時鐘芯片,預(yù)輸入時間:voidinit_8583(void);.向7219指定地址寫入數(shù)據(jù):voidWrite_7219(ucharAddress,ucharData);.MAX7219初始化:voidinit_7219(void);.設(shè)置時間和監(jiān)控值:voidset(void);.向2
9、4c256寫入器件地址和一個指定的字節(jié)地址:bitE_address(ucharAddress1,ucharAddress2);.從24c256內(nèi)地址0開始讀出BLOCKSIZE個字節(jié)的數(shù)據(jù):bitE_read(void);.向24c256寫入數(shù)據(jù):bitE_write(uchardata1);.故障點產(chǎn)生故障時寫入24c256:voidfailure(void);.將模擬量通過TLC1549轉(zhuǎn)換成數(shù)字量:uintTLC1549(void);.初始化:voidinit(void);.接受主機指令:bitRecv_Data(uchar*type);.發(fā)送單字節(jié)數(shù)據(jù):voidSend(ucharm
10、);.發(fā)送數(shù)據(jù):voidSend_Data(uchartype,ucharlen,uchar*buf);.主函數(shù):voidmain(void)。五、主要子函數(shù)源程序.函數(shù)變量及端口定義#defineHIGH1#defineLOW0#defineTRUE1#defineFAULSE0#defineHIGH1#defineLOW0#defineTRUE1#defineFAULSE0#definebyteunsignedint#defineucharunsignedchar#defineuintunsignedint#defineWRITE0 xA0#defineREAD0 xA1#defineWR
11、ITE10 xA2#defineREAD10 xA3#defineBLOCKSIZE700#defineACTIVE0 x11#defineGETDATA0 xaa#defineREADY0 x33#defineSENDDATA0 x44#defineRECFRMMAXLEN16#defineSTATUSMAXLEN700/8583寫/8583讀/7219寫/7219讀/4種幀的定義/接受幀的最大長度,超過此值認為幀超長錯誤/設(shè)備狀態(tài)信息最大長度externxdataucharStatusBufSTATUSMAXLEN;/設(shè)備狀態(tài)信息緩沖區(qū)externxdatabyteEEPROMBLOCKS
12、IZE;externxdatabyteaddress1_256=0 x00;24c256的寫入地址externxdatabyteaddress2_256=0 x00;externxdataucharrun=0;/run為設(shè)置狀態(tài)externxdatauchartime;/從8583讀取的時間值bitkey_flg=0;/key_flg=0無按鍵,key_flg=1有按鍵bittransfer_flg=0;transfer_flg=0無移位鍵按下,transfer_flg=1有移位鍵按下/I2C總線/I2C總線/SPI總線/AD轉(zhuǎn)換SPI總線/驅(qū)動器使能,1有效/接收器使能,0有效/外部故障點接
13、口并檢驗應(yīng)答信號externxdatabytekeyvalue;/keyvalue值代表按鍵externxdatabytenumber=0 x02,0 x03,0 x04;/存放時間的8583內(nèi)部地址externxdatabytetran=0;/記錄移位鍵externxdatabytemax=0 x40;/max為外部監(jiān)控值的上限externxdatabytemin=0 x10;/min為外部監(jiān)控值的下限ucharDevNo;/設(shè)備號sbitsettime=P2:1;/時間設(shè)置鍵接口sbitadd_time=P22;sbitminus_time=P23;sbittransfer_time=P2
14、4;sbitSCL=P37;sbitSDA=P3飛;sbitDIN二Pr0;sbitCLK=P12;sbitLOAD=P1;sbitCSAD1549=P14;sbitCLKADDA:P廠6;sbitDIOADDA=P15;sbitDE=P26;sbitRE=P27;sbitfailurel=P0-0;sbitfailure2=P01;sbitfailure3=P02;sbitfailure4=P03;sbitfailure5=P04;sbitfailure6=P05;sbitfailure7=P06;sbitfailure8=P07.向SDA發(fā)送一個字節(jié),bitI_send(ucharI_da
15、ta)registerinti;for(i=0;i8;i+)SDA=(bit)(I_data&0 x80);I_data=I_data1;I_clock();SDA=HIGH;return(I_clock();.從SDA上讀取8位數(shù)據(jù)信號,并作為一個數(shù)據(jù)信號返回byteI_receive(void)registerinti;ucharI_data=0;for(i=0;i8;i+)I_data=I_data1;if(I_clock();I_data=I_data&1;return(I_data);.向8583時鐘芯片內(nèi)指定地址寫入數(shù)據(jù),并檢驗應(yīng)答信號,成功則返回TRUE,否則返回FAULSEbi
16、tWrite_8583(ucharAddress,uchardata1)I_start();if(I_send(WRITE)&I_send(Address)&I_send(data1)I_stop();delay();return(TRUE);elsereturn(FAULSE);.從8583時鐘芯片指定地址讀出數(shù)據(jù),如成功讀取,則發(fā)送應(yīng)答信號,并返回TRUE,否則返回FAULSEucharRead_8583(ucharAddress)uchardata_8583;I_start();if(I_send(WRITE)&I_send(Address)&I_send(READ)data_8583=
17、I_receive();I_ack();I_stop();delay();return(data_8583);.向7219指定地址寫入數(shù)據(jù)voidWrite_7219(ucharAddress,ucharData)uchari;LOAD=1;for(i=0;i8;i+)/傳送8位地址CLK=0;DIN=(bit)(Address&0 x80);Address=Address1;CLK=1;for(i=0;i8;i+)/傳送8位數(shù)據(jù)CLK=0;DIN=(bit)(Data&0 x80);Data=Data4;time1=time1+0 x01;if(time10 x09)time1=0 x00;
18、time2=time2+0 x01;time2=time20 x24)time=0 x00;if(tran-14;time1=time+0 x01;if(time10 x09)time1=0 x00;time2=time2+0 x01;time2=time24;if(time0 x59)time=0 x00;Write_8583(numbertran-1,time);if(tran-1)=0)Write_7219(0 x08,time1);Write_7219(0 x07,time2);if(tran-1)=1)Write_7219(0 x05,time1);Write_7219(0 x04,
19、time2);if(tran-1)=2)Write_7219(0 x02,time1);Write_7219(0 x01,time2);if(run-1)=1)max=max+0 x01;Write_7219(0 x01,max);if(run-1)=2)min=min+0 x01;Write_7219(0 x01,min);if(keyvalue=2)/若按下減1鍵if(run-1)=0&transfer_flg)transfer_flg=0;if(tran-1)=2)time1=time&0 x0f;time2=time&0 xf0;time2=time24;if(time1=0 x00&
20、time2=0 x00)time1=0 x03;time2=0 x02;elseif(time1=0 x00)time1=0 x09;time2=time2-0 x01;elsetime1=time1-0 x01;time2=time24;if(tran-14;if(time1=0 x00&time2=0 x00)time1=0 x09;time2=0 x05;elseif(time1=0 x00)time1=0 x09;time2=time2-0 x01;elsetime1=time1-0 x01;time2=time24;Write_8583(numbertran-1,time);if(t
21、ran-1)=0)Write_7219(0 x08,time1);Write_7219(0 x07,time2);if(tran-1)=1)Write_7219(0 x05,time1);Write_7219(0 x04,time2);if(tran-1)=2)Write_7219(0 x02,time1);Write_7219(0 x01,time2);if(run-1)=1)max=max-0 x01;Write_7219(0 x01,max);if(run-1)=2)min=min-0 x01;Write_7219(0 x01,min);if(keyvalue=3)/若按下移位鍵if(r
22、un-1)=0)transfer_flg=1;time=Read_8583(numbertran);tran+;if(tran2)tran=0;if(tran-1=0)/只顯示秒位Write_7219(0 x01,0 x0f);Write_7219(0 x02,0 x0f);Write_7219(0 x04,0 x0f);Write_7219(0 x05,0 x0f);if(tran-1=1)/只顯示分位Write_7219(0 x01,0 x0f);Write_7219(0 x02,0 x0f);Write_7219(0 x07,0 x0f);Write_7219(0 x08,0 x0f);
23、if(tran-1=0)/只顯示時位Write_7219(0 x07,0 x0f);Write_7219(0 x08,0 x0f);Write_7219(0 x04,0 x0f);Write_7219(0 x05,0 x0f);8.故障點產(chǎn)生故障時,寫入24c256voidfailure(void)ucharkey;registeruchari=0;bitport=1;uchars1,m1,h1,s2,m2,h2;key=P0;if(key!=0 xff)delay_ms(5);if(key!=0 xff)s1=Read_8583(0 x02);m1=Read_8583(0 x03);h1=R
24、ead_8583(0 x04);while(port)port=(bit)(key&0 x80);key=key1;i+;while(1)if(key=0 xff)s2=Read_8583(0 x02);m2=Read_8583(0 x03);h2=Read_8583(0 x04);break;E_write(i);E_write(s1);E_write(m1);E_write(h1);E_write(s2);E_write(m2);E_write(h2);9.將模擬量通過TLC1549轉(zhuǎn)換成數(shù)字量uintTLC1549(void)ucharn;uintad_value=0;/初始化CS_AD
25、1549=1;CLK_AD_DA=0;DIO_AD_DA=1;CS_AD1549=0;for(n=0;n8;n+)/輸出數(shù)據(jù)CLK_AD_DA=1;ad_value=ad_value|(uint)DIO_AD_DA;ad_value=ad_value1;CLK_AD_DA=0;CS_AD1549=1;delay();return(ad_value);10.接受主機指令bitRecv_Data(uchar*type)/保存接受到得幀/一幀接受結(jié)束標志/一幀開始接收標志/校驗和/保存接受到得幀/一幀接受結(jié)束標志/一幀開始接收標志/校驗和/數(shù)據(jù)字節(jié)長度變量ucharr_bufRECFRMMAXLEN
26、;ucharFlag_RecvOver;ucharFlag_StartRec;ucharCheckSum;ucharDataLen;/*禁止發(fā)送,允許接收*/DE=0;RE=0;/*接收一幀數(shù)據(jù)*/rCount=0;Flag_RecvOver=0;Flag_StartRec=0;while(!Flag_RecvOver)RI=0;while(!RI);tmp=SBUF;RI=0;/*判斷是否收到字符“$”*/if(!Flag_StartRec)&(tmp=0 x24)Flag_StartRec=1;if(Flag_StartRec)r_bufrCount=tmp;rCount+;/*判斷是否收
27、到字符“*”*/if(tmp=0 x2A)Flag_RecvOver=1;if(rCount=RECFRMMAXLEN)return(0);/*校驗和字節(jié)*/CheckSum=0;DataLen=r_buf3;for(i=0;i+;i3+DataLen)CheckSum=CheckSum+r_bufi+1;/*判斷幀是否錯誤*/if(rCount6)return0;if(r_buf1!=DevNo)return0;if(r_bufrCount-2!=CheckSum)return0;*type=r_buf2;return1;11.發(fā)送數(shù)據(jù)voidSend_Data(uchartype,ucharlen,uchar*buf)uchari,tmp;uch
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版外銷合同范本:新能源產(chǎn)品海外銷售合作協(xié)議5篇
- 2025年個人二手車交易車輛交易咨詢及指導(dǎo)服務(wù)協(xié)議2篇
- 2025年度店鋪空間布局優(yōu)化施工合同范本
- 2025版新車銷售與車主關(guān)愛活動合作合同范本2篇
- 2025年度城市綠化工程個人養(yǎng)護施工合同4篇
- 2025-2030全球電子合同智能管理服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球三環(huán)癸烷二甲醇二甲基丙烯酸酯行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國口服滲透泵行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2024年遼寧中考數(shù)學(xué)臨考押題卷解析版
- 2024年全國高考語文試題分類匯編:詞語(成語、熟語等)含詳細解答
- 數(shù)學(xué)-山東省2025年1月濟南市高三期末學(xué)習質(zhì)量檢測濟南期末試題和答案
- 中儲糧黑龍江分公司社招2025年學(xué)習資料
- 2024-2025學(xué)年人教版三年級(上)英語寒假作業(yè)(九)
- 河南退役軍人專升本計算機真題答案
- 湖南省長沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 船舶行業(yè)維修保養(yǎng)合同
- 駕駛證學(xué)法減分(學(xué)法免分)試題和答案(50題完整版)1650
- 2024年林地使用權(quán)轉(zhuǎn)讓協(xié)議書
- 物流有限公司安全生產(chǎn)專項整治三年行動實施方案全國安全生產(chǎn)專項整治三年行動計劃
- 2025屆江蘇省13市高三最后一卷生物試卷含解析
- 2023年漢中市人民政府國有資產(chǎn)監(jiān)督管理委員會公務(wù)員考試《行政職業(yè)能力測驗》歷年真題及詳解
評論
0/150
提交評論