


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、AD轉換實驗一、轉換原理MSP430F149勺A/D轉換器原理請參考相關書籍。 實驗板上與AD相關的硬件電路:RV310K33J6P61S:ICAl)輸入電路RV4III-10Kf|1 1|3EF1P50編程工作實際就是對以下寄存器的操作:寄存器類型寄存器縮寫寄存器的含義轉換控制奇存器ADC12CTL0轉換控制寄存器0ADC12CTL1轉換控制寄存器1中斷 控制 寄存器ADC12IFG中斷標志奇存器ADC12IE中斷使能寄存器ADC12IV中斷向量寄存器存儲及其 控制寄存器ADC12MCTL ADC12MCTL存儲控制寄存器015ADC12MEM0 -ADC12MEM15存儲寄存器015設計主
2、程序和中斷服務程序。二、轉換程序1、程序1:轉換結果發(fā)送到 PC主程序中進行 A/D初始化,中斷服務程序讀A/D轉換結果,主程序中通過串口發(fā)送結果。“main.c ”主程序與中斷程序:/*程序功能:將ADC對P6.0端口電壓的轉換結果按轉換數據和對應的 模擬電壓的形式通過串口發(fā)送到PC機屏幕上顯示通信格式:N.8.1, 9600測試說明:打開串口調試精靈,正確設置通信格式,觀察接收數據*/#i nclude #include allfunc.h#i nclude UARTO_Fu nc.c#in clude ADC_Fu nc.c#defi ne Num_of_Results 32uint r
3、esultsNum_of_Results; /保存 ADC轉換結果的數組uint average;uchar tent = 0;主函數 */*void mai n( void )uchar i;uchar buffer5;WDTCTL = WDTPW + WDTHOLD; / 關狗/*下面六行程序關閉所有的10 口 */P1DIR =0XFF;P1OUT =0XFF;P2DIR =0XFF;P2OUT =0XFF;P3DIR =0XFF;P3OUT =0XFF;P4DIR =0XFF;P4OUT =0XFF;P5DIR =0XFF;P5OUT =0XFF;P6DIR =0XFF;P6OUT =
4、0XFF;關閉電平轉換關閉數碼管顯示P6DIR |= BIT2;P6OUT |= BIT2; /P6DIR|=BIT6;P6OUT&=BIT6;/Ini tUART();Ini t_ADC(); _EINT();buffer4 = 0;while(1)LPM1;Hex2Dec(average,buffer);for(i = 0; i 4; i+) bufferi += 0x30;PutStri ngO(The digital value is:);PutStri ng(buffer);Tran s_val(average,buffer); buffer3 = buffer2; buffer2
5、= buffer1;buffer1 = 0x2e - 0x30;for(i = 0; i 4; i+) bufferi += 0x30;PutStri ng0(The an alog value is:);PutStri ng(buffer);/*函數名稱:ADC12ISR功能: ADC中斷服務函數,在這里用多次平均的計算P6.0 口的模擬電壓數值參數:無返回值:無*/#pragma vector=ADC_VECTOR_in terrupt void ADC12ISR (void)/ Move resultsstatic uchar in dex = 0;results ndex+ = ADC
6、12MEM0; if(in dex = Num_of_Results) uchar i;average = 0;for(i = 0; i = 5;/除以32in dex = 0;ten t+;if(tc nt = 250)/主要是降低串口發(fā)送速度LPM1_EXIT;tent = 0;“ADC_Func.c” A/D轉換相關程序:#in elude typedef un sig ned int uint;/*函數名稱:Ini t_ADC功能:初始化ADC參數:無返回值:無*void In it_ADC(void)使能ADC通道打開ADC設置采樣時間 使用采樣定時器使能ADC中斷使能轉換開始轉換P
7、6SEL |= 0x01;/ADC12CTL0 = ADC12ON+SHT0_15+MSC; /ADC12CTL1 = SHP+CONSEQ_2;/ADC12IE = 0x01;/ADC12CTL0 |= ENC;/ADC12CTL0 |= ADC12SC;/*函數名稱:Hex2Dec功能:將16進制ADC轉換數據變換成十進制表示形式參數:Hex_Val-16進制數據ptr-指向存放轉換結果的指針返回值:無*/void Hex2Dec( uint Hex_val,uchar *ptr)ptr0 = Hex_val / 1000;ptr1 = (Hex_val - ptr0*1000)/100;
8、ptr2 = (Hex_val - ptr0*1000 - ptr1*100)/10;ptr3 = (Hex_val - ptr0*1000 - ptr1*100 - ptr2*10);/*函數名稱:Tran s_val功能:將16進制ADC轉換數據變換成三位10進制真實的模擬電壓數據,并在液晶上顯示參數:Hex_Val-16 進制數據返回值:無*/void Tran s_val(u int Hex_Val,uchar *ptr)un sig ned long caltmp;ui nt Curr_Volt;uchar t1;caltmp = Hex_Val;caltmp = (caltmp 5
9、) + Hex_Val; /caltmp = Hex_Val * 33caltmp = (caltmp 3) + (caltmp 12;Curr_Volt = caltmp / 25變換ptr0 = Curr_Volt / 100;Hex-Dect1 = Curr_Volt - (ptr0 * 100);ptr1 = t1 / 10;ptr2 = t1 - (ptr1 * 10);“ UART0_Fu nc.c” 串口程序:#i nclude typedef un sig ned char uchar;/*函數名稱:In itUART功能:初始化UART端 口參數:無返回值:無* void I
10、n itUART(void)/ P3.4,5 = USART0 TXD/RXD/ En able USART0 T/RXD/ 8-bit character/ UCLK = ACLK/ 32k/9600 - 3.41/P3SEL |= 0x30;ME1 |= URXE0 + UTXE0;UCTL0 |= CHAR;UTCTL0 |= SSEL0;UBR00 = 0x03;UBR10 = 0x00;UCTLO &= SWRST;/Initialize USART state machine/*函數名稱:Sen d1Char功能:向PC機發(fā)送一個字符參數:sendchar-要發(fā)送的字符返回值:無*
11、 Jvoid Sen d1Char(uchar sen dchar)while (!(IFG1 & UTXIFGO); /TXBUF0 = sen dchar;等待發(fā)送寄存器為空/*函數名稱:PutSt ing功能:向PC機發(fā)送字符串并換行指令參數:ptr-指向發(fā)送字符串的指針返回值:無*/void PutStri ng(uchar *ptr)while(*ptr != 0)Sen d1Char(*ptr+);/while (!(IFG1 & UTXIFGO);TXBUF0 = n;/*函數名稱:PutSti ngO功能:向PC機發(fā)送字符串,無換行參數:ptr-指向發(fā)送字符串的指針返回值:無*
12、/void PutStri ng0(uchar *ptr)while(*ptr != 0)Sen d1Char(*ptr+);/發(fā)送數據發(fā)送換行指令發(fā)送數據2、程序2:轉換結果顯示在 1602顯示模塊上/*#defi ne DataDir#defi ne DataPort#defi ne Busy#defi ne CtrlDir#defi ne CLR_RS P6OUT&=BIT3;#defi ne SET_RS P6OUT|=BIT3;#defi ne CLR_RW P6OUT&=BIT4;#defi ne SET_RW P6OUT|=BIT4;#defi ne CLR_EN P6OUT&=
13、BIT5; #defi ne SET_EN P6OUT|=BIT5;/*/RS = P6.3RW = P6.4EN = P6.5“ ma in .c ”程序#in clude #in clude cry1602.h typedef un sig ned char uchar; typedef un sig ned int uint;定義 */P2DIRP2OUT0x80P6DIR函數名稱:DispNchar功能:讓液晶從某個位置起連續(xù)顯示參數:x-位置的列坐標y-位置的仃坐標n-字符個數ptr-指向字符存放位置的指N個字符返回值:無*/void DispNChar(uchar x,uchar
14、y, uchar n, uchar *ptr) uchar i;for (i=0;i n ;i+)Disp1Char(x+,y,ptri);if (x = 0x0f)x = 0;y A= 1;LocateXY向液晶輸入顯示字符位置的坐標信息X-位置的列坐標/* 函數名稱: 功 能:參 數:y-位置的行坐標返回值:無*void LocateXY(uchar x,uchar y)uchar temp;temp = x&OxOf;y &= 0x01;如果在第if(y) temp |= 0x40; / temp |= 0x80;LcdWriteComma nd(temp,1);DispIChar在某個
15、位置顯示一個字符位置的列坐標位置的行坐標顯示的字符數據x-/* 函數名稱: 功 能:參 數:y- data-返回值:無*/ void Disp1Char(uchar x,uchar y,uchar data)LocateXY( x, y );LcdWriteData( data );/*函數名稱:LcdReset功 能:對1602液晶模塊進行復位操作參 數:無返回值:無*/void LcdReset(void) CtrlDir |= 0x07;DataDir = 0xFF;/控制線端口設為輸出狀態(tài) 數據端口設為輸出狀態(tài)/規(guī)定的復位操作LcdWriteComma nd(0x38, 0);Dela
16、y5ms();LcdWriteComma nd(0x38, 0);Delay5ms();LcdWriteComma nd(0x38, 0);Delay5ms();LcdWriteComma nd(0x38, 1);LcdWriteComma nd(0x08, 1);LcdWriteComma nd(0x01, 1);LcdWriteComma nd(0x06, 1);LcdWriteComma nd(0x0c, 1);/* 函數名稱:LcdWriteComma nd 功能:向液晶模塊寫入命令參數:cmd-命令,chk-是否判忙的標志,返回值:無/顯示模式設置/顯示關閉/ 顯示清屏/寫字符時整體
17、不移動/顯示開,不開游標,不閃爍1:判忙,0:不判*/void LcdWriteComma nd(uchar cmd,uchar chk)if (chk) WaitForE nable(); /檢測忙信號?CLR_RS;CLR_RW;_NOP();_NOP();SET_EN;_NOP();_NOP(); CLR_EN;/DataPort = cmd;/將命令字寫入數據端口產生使能脈沖信號/*函數名稱:LcdWriteData功能:向液晶顯示的當前地址寫入顯示數據參數:data-顯示字符數據返回值:無*/void LcdWriteData( uchar data )WaitForE nable(
18、);/等待液晶不忙SET_RS;CLR_RW;_NOP();DataPort = data; /將顯示數據寫入數據端口_NOP();SET_EN;/產生使能脈沖信號_NOP();_NOP();CLR_EN;/*函數名稱:WaitForE nable功能:等待1602液晶完成內部操作參 數:無 返回值:無*/void WaitForE nable(void)P2DIR &= 0x00; / 將P4 口切換為輸入狀態(tài)CLR_RS;SET_RW;_NOP();SET_EN;_NOP();_NOP();檢測忙標志while(P2IN & Busy)!=0); /CLR_EN;P2DIR |= 0xFF
19、; /將P4 口切換為輸出狀態(tài) /*函數名稱:Delay5ms功能:延時約5ms參數:無返回值:無*void Delay5ms(void)uint i=40000;while (i != 0)I-;/*函數名稱:Delay400ms功能:延時約400ms參數:無返回值:無*void Delay400ms(void)uchar i=50;uint j;while(i-)j=7269; while(j-);“cry1602.c ”程序#in clude #in clude cry1602.h typedef un sig ned char uchar; typedef un sig ned int
20、 uint;/*定義 */#defi ne DataDirP2DIR#defi ne DataPortP2OUT#defi ne Busy#defi ne CtrlDir0x80P6DIR#defi ne CLR_RS P6OUT&=BIT3;#defi ne SET_RS P6OUT|=BIT3;#defi ne CLR_RW P6OUT&=BIT4;#defi ne SET_RW P6OUT|=BIT4;#defi ne CLR_EN P6OUT&=BIT5; #defi ne SET_EN P6OUT|=BIT5;/*/RS = P6.3RW = P6.4EN = P6.5函數名稱:Di
21、spNchar功 能:讓液晶從某個位置起連續(xù)顯示N個字符參 數:X-位置的列坐標y- 位置的行坐標n-字符個數ptr-指向字符存放位置的指針返回值:無*/void DispNChar(uchar x,uchar y, uchar n, uchar *ptr) uchar i;for (i=0;i n ;i+)Disp1Char(x+,y,ptri);if (x = 0x0f)x = 0;y A= 1;未*函數名稱:LocateXY功能:向液晶輸入顯示字符位置的坐標信息參數:x-位置的列坐標y-位置的仃坐標返回值:無*/void LocateXY(uchar x,uchar y)uchar te
22、mp;temp = x&OxOf;y &= 0x01;if(y) temp |= 0x40; /如果在第 2 行temp |= 0x80;LcdWriteComma nd(temp,1);/* 函數名稱:DispIChar功 能:在某個位置顯示一個字符 參 數:X-位置的列坐標y- 位置的行坐標data-顯示的字符數據返回值:無void Disp1Char(uchar x,uchar y,uchar data) LocateXY( x, y ); LcdWriteData( data );/*函數名稱:LcdReset功能:對1602液晶模塊進行復位操作參數:無返回值:無*Ivoid LcdR
23、eset(void)CtrlDir |= 0x07;/DataDir = 0xFF;/LcdWriteComma nd(0x38, 0);Delay5ms();LcdWriteComma nd(0x38, 0); Delay5ms();LcdWriteComma nd(0x38, 0); Delay5ms();LcdWriteComma nd(0x38, 1);LcdWriteComma nd(0x08, 1);LcdWriteComma nd(0x01, 1);LcdWriteComma nd(0x06, 1);LcdWriteComma nd(0x0c, 1);/* 函數名稱:LcdWriteComma nd 功能:向液晶模塊寫入命令參數:cmd-命令,chk-是否判忙的標志,返回值:無控制線端口設為輸出狀態(tài) 數據端口設為輸出狀態(tài)/ 規(guī)定的復位操作/顯示模式設置/顯示關閉/ 顯示清屏/寫字符時整體不移動/顯示開,不開游標,不閃爍1:判忙,0:不判*/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精準醫(yī)療合作治療項目合同
- 公司與個體房屋出租協議
- 山塘承包合同適用復雜情況
- 車輛礦石運輸合同
- 綠色建筑技術研發(fā)合同
- 新材料生產綠色環(huán)保技術應用推廣合作協議
- Module 3 Journey to space Unit 1 (教學設計)-2023-2024學年外研版英語八年級下冊
- 月子中心房屋振動限制協議
- 13我能行 教學設計 -2023-2024學年道德與法治二年級下冊(統(tǒng)編版)
- 家具廠白蟻防治施工方案
- 初三下學期班主任工作計劃標準版(4篇)
- DL-T5190.1-2022電力建設施工技術規(guī)范第1部分:土建結構工程
- TD/T 1044-2014 生產項目土地復墾驗收規(guī)程(正式版)
- 教育機構傳染病防控應急預案
- 足浴年工作總結及計劃
- 《煤制油技術》課程標準(煤化工技術)
- 高速公路服務區(qū)管理系統(tǒng)搭建
- 2024年中國華能瀾滄江水電股份有限公司招聘筆試參考題庫含答案解析
- 2024年江蘇食品藥品職業(yè)技術學院高職單招(英語/數學/語文)筆試歷年參考題庫含答案解析
- 國內新能源汽車在共享經濟領域的應用與前景
- 大慶油田環(huán)境保護與可持續(xù)發(fā)展
評論
0/150
提交評論