基于单片机的数控电流源的设计论文(编辑修改稿)内容摘要:

6 结论与展望 本文结合各种新技术设计出一种基于单片机芯片 STC89C52 的数控直流恒流源。 对该恒流源的测量结果表明,该恒流源具有较高的精度和稳定度,基本满足设计要求。 具体的研究成果和结论如下: ,具体包括 A/D 转换电路的设计,键盘输入及输出显示等。 该恒流源实现了键盘输入预置值, LCD 显示输出预置值和实际输出值的功能 ,精度和稳定度都比较高。 PWM 控制算法,增量式控制虽然只是算法上作了一点改进,却带来了不少优点: (1)算式中不需要累加。 控制增量 Δu(k)的确定仅与最近 3 次的采样值有关,容易通过加权处理获得比较好的控制效果; (2)计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响范围小、不会严重影响生产过程。 本系统在软 硬件设计上仍然有很多需要完善之处。 进入 21 世纪,随着信息技术一日千里的发展,恒流源也必将经历由模拟恒流源向数字恒流源过渡的这一历程。 特别是计算机技术的发展必将出现智能化技术。 因此,如何把数字技术和智能化技术用于制作高稳定度的恒流源就将成为 21 世纪的新课题。 15 作品程序: include define uchar unsigned char define uint unsigned int define V_TH0 255 define V_TL0 255 define V_TMOD 0x01 uchar code table[]=I LOVE SAST!。 uchar code table1[]=I LOVE NJUPT!。 uchar code table2[]=Constant Current。 uchar table3[]=150 mA。 uchar code table4[]=error!。 uchar code table5[]=Please set again。 sbit lcden=P1^4。 //液晶使能端 sbit lcdrs=P1^0。 //液晶数据命令选择端 sbit P3_7=P3^7。 sbit P1_2=P1^2。 unsigned char ZKB1,ZKB2。 uchar num,flag=0。 void delay(uint z) { uint x,y。 for(x=z。 x0。 x) for(y=110。 y0。 y)。 } void write_(uchar ) { lcdrs=0。 P0=。 delay(5)。 lcden=1。 delay(5)。 lcden=0。 } void write_data(uchar date) { lcdrs=1。 P0=date。 delay(5)。 lcden=1。 delay(5)。 lcden=0。 } void init() 16 { lcden=0。 write_(0x38)。 //设置 16X2显示 ,5X7点阵 ,8位数据接口 write_(0x0c)。 //设置开显示 , 不显示光标 write_(0x06)。 //写一个字符后地址指针加 1 write_(0x01)。 //显示清零 , 数据指针清零 write_(0x80)。 for(num=0。 num12。 num++) { write_data(table[num])。 delay(5)。 } write_(0x80+0x40)。 for(num=0。 num13。 num++) { write_data(table1[num])。 delay(5)。 } delay(500)。 write_(0x01)。 delay(200)。 write_(0x80)。 for(num=0。 num16。 num++) { write_data(table2[num])。 delay(5)。 } write_(0x80+0x40)。 for(num=0。 num6。 num++) { write_data(table3[num])。 delay(5)。 } } void displayI() { write_(0x80+0x40)。 for(num=0。 num6。 num++) { write_data(table3[num])。 delay(5)。 } } void displayerror() 17 { write_(0x01)。 write_(0x40)。 for(num=0。 num6。 num++) { write_data(table4[num])。 delay(5)。 } write_(0x80+0x40)。 for(num=0。 num16。 num++) { write_data(table5[num])。 delay(5)。 } } void keyscan(uchar i) { uchar temp,key。 P2=0xfe。 temp=P2。 temp=tempamp。 0xf0。 if(temp!=0xf0) { delay(10)。 temp=P2。 temp=tempamp。 0xf0。 if(temp!=0xf0) { temp=P2。 switch(temp) { case 0xee: key=39。 139。 break。 case 0xde: key=39。 239。 break。 case 0xbe: key=39。 339。 break。 case 0x7e: key=39。 +39。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。