数控电源程序.docx

上传人:b****1 文档编号:2421257 上传时间:2022-10-29 格式:DOCX 页数:14 大小:16.79KB
下载 相关 举报
数控电源程序.docx_第1页
第1页 / 共14页
数控电源程序.docx_第2页
第2页 / 共14页
数控电源程序.docx_第3页
第3页 / 共14页
数控电源程序.docx_第4页
第4页 / 共14页
数控电源程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数控电源程序.docx

《数控电源程序.docx》由会员分享,可在线阅读,更多相关《数控电源程序.docx(14页珍藏版)》请在冰豆网上搜索。

数控电源程序.docx

数控电源程序

#include

#include

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

#defineucharunsignedchar

#defineuintunsignedint

//-------------------——————————————--------

//LCD

#defineLCM_RS_1PORTD|=4

#defineLCM_RS_0PORTD&=~4

#defineLCM_RW_1PORTD|=2

#defineLCM_RW_0PORTD&=~2

#defineLCM_EN_1PORTD|=1

#defineLCM_EN_0PORTD&=~1

#defineDATA_PORTBPORTB

//**************DA5630****************//

#defineDA_DIN_1PORTA|=BIT(4)

#defineDA_DIN_0PORTA&=~BIT(4)

#defineDA_SCLK_1PORTA|=BIT(5)

#defineDA_SCLK_0PORTA&=~BIT(5)

#defineDA_FS_1PORTA|=BIT(6)

#defineDA_FS_0PORTA&=~BIT(6)

#defineDA_LDAC_1PORTA|=BIT(3)

#defineDA_LDAC_0PORTA&=~BIT(3)

#defineDA_DDR_1DDRA|=0X78

#defineDA_DDR_0DDRA&=0X87

uchartab[]={"0123456789"};

uintadc_rel;

uchardatah,datal;

uintU[],I[];

uintU_l,U_h,U_real,U_out,I_l,I_h,I_real,I_out,limit_U=10000,limit_I=10000;

 

voiddelay(void)

{

uchari,j;

for(i=0;i<200;i++)

for(j=0;j<200;j++);

}

 

uintlcd_buzy()

{

uintresult;

LCM_RS_0;_NOP();_NOP();

LCM_RW_1;_NOP();_NOP();

LCM_EN_1;_NOP();_NOP();

delayns

(1);

DDRB=0X00;_NOP();_NOP();

if((PINB&0x80)==0x80)result=1;

elseresult=0;

LCM_EN_0;

DDRB=0XFF;

returnresult;

}

 

voidlcd_w_order(unsignedcharcmd)

{

while(lcd_buzy());//判断LCD是否忙碌

LCM_RS_0;_NOP();_NOP();

LCM_RW_0;_NOP();_NOP();

LCM_EN_1;_NOP();_NOP();

DATA_PORTB=cmd;

LCM_EN_0;_NOP();_NOP();

}

voidlcd_w_data(uchardat)

{

while(lcd_buzy());//判断LCD是否忙碌

LCM_RS_1;_NOP();_NOP();

LCM_RW_0;_NOP();_NOP();

LCM_EN_1;_NOP();_NOP();

DATA_PORTB=dat;

 

LCM_EN_0;_NOP();_NOP();

}

voidlcd_post(unsignedcharpos)

{

lcd_w_order(pos|0x80);

}

voidlcd_init()

{

lcd_w_order(0x38);//显示模式设置

lcd_w_order(0x0c);//显示光标设置,开显示

lcd_w_order(0x06);//显示光标移动(右移)

lcd_w_order(0x01);//清屏

}

voiddelayns(uinttime)

{

unsignedchari;

for(;time>0;time--)

for(i=0;i<250;i++);

}

 

voidadc_U_init(void)//模数转换初始化子函数

{//模数转换初始化子函数开始

ADCSRA=0xE7;//ADC工作在自由转换模式

ADMUX=0xc7;//选择ADC输入通道为7

}//模数转换初始化子函数结束

uintADC_U_Convert(void)//模数转换子函数

{uinttemp1,temp2;//定义无符号整型局部变量

temp1=(uint)ADCL;//取得模数转换值

temp2=(uint)ADCH;

temp2=(temp2<<8)+temp1;

return(temp2);//返回取得的模数转换值

}

uintADC_I_Convert(void)//模数转换子函数

{uinttemp1,temp2;//定义无符号整型局部变量

temp1=(uint)ADCL;//取得模数转换值

temp2=(uint)ADCH;

temp2=(temp2<<8)+temp1;

return(temp2);//返回取得的模数转换值

}

voidconv_U(void)//数据转换子函数,定义i为无符号整型变量

{

longx,y;//定义无符号长整型局部变量

//uinty;//定义无符号整型局部变量

x=5*2588*(unsignedlong)(U_l);///1024;//将变量i转换成需要显示的形式

x>>=18;

y=5*2588*(unsignedlong)(U_h);

y>>=13;

U_real=(uint)(x+y);//将无符号长整型变量x强制转换成无符号整型变量y

//return(y);//返回y的值

}

voidadc_I_init(void)//模数转换初始化子函数

{//模数转换初始化子函数开始

ADCSRA=0xE7;//ADC工作在自由转换模式

ADMUX=0xc0;//选择ADC输入通道为0

}//模数转换初始化子函数结束

 

voidconv_I(void)//数据转换子函数,定义i为无符号整型变量

{

longx,y;//定义无符号长整型局部变量

//uinty;//定义无符号整型局部变量

x=5*2588*(unsignedlong)(I_l);///1024;//将变量i转换成需要显示的形式

x>>=18;

y=5*2588*(unsignedlong)(I_h);

y>>=13;

I_real=(uint)(x+y);//将无符号长整型变量x强制转换成无符号整型变量y

//return(y);//返回y的值

}

 

//******************DA********************************//

voidDAC(ucharn,uintdat)

{

dat=(dat+(n<<12));

DA_send(dat);

delay();

DA_LDAC_0;

_NOP();_NOP();

DA_LDAC_1;

}

voidDA_ini()

{

DA_DDR_1;//DATA_DDRC|=0XF0;

//DATA_PORTC|=0XF0;

DA_send(0x800c);

delay();

DA_send(0x9000);

}

voidDA_send(uintdat)

{uchartemp;

DA_LDAC_1;_NOP();_NOP();

DA_FS_0;_NOP();_NOP();

DA_SCLK_1;_NOP();_NOP();

DA_FS_1;_NOP();_NOP();

DA_SCLK_0;_NOP();_NOP();

DA_FS_0;_NOP();_NOP();

for(temp=16;temp>0;temp--)

{

DA_SCLK_1;_NOP();_NOP();

if(dat&BIT(temp-1))DA_DIN_1;

elseDA_DIN_0;

DA_SCLK_0;

_NOP();_NOP();

}

DA_FS_1;_NOP();_NOP();

DA_SCLK_1;_NOP();_NOP();

delay();

}

//*************************显示函数**************************//

voiddisplay_U(uintnum)

{

ucharg,s,b,q,w;

uinttemp;

temp=num;

g=temp%10;

temp=(temp-g)/10;

s=temp%10;

temp=(temp-s)/10;

b=temp%10;

temp=(temp-b)/10;

q=temp%10;

temp=(temp-q)/10;

w=temp%10;

//lcd_post(0x82);

if(w==0)

lcd_w_data('');

else

lcd_w_data(tab[w]);

lcd_w_data(tab[q]);

lcd_w_data('.');

lcd_w_data(tab[b]);

lcd_w_data(tab[s]);

//lcd_w_data(tab[g]);

}

voiddisplay_I(uintnum)

{

ucharg,s,b,q,w;

uinttemp;

temp=num;

g=temp%10;

temp=(temp-g)/10;

s=temp%10;

temp=(temp-s)/10;

b=temp%10;

temp=(temp-b)/10;

q=temp%10;

temp=(temp-q)/10;

w=temp%10;

//lcd_post(0x42);

lcd_w_data(tab[w]);

lcd_w_data('.');

lcd_w_data(tab[q]);

lcd_w_data(tab[b]);

lcd_w_data(tab[s]);

//lcd_w_data(tab[g]);

}

ucharerror(ucharnum)

{

chartemp;

if(num==0)

{

if((U_real>limit_U)&&(U_real-lim

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1