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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(msp430 ADC多通道采集以及12864液晶显示以及串口发送.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

msp430 ADC多通道采集以及12864液晶显示以及串口发送.docx

1、msp430 ADC多通道采集以及12864液晶显示以及串口发送/ADC.H#ifndef _ADC_H#define _ADC_H#include #define uchar unsigned char#define uint unsigned intextern void Trans_val(uchar x,uchar y,uint Hex_Val); extern void ADC_Init();#endif/ADC.C#include #include USART0.h#includeADC.h#include lcd12864.h#define Num_of_Results 128s

2、tatic uint results0Num_of_Results; /保存ADC转换结果的数组static uint results1Num_of_Results; /保存ADC转换结果的数组 static uint results2Num_of_Results; /保存ADC转换结果的数组 static uint results3Num_of_Results; /保存ADC转换结果的数组 /ADC初始化void ADC_Init() P6SEL = 0x0F; / Enable A/D channel inputs ADC12CTL0 = ADC12ON+MSC+SHT0_2; / Tur

3、n on ADC12, set sampling time ADC12CTL1 = SHP+CONSEQ_1; / Use sampling timer, single sequence ADC12MCTL0 = INCH_0; / ref+=AVcc, channel = A0 ADC12MCTL1 = INCH_1; / ref+=AVcc, channel = A1 ADC12MCTL2 = INCH_2; / ref+=AVcc, channel = A2 ADC12MCTL3 = INCH_3+EOS; / ref+=AVcc, channel = A3, end seq. ADC1

4、2IE = 0x08; / Enable ADC12IFG.3 ADC12CTL0 |= ENC; / Enable conversions /*函数名称:Trans_val功 能:将16进制ADC转换数据变换成三位10进制 真实的模拟电压数据,并在液晶上显示参 数:Hex_Val-16进制数据 n-变换时的分母等于2的n次方 返回值 :无*/void Trans_val(uchar x,uchar y,uint Hex_Val) unsigned long caltmp; uint Curr_Volt; caltmp = Hex_Val; caltmp = (caltmp 5) + Hex_

5、Val; /caltmp = Hex_Val * 33 caltmp = (caltmp 3) + (caltmp 12; /Curr_Volt = caltmp / 2n Display_Value(x,y,Curr_Volt);/*函数名称:ADC12ISR功 能:ADC中断服务函数,在这里用多次平均的 计算P6.0口的模拟电压数值参 数:无 返回值 :无*/#pragma vector=ADC_VECTOR_interrupt void ADC12ISR (void) static uint index = 0; results0index+ = ADC12MEM0; / Move re

6、sults results1index+ = ADC12MEM1; / Move results results2index+ = ADC12MEM2; / Move results results3index+ = ADC12MEM3; / Move results if(index = Num_of_Results) uchar i; unsigned long sum0=0,sum1=0,sum2=0,sum3=0; index = 0; for(i = 0; i = 5; /除以32 sum1 = 5; /除以32 sum2 = 5; /除以32 sum3 = 5; /除以32 Dis

7、play_Num(3,1,sum0); Display_Num(3,2,sum1); Display_Num(3,3,sum2); Display_Num(3,4,sum3); Trans_val(5,1,sum0); Trans_val(5,2,sum1); Trans_val(5,3,sum2); Trans_val(5,4,sum3); _BIC_SR_IRQ(LPM0_bits); / Clear LPM0, SET BREAKPOINT HERE /USART.C#include USART0.h/以下是串口0的初始化设置void Usart0_Init() P3SEL |= 0x3

8、0; / P3.4,5选择为UART收发端口 ME1 |= UTXE0 + URXE0; / 使能USART0收发 UCTL0 |= CHAR; / 8-bit character UTCTL0 |= SSEL0; / UCLK = ACLK UBR00 = 0x0D; / 32k/2400 - 13.65 UBR10 = 0x00; / UMCTL0 = 0x6B; / Modulation UCTL0 &= SWRST; / 初始化UART0状态机 IE1 |= URXIE0; / 使能接收中断 /此函数用来发送一个char型void SentData(uchar num) while (

9、!(IFG1 & UTXIFG0); TXBUF0 = num; /此函数用来把14位十进制数据转化为ASCII编码的形式发送给上位机void Sent_Num(uint num) uchar ge,shi,bai,qian; qian = num/1000; bai = num/100 %10; shi = num/10%10; ge = num%10; SentData(qian+0x30); SentData(bai+0x30); SentData(shi+0x30); SentData(ge+0x30); / SentData(n); /*函数名称:PutSting功 能:向PC机发送

10、字符串参 数:无返回值 :无*/void PutString(uchar *ptr) while(*ptr != 0) while (!(IFG1 & UTXIFG0); / TX缓存空闲? TXBUF0 = *ptr+; / 发送数据 while (!(IFG1 & UTXIFG0); TXBUF0 = n;/*函数名称:Delays功 能:延时一会参 数:无返回值 :无*/void Delays(void) uchar i=20; uint j; while(i-) j=2000; while(j-); /串口中断响应函数#pragma vector=UART0RX_VECTOR_inte

11、rrupt void usart0_rx (void) if(49=RXBUF0) _BIC_SR_IRQ(LPM0_bits); / Clear LPM0, SET BREAKPOINT HERE if(50=RXBUF0) ADC12IE = 0x00; / 关闭ADC /USART.H#ifndef _USART0_H#define _USART0_H#include #define uchar unsigned char#define uint unsigned intextern void Usart0_Init();extern void SentData(uchar num);e

12、xtern void PutString(uchar *ptr);extern void Delays(void);extern void Sent_Num(uint num);#endif/LCD12864.H#ifndef _LCD12864_H#define _LCD12864_H#include #define CPU_F (double)8000000) #define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) #define delay_ms(x) _delay_cycles(long)(CPU_F*(do

13、uble)x/1000.0) #define uchar unsigned char#define uint unsigned int#define ulong unsigned long/*12864应用指令*/#define CLEAR_SCREEN 0x01 /清屏指令:清屏且AC值为00H#define AC_INIT 0x02 /将AC设置为00H。且游标移到原点位置#define CURSE_ADD 0x06 /设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)#define FUN_MODE 0x30 /工作模式:8位基本指令集#define DISPLAY_ON

14、0x0c /显示开,不显示游标,且游标位置反白#define DISPLAY_OFF 0x08 /显示关#define CURSE_DIR 0x14 /游标向右移动:AC=AC+1#define SET_CG_AC 0x40 /设置AC,范围为:00H3FH#define SET_DD_AC 0x80#define P10 0#define P11 1#define P12 2#define P13 3#define P14 4#define P15 5#define P16 6#define P17 7#define RS_CLR P6OUT &= (1 P17) /RS置低#define

15、RS_SET P6OUT |= (1 P17) /RS置高#define RW_CLR P6OUT &= (1 P15) /RW置低#define RW_SET P6OUT |= (1 P15) /RW置高#define EN_CLR P6OUT &= (1 P16) /E置低#define EN_SET P6OUT |= (1 P16) /E置高#define PSB_CLR P1OUT &= (1 P13) /PSB置低,串口方式#define PSB_SET P1OUT |= (1 P13) /PSB置高,并口方式#define RST_CLR P1OUT &= (1 P13) /RST

16、置低#define RST_SET P1OUT |= (1 P10) /RST置高#define DataPort P5OUT /P5口为数据口extern void Port_init();extern void LCD_write_com(unsigned char com);extern void LCD_write_data(unsigned char data);extern void LCD_clear(void);extern void DisplayCgrom(uchar addr,uchar *hz);extern void Display(void);extern void

17、 LCD_init(void); extern void Display_Num(uchar x,uchar y,uint num);extern void Locate_XY(uchar x,uchar y);extern void Display_Value(uchar x,uchar y,uint value);#endif/LCD12864.C#include lcd12864.h/*/ 初始化IO口子程序/*void Port_init() P5SEL = 0x00; P5DIR = 0xFF; P6SEL = 0x00; P6DIR|= BIT5 + BIT6 + BIT7 ; P

18、1SEL = 0x00; P1DIR|= BIT0 + BIT3 ; PSB_SET; /液晶并口方式 RST_SET; /复位脚RST置高/*/ 显示屏命令写入函数/*void LCD_write_com(unsigned char com) RS_CLR; RW_CLR; EN_SET; DataPort = com; delay_ms(5); EN_CLR;/*/ 显示屏数据写入函数/*void LCD_write_data(unsigned char data) RS_SET; RW_CLR; EN_SET; DataPort = data; delay_ms(5); EN_CLR;/

19、*/ 显示屏清空显示/*void LCD_clear(void) LCD_write_com(0x01); delay_ms(5);/*/ 坐标定位/*void Locate_XY(uchar x,uchar y) uchar adress=0; adress = x; switch(y) case 1:adress |= 0x80;break; case 2:adress |= 0x90;break; case 3:adress |= 0x88;break; case 4:adress |= 0x98;break; default : adress = 0x80; LCD_write_com

20、(adress); /*/函数名称:DisplayCgrom(uchar hz)显示CGROM里的汉字/*void DisplayCgrom(uchar addr,uchar *hz) LCD_write_com(addr); delay_ms(5); while(*hz != 0) LCD_write_data(*hz); hz+; delay_ms(5); /*/函数名称:Display()显示测试结果/*void Display(void) DisplayCgrom(0x80,通道0:); DisplayCgrom(0x90,通道1:); DisplayCgrom(0x88,通道2:);

21、 DisplayCgrom(0x98,通道3:); DisplayCgrom(0x80+7, V); DisplayCgrom(0x90+7, V); DisplayCgrom(0x88+7, V); DisplayCgrom(0x98+7, V);/*/函数名称:Display_Num显示一个uint型数据/*void Display_Num(uchar x,uchar y,uint num) uchar ge,shi,bai,qian; qian = num/1000; bai = num/100 %10; shi = num/10%10; ge = num%10; Locate_XY(x

22、,y); LCD_write_data(qian+0x30); LCD_write_data(bai+0x30); LCD_write_data(shi+0x30); LCD_write_data(ge+0x30); /*/函数名称:显示处理后电压值/*void Display_Value(uchar x,uchar y,uint value) uchar ge,shi,bai; bai = value/100 %10; shi = value/10%10; ge = value%10; Locate_XY(x,y); LCD_write_data( ); LCD_write_data(bai

23、+0x30); LCD_write_data(.); LCD_write_data(shi+0x30); LCD_write_data(ge+0x30); /*/ 显示屏初始化函数/*void LCD_init(void) LCD_write_com(FUN_MODE); /显示模式设置 delay_ms(5); LCD_write_com(FUN_MODE); /显示模式设置 delay_ms(5); LCD_write_com(DISPLAY_ON); /显示开 delay_ms(5); LCD_write_com(CLEAR_SCREEN); /清屏 delay_ms(5);/MAIN.C#include #includeADC.h#include

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1