ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:40.71KB ,
资源ID:4471236      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4471236.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MSP430单片机AD转换实验Word格式文档下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

MSP430单片机AD转换实验Word格式文档下载.docx

1、“main.c”主程序与中断程序:/*程序功能:将ADC对P6.0端口电压的转换结果按转换数据和对应的 模拟电压的形式通过串口发送到PC机屏幕上显示-通信格式:N.8.1, 9600测试说明:打开串口调试精灵,正确设置通信格式,观察接收数据*/#include #include allfunc.hUART0_Func.cADC_Func.c#define Num_of_Results 32uint resultsNum_of_Results; /保存ADC转换结果的数组uint average;uchar tcnt = 0;/*主函数*/void main( void ) uchar i; u

2、char buffer5; 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; /关闭数码管显示 Init

3、UART(); Init_ADC(); _EINT(); buffer4 = 0; while(1) LPM1; Hex2Dec(average,buffer); for(i = 0; i = 5; /除以32 index = 0; tcnt+; if(tcnt = 250) /主要是降低串口发送速度 LPM1_EXIT; tcnt = 0;“ADC_Func.c” A/D转换相关程序:typedef unsigned int uint;/*Init_ADC初始化ADCvoid Init_ADC(void) P6SEL |= 0x01; / 使能ADC通道 ADC12CTL0 = ADC12O

4、N+SHT0_15+MSC; / 打开ADC,设置采样时间 ADC12CTL1 = SHP+CONSEQ_2; / 使用采样定时器 ADC12IE = 0x01; / 使能ADC中断 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;

5、ptr2 = (Hex_val - ptr0*1000 - ptr1*100)/10; ptr3 = (Hex_val - ptr0*1000 - ptr1*100 - ptr2*10); Trans_val将16进制ADC转换数据变换成三位10进制 真实的模拟电压数据,并在液晶上显示void Trans_val(uint Hex_Val,uchar *ptr) unsigned long caltmp; uint Curr_Volt; uchar t1; caltmp = Hex_Val; caltmp = (caltmp 5) + Hex_Val; /caltmp = Hex_Val *

6、33 3) + (caltmp 12; /Curr_Volt = caltmp / 2n ptr0 = Curr_Volt / 100; /Hex-Dec变换 t1 = Curr_Volt - (ptr0 * 100); ptr1 = t1 / 10; ptr2 = t1 - (ptr1 * 10);“UART0_Func.c”串口程序:typedef unsigned char uchar;InitUART初始化UART端口void InitUART(void) P3SEL |= 0x30; / P3.4,5 = USART0 TXD/RXD ME1 |= URXE0 + UTXE0; /

7、Enable USART0 T/RXD UCTL0 |= CHAR; / 8-bit character UTCTL0 |= SSEL0; / UCLK = ACLK UBR00 = 0x03; / 32k/9600 - 3.41 UBR10 = 0x00; / UMCTL0 = 0x4A; / Modulation UCTL0 &= SWRST; / Initialize USART state machineSend1Char向PC机发送一个字符sendchar-要发送的字符void Send1Char(uchar sendchar) while (!(IFG1 & UTXIFG0); /

8、等待发送寄存器为空 TXBUF0 = sendchar;PutSting向PC机发送字符串并换行指令ptr-指向发送字符串的指针void PutString(uchar *ptr) while(*ptr != ) Send1Char(*ptr+); / 发送数据 TXBUF0 = n /发送换行指令PutSting0向PC机发送字符串,无换行void PutString0(uchar *ptr)2、程序2:转换结果显示在1602显示模块上“main.c”程序msp430x14x.hcry1602.h/*宏定义*/#define DataDir P2DIR#define DataPort P2O

9、UT #define Busy 0x80#define CtrlDir P6DIR#define CLR_RS P6OUT&=BIT3; /RS = P6.3 #define SET_RS P6OUT|=BIT3;#define CLR_RW P6OUT&=BIT4; /RW = P6.4#define SET_RW P6OUT|=BIT4;#define CLR_EN P6OUT&=BIT5; /EN = P6.5 #define SET_EN P6OUT|=BIT5;DispNchar让液晶从某个位置起连续显示N个字符x-位置的列坐标 y-位置的行坐标 n-字符个数 ptr-指向字符存放位

10、置的指针void DispNChar(uchar x,uchar y, uchar n,uchar *ptr) for (i=0;in;i+) Disp1Char(x+,y,ptri); if (x = 0x0f) x = 0; y = 1; LocateXY向液晶输入显示字符位置的坐标信息void LocateXY(uchar x,uchar y) uchar temp; temp = x&0x0f; y &= 0x01; if(y) temp |= 0x40; /如果在第2行 temp |= 0x80; LcdWriteCommand(temp,1);Disp1Char在某个位置显示一个字

11、符 data-显示的字符数据void Disp1Char(uchar x,uchar y,uchar data) LocateXY( x, y ); LcdWriteData( data ); LcdReset对1602液晶模块进行复位操作void LcdReset(void) CtrlDir |= 0x07; /控制线端口设为输出状态 DataDir = 0xFF; /数据端口设为输出状态 LcdWriteCommand(0x38, 0); /规定的复位操作 Delay5ms(); LcdWriteCommand(0x38, 0); LcdWriteCommand(0x38, 1); /显示

12、模式设置 LcdWriteCommand(0x08, 1); /显示关闭 LcdWriteCommand(0x01, 1); /显示清屏 LcdWriteCommand(0x06, 1); /写字符时整体不移动 LcdWriteCommand(0x0c, 1); /显示开,不开游标,不闪烁LcdWriteCommand向液晶模块写入命令cmd-命令, chk-是否判忙的标志,1:判忙,0:不判void LcdWriteCommand(uchar cmd,uchar chk) if (chk) WaitForEnable(); / 检测忙信号? CLR_RS; CLR_RW; _NOP(); D

13、ataPort = cmd; /将命令字写入数据端口 SET_EN; /产生使能脉冲信号 CLR_EN;LcdWriteData向液晶显示的当前地址写入显示数据data-显示字符数据void LcdWriteData( uchar data ) WaitForEnable(); /等待液晶不忙 SET_RS; DataPort = data; /将显示数据写入数据端口WaitForEnable等待1602液晶完成内部操作void WaitForEnable(void) P2DIR &= 0x00; /将P4口切换为输入状态 SET_RW; while(P2IN & Busy)!=0); /检测忙标志 P2DIR |= 0xFF; /将P4口切换为输出状态Delay5ms延时约5msvoid Delay5ms(void) uint i=40000; while (i != 0) i-;Delay400ms延时约400msvoid Delay400ms(void) uchar i=50; uint j; while(i-) j=7269; while(j-);“cry1602.c”程序 temp |= 0x8

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2