⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是基于MSP430单片机的一个程序.包含AD过程,DA转换过程.共有4个程序,分别介始不同用法.上传以供大家学习.
💻 C
字号:
/****************************************************
程序功能:用两个按键控制DAC的输出电压驱动LED发光
----------------------------------------------------
跳线设置:将跳线座J1的1脚和2脚(靠上面的两个)短接
-----------------------------------------------------
测试说明:按动K3键可以减小DAC的输出电压;
          按动K4键可以增加DAC的输出电压。
          观察LED亮度变化。
******************************************************/
#include <msp430x14x.h>
#include "BoardConfig.h"
#include "IIC.h"

uchar   DAC_Val;          //DAC输出数据

void delay20ms(void);
uchar Write_DAC(uchar wdata);
/****************主函数****************/
void main(void)
{
    uchar keyval;
    
    WDTCTL = WDTPW + WDTHOLD;   //停止看门狗
    BoardConfig(0xb8);
    
    Set_IO();                   //设置IIC端口 
    P1DIR |= BIT7;              //P1.7输出低电平控制键盘工作于独立按键模式
    P1OUT &= ~BIT7;
    DAC_Val = 0xff;
    Write_DAC(DAC_Val);
    while(1)
    {
        if((P1IN & 0x0c) != 0x0c)
        {
            delay20ms();
            if((P1IN & 0x0c) != 0x0c)
            {
                keyval = P1IN & 0x0c;
                while((P1IN & 0x0c) != 0x0c);       //等待按键放开
                if(keyval == 0x04)                  //如果是K3键按下
                {
                     DAC_Val -= 20;                 //DAC的输出减少20个偏置量
                     Write_DAC(DAC_Val);            //写入DAC
                }
                else if(keyval == 0x08)             //如果是K4键按下 
                {
                     DAC_Val += 20;                 //DAC的输出增加20个偏置量
                     Write_DAC(DAC_Val);            //写入DAC   
                }
                else
                {
                     _NOP();
                }
            }
        }
    }
}
/*******************************************
函数名称:delay20ms
功    能:用于消抖的延时
参    数:无
返回值  :无
********************************************/
void delay20ms(void)
{
    uint tmp;
    
    for(tmp = 12000;tmp > 0;tmp--);
}

/*******************************************
函数名称:Write_DAC
功    能:向DAC中写入输出电压数据
参    数:无
返回值  :写入结果:1--成功,0--失败
********************************************/
uchar Write_DAC(uchar wdata)
{
    start();
    write1byte(0x98);   //DAC的设备地址
    if(check())   write1byte(wdata >> 4);   //写控制模式和电压数据的高四位
    else          return 0;
    if(check())   write1byte(wdata << 4);  //写电压数据的低四位
    else          return 0;
    if(check())	  stop();
    else          return 0;
    return 1;    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -