新闻中心

EEPW首页>嵌入式系统>设计应用> MC9S08LL16 在水表气表中的设计应用

MC9S08LL16 在水表气表中的设计应用

作者: 时间:2016-12-02 来源:网络 收藏


下面以读主存储器起始地址为0x20的3个字节为例说明它的编程:


/************* main function ************/
void main (void)
{
unsigned char buffer;
//read main memory at address 0x20. 21, 22, and stored at buffer
Read_4442_main_memory(0x20, 3, buffer);
}
// read main memory function
void Read_4442_main_memory(unsigned char Address, unsigned char number, unsigned
char *data)
{
unsigned char command;
command[0] = 0x30;
command = Address;
send_SLE4442_Command(command);
send_SLE4442_Data(number, data);
}

电池电压检测

由于气表采用电池供电, 因此需对电池电压进行监测, 在电池耗尽之前, 报警提醒用户更换电池。 虽然LL16内部有掉电检测电路LVI, 但使能该模块将消耗较大的电流, 所以不宜采用。 可以利用LL16内部模拟比较器或A/D模块监测电池电压,A/D模块或内部模拟比较器会消耗一定的功耗, 为了降低功耗, 可以采用定时检测的方法, 因为电池电压是缓慢下降的。

在水表中, 如果采用锂电池直接供电, 这里介绍一种简便的方法用于电池电压检测:在LL16的内部集成一个1.17V的带隙基准电压,此带隙基准电压内部连接到ADC的输入通道AD27; 因此可以不需要任何外部电路,AD模块只需定时采样此基准电压,由此可换算出电池电压。

这种方法的好处是,不需要外部任何器件, 既节省成本又节省空间,而且可以获知当前准确的电池电压。它的原理如下: AD的参考电压设为VDD, VDD即为电池电压, 如果AD设为12bit模式 那么:带隙基准电压的AD值(AD27)=(1.17V / VDD) *4096 = (1.17V/ 电池电压) * 4096;所以: 电池电压= (4096 / 带隙基准电压的AD值(AD27)) * 1.17 (V)

电机驱动电路

在气表应用中,采用直流电机来开关阀门。 其驱动电路普遍采用H桥电路, 如下图。此电路成本低,可靠性高。

当PTC3,PTC4同时输出高电平或低电平时, 电机不工作。 当PTC3输出高,PTC4输出低时, 电机向一个方向转动。 当PTC3输出高, PTC4输出低时, 电机向反方向转动。 PTC2用作电机到位检测。




软时钟的实现

由于在气表水表应用中, 对时钟的要求并不是特别精确, 因此可以利用LL16的TOD模块方便地实现软时钟, 从而省去外部的实时时钟芯片, 降低系统成本。 TOD模块使用非常简单,下图为它的内部结构图:



TOD的时钟源有三个, 即内倍的1 kHz RC振荡器, ICSIRCK时钟及外部晶振时钟。考虑到精度因素, 所以选用外部32.768k晶振作为时钟源。 TOD模块对时钟源进行计数,可产生1S或1/4S中断。 因此可利用这1秒钟一次的中断实现软时钟。 同时此中断把CPU从睡眠模式唤醒, 用来查询IC 卡座, 流量脉冲计数,以及电池电压检

测等。TOD的初始化如下:

void TOD_init(void)
{
TODC = 0x11;
TODC_TODEN =1;
TODSC=0X08;
}
TOD的中断服务程序:
void interrupt VectorNumber_Vtod RTC_ISR(void)
{
TODSC_SECF = 1; // clear 1s interrupt flag
Clock_processing();
}

TOD 的中断服务程序:
void interrupt VectorNumber_Vtod RTC_ISR(void)
{
TODSC_SECF = 1; // clear 1s interrupt flag
Clock_processing();
}


LCD 驱动

LL16内部有LCD驱动模块, 可配置为24*8,或28*4。 LCD与I/O复用, 多余的段可设为普通I/O。注意,所有和LCD驱动复用的GPIO,在作为I/O功能使用时,其输出模式为开漏,需要外接上拉电阻。

LCD驱动是LL16的一大特色, 具有许多优越的性能。

· 低功耗, LCD模块仅消耗900nA的电流
· 可配置为24*8即8COM端驱动模式, 从而节省更多的I/O口
· COM 和SEGMENT可随意配置, 方便布线, 从而提高EMC性能。
· 具有频率可调的闪烁功能, MCU在睡眠模式仍然工作, 从而达到更省电的目的。
· 内置电荷泵, 产生LCD驱动所需的偏置电压
· 内置可调的稳压电压源, 此稳压电压源可作为LCD的输入电压, 通过内置电荷泵, 产生LCD驱动所需的偏置电压。 当电池电压降低时, 可保证LCD的对比度不受影响, 这一点对水表设计非常有用。


关键词:MC9S08LL16气表水

评论


技术专区

关闭