mspg内部AD采集正弦波幅值的程序.docx

上传人:b****1 文档编号:231370 上传时间:2022-10-07 格式:DOCX 页数:7 大小:10.92KB
下载 相关 举报
mspg内部AD采集正弦波幅值的程序.docx_第1页
第1页 / 共7页
mspg内部AD采集正弦波幅值的程序.docx_第2页
第2页 / 共7页
mspg内部AD采集正弦波幅值的程序.docx_第3页
第3页 / 共7页
mspg内部AD采集正弦波幅值的程序.docx_第4页
第4页 / 共7页
mspg内部AD采集正弦波幅值的程序.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

mspg内部AD采集正弦波幅值的程序.docx

《mspg内部AD采集正弦波幅值的程序.docx》由会员分享,可在线阅读,更多相关《mspg内部AD采集正弦波幅值的程序.docx(7页珍藏版)》请在冰豆网上搜索。

mspg内部AD采集正弦波幅值的程序.docx

#include"msp430g2553.h"

#defineuintunsignedint

#defineucharunsignedchar

#defineulongunsignedlong

uintaver[64]={0};

ucharflag=0;

ucharzifu[14]={"0123456789ux=z"};

uintmaxaver=0;

longdis=0;

doublemax=0,maxr=0;

#defineSIDBIT3

#defineSCLKBIT2

#defineLCDPORTP1OUT

#defineSID_1LCDPORT|=SID

#defineSID_0LCDPORT&=~SID

#defineSCLK_1LCDPORT|=SCLK

#defineSCLK_0LCDPORT&=~SCLK

voiddelay(unsignedcharms)

{

    unsignedchari,j;

    for(i=ms;i>0;i--)

        for(j=120;j>0;j--);

}

/***********************************************************

*名称:

LCD_Write_cmd()

*功能:

写一个命令到LCD12864

*入口参数:

cmd:

待写入的命令,无符号字节形式

*出口参数:

*说明:

写入命令时,RW=0,RS=0扩展成24位串行发送

*格式:

11111RW0RS0xxxx0000xxxx0000

*|最高的字节|命令的bit7~4|命令的bit3~0|

***********************************************************/

voidwrite_cmd(ucharcmd)

{

    uchari;

    uchari_data;

    i_data=0xf8;

    SCLK_0;

    for(i=0;i<8;i++)

    {

        SID_0;

        if(i_data&0x80)

            SID_1;

        _delay_cycles(100);

        SCLK_0;

        SCLK_1;

        _delay_cycles(10);

        i_data<<=1;

    }

    i_data=cmd;

    i_data&=0xf0;

    for(i=0;i<8;i++)

    {

        SID_0;

        if(i_data&0x80)

        SID_1;

        _delay_cycles(100);

        SCLK_0;

        SCLK_1;

        _delay_cycles(10);

        i_data<<=1;

    }

    i_data=cmd;

    i_data<<=4;

    for(i=0;i<8;i++)

    {

        SID_0;

        if(i_data&0x80)

            SID_1;

        _delay_cycles(100);

        SCLK_0;

        SCLK_1;

        _delay_cycles(10);

        i_data<<=1;

    }

    _delay_cycles(100);

}

/***********************************************************

*名称:

LCD_Write_Byte()

*功能:

向LCD12864写入一个字节数据

*入口参数:

byte:

待写入的字符,无符号形式

*出口参数:

*范例:

LCD_Write_Byte('F')//写入字符'F'

***********************************************************/

voidwrite_dat(uchardat)

{

    uchari;

    uchari_data;

    i_data=0xfa;

    SCLK_0;

    for(i=0;i<8;i++)

    {

        SID_0;

        if(i_data&0x80)

            SID_1;

        _delay_cycles(100);

        SCLK_0;

        SCLK_1;

        _delay_cycles(10);

        i_data<<=1;

    }

    i_data=dat;

    i_data&=0xf0;

    for(i=0;i<8;i++)

    {

        SID_0;

        if(i_data&0x80)

            SID_1;

        i_data<<=1;

        _delay_cycles(100);

        SCLK_0;

        SCLK_1;

        _delay_cycles(10);

    }

    i_data=dat;

    i_data<<=4;

    for(i=0;i<8;i++)

    {

        SID_0;

        if(i_data&0x80)

            SID_1;

        i_data<<=1;

        _delay_cycles(100);

        SCLK_0;

        SCLK_1;

        _delay_cycles(10);

    }

    _delay_cycles(100);

}

/***********************************************************

*名称:

LCD_pos()

*功能:

设置液晶的显示位置

*入口参数:

x:

第几行,1~4对应第1行~第4行

*y:

第几列,0~15对应第1列~第16列

*出口参数:

*范例:

LCD_pos(2,3)//第二行,第四列

***********************************************************/

voidlcd_pos(ucharx,uchary)

{

    ucharpos;

    switch(x)

    {

        case1:

pos=0x80;break;

        case2:

pos=0x90;break;

        case3:

pos=0x88;break;

        case4:

pos=0x98;break;

        default:

pos=0x80;

    }

    pos+=y;

    write_cmd(pos);

}

voidLCD_init(void)

{

    write_cmd(0x30);

    delay(5);

    write_cmd(0x0C);

    delay(5);

    write_cmd(0x01);

    delay(5);

    write_cmd(0x02);

    delay(5);

}

voidSys_clock_init(void)

{

    uinti=0;

    BCSCTL1|=CALBC1_16MHZ;

    DCOCTL|=CALDCO_16MHZ;

    for(i=0;i<65535;i++);

    BCSCTL2|=SELM_0;

    BCSCTL2|=DIVS_0;

}

voidAD_init(void)

{

    ADC10CTL0=ADC10ON+ADC10IE+MSC+ADC10SHT_3;

    ADC10CTL1|=CONSEQ_3+INCH_1;;

    ADC10AE0|=BIT0+BIT1;

    ADC10DTC1=0x40;

}

voidIO_init(void)

{

    //P1REN|=BIT0+BIT1;

    //P1OUT=0x00;

    //P1DIR|=BIT0+BIT1;

    //P1DIR|=BIT0+BIT1+BIT2+BIT3;

    P1DIR=0x0C;

}

voidjisuan()

{

    ucharj;

    maxr=0;

    maxaver=0;

    for(j=0;j<64;j+=2)

    {

        if(aver[j]>maxaver&&aver[j]<1024)

            maxaver=aver[j];

    }

    maxr=(maxaver*3.56)/1023;

    max=maxr*10000;

    dis=max;

    lcd_pos(2,2);

    write_dat(zifu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

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

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