本系统软件采用模块化设计方法。整个系统由初始化模块、周期测量模块、速度转换模块、里程计算和存储模块、数据转BCD码模块、显示数据处理模块、数据显示模块、定时器中断服务模块以及其它功能模块组成,图4给出了其软件框图。上电后,首先进入系统初始化模块,此后系统软件将开始运行,以实时地将所测数值显示在液晶模块上。
3.3 液晶显示模块的初始化
LCM0825是串行8位8段液晶显示模块。使用时,要在上电后对该模块进行初始化。在初始化之前,应延时200ms以上再送命令。它的初始化工作过程如下:首先定义液晶模块(当其命令代码为:00101001),其次定义振荡器方式(当其命令代码为00011000时,将模块定义为内部RC振荡方式,命令代码为00010100时,定义为外部晶体振荡方式)。然后分别用命令代码00000001和00000011开振荡器和开显示器。以上命令送入后,便可以在需要显示数据时将相应的段码直接送入模块内部的显示RAM中。在送显示数据的段码数据时,要考虑到显示RAM 的高和低地址所对应的数据段码的存放形式。其第8位数据的段码与LCM0825内部的RAM地址的对应关系见表1。以后随地址的增加依次存放第7位至第1位数据段码。为了正确地显示数据,应使要显示的8位字符在显示屏幕中为左起第一位,右止第8位。
图5
另外,写命令和写数据程序应分别编写,因为它们的命令格式及时序不同,见图5。
由时序图可见,编写传输子程序时,所传数据的高位先移入模块,否则模块不能正常工作或显示。同样,为了能正确读/写命令或数据,必须在时序中加入相应的延时;此外,为保证系统的低功耗,每次读/写命令或数据之后,都应将CS、RD、WR、DATA 置高电平。
4 结束语
本文介绍了一种基于单片机
AT89C2051的速度里程表的设计方法。由于该方案中使用了串口段码液晶显示模块E2PROM储存器,因而节省了硬件资源,提高了系统性价比。同时,也有益于在此电路基础上利用单片机的资源扩展其它功能。
上一页 [1] [2] [3]