注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
panyixin的个人空间
https://home.eeworld.com.cn/space-uid-434783.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
我想用12位AD来同时采集p6.0和p6.1的电压但是A0抖动的厉害A1却一点都没有变化不知原因
已有 910 次阅读
2012-8-11 21:30
一下是我的一程序,望高手们能指点一下
#include
#include \"BoardConfig.h\"
#include \"cry1602.h\"
#define Num_of_Results 32
#define Num_of_Results1 32
uchar shuzi[] = {\"0123456789.\"};
uchar tishi[] = {\"The volt is:\"};
static uint results[Num_of_Results]; //保存ADC转换结果的数组
static uint results1[Num_of_Results1]; //保存ADC转换结果的数组
void Trans_val(uint Hex_Val);
void Trans_val2(uint Hex_Val);
/************************主函数****************************/
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; //关闭看门狗
BoardConfig(0xb8); //关闭数码管、流水灯、4245
LcdWriteCommand(0x01, 1); //显示清屏
LcdReset(); //复位1602液晶
DispNChar(2,0,12,tishi); //显示提示信息
Disp1Char(14,1,\'V\'); //显示电压单位
Disp1Char(6,1,\'V\');
// P6DIR = 0X00; //方向为输出
P6SEL |= 0x03; // P6.1和P6.0使能ADC通道采集的端口
BCSCTL1 &= ~XT2OFF; //使TX2有效,TX2上电时默认为关闭的
ADC12CTL0 &= ~(ENC); //设置ENC为0,从而修改ADC12寄存器的值
ADC12CTL0 = ADC12ON+SHT0_8+MSC+REFON+ADC12SSEL_1+REF2_5V; // 打开ADC,8设置采样时间,ACLK时钟源
// ADC12CTL1 = SHP+CONSEQ_3+CSTARTADD_1; // 使用采样定时器,重复单通道模式
ADC12CTL1 = SHP+CONSEQ_3+CSTARTADD_1+CSTARTADD_0; // 使用采样定时器,重复多通道模式
ADC12IE |= BIT1;
ADC12MCTL0 = INCH_0 + SREF_0; //A0,Vref+
ADC12MCTL1 = INCH_1 + SREF_0+EOS; //A1,Vref+
ADC12CTL0 |= ENC; // 使能转换
ADC12CTL0 |= ADC12SC; // 开始转换
_EINT();
LPM0;
}
/*******************************************
函数名称:ADC12ISR
功 能:ADC中断服务函数,在这里用多次平均的
计算P6.1口的模拟电压数值
参 数:无
返回值 :无
********************************************/
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
static uint index = 0;
static uint index1 = 0;
results[index++] = ADC12MEM1; // CSTARTADD_1与 ADC12MEM1;对应转化地址控制位 // Move results
results1[index1++] = ADC12MEM0; // CSTARTADD_1与 ADC12MEM1;对应转化地址控制位 // Move results
if(index == Num_of_Results)
{
uchar i;
unsigned long sum = 0;
index = 0;
for(i = 0; i < Num_of_Results; i++)
{
sum += results
;
}
sum >>= 5; //除以32
Trans_val(sum);
};
///***************另一通道**************
if(index1 == Num_of_Results1)
{
uchar i;
unsigned long sum = 0;
index1 = 0;
for(i = 0; i < Num_of_Results1; i++)
{
sum += results1
;
}
sum >>= 5; //除以32
Trans_val2(sum);
}
}
/*******************************************
函数名称:Trans_val
功 能:将16进制ADC转换数据变换成三位10进制
真实的模拟电压数据,并在液晶上显示
参 数:Hex_Val--16进制数据
n--变换时的分母等于2的n次方
返回值 :无
********************************************/
void Trans_val(uint Hex_Val)
{
unsigned long caltmp;
uint Curr_Volt;
uchar t1,i;
uchar ptr[4];
caltmp = Hex_Val;
caltmp = (caltmp << 5) + Hex_Val; //caltmp = Hex_Val * 33
caltmp = (caltmp << 3) + (caltmp << 1); //caltmp = caltmp * 10
Curr_Volt = caltmp >> 12; //Curr_Volt = caltmp / 2^n
ptr[0] = Curr_Volt / 100; //Hex->Dec变换
t1 = Curr_Volt - (ptr[0] * 100);
ptr[2] = t1 / 10;
ptr[3] = t1 - (ptr[2] * 10);
ptr[1] = 10; //shuzi表中第10位对应符号\".\"
//在液晶上显示变换后的结果
for(i = 0;i < 4;i++)
Disp1Char((10 + i),1,shuzi[ptr
]);
}
/*******************************************
函数名称:Trans_val
功 能:将16进制ADC转换数据变换成三位10进制
真实的模拟电压数据,并在液晶上显示
参 数:Hex_Val--16进制数据
n--变换时的分母等于2的n次方
返回值 :无
********************************************/
void Trans_val2(uint Hex_Val)
{
unsigned long caltmp;
uint Curr_Volt1;
uchar t1,i;
uchar ptr1[4];
caltmp = Hex_Val;
caltmp = (caltmp << 5) + Hex_Val; //caltmp = Hex_Val * 33
caltmp = (caltmp << 3) + (caltmp << 1); //caltmp = caltmp * 10
Curr_Volt1 = caltmp >> 12; //Curr_Volt = caltmp / 2^n
ptr1[0] = Curr_Volt1 / 100; //Hex->Dec变换
t1 = Curr_Volt1 - (ptr1[0] * 100);
ptr1[2] = t1 / 10;
ptr1[3] = t1 - (ptr1[2] * 10);
ptr1[1] = 10; //shuzi表中第10位对应符号\".\"
//在液晶上显示变换后的结果
for(i = 0;i < 4;i++)
Disp1Char((2 + i),1,shuzi[ptr1
]);
}
收藏
邀请
举报
全部
作者的其他最新日志
•
超声波1602液晶显示
•
MSP430F149超声波定时器捕获测量距离
•
430单片机12位AD一路采集温度一路采集电压程序该如何配置和处理
评论 (
0
个评论)
涂鸦板
您需要登录后才可以评论
登录
|
注册
评论
panyixin
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
总投资15亿元!又一半导体项目开工
干货分享 | 未来物联网系统中的无故障数据存储
无线知识库-管理 Wi-Fi、Zigbee、Thread 和蓝牙之间的共存
宇宙又出现新的威胁,失去钢铁侠的我们如何战胜强敌?
恐怖故事|整容液(一个好玩的小清新故事)
改了1024次,今天终于tape-out了
新增数据手册
T103R09BLF
C0805X431M1HAC7800
TE1208-E3
78587-427HLF
SIT5156AECFKD25IF-19.123456X
8613-060-84-14-345
热搜器件
D38999/26TE35SN
RN73C1J7R15BTD
NCP303LSN14T1G
D-621-0415
CRGH2010J4R7
16-010-173P
推荐下载
2.30GHz—2.70GHz锁相环式频率综合技术研究(免费
MTK 6238 Design Notice v1.0
于DSP和FPGA的运动控制技术的研究
SoC軟硬體協同設計方法與實例
MK_PIC17C76X 数据手册 264页 6.2M.pdf
一款用c++制作的人事管理软件
推荐关注
百望股份(06657.HK)引入DeepSeek大模型 打造企业級智能服務新生態
百望股份全面接入DeepSeek,打造企业级AGI革新引擎
如何实现输电线路的实时监控?新设备引领电力行业革新
“远程监控下的智能井盖:城市安全的‘隐形卫士’”
地下电缆隧道智能监测系统:技术革新能否解决运维难题
对数组和链表的一点理解