为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

MSP430单片机AD转换实验

2021-03-25 15页 doc 94KB 4阅读

用户头像 机构认证

夕夕资料

拥有专业强大的教研实力和完善的师资团队,专注为用户提供合同简历、论文写作、PPT设计、计划书、策划案、各类模板等,同时素材和资料部分来自网络,仅供参考.

举报
MSP430单片机AD转换实验A/D转换实验一、转换原理MSP430F149的A/D转换器原理请参考相关书籍。实验板上与AD相关的硬件电路:编程工作实际就是对以下寄存器的操作:寄存器类型寄存器缩写寄存器的含义转换控制寄存器ADC12CTL0转换控制寄存器0ADC12CTL1转换控制寄存器1中断控制寄存器ADC12IFG中断标志寄存器ADC12IE中断使能寄存器ADC12IV中断向量寄存器存储及其控制寄存器ADC12MCTL0~ADC12MCTL15存储控制寄存器0~15ADC12MEM0~ADC12MEM15存储寄存器0~15设计主程序和中断服务程序。二、...
MSP430单片机AD转换实验
A/D转换实验一、转换原理MSP430F149的A/D转换器原理请参考相关籍。实验板上与AD相关的硬件电路:编程工作实际就是对以下寄存器的操作:寄存器类型寄存器缩写寄存器的含义转换控制寄存器ADC12CTL0转换控制寄存器0ADC12CTL1转换控制寄存器1中断控制寄存器ADC12IFG中断标志寄存器ADC12IE中断使能寄存器ADC12IV中断向量寄存器存储及其控制寄存器ADC12MCTL0~ADC12MCTL15存储控制寄存器0~15ADC12MEM0~ADC12MEM15存储寄存器0~15设计主程序和中断服务程序。二、转换程序1、程序1:转换结果发送到PC主程序中进行A/D初始化,中断服务程序读A/D转换结果,主程序中通过串口发送结果。“main.c”主程序与中断程序:/*********************************************************程序功能:将ADC对P6.0端口电压的转换结果按转换数据和对应的模拟电压的形式通过串口发送到PC机屏幕上显示-----------------------------------------------------------通信:N.8.1,9600-----------------------------------------------------------测试说明:打开串口调试精灵,正确设置通信格式,观察接收数据**********************************************************/#include#include"allfunc.h"#include"UART0_Func.c"#include"ADC_Func.c"#defineNum_of_Results32uintresults[Num_of_Results];//保存ADC转换结果的数组uintaverage;uchartcnt=0;/***********************主函数***********************/voidmain(void){uchari;ucharbuffer[5];WDTCTL=WDTPW+WDTHOLD;//关狗/*下面六行程序关闭所有的IO口*/P1DIR=0XFF;P1OUT=0XFF;P2DIR=0XFF;P2OUT=0XFF;P3DIR=0XFF;P3OUT=0XFF;P4DIR=0XFF;P4OUT=0XFF;P5DIR=0XFF;P5OUT=0XFF;P6DIR=0XFF;P6OUT=0XFF;P6DIR|=BIT2;P6OUT|=BIT2;//关闭电平转换P6DIR|=BIT6;P6OUT&=~BIT6;//关闭数码管显示InitUART();Init_ADC();_EINT();buffer[4]='\0';while(1){LPM1;Hex2Dec(average,buffer);for(i=0;i<4;i++)buffer[i]+=0x30;PutString0("Thedigitalvalueis:");PutString(buffer);Trans_val(average,buffer);buffer[3]=buffer[2];buffer[2]=buffer[1];buffer[1]=0x2e-0x30;for(i=0;i<4;i++)buffer[i]+=0x30;PutString0("Theanalogvalueis:");PutString(buffer);}}/*******************************************函数名称:ADC12ISR功能:ADC中断服务函数,在这里用多次平均的计算P6.0口的模拟电压数值参数:无返回值:无********************************************/#pragmavector=ADC_VECTOR__interruptvoidADC12ISR(void){staticucharindex=0;results[index++]=ADC12MEM0;//Moveresultsif(index==Num_of_Results){uchari;average=0;for(i=0;i>=5;//除以32index=0;tcnt++;if(tcnt==250)//主要是降低串口发送速度{LPM1_EXIT;tcnt=0;}}}“ADC_Func.c”A/D转换相关程序:#includetypedefunsignedintuint;/********************************************函数名称:Init_ADC功能:初始化ADC参数:无返回值:无********************************************/voidInit_ADC(void){P6SEL|=0x01;//使能ADC通道ADC12CTL0=ADC12ON+SHT0_15+MSC;//打开ADC,设置采样时间ADC12CTL1=SHP+CONSEQ_2;//使用采样定时器ADC12IE=0x01;//使能ADC中断ADC12CTL0|=ENC;//使能转换ADC12CTL0|=ADC12SC;//开始转换}/********************************************函数名称:Hex2Dec功能:将16进制ADC转换数据变换成十进制表示形式参数:Hex_Val--16进制数据ptr--指向存放转换结果的指针返回值:无********************************************/voidHex2Dec(uintHex_val,uchar*ptr){ptr[0]=Hex_val/1000;ptr[1]=(Hex_val-ptr[0]*1000)/100;ptr[2]=(Hex_val-ptr[0]*1000-ptr[1]*100)/10;ptr[3]=(Hex_val-ptr[0]*1000-ptr[1]*100-ptr[2]*10);}/*******************************************函数名称:Trans_val功能:将16进制ADC转换数据变换成三位10进制真实的模拟电压数据,并在液晶上显示参数:Hex_Val--16进制数据返回值:无********************************************/voidTrans_val(uintHex_Val,uchar*ptr){unsignedlongcaltmp;uintCurr_Volt;uchart1;caltmp=Hex_Val;caltmp=(caltmp<<5)+Hex_Val;//caltmp=Hex_Val*33caltmp=(caltmp<<3)+(caltmp<<1);//caltmp=caltmp*10Curr_Volt=caltmp>>12;//Curr_Volt=caltmp/2^nptr[0]=Curr_Volt/100;//Hex->Dec变换t1=Curr_Volt-(ptr[0]*100);ptr[1]=t1/10;ptr[2]=t1-(ptr[1]*10);}“UART0_Func.c”串口程序:#includetypedefunsignedcharuchar;/*******************************************函数名称:InitUART功能:初始化UART端口参数:无返回值:无********************************************/voidInitUART(void){P3SEL|=0x30;//P3.4,5=USART0TXD/RXDME1|=URXE0+UTXE0;//EnableUSART0T/RXDUCTL0|=CHAR;//8-bitcharacterUTCTL0|=SSEL0;//UCLK=ACLKUBR00=0x03;//32k/9600-3.41UBR10=0x00;//UMCTL0=0x4A;//ModulationUCTL0&=~SWRST;//InitializeUSARTstatemachine}/*******************************************函数名称:Send1Char功能:向PC机发送一个字符参数:sendchar--要发送的字符返回值:无********************************************/voidSend1Char(ucharsendchar){while(!(IFG1&UTXIFG0));//等待发送寄存器为空TXBUF0=sendchar;}/*******************************************函数名称:PutSting功能:向PC机发送字符串并换行指令参数:ptr--指向发送字符串的指针返回值:无********************************************/voidPutString(uchar*ptr){while(*ptr!='\0'){Send1Char(*ptr++);//发送数据}while(!(IFG1&UTXIFG0));TXBUF0='\n';//发送换行指令}/*******************************************函数名称:PutSting0功能:向PC机发送字符串,无换行参数:ptr--指向发送字符串的指针返回值:无********************************************/voidPutString0(uchar*ptr){while(*ptr!='\0'){Send1Char(*ptr++);//发送数据}}2、程序2:转换结果显示在1602显示模块上“main.c”程序#include#include"cry1602.h"typedefunsignedcharuchar;typedefunsignedintuint;/**************宏定义***************/#defineDataDirP2DIR#defineDataPortP2OUT#defineBusy0x80#defineCtrlDirP6DIR#defineCLR_RSP6OUT&=~BIT3;//RS=P6.3#defineSET_RSP6OUT|=BIT3;#defineCLR_RWP6OUT&=~BIT4;//RW=P6.4#defineSET_RWP6OUT|=BIT4;#defineCLR_ENP6OUT&=~BIT5;//EN=P6.5#defineSET_ENP6OUT|=BIT5;/*******************************************函数名称:DispNchar功能:让液晶从某个位置起连续显示N个字符参数:x--位置的列坐标y--位置的行坐标n--字符个数ptr--指向字符存放位置的指针返回值:无********************************************/voidDispNChar(ucharx,uchary,ucharn,uchar*ptr){uchari;for(i=0;i#include"cry1602.h"typedefunsignedcharuchar;typedefunsignedintuint;/**************宏定义***************/#defineDataDirP2DIR#defineDataPortP2OUT#defineBusy0x80#defineCtrlDirP6DIR#defineCLR_RSP6OUT&=~BIT3;//RS=P6.3#defineSET_RSP6OUT|=BIT3;#defineCLR_RWP6OUT&=~BIT4;//RW=P6.4#defineSET_RWP6OUT|=BIT4;#defineCLR_ENP6OUT&=~BIT5;//EN=P6.5#defineSET_ENP6OUT|=BIT5;/*******************************************函数名称:DispNchar功能:让液晶从某个位置起连续显示N个字符参数:x--位置的列坐标y--位置的行坐标n--字符个数ptr--指向字符存放位置的指针返回值:无********************************************/voidDispNChar(ucharx,uchary,ucharn,uchar*ptr){uchari;for(i=0;i
/
本文档为【MSP430单片机AD转换实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索