三、 单片机程序
#include \#include \chardata_display[10]; #define y 800 floatres,ADCresult,df; void PWM(void) {
WDTCTL= WDTPW + WDTHOLD; TACTL = TASSEL_2 +TACLR+MC_1; CCR0=1800;
res=CCR0-(y-5.0793)/1.614; CCR1=res; CCTL1=OUTMOD_3; P1SEL |=BIT6; P1DIR |=BIT6; }
voidBCS_Init(void) { }
void main(void) {
float dat3;
if(CALBC1_16MHZ ==0xFF) { }
DCOCTL = 0;
BCSCTL1 = CALBC1_16MHZ; DCOCTL = CALDCO_16MHZ; __delay_cycles(100);
while(1);
double x,dat2;
BCS_Init();
PWM();
F-11
Lcd_Init(); Lcd_Clear();
StrDisplay(\Lcd_Clear();
while(1) {
ADC10CTL0 = ADC10SHT_2 + ADC10ON +REFON + REF2_5V + ADC10IE
+SREF_1;
ADC10CTL1 |= INCH_7; ADC10AE0 |= BIT7;
ADC10CTL0 |=ENC+ADC10SC; _EINT();
dat3=(float)100*(CCR0-CCR1)/CCR0; x=(double)(CCR0-CCR1); dat2=(double)(1.614)*x+5.0793; StrDisplay(\组 2\
StrDisplay(\占空比:\StrDisplay(\理论值:\StrDisplay(\实际值:\StrDisplay(\StrDisplay(\StrDisplay(\floatTochar(y,data_display,2); StrDisplay(data_display,1,7,0); floatTochar(data2,data_display,2); StrDisplay(data_display,2,7,0); floatTochar(ADCresult,data_display,2); StrDisplay(data_display,3,7,0); __delay_cycles(30000000); } }
#pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR(void) { }
F-12
df=ADC10MEM;
ADCresult=df*1000*2.5/(1023.0);