我将控制器的代码4部分,但是如果你想我把完整的代码,在这里,每一部分的代码的说明:
第1部分
我们的代码的第一部分是用来定义变量和常量,我们将定义为常数2端口的单片机(PIC12F675)一个太阳能电池板(GP5)和LED灯的另一个(GP2),之后我们将使用3个常数指定渠道(chpot,ADC的讲座切巴特和chstat)。然后,我们将定义ADC讲座4个变量,一个用于检测当天的状态(日/夜),2级和一个电池的电压参考值(对于建立低电池电量)。
常数
#定义面板gpio.f5
#定义该gpio.f2
#定义chpot 0
#切巴特1定义
#定义chstat 3
变量
国际lectstat = 0;
国际lectbat1 = 0;
国际lectbat2 = 0;
国际lectpot = 0;
第2部分
在我们的代码的第二部分,我们需要初始化单片机的端口和指定一些设置:
设置
安塞尔= 0x10;
adcon0 = 0x81;
cmcon = 0x07;
vrcon = 0x00;
初始化端口:
trisio F0 = 1;
trisio F1 = 1;
trisio F2 = 0;
trisio F3 = 1;
trisio F4 = 1;
trisio F5 = 0;
GPIO = 0;
3部分:
在我们的代码第三部分,研究的主要方法,我们需要建立控制器的行为在这一天,所以我们需要知道一天的情况,我们会通过阅读的太阳能电池板的电压,根据一些讲座,我做了,一个太阳能电池板一天,小于4V在夜间提供电压12V。我们将使用图书馆adc_read()读取电压,这个图书馆利用通道指定我们使用的端口,这就是为什么我们这些常数与在前面的步骤中的通道。阅读后,我们将使用一个电压如果知道一天的状态下,如果电压大于1.8V的阅读系统会检测天(我们使用这个电压值,控制器有电压因子,面板提供小于4V但单片机接收不到1.8V),如果电压读小于1.8V的夜晚。#p#分页标题#e#在了解了当天的情况我们将建立控制器的行为在这一天,我们要做的第一件事是看两电压,对电池和另一个电位器(鲍纳3299),我们需要知道这个值确定电池电量和坚固的Low Battery Range,后阅读这个我们要求一个如果有条件,如果电压读取电池比Low Battery Range少,系统将检测到的电池是低收费,(这就是为什么我们需要根据电池的满充电电压调节电位器的电压),如果单片机检测到低电池就会开始充电它,在这种情况下我们需要使用其他的指令去做另一读并在指定,如果电压低于3.9v(我使用这个值,因为这是我的电池提供的价值在完全充电)我们需要给电池充电。最后,我们的代码将看起来像这样:
ADC的讲座了解当天的状态
lectstat = adc_read(chstat);
天条件
日
如果(lectstat > 368){ // 368 = 1.8v
电池和Potentiometer读
adc_read(切巴特)lectbat1 =;
lectpot = adc_read(chpot);
低电池状态
如果(lectbat1
/ /低电池
面板= 1;//电池充电
小时= 0;// LED灯关闭
其他{ }
//读取电池的水平了
adc_read(切巴特)lectbat2 =;
电池充电直至其完成
如果(lectbat2<797){ // 982 = 3.9v
/ /中电池
面板= 1;//电池充电
小时= 0;//关闭LED灯
其他{ }
面板= 0;//满充电电池
小时= 0;//关闭LED灯
}
}
}
<em>注</em>:我们关掉灯因为我们指定的行为控制器的白天。
4部分:
我们的代码的最后一部分是关于指定控制器的行为在晚上,基本上是相同的行为,我们只需要打开LED灯,并指定是否在低水平收费我们关掉灯电池。我们的代码将看起来像这样:
一天的状态
/ /夜
如果(lectstat<368){ // 368 = 1.8v
电池电压与电位器的讲座
adc_read(切巴特)lectbat1 =;
lectpot = adc_read(chpot);
低电池模式
如果(lectbat1
/ /低电池
面板= 0;//关闭电池充电
小时= 0;//关闭LED灯
其他{ }
/ /二电池讲座
adc_read(切巴特)lectbat2 =;
如果(lectbat2<797){ // 797 = 3.9v
/ /中电池
面板= 0;//关闭电池充电
小时= 1;//打开LED灯
其他{ }
小时= 1;
面板= 0;//满充电电池
}
}
}
}
<em>注</em>:我们关掉灯在低电池节约能源和继续工作直到次日再次充电电池。我们不需要打开电池的充电晚上因为电压,太阳能电池板提供的太低,给它充电。
这就是我们的代码,我们只需要程序我们用PIC编程器PIC12F675加载HEX文件到它。