51单片机数控步进直流稳压电源程序

2019-03-21 18:24

文章导读:本程序为51单片机数控步进直流稳压电源程序,实现数控步进直流稳压电源的功能。

//SPI传送数据子程序

void SPILED(data) {

SSPBUF=data; // 启动发送 do { ;

}while(SSPIF==0); SSPIF=0; }

//显示子程序

void display() {

SPIINIT(); //spi方式显示初始化 RA5=0; //准备锁存

for(COUNTW=0;COUNTW<4;COUNTW++) { data=s[COUNTW];

if(COUNTW==1) data=table0[data];//第二位需要显示小数点 else data=table[data];

SPILED(data); //发送显示段码

}

for(COUNTW=0;COUNTW<4;COUNTW++){ data=0xFF;

SPILED(data); //连续发送4个DARK,使显示看起来好看一些 }

RA5=1; //最后给一个锁存信号,代表显示任务完成 }

//I2C总线输出数据子程序

void i2cout() {

i2cint(); //因为SPI输出和I2C输出不能同时工作,则需要 //不断在两种方式见切换

SEN=1; //产生I2C启动信号

for(i=0x02;--i;) continue; //给予一定的延时,保证启动 do {

RSEN=1; //产生I2C启动信号

}while(SSPIF==0); //如果没能启动,则反复启动,直到启动为止 SSPIF=0; //SSPIF标志清0

SSPBUF=0X58; //I2C总线发送地址字节 do { ;

}while(SSPIF==0); //等待地址发送完毕

SSPIF=0; //SSPIF标志清0

SSPBUF=0X01; //I2C总线发送命令字节 do { ;

}while(SSPIF==0); //等待命令发送完毕 SSPIF=0; //SSPIF标志清0

SSPBUF=TXDATA; //I2C总线发送数据字节 do { ;

}while(SSPIF==0); //等待数据发送完毕 SSPIF=0; //SSPIF标志清0 PEN=1; //产生停止条件

do { ;

}while(SSPIF==0); //等待停止条件产生 SSPIF=0; //SSPIF标志清0 }

//步进加子程序

void BJADD() {

R1++;

TXDATA=TXDATA+2; if(R1>9) { R1=0; R2++; if(R2>9) { R2=0; R3++;

} }

if((R3==1)&&(R2==2)&&(R1==1)){ R3=0; R2=0;

R1=0; //若R3,R2,R1超过120,则又从0计起 TXDATA=0;

}

sfz(); //把需要显示的数字装入显示缓冲数组 }

//步进减子程序

void BJSUB() {

R1--;

TXDATA=TXDATA-2; if(R1==0XFF) {

R1=9; R2--; if(R2==0XFF) { R2=9; R3--;

if(R3==0XFF) { R3=1; R2=2;

R1=0;//若R3,R2,R1小于0,则又从120计起 TXDATA=0XF0;

} } }

sfz(); //把需要显示的数字装入显示缓冲数组 }

//主程序

main() {

initial(); //系统各寄存器初始化 display(); //调用一次显示子程序

while(1) {

i2cout(); //调用I2C子程序,启动D/A转换 KEYSCAN(); //键盘扫描

keyserve() ; //若确实有键按下,则调用键服务程序

if(BJF==0X01) BJADD();//若步进加标志为1,则调用步进加子程序 else BJSUB(); //若步进加标志为0,则调用步进减子程序 display(); //调用一次显示子程序 }


51单片机数控步进直流稳压电源程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:横街小学心理健康教育主题月活动计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: