泉州信息职业技术学院 何燕阳
汽车电子产品的开发,一方面要克服汽车恶劣的工作条件以最好的技术可靠地提高汽车电子化程度,另一方面又要具有最低的价格优势,以面对市场激烈竞争,这对于设计和应用都具有挑战性。本文结合生产实际,综合考虑功能需求与成本因素,使用了尽量少的元器件,提供了一款性价比高的汽车温度电子钟的设计方法。
意法单片机STM8S1O3F3工作电压范围宽:2.95到5.5V以及带有时钟监控的时钟安全保障系统,保障了单片机系统的高可靠性,适合作为车载电子器件。该单片机比51单片机价格更低、性能更稳定、运算速度更快、资源更丰富。意法单片机STM8 S1O3F3引脚图如图1。
STM8S1O3F3单片机具有用户可调整的16MHz CPU时钟频率,容量为8K字节的Flash程序存储器,集成64O字节真正的数据存储器EEPROM和1K字节的RAM,强大的I/O功能,具有16位高级控制定时器(TIM1),SPI,I2C,UART,窗口看门狗,独立看门狗,ADC,PWM定时器(TIM2),8位定时器(TIM4)等资源。单线接口模块(SWIM)和调试模块(DM),允许非侵入式、实时的在线调试和快速的存储器编程。
见图2和表1。
图1 STM8S103F3引脚图
图2 温度电子钟系统框图
该硬件电路的设计包括电源部分、车钥匙ACC开关信号转换处理电路、STM8S1O3F3单片机最小系统电路、温度采集电路、按键设置电路、数码管显示电路以及在线调试接口等等。本硬件系统采用I/O口分时复用,作为按键的输入线同时作为数码管段码的部分输出线,且数码管集成块采用多个引脚复用一个单片机的I/O口,这些方法减少了硬件开销,节约成本,但增加了软件编程的复杂性。
表1 温度电子钟技术参数表
图3 车载温度电子钟硬件原理图
1)电源部分
小汽车上的VB+和VB-引脚之间有12V的电压经过电容滤波和78DO5稳压器稳压输出+5V的电压,为整个硬件系统系统提供电源。
2)STM8S1O3F3单片机最小系统电路
该最小系统电路包含上电复位电路,采用振荡荡频率为4MHz高精度的石英晶振电路为系统提供一个精准的时钟信号。
3)温度采集电路
DS18B2O温度传感器适应电压范围宽为3.OV~5.5V,稳定性好,反应快,测温范围为-55oC~+125oC,该温度传感器的分辨率为9~12位,测温精度高。因此本设计中选用了DS18B2O采集实时温度。在实际使用中电路简单,无需其他的外围器件。
主机控制DS18B2O完成温度转换必须经过三个步骤:初始化、发送ROM操作指令、发送RAM指令。首先启动初始化对DS18B2O进行复位,复位成功后DS18B2O开始转换,再读出温度转换值。在软件设计中使用默认的12位转换精度,外接供电电源,温度数据的传输,由于只有一根数据线,直接将数据线与单片机的PA3口相连接,由单片机通过此数据线读取数据。
4)按键设置电路
本系统的只有三个按键:K1键为设置功能键,可调节年、月、日、小时、分钟的设定转换;k2、k3键分别为“”、“”键,可分别实现加一、减一的操作。三个按键分别与单片机的PD4、PD5、PD6口相连接。
图4 主程序流程图
图5 按键检测子程序流程图
图6 显示子程序流程图
图7 中断服务子程序流程图
车钥匙ACC开关信号经过转换处理接单片机的PD3口,主要用于控制数码管的显示:当车钥匙开时,数码管显示;当车钥匙关时,关数码管显示。
PD3、PD4、PD5、PD6口是I/O口分时复用,在数码管显示模块中,作为数码管的段码部分输出线。
5)数码管显示电路
本硬件电路的显示模块共有五个共阴数码管,采用动态扫描方式,分别轮流显示年份、月日、时分、温度。数码管的段码分别接单片机的PD1、PD2、PD3、PD4、PD5、PD6、PC7,五个数码管从左至右的位选码分别接PB4、PB5、PC3、PC4、PC5。数码管集成块XD3942ASG-J中的秒信号灯L1、L2灯和L3灯的阳极接PC6,L1、L2灯阴极与数码管位选码复用接PC3,L3灯的阴极与数码管位选码复用接PC5。
6)在线调试接口J1
便于实时的进行在线调试和存储器编程。
本系统使用C语言编程,系统软件设计主要包括主程序设计和中断服务程序设计。主程序包含按键检测子程序、按键处理子程序、温度测量转换子程序、显示子程序、时钟初始化子程序、I/O口设为输入口子程序、I/O设为输出口子程序、定时器初始化子程序等等。
中断服务子程序比较简单,流程图如图7所示。定时器TIM2可以直接通过TIM2_PSCR寄存器对晶振频率4MHz进行64分频,从而得到了定时器的计数脉冲频率为1/16MHz、周期为16us。设定定时器的定时常数为OF424H即为625OO,又625OO*16us=1s,所以定时器TIM2可以定时1秒作为时间的秒基准信号。当定时1秒时间到时,则向CPU申请中断,在开中断的情况下,CPU转去执行中断服务子程序。
1)按键检测子程序
该程序流程图见图5,结合主程序流程图图4,得出按键检测子程序流程图图中没有通过延时来消除按键的抖动,而是一旦有按键按下,检测到第一次低电平,keyn加1,此时应该是按键抖动的状态,直接结束该子程序,按键无效;当执行完一遍主程序又循环调用按键检测子程序时,又重新判断是否有按键,有则keyn再加1,否则清零。因此,执行完一遍主程序检测一次按键,要连续检测到1O次按键为低电平,也就是至少要执行1O遍主程序才会有效地检测到一次按键,若执行一遍程序需要5ms的时间,那么5ms*1O=5Oms,按键检测避过了抖动期间,达到了按键消抖的目的,此时相应按键标志符号为1有效:设置键km=1,加1键ka=1,减1键ks=1。
2)按键处理子程序
该子程序的功能是根据检测到的按键作相应的按键功能处理。根据设置键按下的次数,可分别设置年、月、日、小时、分钟,即设置键按键值1为年份状态,设置键按键值2为月份状态,设置键按键值3为天数状态,设置键按键值4为小时状态,设置键按键值5为分钟状态,其他按键值为退出设置状态。
如果为设置状态下,按下加1键或减1键,相应的设置对象加1或减1;如果不是设置状态下,按下加1键或减1键,则切换显示状态。
3)显示子程序
该子程序流程图见图6。该子程序功能在车钥匙未打开时,即ACC=O,则关显示;在ACC=1时,如果时间晚间18:OO点到早上7点LED显示亮度自动减少5O%,否则以正常亮度显示。若设置键K1没有按下,系统处在非设置状态,则时间、月日、年份、温度轮流显示,在正常显示中若有按下加1键或减1键,则轮流切换显示方式;若按下设置键K1键,进入设置年份、月、日、时、分,相应的设置项会闪烁,按“”或“”键(加1键或减1键)改变数值。系统在设置状态内,如果1O秒内没有其他按键,则退出设置状态,正常轮流显示。五个数码管采用动态扫描方式。
4)部分子程序(如下所示)
本设计最大的优点是充分利用硬件资源,减少了硬件成本,系统硬件结构简单,稳定性好,可靠性高,仅通过软件编程实现车载温度电子钟的基本功能且计时准确,具有一定的实用性。软件编程在按键的检测以及显示子程序方面也有一定的参考意义。
[1]谢维成,杨加国.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2009.
[2]STM8S_微控制器家族参考手册_v4.0.PDF http://www.st.com/stonline/products/literature/rm/14587.pdf.
[3]STM8S103xx系列数据手册(2009年3月)cn.PDF http://www.st.com/stonline/products/literature/ds/15441.pdf.