完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
程序如下
#include #include "Config.h" //开发板配置头文件,主要配置IO端口信息 #include "1602.c" #define Num 32 static uint ADCshuju[Num]; //标志变量 uint TEMP; //ADC值暂存变量 uint temp,A1,A2,A3,A4,A5,A6,A7; //定义的变量,显示数据处理 //*********************************************************************** // 显示采集到的ADC数值 //*********************************************************************** void LCD_DisplayI() { LCD_write_char(0x0b,0,0x30+A5); LCD_write_char(0x0c,0,'.'); LCD_write_char(0x0d,0,0x30+A6); LCD_write_char(0x0e,0,0X30+A7); LCD_write_char(0x0f,0,'A'); } void LCD_DisplayVoltage() { LCD_write_char(0x0b,1,0x30+A5); LCD_write_char(0x0c,1,0x30+A6); LCD_write_char(0x0d,1,'.'); LCD_write_char(0x0e,1,0X30+A7); LCD_write_char(0x0f,1,'V'); } //************************************************************************* // 电压数据显示处理函数 //************************************************************************* void Voltage_do(uint temp_d) { uint temp_1,temp_2; ulong temp_3; temp_3=(ulong)(temp_d)*250; //转换公式,ADC数字量转换为电压大小,注意数据类型 temp_d=temp_3/4095; //12位精度,除以4095 A5=temp_d/100; //分出百,十,和个位 temp_1=temp_d%100; A6=temp_1/10; temp_2=temp_1%10; A7=temp_2; } //************************************************************************* // ADC中断服务程序 //************************************************************************* #pragma vector=ADC_VECTOR __interrupt void ADC12ISR(void) { static uint i=0; while((ADC12CTL1&0x01)==1); //如果ADC忙,则等待,否则读取ADC转换数值 ADCshuju[i++]= ADC12MEM0; if(i==32) { uchar j; unsigned long average=0; i=0; for(j=0;j<32;j++) { average+=ADCshuju[j]; } TEMP=average/32; //处理ADC值,用于显示,数字量 Voltage_do(TEMP); for(j=0;j<15;j++) { LCD_DisplayI(); //显示ADC的数据,ADC数字量 LCD_DisplayVoltage(); //显示ADC的电压值 } } //读取ADC转换值 } //处理ADC值,用于显示,模拟电压值 //*********************************************************************** // 主程序 //*********************************************************************** void main(void) { WDT_Init(); //看门狗初始化 Clock_Init(); //时钟初始化 Port_Init(); //延时100ms LCD_init(); //液晶参数初始化设置 LCD_clear(); //清屏 LCD_Desk(); //端口初始化,用于控制IO口输入或输出 //初始化ADC配置 P6SEL|=0x01; //选择ADC通道 ADC12CTL0 |= ADC12ON+SHT0_2+REF2_5V+REFON+MSC; // 打开ADC,设置采样时间 ADC12CTL1 |= SHP+CONSEQ_2+CSTARTADD_0; ADC12MCTL0 |=SREF_1+INCH_0; ADC12IE = 0x01; // 使能ADC中断 // 使能转换 ADC12CTL0 |= ENC+ADC12SC; _EINT(); //开启转换 } 只能显示LCD_Desk()的内容,没有数据 |
|
相关推荐
1个回答
|
|
新手入门,谢谢分享!
|
|
|
|
只有小组成员才能发言,加入小组>>
2632个成员聚集在这个小组
加入小组MSP430FR5994 使用库函数 定时器触发AD问题请教
1710 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2170 浏览 1 评论
4568 浏览 1 评论
2368 浏览 1 评论
1707 浏览 1 评论
706浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
1723浏览 2评论
936浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-24 02:08 , Processed in 0.987306 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号