版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
百度文库-百度文库-好好学习,天天向上#8051f10A50A10A1a1a1a100”19f19f19f1A1A8051f700/10/2//定义太阳能电池组件是否满足充电条件的阀值,对地一个二极管压降,并十分之一分压externbitpvnor_f; //定义太阳能电池组件是否达到充电条件externbitover_curr_f; //定义过流标志externunsignedchargled_dcode;//绿色发光二极管工作代码externunsignedcharcharcon_t;externsignedintccubat;externunsignedintupv;externunsignedintubat;externsignedchartempf; //定义温度externunsignedchardiode_t;//防反充二极管控制时标externsignedcharad_temp(void); //环境温度采集函数sbit DIODE= P1A4; 〃定义防反充二极管控制端sbit YLED=P0A7;〃加电时,PCA0CPH0初始化值为0,此时PWM输出的占空比为100%,此时充电控制管截止最大(充电电流最小)〃当PCAOCPHO的值最大为255时,输出的占空比为最小为%,如需继续减小占空比,PCA0CPM0的值将变化。充电控制管导通最大voidchar_contr(void){if(charcon_t>5){charcon_t=0;//浮充控制过程ccubat=0;tempf=ad_temp(); //采集环境温度ccubat=ubat+tempf-25;//浮充电电压温度补偿if(ccubat>FLLOCHAR){if(PCA0CPH0!=0){PCA0CPH0--;} //蓄电池电压大于浮充电压,应减小充电电流,充电控制管T1导通〃减小,Q1,Q16Tl导通增加,PWM占空比增加}if(ccubat<FLLOCHAR){ if(PCA0CPH0!=255){PCA0CPH0++;}〃PWM占空比减小,Q1,Q16T1导通减小,//T1导通增加,加大充电电流。else{if(PCA0CPM0==0x42){PCA0CPM0=0x02;}〃占空比不能进一步减小时并且PWM是开着的关断PWM}}}//以下为充电状态显示及负载过电流显示处理if(over_curr_f==0){YLED=0;if(pvnor_f==0){gled_dcode=03;} //如果太阳能电池组件标志不正常,错误代码为没有接入else{if(PCA0CPH0>253){gled_dcode=01;}//太阳能电池正常,PWM点空比小,组件电流全部充到蓄电池为快充else{gled_dcode=02;} //太阳能电池正常,蓄电池电压接近或大于浮充电压,为浮充。}}else{YLED=1;}}voiddiode_con(void)//防反充二极管控制,每10秒钟开启50毫秒{if(upv<PVNOR){pvnor_f=1;}if(upv>PVNOR+5){pvnor_f=0;}//此二条指令用于判断太阳能电池组件是否满足充电条件。if(pvnor_f==1){if(diode_t>=200&&DIODE==0){diode_t=0;DIODE=1;}if(diode_t>=1&&DIODE==1){diode_t=0;DIODE=0;}}else{DIODE=1;}//如果太阳能电池组件没有达到充电条件关断防反充二极管///////////////////////////////////////Config2CodeConfigurationFile///////////////////////////////////////#include"8051f"//Peripheralspecificinitializationfunctions,//CalledfromtheInit_Device()functionvoidReset_Sources_Init()inti=0;VDM0CN=0x80;for(i=0;i<120;i++);//Wait100usforinitializationRSTSRC=0x02;}voidPCA_Init(){PCA0CN=0x40;PCA0MD&=~0x40;PCA0MD=0x04;PCA0CPM0=0x42;}voidPort_IO_Init(){// -Skipped,Open-Drain,Analog//CEX0(PCA),Push-Pull,Digital
////-Unassigned,Push-Pull,Digital//-Skipped,Open-Drain,Analog//-Skipped,Open-Drain,Analog//-Skipped,Open-Drain,Analog//-Unassigned,Push-Pull,Digital//-Unassigned,Push-Pull,Digital//-Unassigned,Push-Pull,Digital//-Unassigned,Push-Pull,Digital//-Unassigned,Push-Pull,Digital//-Unassigned,Open-Drain,Digital//-Unassigned,Push-Pull,Digital//-Unassigned,Open-Drain,Digital//-Unassigned,Open-Drain,Digital//-Unassigned,Open-Drain,DigitalP0MDIN=0xC6;P0MDOUT =0xC6;P1MDOUT =0x17;P0SKIP=0x39;XBR1=0x41;}voidTimer_Init(){TCON =0x10;TMOD =0x02;TH0=0xCE;TMR2CN =0x04;TMR2RLL =0x85;TMR2RLH =0xCE;TMR3CN =0x04;TMR3RLL =0x80;TMR3RLH =0xFC;}voidADC_Init(){AMX0N =0x11;ADC0CF =0x10;ADC0CN =0x80;}voidVoltage_Reference_Init(){REF0CN=0x07;}voidInterrupts_Init(){IE =0xA0;EIE1 =0x80;}//Initializationfunctionfordevice,//CallInit_Device()fromyourmainprogramvoidInit_Device(void){Reset_Sources_Init();PCA_Init();Port_IO_Init();Timer_Init();ADC_Init();Voltage_Reference_Init();Interrupts_Init();}#include"8051f"unsignedintcode*light_r; //用于程序代码加密的读变量voidflash_w(unsignedintaddr,unsignedcharx){unsignedcharxdata*key_w;〃申请一个写操作时指向FLASH的指针变量EA=0;key_w=addr;PSCTL=0x03;//PSCTL=0x01;//FLKEY=0xA5;//FLKEY=0xF1;//*key_w=x; //保存数据PSCTL=0x00;//保存代码完成EA=1;}voidflash_e(unsignedintaddr){unsignedcharxdata*key_w;〃申请一个写操作时指向FLASH的指针变量key_w=addr;//EA=0;PSCTL=0x02;//PSCTL=0x03;//FLKEY=0xA5;//FLKEY=0xF1;//*key_w=0x00; //PSCTL=0x00;//擦除存储空间EA=1;}unsignedcharflash_r(unsignedintaddr){unsignedcharcode*key_r;//申请一个读操作时指向FLASH的指针变量unsignedchartemp;key_r=addr;temp=*key_r;return(temp);}voidkeyflash(void)//程序代码自动锁定过程{unsignedcharxdata*key_w;//申请一个写操作时指向FLASH的指针变量unsignedcharcode*key_r;//申请一个读操作时指向FLASH的指针变量key_r=0x1df0;if(*key_r==0xff){ EA=0;key_w=0x1dff;//PSCTL=0x03;//PSCTL=0x01;//FLKEY=0xA5;//FLKEY=0xF1;//*key_w=0xfd;//PSCTL=0x00;//key_w=0x1df0;PSCTL=0x03;//PSCTL=0x01;//FLKEY=0xA5;//FLKEY=0xF1;//*key_w=0xfd;//PSCTL=0x00;//保存代码EA=1;〃以下为当程序代码第一次执行对FLASH写入默认值255,〃否则负载驱动端口输出电压为V,使人误以为CPU损坏〃当FLASH写入操作出错时也有可能出现上述现象,可重定数据试之。flash_w(0x1a00,255);flash_w(0x1a01,0);}///////////////////////////////////////Config2CodeConfigurationFile/////////////////////////////////////////所有模拟量取4次测量值的平均值#include"8051f"//P0八2为负载电流采样//P01为蓄电池电压采样〃P0八5为太阳能电池组件电压采样signedcharad_temp(void){ //该温度转换函数连续对温度进行8次采集,取8次的平均值,〃求解温度的工式为:Temp=(CODE-K1)*K2〃其中:K1=*Gain/Vref*2A16=*1/*65536=21190// K2=1/*Gain/Vref*2A16)=1/*1/*65536)=839/65536//程序中使用的基准电压的参数为unsignedchari;signedlongtempf_ad;signedchartemp;ADC0CF=0乂14;//进入该函数将AD转换器设置为左对齐方式AMX0P=0x10;//本次转换启温度转换tempf_ad=0;AD0INT=0;/^除中断标志for(i=0;i<4;i++){AD0BUSY=1;//启动转换while(AD0INT==0){}AD0INT=0;//清除中断标志//等待转换结束tempf_ad=tempf_ad+ADC0H*256+ADC0L;//取得电流}tempf_ad=tempf_ad>>2; //对累加结果除8tempf_ad=tempf_ad-20928;//修正到0度tempf_ad=tempf_ad*850; //摄氏度tempf_ad=tempf_ad>>16;//temp=tempf_ad;if(temp>47){temp=47;}if(temp<-10){temp=-10;}ADC0CF=0x10;//退出该函数将AD转换器设置为右对齐方式return(temp);//程序与说明中的常数略有不同,是由于说明中,使用的基准电压为,程序中是按进行计算,//所以在实际使用时,应按芯片的实际基准电压进行计算,而且不同的基准电压得到的结果相差较大,//*********需要加以注意}unsignedintad_ubat(void){unsignedchari;unsignedinttemp_ad;AMX0P=0x03;//本次启动蓄电压转换temp_ad=0;for(i=0;i<8;i++){AD0BUSY=1;//启动转换while(AD0INT==0){}AD0INT=0;//清除中断标志//等待转换结束temp_ad=temp_ad+ADC0H*256+ADC0L;//W得蓄电池电压}temp_ad=temp_ad>>2;return(temp_ad);}unsignedintad_upv(void){unsignedchari;unsignedinttemp_ad;AMX0P=0x04;//本次启动太阳能电池电压转换temp_ad=0;for(i=0;i<2;i++){AD0BUSY=1;//启动转换while(AD0INT==0){}AD0INT=0;//清除中断标志//等待转换结束temp_ad=temp_ad+ADC0H*256+ADC0L;//取得太阳能电池组件电压temp_ad=temp_ad/2;//太阳能电池组件电压取平均值//*****************恢复ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026安永面试题库及答案
- 工程机械租赁业务员班组评比竞赛考核试卷含答案
- 2-7.项目二-人工智能+智慧生活:智能语音客服-任务三 智能语音客服
- 非银行金融行业A股上市保险2026年一季报综述:价值持续兑现业绩分化加剧
- 钛冶炼工安全应急知识考核试卷含答案
- 金属炊具及器皿制作工诚信品质知识考核试卷含答案
- 2026安全工作面试题及答案
- 公路水运工程试验检测员安全宣贯竞赛考核试卷含答案
- 硬质合金烧结工安全生产基础知识能力考核试卷含答案
- 图书馆服务员操作规程考核试卷含答案
- 直播间设备搭建及管理指南
- DR体位操作技术规范与临床应用
- 禁烧秸秆班会课件
- 口腔扁平苔藓病例汇报
- 小班语言《自己的事情自己做》课件
- 2025年河北省高考招生统一考试高考真题政治试卷(真题+答案)
- 钢铁冶金企业设计防火标准
- 2025年高级卫生专业技术资格考试超声医学(036)(副高级)试题及解答参考
- 2024年西藏初中学业水平考试数学卷试题真题(含答案详解)
- SH∕T 3097-2017 石油化工静电接地设计规范
- 新疆维吾尔自治区新疆生产建设兵团二中2025届高一数学第二学期期末联考试题含解析
评论
0/150
提交评论