#include"MSP430x22x4.h"
#defineucharunsignedchar
#defineuintunsignedint
#definecomm0
#definedat1
#definesclk_1P4OUT|=0x01//sclk=1;001----p4.0
#definesclk_0P4OUT&=0x06//sclk=0;110----p4.1
#definestd_1P4OUT|=0x02//std=1;010
#definestd_0P4OUT&=0x05//std=0;101
/***********數(shù)組及變量定義***************************/
ucharxian[]={
"****************"
"M=g"
"此物體重量為:"
"****************"
};
ucharcaidan1[]={"0123456789"};
floatad_value,data;
ucharai=0;
/*************************延時函數(shù)********************************/
voiddelay(ucharaj)
{
while(aj--);
}
voidDELAY(ucharaj)
{
for(ucharak=0;ak<500;)
while(aj--);
}
/*
********************************************************************************
*模塊名稱:wr_LCD定義
*完成日期:08-07-29
*修改內(nèi)容:none
********************************************************************************
*///********寫命令/數(shù)據(jù)***************************************************
voidwr_lcd(unsignedchardat_comm,unsignedcharcontent)
{
unsignedchara,b,i,j;
delay(50);
a=content;
//cs_1;//P4OUT|=0x04//cs=1;0100
sclk_0;//P4OUT&=0x06//sclk=0;0110
std_0;//P4OUT&=0x05//std=0;0101
std_1;//P4OUT|=0x02//std=1;0010
for(i=0;i<5;i++)//
{sclk_1;sclk_0;}
std_0;
sclk_1;
sclk_0;
if(dat_comm)std_1;
else
std_0;
sclk_1;
sclk_0;
std_0;
sclk_1;
sclk_0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{b=a;
if((b&=0x80)==0)
{std_0;a=a<<1;}
else
{std_1;a=a<<1;}
sclk_1;sclk_0;
}
std_0;
for(i=0;i<4;i++)
{sclk_1;sclk_0;}
}
}
/*********************************************************************************
*模塊名稱:初始化定義
*完成日期:08-7-29
*修改內(nèi)容:none
********************************************************************************
*/
voidinit_lcd(void)
{
wr_lcd(comm,0x30);/*30---基本指令動作*/
wr_lcd(comm,0x01);/*清屏,地址指針指向00H*/
delay(100);
wr_lcd(comm,0x06);/*光標(biāo)的移動方向*/
wr_lcd(comm,0x0c);/*開顯示,關(guān)游標(biāo)*/
}
/*
********************************************************************************
*模塊名稱:清DDRAM定義
*完成日期:08-7-29
*修改內(nèi)容:none
********************************************************************************
*/
voidclrram(void)
{
wr_lcd(comm,0x30);
wr_lcd(comm,0x01);
delay(180);
}
/*
********************************************************************************
*模塊名稱:顯示漢字或字符定義
*完成日期:08-7-29
*修改內(nèi)容:none
********************************************************************************
*/
voidchn_disp(unsignedchar*chn)
{
unsignedchari;
wr_lcd(comm,0x30);
wr_lcd(comm,0x80);
for(i=0;i<64;i++)
wr_lcd(dat,chn[i]);
}
//****************lcd_mesg定點顯示***********************************
voidlcd_mesg(uintgao,ucharp,ucharq)
{
uintadder1,adder2,adder3,adder4;
adder1=gao/1000,gao=gao-adder1*1000;
adder2=gao/100,gao=gao-adder2*100;
adder3=gao/10,adder4=gao%10;
wr_lcd(comm,p);
wr_lcd(dat,caidan1[adder1]);delay(20);
wr_lcd(dat,caidan1[adder2]);delay(20);
wr_lcd(comm,q);
wr_lcd(dat,caidan1[adder3]);delay(20);
wr_lcd(dat,caidan1[adder4]);delay(20);
}
/**************初始化函數(shù)*************************************/
voidinit_port(void)
{
P3DIR=0XBF;//P3.6---A6,10111111
P3SEL=0XBF;
P3OUT=0X00;
P4DIR=0XFF;
P4SEL=0X00;
P4OUT=0;
ADC10CTL0=0;
ADC10CTL0|=REFON+SREF_0;//正參考AVCC,AVSS地為負(fù)參考
ADC10CTL0|=ADC10ON+ADC10SHT_3+ADC10IE;//打開ADC10內(nèi)核,設(shè)定采樣保持時間為64個ADC10CLK,使能ADC10中斷
ADC10CTL1=0;
ADC10CTL1|=INCH_6+CONSEQ_0+SHS_0;//選擇第6通道,轉(zhuǎn)換模式為單通道單次模式采樣信號源為ADC10SC
ADC10CTL1|=ADC10SSEL_0+ADC10DIV_3;//轉(zhuǎn)換內(nèi)核時鐘源為ADC10OSC分頻系數(shù)4分頻
delay(20);//等待參考穩(wěn)定
ADC10CTL0"=ENC+ADC10SC;//啟動AD轉(zhuǎn)換
_EINT();
return;
}
/*******************主函數(shù)*****************************************/
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//關(guān)看門狗
BCSCTL1=CALBC1_1MHz;//設(shè)定DCO為1MHZ
DCOCTL=CALBC1_1MHZ;
init_port();
init_lcd();
chn_disp(xian);
while(1)
{
ADC10CTL0&=~ENC;//關(guān)閉AD轉(zhuǎn)換
ADC10CTL0|=ENC+ADC10SC;//啟動AD轉(zhuǎn)換
lcd_mesg(data,0x8b,0x8c);
delay(20);
}
}
#pragmavector=ADC10_VECTOR//ADC10中斷服務(wù)
__interruptvoidadc_isr(void)
{
ADC10CTL0&=~ENC;//關(guān)閉AD轉(zhuǎn)換
ad_value=ADC10MEM;//保存AD結(jié)果ADC10MEM=1023*(Vin/VR+)
data=((ad_value-390)*10-150);
ADC10CTL0|=ENC+ADC10SC;//啟動AD轉(zhuǎn)換
}