好文档 - 专业文书写作范文服务资料分享网站

电能无线传输装置论文

天下 分享 时间: 加入收藏 我要投稿 点赞

负载输出:直流

16

附件四 程序:

/********************************************************************

//MSP430单片机内部12位ADC,采用内部2.5V基准,单通道单次转换,中断模式 //最大显示量2.50V,12864显示结果,单位为V //调试环境:EW430 V5.30

********************************************************************/ #include #include \

static uchar Flag; //标志变量

uint temp1; //ADC值暂存变量 float temp;

unsigned char bank[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; //十个数字的ASCII码

//*********************************************************************** // LCD端口初始化

//*********************************************************************** void LCD_Port_Init(void)

{ P4SEL=0x00; //普通IO口 P4DIR=0xFF; //输出方向 P5SEL=0x00; //普通IO口

P5DIR|=0xE3; //P5.0,P5.1,P5.5,P5.6,P5.7为输出方向 P5OUT|=BIT0; //PSB置1,液晶并口方式 P5OUT|=BIT1; //复位脚RST置高 }

//*********************************************************************** // 显示屏命令写入函数

//*********************************************************************** void LCD_write_com(unsigned char com)

{ RS_CLR; //P5OUT &= ~BIT5 RS置低 RW_CLR; //P5OUT &= ~BIT6 RW置低 EN_SET; //P5OUT |= BIT7 E置高 DataPort=com; //P4OUT P4口为数据口 delay_ms(5);

EN_CLR;} //P5OUT &= ~BIT7 E置低

//*********************************************************************** // 显示屏数据写入函数

//*********************************************************************** void LCD_write_data(unsigned char data)

{ RS_SET; //P5OUT |= BIT5 RS置高 RW_CLR; //P5OUT &= ~BIT6 RW置低 EN_SET; //P5OUT |= BIT7 E置高 DataPort=data;

delay_ms(5);

EN_CLR;} //P5OUT &= ~BIT7 E置低

17

//*********************************************************************** // 显示屏初始化函数

//*********************************************************************** void LCD_Screan_Init(void)

{ LCD_write_com(FUN_MODE); //显示模式设置(0x30)工作模式:8位基本指令集

delay_ms(5);

LCD_write_com(FUN_MODE); //显示模式设置 delay_ms(5);

LCD_write_com(DISPLAY_ON); //显示开(0x0c)显示游标,且游标位置反白 delay_ms(5);

LCD_write_com(CLEAR_SCREEN); //清屏(0x01)清屏指令:清屏且AC值为00H

delay_ms(5);}

//*********************************************************************** // 显示屏清空显示

//*********************************************************************** void LCD_clear(void) {LCD_write_com(0x01); delay_ms(5);}

//*********************************************************************** // 显示CGROM里的汉字

//*********************************************************************** void DisplayCgrom(uchar addr,uchar *hz) { LCD_write_com(addr); delay_ms(5);

while(*hz != '\\0') { LCD_write_data(*hz); hz++;

delay_ms(5);} }

//**************************************************************** //函数名称:Display()显示汉字

//**************************************************************** void Display(void)

{ DisplayCgrom(0x80,\通道0:\ DisplayCgrom(0x88,\通道1:\

//*********************************************************************** // 显示电压值值

//*********************************************************************** static void Lcd_Show(char adress,float data) { int idata;

float fdata; //将浮点数分拆成整数部分和小数部分 idata=(int)data; //整数部分 fdata=data-idata; //小数部分

LCD_write_com(adress); //设定显示地址

18

LCD_write_data(bank[idata]);

delay_ms(5); //不加延时的时候,小数点前一位一直闪 LCD_write_data(0x2E); //小数点 LCD_write_data(bank[(int)(fdata*10)]);

LCD_write_data(bank[(int)(fdata*100)]); LCD_write_data(bank[(int)(fdata*1000)]); }

//************************************************************************* // ADC初始化程序,用于配置ADC相关寄存器

//************************************************************************* void ADC_Init(void)

{ P6SEL|=0x01; //选择ADC通道,设置对应IO口的功能模式

ADC12CTL0|= ADC12ON + SHT0_2 +REFON+REF2_5V; //ADC电源控制开,16个CLK,内部基准2.5V

ADC12CTL1|= ADC12SSEL1 + ADC12SSEL0; //SMCLK做时钟源

ADC12MCTL0=SREF_1+INCH_0; //参考控制位及通道选择 ADC12IE|= 0x01; //中断允许 ADC12CTL0|= ENC;} //使能转换器 /*********************************************************** 启动ADC12

************************************************************/ void start_ADC12(void) { while(Flag==1)

{ADC12CTL0|=ADC12SC;

ADC12CTL0&=~ADC12SC; //清零 Flag=0;} }

//************************************************************************* // ADC中断服务程序

//************************************************************************* #pragma vector=ADC_VECTOR __interrupt void ADC12ISR(void)

{while((ADC12CTL0&0x01)==1); //如果ADC忙,则等待,否则读取ADC转换数值 Flag=1;

temp1=ADC12MEM0; //读取ADC转换值

temp=(temp1)*2.45/4095; //转换公式,ADC数字量转换为电压大小,注意数据类型

} //实际中的VREF+为2.45V

//*********************************************************************** // 主程序

//*********************************************************************** void main(void)

{ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 Clock_Init(); //时钟初始化

LCD_Port_Init(); //液晶端口初始化

19

LCD_Screan_Init(); //液晶参数初始化 LCD_clear(); //清屏

ADC_Init(); //初始化ADC12 _EINT(); //开总中断 Flag=1; //标志位先置1

while(1)

{ for(int i=0;i<0xffff;i++);

start_ADC12(); //启动ADC12 Display(); //显示汉字 Lcd_Show(0x83,temp); } }

//显示电压 20

电能无线传输装置论文

负载输出:直流16附件四程序:/********************************************************************//MSP430单片机内部12位ADC,采用内部2.5V基准
推荐度:
点击下载文档文档为doc格式
8cdr50f0i6570pk9t8239nplx1m54t00am1
领取福利

微信扫码领取福利

微信扫码分享