定时器共有4种定时方式,其中定时时间最长的为定时方式1。当定时器计数器在方式1下做定时器用时,其定时时间计算公式为:
TN计数初值晶振周期12
(33)
采用12M的晶振,晶振周期为112106S,因为采取定时器终端方式,所以N0XFFFF65536。所以:
T65536计数初值us
那么当T30ms计数初值为0X8AD035536。定时输出30ms其程序如下:voidmai
i
itialwhile1displayvoidtimer_t1i
terrupt3TH10X8A重新给定时器1赋值TL10XD0P1_4P1_4充放电变换ifP1_4充电开始时启动定时器0TL0TH00X00定时器0赋初值0TR01启动定时器0
12
(34)
f结
论
如图36,这里用INT0中断来监视记录电容变化,内部编程实现计时器对电容电压上升时间的记录,所以可以通过将计时器寄存器里的值显示出来的方式直观显示电容电压结果,来确定合适的电容。以下是编程实现这一过程的结果。
表32不同电容大小时计数器寄存器中的值
一水位二水位三水位四水位
TH0
TL0
TH0
TL0
TH0
TL0
TH0
TL0
2uF
A0B4
8598
7083
6065
6472
1uF
6470
4950
3840
3234
022uF
2
1
80A3
1
7280
1
由表格数据可见当选用2uF电容时,应需较大的充放电时间,充放电不够充分,所以计数器寄存器中的值大而不准;而当取022uF电容式计数寄存器TH0的值仅为1或2,非常不利用区分;当取1uF电容时,数据大小合适,分段明显,所以应选用1uF电容。另外,电容两端的最高电压为5V,最低电压为0V,所以所选电容的耐压留有一定裕量为最大电压的3倍,所以应选取耐压为15V以上的电容。由表32知R最大值为25KΩ,所以:
TTRC25ms
35
又由式38得:
0usT21665536us
这样由公式35、36得到TT65536us。
13
36
f结
论
因此取充电和放电时间为30ms。4、编程实现水位处理由于水电阻的波动性和电容的不稳定性等原因,计数器中的数值会有一定的波动,所以需要对数据进行相应的处理显示水位。其中buf1为计数器0寄存器中的值。voidLvReadifbuf160WTLV1显示1水位L30L21L11L01elseifbuf145WTLV2显示2水位L31L2L11L01elseifbuf136WTLV3显示3水位L31L21L10L01else
14
f结
论
WTLV4显示4水位L31L21L11L00
32水温测量电路
水温测量电路的设计包括传感器的选择和测量电路的选择。考虑到性价比等原因,市场上大部分太阳能热水器的温度传感器都选用NTC负温度系数热电阻,本系统也选用这种。下面主r