部分软件源码 1、A/D转换软件 #include <msp430x42x.h> Void SD16init(void) { Volatile unsigned int i; SD16CTL=SD16REFON+SD16SSEL0; //SD16REFON为l,选择1.2V内部参考电压 //SD16SSEL0为01,选择子系统时钟SMCLK为时钟源 SD16CCTL0=SD16SNGL+SD16IE+SD16OSRx+SD16SC; //SD16SNGL为0,选择序列转换模式 //SD16IE为1,表示使能中断 //SD16OSRx为00,表示选择256过采样率 //SD16SC为l,表示使能ADC SD16INCTL0|=SD16INTDLY_0; //SD16INTDLY_0位00,表示第四个采样中断 for(i=0;i<0x3600;i++); } 2、液晶显示程序 #inelude <msP430x42x.h> #define Num_of_Results 8 Static unsigned int ADC_result; Const unsigned char NUM_LCD[16]={ 0x7B, //”0” LCD seglllents a+b+e+d+e+f lcd=lsd048 0x12, //”1” 0x4F, //”2” 0xlF, //”3” 0x36, //”4” 0x3D, //”5” 0x7D, //”6” 0x13, //”7” 0x7F, //”8” 0x3F, //”9” 0x77, //”A” 0x7c, //”B” 0x69, //”C” 0xse, //”D” 0x6d, //”E” 0x65, //”F” }; #define LCD_IN_USE 8 Unsigned char LCD_Buf[LCD_IN_USE]; //自定义显示缓冲区,用于外部设定要显示的数据 Interrupt void SD16ISR(void); Unsigned int index; Void init_LCD(void) //初始化LCD048 { int i; char tmPv; FLL_CTL0|=XCAP18PF; //Configure load caps for(i=O;i<10000;i++); //Delay for 32kHz crystal to BTCTL=BTFRFQ1; //Set freqLCD=ACLK/128 LCDCTL=0x03d; //4-Mux LCD, segnlents S0-S15 for(tmPv=0;tmpv<8;tmPv++) { LCDMEM[tmPv]=0x00: // clear LCD } } Void LCD_DisPlay() { ADCresult=ADC_result-0x8000; ADCresult=ADC_result/1000; ADCresull=ADC_result*170; Char tmpv,tmP; for(tmP=0;tmP<7;tmP++) { Lcd_Buf[tmp〕=ADCresult%10; //结果转换成十进制,并存放在LCD缓冲区中 ADCresult=ADCresult/10; } for(tmpv=0;tmpv<LCD_IN_USE-4;tmpv++) { LCDMEM[tmpv]=NUM_LCD[lcd_Buf[tmpv]]; //更新LCDMEM中的内容 } LCDMEM[tmpv]=0xfb; } |