版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微機原理與應用實驗報告6實驗9串行通信技術(shù)實驗10A模擬信號轉(zhuǎn)換接口實驗報告實驗九串行通信技術(shù)、實驗目的1 .了解異步串行通信原理;2 .掌握MSP430異步串行通信模塊及其編程方法;二、實驗任務1) 了解MSP430G2553實驗板USB轉(zhuǎn)串口的通信功能,掌握串口助手的使用(1)利用PC機的串口助手程序控制串口,實現(xiàn)串口的自發(fā)自收功能為實現(xiàn)PC串口的自發(fā)自收功能,須現(xiàn)將實驗板上的擴展板去下,并將單片機板上的BRXDF口BTXD用杜邦線進行短接,連接圖如下所示:EZVCC10SBWTCK3SBWTDIO6BTXD4P1.129VCC7TEST/SBWTCK5RSI/SBWTDIO3P1.21B
2、RXD由此可以實現(xiàn)PC串口的自收自發(fā)功能。(2)思考題:異步串行通信接口的收/發(fā)雙方是怎么建立起通信的首先在異步通信中,要求接收方和發(fā)送方具有相同的通信參數(shù),即起始位、停止位、波特率等等。在滿足上面條件的情況下,發(fā)送方對于每一幀數(shù)據(jù)按照起始位數(shù)據(jù)位停止位的順序進行發(fā)送,而接收方則一直處于接受狀態(tài),當檢測到起始位低電平時,看是采集接下來發(fā)送方發(fā)送過來的數(shù)據(jù),這樣一幀數(shù)據(jù)(即一個字符)傳送完畢,然后進行下一幀數(shù)據(jù)的接受。這樣兩者之間就建立起了通信。2.查詢方式控制單片機通過板載USB轉(zhuǎn)串口與PC機實現(xiàn)串行通信(1)硬件連接圖/通信設(shè)置/時鐘設(shè)置/循環(huán)等待接受緩沖器滿/讀接受緩沖器并保存/檢測發(fā)送完
3、畢信號/接受完畢信號/檢測接受完畢信號2) )C語言程序采用SMCLK=1.0MHz時,程序如下:#include"io430.h"#include"in430.h"unsignedinti,j,done,count;charstring32;voidUSCIA0_int();voidCLOCK_int();intmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;USCIA0_int();CLOCK_int();while(1)done=0;count=0;for(
4、i=0;i<32;i+)while(IFG2&UCA0RXIFG)=0);stringi=UCA0RXBUF;if(stringi='')done=1;break;count=i;if(done=1)for(j=0;j<=count;j+)while(IFG2&UCA0TXIFG)=0);UCA0TXBUF=stringj;done=0;voidUSCIA0_int()UCA0CTL1|=UCSWRST;P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;UCA0CTL1|=UCSSEL_2+UCRXEIE;UCA0BR1=0;UC
5、A0BR0=104;UCA0MCTL=UCBRS_1;UCA0CTL1&=UCSWRST;端口設(shè)置時鐘選擇設(shè)置(SMCLK)/波特率設(shè)置voidCLOCK_int()if(CALBC1_1MHZ!=0xff)BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;設(shè)置時鐘為1MHz采用smclklMHZ其中SMCLK=1MHz,波特率采用的是9600,采用低頻波特方式,則N=1000000/9600=104.1666;故UCA0BR1=0UCA0BR0=104,UCBRS=1;當采用外部晶振時,時鐘采用默認設(shè)置即可,程序如下:#include"io430
6、.h"#include"in430.h"unsignedinti,j,done,count;charstring32;voidUSCIA0_int();intmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;USCIA0_int();while(1)done=0;count=0;for(i=0;i<32;i+)while(IFG2&UCA0RXIFG)=0);stringi=UCA0RXBUF;if(stringi='')done=1;break
7、;/通信設(shè)置/循環(huán)等待接受緩沖器滿/讀接受緩沖器并保存/檢測發(fā)送完畢信號/接受完畢信號/檢測接受完畢信號端口設(shè)置時鐘選擇設(shè)置(SMCLK)/波特率設(shè)置)count=i;if(done=1)(for(j=0;j<=count;j+)(while(IFG2&UCA0TXIFG)=0);UCA0TXBUF=stringj;)done=0;)voidUSCIA0_int()(UCA0CTL1|=UCSWRST;P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;UCA0CTL1|=UCSSEL_1+UCRXEIE;UCA0BR1=0;UCA0BR0=3;UCA0MCTL
8、=UCBRS_3;UCA0CTL1&=UCSWRST;)也是采用了低頻波特率方式,所以關(guān)于波特率設(shè)置的相關(guān)計算和上面是一樣的。(3)思考:如果在兩個單片機之間進行串行通信,應該如何設(shè)計連線和編程?由于在上面的連線中將單片機上的P1.2和BRXD相連,P1.1和BTXD相連,所以若要在兩個單片機之間進行通信,首先應該將兩個單片機的P1.2和P1.1交叉相連,并根據(jù)上面的程序進行相同的關(guān)于端口和波特率相關(guān)的設(shè)置即可實現(xiàn)兩個單片機之間的通信。3 .(提高)利用PC機RS232通信接口與單片機之間完成串行通信(1)硬件連接圖在實驗時,采用了將PC機的串口com1直接連接至MSP430F149的
9、孔型D9連接器上,G2553單片機的輸出引腳P1.1和P1.2分別與F149單片機上的URXD1和UTXD1相連接,連接圖如下所示:Fl小板電平轉(zhuǎn)換電路PC機D9計型連接器M5P430G2553(2)C語言程序當采用波特率9600bps、無校驗、8位數(shù)據(jù)位、先低后高、一個停止位時,所采用的程序和任務2中相同,這里不再贅述。當采用波特率38400bps、無校驗、8位數(shù)據(jù)位、先低后高、一個停止位時,由于采用外部晶振已經(jīng)不能夠產(chǎn)生這樣高的波特率,所以采用SMCK=1MHz的時鐘,所采用的程序只需將任務二中關(guān)于時鐘選擇和時鐘設(shè)置的相關(guān)部分進行修改即可,具體程序見下面所示:#include"i
10、o430.h"#include"in430.h"unsignedinti,j,done,count;charstring32;voidUSCIA0_int();voidCLOCK_int();intmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;USCIA0_int();CLOCK_int();while(1)done=0;count=0;for(i=0;i<32;i+)/循環(huán)等待接受緩沖器滿/讀接受緩沖器并保存/檢測發(fā)送完畢信號/接受完畢信號while(IFG2&a
11、mp;UCA0RXIFG)=0);stringi=UCA0RXBUF;if(stringi='')done=1;break;count=i;if(done=1)/檢測接受完畢信號(for(j=0;j<count;j+)(while(IFG2&UCA0TXIFG)=0);UCA0TXBUF=stringj;done=0;voidUSCIA0_int()(UCA0CTL1|=UCSWRST;P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/端口設(shè)置UCA0CTL1|=UCSSEL_2+UCRXEIE;/時鐘選擇設(shè)置UCA0BR1=0;UCA0BR
12、0=1;/波特率設(shè)置UCA0MCTL=UCBRF_10+UCBRS_0+UCOS16;UCA0CTL1&=UCSWRST;voidCLOCK_int()(if(CALBC1_1MHZ!=0xff)(BCSCTL1=CALBC1_1MHZ;/采用smclk1MHZDCOCTL=CALDCO_1MHZ;(3)思考題:設(shè)計單片機與PC機進行串行通信時,硬件設(shè)計有哪些需要注意的事項?首先最基本的是,單片機和PC機上所選擇的通信協(xié)議應該是一致的,然后可以選擇多種路徑,其中包括USB,串口等。另外需要注意的是要統(tǒng)一兩者之間的邏輯電平,如果電平不同,則需要在中間加入電平轉(zhuǎn)換電路。4 .(提高)中斷方
13、式控制串行通信的收發(fā)(1)硬件連接圖由于只是將接收和發(fā)送改為了中斷實現(xiàn),其他功能并沒有改變,所以這里的硬件連接圖和任務2中的是相同的,這里不再重復。(2)C語言程序#include"io430.h"#include"in430.h"unsignedinti,j,done,count;charstring32;voidUSCIA0_int();intmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;USCIA0_int();i=0;j=0;done=0;IE2|=UC
14、A0RXIE;_EINT();while(1)if(done=1)IE2|=UCA0TXIE;elseIE2&=UCA0TXIE;voidUSCIA0_int()UCA0CTL1|=UCSWRST;P1SEL|=BIT1+BIT2;P1SEL2|=BIT1+BIT2;/端口設(shè)置UCA0CTL1|=UCSSEL_1+UCRXEIE;/時鐘選擇設(shè)置UCA0BR1=0;UCA0BR0=3;/波特率設(shè)置UCA0MCTL=UCBRS_3;UCA0CTL1&=UCSWRST;#pragmavector=USCIAB0RX_VECTOR/接收中斷子程_interruptvoidUCA0RX_
15、ISR()stringi=UCA0RXBUF;if(stringi='')done=1;count=i;i=0;)i+;)#pragmavector=USCIAB0TX_VECTOR/發(fā)送中斷子程_interruptvoidUCA0TX_ISR()if(j<count)UCA0TXBUF=stringj;j+;)elsedone=0;j=0;)(3發(fā)送中斷的允許位不能夠一直處于打開狀態(tài),因為當發(fā)送緩沖器為空時,發(fā)送中斷標志位就會被置位,向系統(tǒng)發(fā)出中斷請求,從而轉(zhuǎn)去執(zhí)行發(fā)送中斷子程。而當無法送內(nèi)容時和剛發(fā)送完內(nèi)容后發(fā)送緩沖器都處于空的狀態(tài),若發(fā)送中斷允許位一直打開,在沒有接
16、受完畢進入發(fā)送時就會不斷地向系統(tǒng)發(fā)出中斷請求,從而導致系統(tǒng)不能正常。所以,發(fā)送中斷允許為應該在接受完畢準備發(fā)送時打開,發(fā)送完畢后立即關(guān)閉。三、實驗中遇到的問題和解決辦法1 .在任務二中使用SMCLK完成通信時,最開始始終無法完成通信,后來發(fā)現(xiàn)是由于SMCLK的時鐘頻率并不是剛好的1MHz,所以后來通過利用示波器測量實際的頻率,重新計算產(chǎn)生波特率的相關(guān)的參數(shù)解決了問題;2 .對于利用中斷完成任務二的要求中,起初無法完成通信,后來發(fā)現(xiàn)是中斷中由于在賦值完一次之后,先使i進行了加1,然后才判斷對應的字符是否是'',所以單片機一直沒有發(fā)送到PC機上內(nèi)容。實驗十模擬信號轉(zhuǎn)換接口一、實驗目
17、的1,了解模/數(shù)轉(zhuǎn)換的工作原理,掌握MSP430單片機內(nèi)ADC10*H/數(shù)轉(zhuǎn)換模塊的控制和應用。二、實驗任務1.卞H/數(shù)轉(zhuǎn)換器ADC10的編程控制(1)硬件連接圖(2)程序設(shè)計思路首先需要利用示波器測量單片機板上的Vcc的大小,確定數(shù)/模轉(zhuǎn)換公式中的參考電壓的取值。在編程時,由于測量的是穩(wěn)恒電壓,所以ADC的一些設(shè)置采用默認值即可,通過幾次采樣得到的值進行平均減小誤差,然后轉(zhuǎn)換為模擬值,利用得到的結(jié)果跟2.2和2.8進行比較,然后通過比較結(jié)果控制L1燈的亮滅。(3)C語言程序#include"io430.h"#include"in430.h"unsign
18、edbuffer32;unsignedinti,sum;floatvin;intmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;P1SEL&=BIT1;P1SEL2&=BIT1;P1DIR|=BIT1;P1OUT|=BIT1;ADC10AE0|=BIT0;ADC10CTL0&=ENC;ADC10CTL1|=INCH_0;ADC10CTL0|=ADC10ON+ENC;while(1)/P1.1設(shè)置為GPIO用來控制L1/允許A0管腳模擬輸入/禁止ADC10轉(zhuǎn)換采樣通道為A0給內(nèi)核供
19、電允許轉(zhuǎn)換主循環(huán)sum=0;for(i=0;i<4;i+)/軟件啟用采樣ADC10CTL0|=ADC10SC;while(ADC10CTL0&ADC10IFG)=0);bufferi=ADC10MEM;sum=sum+bufferi;/通過公式計算出測量的電壓值vin=(sum/4)*3.5/1023);if(vin>2.80)P1OUT&=BIT1;if(vin<2.20)P1OUT|=BIT1;(4)思考題:如果模擬信號從P1.5輸入,應該如何編程?若模擬信號從P1.5輸入只需將允許管腳模擬輸入和采樣通道的選擇進行修改即可,其他的不用改變。并在硬件上使模擬
20、信號從P1.5輸入即可。需要修改的指令如下所示:ADC10AE0|=BIT0;/允許A0管腳模擬輸入ADC10CTL1|=INCH_0;/采樣通道為A02.(提高)改用中斷的方式實現(xiàn)任務1(1)硬件連接圖硬件連接圖任務一中相同,所以在這里不再給出。(2)C語言程序#include"io430.h"#include"in430.h"unsignedbuffer32;unsignedinti=0,sum;floatvin;intmain(void)/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTH
21、OLD;P1SEL&=BIT1;P1SEL2&=BIT1;P1DIR|=BIT1;P1OUT|=BIT1;ADC10AE0|=BIT0;ADC10CTL0&=ENC;ADC10CTL1|=INCH_0;ADC10CTL0|=ADC10ON+ENC;ADC10CTL0|=ADC10IE;_EINT();ADC10CTL0|=ADC10SC;sum=0;while(1)/允許A0管腳模擬輸入/禁止ADC10轉(zhuǎn)換采樣通道為A0給內(nèi)核供電允許轉(zhuǎn)換/打開總控位/軟件啟動轉(zhuǎn)換if(vin>2.80)P1OUT&=BIT1;if(vin<2.20)P1OUT|=B
22、IT1;ADC10CTL0|=ADC10SC;/軟件啟動轉(zhuǎn)換#pragmavector=ADC10_VECTOR/中斷子程_interruptvoidADC10_ISR()bufferi=ADC10MEM;sum=sum+bufferi;i+;if(i=4)vin=(sum/4)*3.5/1023);sum=0;i=0;3.(提高)制作數(shù)字電壓表(1)硬件連接圖(2)程序設(shè)計思路其中最基本的任務和上面兩個任務中完成方式相同,在這里需要改進的就是將測得的電壓值進行數(shù)碼管顯示,只需要利用之前實驗中設(shè)計的數(shù)碼管顯示模塊就可以了。(3)C語言程序#include"io430.h"#
23、include"in430.h"unsignedbuffer32;unsignedinti=0,sum;unsignedcharNUMtab10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;intvin;floatvinl;voidseg(intnumber);intmain(void)(/StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;P1SEL&=(BIT0+BIT1+BIT2+BIT3);P1SEL2&=(BIT0+BIT1+B
24、IT2+BIT3);P1DIR|=(BIT0+BIT1+BIT2+BIT3);P2SEL=0;P2SEL2=0;P2DIR=0xff;ADC10AE0|=BIT5;允許A0管腳模擬輸入(改為BIT5)ADC10CTL0&=ENC;/禁止ADC10轉(zhuǎn)換ADC10CTL1|=INCH_5;采樣通道為A0(改為INCH_5)ADC10CTL0|=ADC10ON+ENC;/給內(nèi)核供電允許轉(zhuǎn)換ADC10CTL0|=ADC10IE;_EINT();ADC10CTL0|=ADC10SC;sum=0;while(1)(seg(vin);ADC10CTL0|=ADC10SC;#pragmavector=ADC10_VECTOR_interruptvoidADC10_ISR()(bufferi=ADC10MEM;sum=sum+bufferi;i+;if(i=4)(vin1=100*(sum/4)*3.4962/1023);vin=(int)vin1;sum=0;i=0;voidseg(intnumber
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州城市職業(yè)學院《信息系統(tǒng)審計》2023-2024學年第一學期期末試卷
- 貴州財經(jīng)大學《工業(yè)機器人本體設(shè)計》2023-2024學年第一學期期末試卷
- 2025年上海市安全員C證考試題庫
- 2025云南省建筑安全員-B證(項目經(jīng)理)考試題庫
- 2025年上海市安全員知識題庫及答案
- 廣州珠江職業(yè)技術(shù)學院《汽車電子控制技術(shù)》2023-2024學年第一學期期末試卷
- 2025年河北建筑安全員《C證》考試題庫
- 2025廣東省安全員C證考試(專職安全員)題庫附答案
- 廣州應用科技學院《中國文化史》2023-2024學年第一學期期末試卷
- 廣州新華學院《光電成像原理與技術(shù)》2023-2024學年第一學期期末試卷
- 2025版工業(yè)制造工程墊資建設(shè)合同2篇
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之4:4組織環(huán)境-4.2理解相關(guān)方的需求和期望(雷澤佳編制-2025B0)
- 2024年一級支行行長競聘演講稿例文(4篇)
- 健身房銷售人員培訓
- 菌種保存管理
- 廣東省廣州市2022-2023學年高二上學期期末考試化學試題
- 期末測試卷(試題)-2024-2025學年四年級上冊數(shù)學滬教版
- 中考必備高頻詞匯2600詞(單詞版)
- GB∕T 27552-2021 金屬材料焊縫破壞性試驗 焊接接頭顯微硬度試驗
- 外貿(mào)中常見付款方式的英文表達及簡要說明
- 抗壓偏壓混凝土柱承載力計算表格
評論
0/150
提交評論