简易直流电子负载设计_大学生电子设计竞赛论文(编辑修改稿)内容摘要:

5 图 3- 2 按键程序流程图 18 结论 设计的基于 pic16f877 单片机控制的电子负载,能够实现题目要求的基本功能,达到稳流的效果。 各个参数都能直观的在数码管上显示。 此电 子负载能很好的替代 传统的测试方法中一般采用的电阻、滑线变阻器、电阻箱等,更 简单、更快捷、更可靠地对电源、变压器、整流器等电子设备进行输出特性的测试。 但是,本设计还存在着很多不足,比如是功率消耗型器件,希望能在以后能改善这方面的缺陷。 此次设计的电子负载,从最开始的资料搜集,到电路的设计;从最开始的元件选型,到电路板的焊接,再到现在的实物的整体调试……在我组 3 位成员的共同努力下克服重重困难,最后走向成功。 遗憾时间的仓促,此次设计存在很多有待改进的方方面面,更存在很多低级的错漏和失误的地方。 我们会在今后的学习 过程中不断努力,不断进步。 参考文献 19 参考文献 [1]孙安青著 PIC系列单片机开发实例精解 中国电力出版社 2020 [2] 徐爱钧著 智能化测量控制仪表原理与设计 北京航空航天大学出版社 2020 [3] 段尚枢著 运算放大器应用基础 哈尔滨工业大学出版社 1998 [4] 沙占友著 集成化智能传感器原理与应用 电子工业出版社 2020 [5] 赖寿宏著 微型计算机控制技术 机械工业出版社 1994 [6] 通用集成电路速查手册 [7] [8] 21 附录 1:电子负载设计程序 include define uchar unsigned char define uint unsigned int typedef unsigned rom const char ROM。 unsigned char UPKeyFlag。 unsigned char DOWNKeyFlag。 unsigned char YXCKMS。 unsigned char t_data。 //unsigned char ADFlag。 // A/D转换完毕标志变量 unsigned int DLFK。 unsigned int DYFK。 unsigned int DLGD。 unsigned int data1=0。 unsigned int data2=0。 unsigned int data3=0。 unsigned int sp。 unsigned int PID_RESULT。 unsigned int Freq。 //unsigned char GZBZ_data。 float S_PID,S_PIDF。 float LB_data,LBP_data,LBA_data。 int E_PID。 int tzl。 /*********************************************************************************************/ union adrs { int y1。 unsigned char adre[2]。 }adresult。 /**************************************************************************************************/ define CLRWDT _asm CLRWDT _endasm define RSFX define RS define RWFX define RW define EFX define E 22 define ADDFX //S1 define ADD define SHIFTFX //S2 define SHIFT define MENFX //S3 define MEN define UPFX //S4 define UP define DOWNFX //S5 define DOWN define SDDLFX //S6 define SDDL /******************************************************/ define FirstLineStart 0x80 define SecondLineStart 0x90 define ThirdLineStart 0x88 define FourthLineStart 0x98 define COM 0 define DAT 1 define TIMERCOUNT 1400 /****************显示设置 *************************/ ROM SD[]={设定 }。 ROM DY[]={电压 }。 ROM DL[]={电流 }。 ROM TZ[]={占空比 }。 ROM TZL[]={调整率 }。 ROM HY[]={电子设计 }。 ROM GZ[]={过载 }。 ROM FS[]={%}。 ROM MA[]={mA}。 ROM V[] ={mV}。 ROM YI[]={1}。 ROM ER[]={2}。 ROM SA[]={3}。 ROM SI[]={4}。 ROM WU[]={5}。 ROM LI[]={6}。 ROM QI[]={7}。 ROM BA[]={8}。 ROM JI[]={9}。 ROM SH[]={0}。 ROM KO[]={.}。 uchar count。 unsigned int sd=10。 unsigned int dl=0。 unsigned int dy=0。 23 unsigned int tz=0。 //float char wq=4。 uchar asd[4]。 uchar adl[4]。 uchar ady[5]。 uchar atz[4]。 /***************************************** 函 数 定 义********************************************/ void PIC18_HIGHT_ISR(void)。 void PIC18_LOW_ISR(void)。 void PWM_TJ(void)。 /******************************* 中断********************************************************/ pragma code hight_vector_section = 0x08 void hight_vector(void) { _asm goto PIC18_HIGHT_ISR _endasm } pragma code low_vector_section = 0x18 void low_vector(void) { _asm goto PIC18_LOW_ISR _endasm } pragma code pragma interrupt PIC18_HIGHT_ISR void PIC18_HIGHT_ISR() { if(==1) { =0。 if(count60) { count=0。 } else count++。 TMR0H=(65536TIMERCOUNT)/256。 TMR0L=(65536TIMERCOUNT)%256。 } } pragma interrupt PIC18_LOW_ISR void PIC18_LOW_ISR() { if( ==1) { =0。 if(t_data2) { 24 sp=1。 t_data=0。 } else t_data++。 TMR1H = 0x00。 TMR1L = 0x06。 } } /************************************** 延 时 函 数*********************************************************/ /***********************************************************************************************/ void Delayus(uchar x) { uchar i。 while(x){ for(i=5。 i0。 i) {。 } } } void Delayms(uchar x) { uchar i。 while(x){ //delay 1ms for(i=10。 i0。 i){ char j。 j=count。 while(1){ //delay 100us if(countj) break。 } } } } void Delay10ms(uchar x) { 25 while(x){ Delayms(10)。 } } void Delays(uchar x) { uchar i。 while(x){ Delay10ms(100)。 } } /*********************************************************************************************/ void WrLCD(uchar datam,uchar content) { uchar discontent,i,j。 Delayus(200)。 discontent=content。 RS=1。 //前 5个同步码 E=0。 RW=1。 for(i=5。 i0。 i){ E=1。 E=0。 } //写指令位 RW RW=0。 E=1。 E=0。 // RSData or Instruction code if(datam) RW=1。 //data else RW=0。 //mand E=1。 E=0。 RW=0。 E=1。 E=0。 26 for(j=2。 j0。 j){ for(i=4。 i0。 i){ discontent=discontent1。 RW=。 //Status 寄存器中的进位标志 E=1。 E=0。 } RW=0。 for(i=4。 i0。 i) { E=1。 E=0。 } } } void Clrram(void) { WrLCD (COM,0x30)。 WrLCD (COM,0x01)。 De。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。