基于51单片机设计的TFT液晶显示
0 引言
51单片机作为一种常见的通用单片机, 虽然其内部资源, 处理速度等都无法与新型高速单片机相提并论, 但其低廉的价格, 极低的入门难度以及适用于简单场合应用等特点, 依然是开发者的常用选择之一。
用51单片机驱动液晶模块通常都使用1602和12864等极为简单的液晶模块, 这里介绍用51单片机驱动QVGA分辨率的TFT液晶模块, 以实现彩色和更为复杂的内容显示的方法。同时, 本文还将使用DS1302芯片和DS18B20芯片来实现在液晶屏上显示实时时钟和温度。
1 硬件设计
本系统硬件电路的设计主要包括单片机最小系统电路, TFT液晶显示电路, 时钟电路, 设置电路以及温度采集电路。其系统工作原理框图如图1所示。
图1 硬件系统原理框图
1.1 单片机最小系统
一个单片机的最小系统包括外部晶振、电源、复位电路等, 这是保证单片机正常工作的必要条件。通过单片机可控制整个系统, 包括读取DS18B20芯片的温度数据, 读取/写入DS1302芯片的日历时钟数据, 检测是否有按键按下并进行相应的操作, 最后还要向显示驱动芯片写入数据,以使得TFT液晶屏上能够显示所需的内容。
1.2 液晶显示电路
驱动TFT液晶面板的芯片有多种选择, 本文使用的是台湾奕力科技的ILI9325芯片。该芯片能够支持320×240 (QVGA) 分辨率, 同时内置173KB的RAM, 故其最高能显示26万色。ILI9325支持的接口方式有8/9/16/18位i80系统总线、SPI总线、RGB接口和VSYNC接口。它的总线式接口电路方式是把液晶显示器看作外部的数据存储器,它访问液晶显示器就像访问数据存储器的一个单元一样, 采用这种方式能充分发挥单片机的总线读写功能优势, 而且便于升级和扩展。由于本文采用的STC89C54RD+单片机并没有SPI总线, 因此, 为了节约IO的使用, 本文最终采用8位系统总线的方式来连接ILI9325芯片。其显示部分电路如图2所示。
图2 显示部分电路图
图2中, 除P0口用作8位总线传输数据以外,还需要5个额外的IO口分别用作驱动芯片的片选(CS), 复位(RESET), 命令/数据选择位(RS), 写入位(WR) 和读取位(RD)。但实际上, 由于这里不需要从驱动芯片中读取数据, 因此, RD位在实际程序中并未使用。
1.3 时钟电路
时钟电路主要由DS1302芯片组成。DS1302是DALLAS公司推出的涓流充电时钟芯片。该芯片内含一个实时时钟/日历和31 字节的静态RAM,可与单片机通过简单的串行接口进行通信。该芯片可提供秒、分、时、日、日期、月、年等信息, 每月的天数和闰年的天数可自动补偿, 并能计算到2100年。DS1302与单片机之间能简单地采用同步串行方式进行通信, 而且仅需用到复位(RES)、I/O口、SCLK串行时钟三个口线。DS1302工作时的功耗很低, 其双电源管脚可用于主电源和备份电源供应, 并可为可编程涓流充电电源附加七个字节的存储器。因此, 该芯片可广泛应用于电话等便携式仪器以及电池供电的仪器仪表等产品。图3所示是DS1302的时钟电路连接图。
此外, 设计时需要为DS1302 提供外接的32.768 Hz晶振, 而不需要接电容或电阻。
图3 时钟电路连接图
1.4 温度采集电路
DS18B20数字温度计是DALLAS公司生产的单总线器件(1-Wire)。该芯片具有线路简单, 体积小的特点。因此, 用它组成的测温系统线路简单。它只用一根通信线就可以连接多个DS18B20数字温度计, 因此十分方便。此外, 该芯片还具有以下一些特点:
◇ 仅需一个端口即可完成数据的读取和写入;◇ 每个DS12B20芯片都有一个独一无二的序列号, 因此, 可以在一条数据线上挂载多个芯片;◇ 测量温度范围在-55℃到125℃之间;◇ 数字温度计的分辨率可以选择9到12位;◇ 可以设置告警温度的上下限。
图4所示是该芯片与单片机的连接电路。表1所列是DS18B20三个引脚的定义。
图4 温度采集电路图
表1 DS18B20的引脚定义
1.5 设置电路
设置电路的主要功能是将时间和日期设置到当前时间和日期。本设计仅需使用3个按键即可完成该功能。第一个按键用于选择更改的内容,即第一次按下该按键时, 时钟停止并且出现一指示符, 该指示符指向秒所在位置, 以后每按下该按键, 系统将依次轮询分、时、日、月、年、星期, 这样用户便可修改系统时间和日期, 当选完星期之后, 再次按下第一个按键, 则时钟又从设定的时间继续运行并且指示符消失。另外两个按键起“+”, “-” 的作用, 可供用户调节时间和日期时使用。需要注意的是, 只有在调节状态时按下“+”, “-” 按钮才能起作用。
在按键去抖方面, 本设计使用的是软件去抖, 但在实际中, 有时也应该加入电容或双稳态触发器以实现硬件去抖。当然,
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)