版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、AD轉(zhuǎn)換實(shí)驗(yàn)一、轉(zhuǎn)換原理MSP430F149勺A/D轉(zhuǎn)換器原理請(qǐng)參考相關(guān)書籍。 實(shí)驗(yàn)板上與AD相關(guān)的硬件電路:RV310K33J6P61S:ICAl)輸入電路RV4III-10Kf>|1 1|3EF1P50編程工作實(shí)際就是對(duì)以下寄存器的操作:寄存器類型寄存器縮寫寄存器的含義轉(zhuǎn)換控制奇存器ADC12CTL0轉(zhuǎn)換控制寄存器0ADC12CTL1轉(zhuǎn)換控制寄存器1中斷 控制 寄存器ADC12IFG中斷標(biāo)志奇存器ADC12IE中斷使能寄存器ADC12IV中斷向量寄存器存儲(chǔ)及其 控制寄存器ADC12MCTL ADC12MCTL存儲(chǔ)控制寄存器015ADC12MEM0 -ADC12MEM15存儲(chǔ)寄存器01
2、5設(shè)計(jì)主程序和中斷服務(wù)程序。二、轉(zhuǎn)換程序1、程序1:轉(zhuǎn)換結(jié)果發(fā)送到 PC主程序中進(jìn)行 A/D初始化,中斷服務(wù)程序讀A/D轉(zhuǎn)換結(jié)果,主程序過(guò)串口發(fā)送結(jié)果。“main.c ”主程序與中斷程序:/*程序功能:將ADC對(duì)P6.0端口電壓的轉(zhuǎn)換結(jié)果按轉(zhuǎn)換數(shù)據(jù)和對(duì)應(yīng)的 模擬電壓的形式通過(guò)串口發(fā)送到PC機(jī)屏幕上顯示通信格式:9600測(cè)試說(shuō)明:打開串口調(diào)試精靈,正確設(shè)置通信格式,觀察接收數(shù)據(jù)*/#i nclude <msp430.h>#include "allfunc.h"#i nclude "UARTO_Fu nc.c"#in clude "AD
3、C_Fu nc.c"#defi ne Num_of_Results 32uint resultsNum_of_Results; /保存 ADC轉(zhuǎn)換結(jié)果的數(shù)組uint average;uchar tent = 0;主函數(shù) */*void mai n( void )uchar i;uchar buffer5;WDTCTL = WDTPW + WDTHOLD; / 關(guān)狗/*下面六行程序關(guān)閉所有的10 口 */P1DIR =0XFF;P1OUT =0XFF;P2DIR =0XFF;P2OUT =0XFF;P3DIR =0XFF;P3OUT =0XFF;P4DIR =0XFF;P4OUT =0
4、XFF;P5DIR =0XFF;P5OUT =0XFF;P6DIR =0XFF;P6OUT =0XFF;關(guān)閉電平轉(zhuǎn)換關(guān)閉數(shù)碼管顯示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:"
5、;);PutStri ng(buffer);Tran s_val(average,buffer); buffer3 = buffer2; buffer2 = buffer1;buffer1 = 0x2e - 0x30;for(i = 0; i < 4; i+) bufferi += 0x30;PutStri ng0("The an alog value is:");PutStri ng(buffer);/*函數(shù)名稱:ADC12ISR功能: ADC中斷服務(wù)函數(shù),在這里用多次平均的計(jì)算P6.0 口的模擬電壓數(shù)值參數(shù):無(wú)返回值:無(wú)*/#pragma vector=ADC_V
6、ECTOR_in terrupt void ADC12ISR (void)/ Move resultsstatic uchar in dex = 0;results" ndex+ = ADC12MEM0; if(in dex = Num_of_Results) uchar i;average = 0;for(i = 0; i < Num_of_Results; i+) average += resultsi;average >>= 5;/除以32in dex = 0;ten t+;if(tc nt = 250)/主要是降低串口發(fā)送速度LPM1_EXIT;tent =
7、 0;“ADC_Func.c” A/D轉(zhuǎn)換相關(guān)程序:#in elude <msp430.h> typedef un sig ned int uint;/*函數(shù)名稱:Ini t_ADC功能:初始化ADC參數(shù):無(wú)返回值:無(wú)*void In it_ADC(void)使能ADC通道打開ADC設(shè)置采樣時(shí)間 使用采樣定時(shí)器使能ADC中斷使能轉(zhuǎn)換開始轉(zhuǎn)換P6SEL |= 0x01;/ADC12CTL0 = ADC12ON+SHT0_15+MSC; /ADC12CTL1 = SHP+CONSEQ_2;/ADC12IE = 0x01;/ADC12CTL0 |= ENC;/ADC12CTL0 |= A
8、DC12SC;/*函數(shù)名稱:Hex2Dec功能:將16進(jìn)制ADC轉(zhuǎn)換數(shù)據(jù)變換成十進(jìn)制表示形式參數(shù):Hex_Val-16進(jìn)制數(shù)據(jù)ptr-指向存放轉(zhuǎn)換結(jié)果的指針返回值:無(wú)*/void Hex2Dec( uint Hex_val,uchar *ptr)ptr0 = Hex_val / 1000;ptr1 = (Hex_val - ptr0*1000)/100;ptr2 = (Hex_val - ptr0*1000 - ptr1*100)/10;ptr3 = (Hex_val - ptr0*1000 - ptr1*100 - ptr2*10);/*函數(shù)名稱:Tran s_val功能:將16進(jìn)制ADC轉(zhuǎn)
9、換數(shù)據(jù)變換成三位10進(jìn)制真實(shí)的模擬電壓數(shù)據(jù),并在液晶上顯示參數(shù):Hex_Val-16 進(jìn)制數(shù)據(jù)返回值:無(wú)*/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) + Hex_Val; /caltmp = Hex_Val * 33caltmp = (caltmp << 3) + (caltmp << 1); /caltmp = caltmp * 10Curr_
10、Volt = 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 <msp430.h> typedef un sig ned char uchar;/*函數(shù)名稱:In itUART功能:初始化UART端 口參數(shù):無(wú)返回值:無(wú)* void In itUART(void)/ P3.4,
11、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/*函數(shù)名稱:Sen d1Char功能:向PC機(jī)發(fā)送一個(gè)字符參數(shù):sendchar-要發(fā)送的字符返回值:無(wú)* Jvoid Sen d1Char
12、(uchar sen dchar)while (!(IFG1 & UTXIFGO); /TXBUF0 = sen dchar;等待發(fā)送寄存器為空/*函數(shù)名稱:PutSt ing功能:向PC機(jī)發(fā)送字符串并換行指令參數(shù):ptr-指向發(fā)送字符串的指針返回值:無(wú)*/void PutStri ng(uchar *ptr)while(*ptr != '0')Sen d1Char(*ptr+);/while (!(IFG1 & UTXIFGO);TXBUF0 = 'n'/*函數(shù)名稱:PutSti ngO功能:向PC機(jī)發(fā)送字符串,無(wú)換行參數(shù):ptr-指向發(fā)送字符
13、串的指針返回值:無(wú)*/void PutStri ng0(uchar *ptr)while(*ptr != '0')Sen d1Char(*ptr+);/發(fā)送數(shù)據(jù)發(fā)送換行指令發(fā)送數(shù)據(jù)2、程序2:轉(zhuǎn)換結(jié)果顯示在 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|=
14、BIT4;#defi ne CLR_EN P6OUT&=BIT5; #defi ne SET_EN P6OUT|=BIT5;/*/RS = P6.3RW = P6.4EN = P6.5“ ma in .c ”程序#in clude <msp430x14x.h>#in clude "cry1602.h" typedef un sig ned char uchar; typedef un sig ned int uint;定義 */P2DIRP2OUT0x80P6DIR函數(shù)名稱:DispNchar功能:讓液晶從某個(gè)位置起連續(xù)顯示參數(shù):x-位置的列坐標(biāo)y-位置
15、的仃坐標(biāo)n-字符個(gè)數(shù)ptr-指向字符存放位置的指N個(gè)字符返回值:無(wú)*/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向液晶輸入顯示字符位置的坐標(biāo)信息X-位置的列坐標(biāo)/* 函數(shù)名稱: 功 能:參 數(shù):y-位置的行坐標(biāo)返回值:無(wú)*void LocateXY(uchar x,uchar y)uchar temp;temp = x&OxOf;y &= 0x01;
16、if(y) temp |= 0x40; /如果在第 2 行temp |= 0x80;LcdWriteComma nd(temp,1);/*函數(shù)名稱:Disp1Char功 能:在某個(gè)位置顯示一個(gè)字符參 數(shù):X-位置的列坐標(biāo) y- 位置的行坐標(biāo) data-顯示的字符數(shù)據(jù)返回值:無(wú)*/void Disp1Char(uchar x,uchar y,uchar data) LocateXY( x, y ); LcdWriteData( data );/*函數(shù)名稱:LcdReset功能:對(duì)1602液晶模塊進(jìn)行復(fù)位操作參數(shù):無(wú)返回值:無(wú)*/void LcdReset(void)控制線端口設(shè)為輸出狀態(tài) 數(shù)據(jù)端
17、口設(shè)為輸出狀態(tài)規(guī)定的復(fù)位操作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);/* 函數(shù)名稱:Lcd
18、WriteComma nd 功能:向液晶模塊寫入命令參數(shù):cmd-命令,chk-是否判忙的標(biāo)志,返回值:無(wú)/顯示模式設(shè)置/顯示關(guān)閉/ 顯示清屏/寫字符時(shí)整體不移動(dòng)/顯示開,不開游標(biāo),不閃爍1:判忙,0:不判*/void LcdWriteComma nd(uchar cmd,uchar chk)if (chk) WaitForE nable(); /檢測(cè)忙信號(hào)?CLR_RS;CLR_RW;_NOP();_NOP();SET_EN;_NOP();_NOP(); CLR_EN;/DataPort = cmd;/將命令字寫入數(shù)據(jù)端口產(chǎn)生使能脈沖信號(hào)/*函數(shù)名稱:LcdWriteData功能:向液晶顯示
19、的當(dāng)前地址寫入顯示數(shù)據(jù)參數(shù):data-顯示字符數(shù)據(jù)返回值:無(wú)*/void LcdWriteData( uchar data )WaitForE nable();/等待液晶不忙SET_RS;CLR_RW;_NOP();DataPort = data; /將顯示數(shù)據(jù)寫入數(shù)據(jù)端口_NOP();SET_EN;/產(chǎn)生使能脈沖信號(hào)_NOP();_NOP();CLR_EN;/*函數(shù)名稱:WaitForE nable功能:等待1602液晶完成部操作參 數(shù):無(wú) 返回值:無(wú)*/void WaitForE nable(void)P2DIR &= 0x00; / 將P4 口切換為輸入狀態(tài)CLR_RS;SET_
20、RW;_NOP();SET_EN;_NOP();_NOP();檢測(cè)忙標(biāo)志while(P2IN & Busy)!=0); /CLR_EN;P2DIR |= 0xFF; /將P4 口切換為輸出狀態(tài) /*函數(shù)名稱:Delay5ms功能:延時(shí)約5ms參數(shù):無(wú)返回值:無(wú)*void Delay5ms(void)uint i=40000;while (i != 0)I-;/*函數(shù)名稱:Delay400ms功能:延時(shí)約400ms參數(shù):無(wú)返回值:無(wú)*void Delay400ms(void)uchar i=50;uint j;while(i-)j=7269; while(j-);“ cry1602 .c
21、 ”程序#in clude <msp430x14x.h>#in clude "cry1602.h" typedef un sig ned char uchar; typedef un sig ned int 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&=
22、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函數(shù)名稱:DispNchar功 能:讓液晶從某個(gè)位置起連續(xù)顯示N個(gè)字符參 數(shù):X-位置的列坐標(biāo)y- 位置的行坐標(biāo)n-字符個(gè)數(shù)ptr-指向字符存放位置的指針返回值:無(wú)*/void DispNChar(uchar x,uchar y, uchar n, uchar *ptr) uchar i;for (i=0;i <n ;i+)Disp1Char(
23、x+,y,ptri);if (x = 0x0f)x = 0;y A= 1;未*函數(shù)名稱:LocateXY功能:向液晶輸入顯示字符位置的坐標(biāo)信息參數(shù):x-位置的列坐標(biāo)y-位置的仃坐標(biāo)返回值:無(wú)*/void LocateXY(uchar x,uchar y)uchar temp;temp = x&OxOf;y &= 0x01;if(y) temp |= 0x40; /如果在第 2 行temp |= 0x80;LcdWriteComma nd(temp,1);/* 函數(shù)名稱:DispIChar功 能:在某個(gè)位置顯示一個(gè)字符 參 數(shù):X-位置的列坐標(biāo)y- 位置的行坐標(biāo)data-顯示的字
24、符數(shù)據(jù)返回值:無(wú)void Disp1Char(uchar x,uchar y,uchar data) LocateXY( x, y ); LcdWriteData( data );/*函數(shù)名稱:LcdReset功能:對(duì)1602液晶模塊進(jìn)行復(fù)位操作參數(shù):無(wú)返回值:無(wú)*Ivoid LcdReset(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);/* 函數(shù)名稱:LcdWriteComma nd 功能:向液晶模塊寫入命令參數(shù):cmd-命令,chk-是否判忙的標(biāo)志,返回值:無(wú)控制線端口設(shè)為輸出狀態(tài) 數(shù)據(jù)端口設(shè)為輸出狀態(tài)/ 規(guī)定的復(fù)位操作/顯示模式設(shè)置/顯示關(guān)閉/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《計(jì)算機(jī)公共基礎(chǔ)》課件
- 2025年度南京辦公室裝修項(xiàng)目造價(jià)咨詢合同3篇
- 2025年度燃?xì)庑袠I(yè)員工離職經(jīng)濟(jì)補(bǔ)償及爭(zhēng)議處理合同-@-1
- 課題申報(bào)參考:逆向跨國(guó)并購(gòu)后企業(yè)內(nèi)部控制合規(guī)管理模式構(gòu)建研究
- 二零二五年度國(guó)際能源資源合作合同4篇
- 課題申報(bào)參考:面向社交網(wǎng)絡(luò)大數(shù)據(jù)的沂蒙精神傳播態(tài)勢(shì)及優(yōu)化路徑研究
- 2025版精密機(jī)床購(gòu)置及售后服務(wù)合同2篇
- 二零二五年度醫(yī)療健康商標(biāo)轉(zhuǎn)讓與知識(shí)產(chǎn)權(quán)合同
- 2025年度個(gè)人與公司間技術(shù)秘密保護(hù)協(xié)議
- 2025版內(nèi)衣品牌跨界合作營(yíng)銷合同4篇
- 如何提高售后服務(wù)的快速響應(yīng)能力
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問題“拓展型”專項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語(yǔ)五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 員工工資條模板
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
- 華為攜手深圳國(guó)際會(huì)展中心創(chuàng)建世界一流展館
評(píng)論
0/150
提交評(píng)論