直流电子负载的设计
88常熟理工学院学报(自然科学)
2011年
功率进行控制,同时对电压和电流参数进行显示.程序采用数据环形缓冲技术,当有中断服务程序出现时,程序会把读到的值存放到一个环形缓冲队列中,主程序不停的查询环形缓冲队列中是否有中断服务程序的出现,若有,则按顺序读程序并处理.程序起始段定义了电压采集函数、电流采集函数、显示函数、定时初始化函数、定时器中断函数和采集数据存入的数组,以方便主程序调用,具体代码及其功能如下:
#include<pic.h>__CONFIG(0x1ffe);__IDLOC(0000);
//烧写配置位
constunsignedcharTABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,图4功率控制原理图(ATMEG8芯片外设电路)
0X82,0XF8,0X80,0X90};//定义常数0-9的数据表格
voidadinitial_voltage(void);//电压采集函数,可在IDE内将浮点数配置为32位以提高显示精度.系统默认为24位
voidadinitial_current(void);//电流采集函数voiddisplay(unsignedint);voiddelay(unsignedcharx);
bank1unsignedcharmax=0,min=0,i=0,K=15,L=15,M=15,DIS=0x7f;bank1unsignedlongsum=0,timesit=0;bank1unsignedintcurrent=0,voltage=0;
unsignedcharAD_data[70]={0,0,0,0,0,0,0,0,0,0};//AD采集存入数组voidtmint(void);
//定时初始化函数.
//定时器中断函数
//定时初始化函数
voidinitial();//系统初始化voidinterruptclkint(void);voidtmint(void){
asm("clrwdt");T0CS=0;PSA=0;PS2=1;
256分频
PS1=1;PS0=1;T0IF=0;T0IE=1;
}
主程序流程图如图5:
//T0IF是TMR0溢出中断标志位,当其=1//T0IE是TMR0溢出中断允许位当其=1
//显示函数
其中定时初始化函数编程代码及其功能如下:
//T0CS是TMR0的时钟源选择位,当其=1时是用RA4(T0CKI)的外部//PSA是预分频器分配位,当其=1预分频
输入时钟,当其=0时是用内部指令周期时钟(CLKOUT)器分配给WDT,当其=0时预分频器分配给Timer0模块
//PS2:PS1:PS0:预分频比选择位111是
时TMR0寄存器已经溢出(必须用软件清零),当其=0时寄存器尚未发生溢出时允许TMR0溢出中断,当其=0时禁止TMR0溢出中断
图5主程序流程图
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新资格考试认证直流电子负载的设计(3)全文阅读和word下载服务。
相关推荐: