TI中文支持网
TI专业的中文技术问题搜集分享网站

ms430f169用键盘控制DA输出的电压

键盘程序,DA程序本来很容易,但整合起来就有一堆问题。。。搞了好久,才能用键盘控制加减0.2V的电压。

#include <msp430f169.h>
#include "Config.h"
#include"key1.h"

#define uchar unsigned char
//+-0.2V
void key1(void)
{ //WDT_Init(); //看门狗设置
//Clock_Init(); //系统时钟设置
Port_init(); //系统初始化,设置IO口属性
delay_ms(100); //延时100ms
while(1)
{
Key_Scan(); //键盘扫描,看是否有按键按下
if(key!=0xff) //如果有按键按下,则显示该按键键值1~4
{
{ switch(key)
{
case 1:LED8 = 0xFC;delay_ms(40);DAC12_0DAT=DAC12_0DAT+0x0a3;delay_ms(40);break; //给不同的键赋键值,键值1,亮2个LED灯
case 2:LED8 = 0xF3;delay_ms(40); DAC12_0DAT=DAC12_0DAT-0x06d;break; //给不同的键赋键值,键值2,亮2个LED灯
case 3://LED8 = 0xCF;break; b=a+0x0666; //给不同的键赋键值,键值3,亮2个LED灯
case 4://LED8 = 0x3F;break; b=a-0x0666; //给不同的键赋键值,键值4,亮2个LED灯
}

}
}
else
{
LED8=key; //没有按键的时候显示上次的键值
}
}

}
void InitDAC12_0(void)
{
ADC12CTL0=REF2_5V+REFON;
DAC12_0CTL |= DAC12CALON; // 启动效验DAC
while((DAC12_0CTL & DAC12CALON) != 0){_NOP();} // 等待效验完成
// 控制寄存器设置
// 选择输入缓冲器中速中电流,输出缓冲器中速中电流,12位DAC,满电压输出为内基准,自动更新数据
DAC12_0CTL = DAC12AMP_5 + DAC12IR + DAC12LSEL_0;
DAC12_0CTL |= DAC12SREF_0;
DAC12_0CTL |= DAC12ENC; // 启动DAC模块(DAC12LSEL_0时此句可以省)
}
//主函数
void main(void)
{ WDT_Init(); //看门狗初始化
Clock_Init(); //时钟初始化
InitDAC12_0();
DAC12_0DAT =0x666;
key1();
}

1.就是我加下划线的两句,实现加减0.2V的两句代码,为何两句话不是只差一个“+,-”吗???

2.实现“+,-”1v的时候,很容易跳变到2.5V或0.68V,或者没反应。。。。

这是我qq1019753552,求助各位大神!!小弟谢谢啦!!!

赞(0)
未经允许不得转载:TI中文支持网 » ms430f169用键盘控制DA输出的电压
分享到: 更多 (0)