mspg内部AD采集正弦波幅值的程序.docx
- 文档编号:231370
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:7
- 大小:10.92KB
mspg内部AD采集正弦波幅值的程序.docx
《mspg内部AD采集正弦波幅值的程序.docx》由会员分享,可在线阅读,更多相关《mspg内部AD采集正弦波幅值的程序.docx(7页珍藏版)》请在冰豆网上搜索。
#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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mspg 内部 AD 采集 正弦 波幅 程序