成都工业学院毕业设计(论文)
ptr[4]=daa; for(i = 1;i < 5;i++)
Disp1Char((2+ i),1,shuzi[ptr[i]]);
} /******************************************* 函数名称:bzxs
函数功能:显示通过键盘设定的标准电压值 返回参数:无
******************************************/ void bzxs(uint Hex_Val) {
unsigned long caltmp; unsigned long daa; unsigned int i; uchar ptr[5]; caltmp = Hex_Val;
daa=((caltmp/1)*805664)/1000000;
ptr[0] = daa / 1000; //Hex->Dec变换 ptr[1] = 10;
ptr[2] = (daa - ptr[0]*1000)/100;
ptr[3] = (daa - ptr[0]*1000-ptr[2]*100)/10;
ptr[4]=daa; //shuzi表中第10位对应符号\ for(i = 0;i < 5;i++)
Disp1Char((11 + i),0,shuzi[ptr[i]]); }
/*******************Reset*********************** 函数名称:Reset
函数功能:对外部显示初始化 返回参数:无
************************************************/ void reset(void) {
DispNChar(0,0,1,U); //显示“u” DispNChar(0,1,3,I); //显示“SR:” DispNChar(8,0,3,BZ); //显示“BZ:” // DispNChar(8,1,3,A); //显示“SI:” Disp1Char(6,0,'V');
30
自动增益控制放大器
Disp1Char(9,1,'V'); // Disp1Char(15,1,'m'); }
/**********************ADCreset*********************** 函数名称:ADCreset
函数功能;对ADC12进行初始化 返回参数:无
******************************************************/ void ADCreset() {
P6SEL |= 0x07; // 使能ADC通道
ADC12CTL0 = ADC12ON+SHT0_8+MSC; // 打开ADC,设置采样时间, ADC12CTL0 |= REF2_5V+REFON; //使用内部参考电压源 2.5V ADC12CTL1 = SHP+CONSEQ_3; // 使用采样定时器,序列通道多次模式 //ADC12MCTL0 = INCH_0+SREF_1; //p6.0口采样,使用内部参考电压 //ADC12MCTL1 = INCH_1+SREF_1; //p6.1口采样,使用内部参考电压 ADC12MCTL0 = INCH_0; ADC12MCTL1 = INCH_1; ADC12MCTL2 = INCH_2+EOS;
ADC12IE = 0x02; // 使能ADC中断 ADC12IFG = 0x02;
ADC12CTL0 |= ENC; // 使能转换 ADC12CTL0 |= ADC12SC; // 开始转换 }
/*******************DACreset************************* 函数名称:DACreset
函数功能:初始化内部DAC12转换器 返回参数:无
**************************************************/ void DACreset(void) {
DAC12Init(0,5); //初始化 DAC12Cal(2); //校准
//ADC12CTL0 = REF2_5V + REFON; //开启内部参考源 2.5v 必须有;以供DA使用 //z=2048;
//DAC12_0DAT=z; //输出放大器倍数对应的电压值 }
31
成都工业学院毕业设计(论文)
/**************************************************************************** * 名 称:ClkInit
* 功 能:时钟系统初始化 MCLK为8MHz,SMCLK为1MHz * 入口参数:无 * 出口参数:无
****************************************************************************/ void ClkInit(void) {
char mi;
BCSCTL1 &= ~XT2OFF; //打开XT2振荡器 IFG1&=~OFIFG; //清除振荡错误标志 while((IFG1&OFIFG)!=0) {
for(mi=0;mi<0xff;mi++);
IFG1&=~OFIFG; //清除振荡错误标志 }
BCSCTL2 |= SELM_2+SELS+DIVS_3; //MCLK为8MHz,SMCLK为1MHz }
/******************DACout********************* 函数名称:DACout
函数功能:计算ADC采集的输入电压与默认值2v的倍数关系 并转化为相应的电压通过DAC模块输出。 返回参数:无
*********************************************/ void DACout(void) {
DAC12_0DAT=z; //输出放大器倍数对应的电压值 }
/******************************************* 函数名称:delay
功 能:用于消抖的延时 参 数:无 返回值 :无
********************************************/ void delay(void) {
32
自动增益控制放大器
uint tmp;
for(tmp = 12000;tmp > 0;tmp--); } Cry1602.c
#include
/**************宏定义***************/ #define DataDir P2DIR #define DataPort P2OUT #define Busy 0x80 #define CtrlDir P6DIR
#define CLR_RS P6OUT&=~BIT3; //RS = P6.3 #define SET_RS P6OUT|=BIT3;
#define CLR_RW P6OUT&=~BIT4; //RW = P6.4 #define SET_RW P6OUT|=BIT4; #define CLR_EN P6OUT&=~BIT5; #define SET_EN P6OUT|=BIT5;
/******************************************* 函数名称:DispNchar
功 能:让液晶从某个位置起连续显示N个字符 参 数:x--位置的列坐标 y--位置的行坐标 n--字符个数
ptr--指向字符存放位置的指针 返回值 :无
********************************************/ void DispNChar(uchar x,uchar y, uchar n,uchar *ptr) {
uchar i;
for (i=0;i Disp1Char(x++,y,ptr[i]); if (x == 0x0f) { //EN = P6.5 33 成都工业学院毕业设计(论文) } /******************************************* 函数名称:LocateXY 功 能:向液晶输入显示字符位置的坐标信息 参 数:x--位置的列坐标 y--位置的行坐标 返回值 :无 ********************************************/ void LocateXY(uchar x,uchar y) { uchar temp; } /******************************************* 函数名称:Disp1Char 功 能:在某个位置显示一个字符 参 数:x--位置的列坐标 y--位置的行坐标 data--显示的字符数据 返回值 :无 ********************************************/ void Disp1Char(uchar x,uchar y,uchar data) { } /******************************************* 函数名称:LcdReset 功 能:对1602液晶模块进行复位操作 LocateXY( x, y ); LcdWriteData( data ); temp = x&0x0f; y &= 0x01; if(y) temp |= 0x40; //如果在第2行 temp |= 0x80; LcdWriteCommand(temp,1); } x = 0; } y ^= 1; 34