1、 指导教师评定成绩: 审定成绩: 重 庆 邮 电 大 学 移 通 学 院 课程设计报告 设计题目: 基于 LCD 的电子时钟实验 学 校: 重庆邮电大学移通学院 学 生 姓 名: 曹相凯 专 业: 电气工程与自动化 班 级: 05131004 学 号: 0513100432 指 导 教 师: 陈龙灿 设计时间: 2013 年 12 月 重庆邮电大学移通学院 前言 时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。 现今,高精度
2、的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都 采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用 LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟, 即定时时间,它
3、通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时 /计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302, DS12887, X1203 等都可以满足高精度的要求。 本文主要介绍用单片机内部的定时 /计数器来实现电子时钟的方法,本设计由单片机 AT89S51 芯片和 LED 数码管为核心,辅以必要的电路,构成了一个单片机电子时钟。 系统 设计 课题目标及总体方案 通过 S3C44B0X处理器的学习,可以利用其内部的 RTC 单元和 LCD控制器,外接 LCD 模块、晶振
4、和 (后备 )电源实现电子实时时钟的功能。主要实现方法为:通过电源和晶振保证处理器的正常工作和时钟来源,通过编程设定 RTC 单元的工作模式,实现实时时钟的功能;然后根据所要求显示的图形效果,编写程序设定 LCD 控制器的相应寄存器,将 RTC 单元和 LCD 控制器合理有效地结合起来;最终由 LCD 模块作出相应动作,完成实时时钟的显示功能。本课程设计设计一种基于 ARM7 的嵌入式微处理器 S3C44B0X 和 LCD 显示器的电子时钟,实现电子时钟的功能,并在 LCD 上显示类似的时钟界面;动态显示当前的时间,包括:年、月、日、时、分、秒,时针。 本课程设计主要为软件设计,硬件部分使用
5、EL-ARM-830 教学实验箱上的S3C44B0X 和 LCD 模块, LCD 初始化模块、时钟应用系统模块等,其中,时钟系统应用模块包括时钟计时模块、时钟显示模块等。各模块之间功能独立,协同完成本课程设计的全部功能。系统设计框图如图 硬件平台 简介 S3C44B0X 简介 S3C44B0X 微处理器是三星公司研发的基于 ARM7TDMI 核的高性能嵌入式处理器,为手持设备和一般类型应用提供了高性价比和高性能的微控制器解决方案。由于其高性价比以及内嵌了多种接口,在手持设备和消费类电子中得到了广泛的应用。为了降低成本 , S3C44B0X 提供了丰富的内置部件 , 包括: 8KB cache、
6、 内部 SRAM、 LCD 控制器 、 带自动握手协议的 2 通道 UART、 4 通道 DMA、系统管理器(片选逻辑, FP/EDO/SDRAM 控制器) 、 带有 PWM 功能的 5 通道定时器, I/O 端口, RTC, 8 通道 10 位 ADC, IIC-BUS 接口, IIS-BUS 接口,同步SIO 接口和 PLL 倍频器。 S3C44B0X 采用了 ARM7TDMI 内核, 0.25um 工艺的 CMOS 标准宏单元和存储编译器。它的低功耗和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样 S3C44B0X 还采用了一种新的总线结构,即 SAMBAII(三星 ARM CP
7、U 嵌入式微处理器总线结构)。 S3C44B0X 的特性是它的 CPU 核 , 是由 ARM 公司设计的 16/32 位ARM7TDMI RISC 处理器(主频 66MHZ)。 ARM7TDMI 体系结构的特点是它集成了 Thumb 代码压缩器,片上的 ICE 断点调试支持,和 一个 32 位的硬件乘法器 。 S3C44B0X 内置 LCD 控制器可以支持规格为每像素 2 位 ( 4 级灰度) 或每像素 4 位( 16 级灰度)的黑白 LCD。也可以支持每像素 8 位( 256 级颜色)的彩色 LCD 屏。 LCD 控制器可以通过编程支持不同 LCD 屏的要求 , 例如行和列像素数,数据总线宽
8、度,接口时序等。 S3C44B0X 与 LCD 连接 本课程设计使用的 EL-ARM-830 教学实验箱包含有一块 5.7 寸, 256 色,320X240 像素的 LCD 显示屏, S3C44B0X 内置了 LCD 控制器,控制 LCD。 S3C44B0X 与 LCD 连接示意图如图 3。 图 3 S3C44B0X 与 LCD 连接示意图 键盘 SDRAM 系统内存 LCD 显示屏 基于 ARM 的 嵌入式微处理器 S 3 C 4 4 B 0 X USB 接口 RS - 232 接口 JTAG 接口 ADC DAC F l a s h B I O S 电源 复位 晶振 S3C44B0X LC
9、D 控制器 LCD 5.7 寸, 256 色, 320*240 RTC 模块 利用 RTC 的各种寄存器功能,设计出一个时钟表。 实时时钟( RTC)器件是一种能提供日历 /时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。 RTC 具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。随着集 成电路技术的不断发展, RTC 器件的新品也不断推出。这些新品不仅具有准确的 RTC,还有大容量的存储器、温度传感器和 A/D 数据采集通道等,已成为集
10、 RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 S3C44B0X 实时时钟单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。 RTC 发送 8 位 BCD 码数据到CPU。传送的数据包括秒、分、小时、星期、月份和年份。 RTC 单元时钟源由外部 32。 768kHz晶振提供,可以实现闹钟(报警)功能。 S3C44B0X 实时时钟单元特性如下: BCD 数据:秒、分、小时、星期、日期、月份和年份; 闹钟(报警)功能:产生定时中断或激活系统; 自动计算闰年; 无 2000 年问题; 独立的电源输入; 支持 ms 级时间片中
11、断,位 RTOS 提供时间基准。 2)读 /写寄存器 访问 RTC 模块的寄存器,首先要社 RTCCON 的位 0 位 1。 CPU 通过读取 RTC模块中寄存器 BCDSEC、 BCDMIN、 BCDHOUR、 BCDDAY、 BCDDATE、 BCDMON和 BCDYEAR 的值,得到当前的相应时间值。但是,由于多个寄存器一次读出,所以由可能产 生错误。例如:用户一次读取年( 1989)、月( 12)、日( 31)、时( 23)、分( 59)、秒( 59)。当秒数位 1 59 时,无任何问题;但是,当秒数位0 时,当前时间和日期就变成了 1990 年 1 月 1 日 0 时 0 分。在这种
12、情况下(秒数位 0),用户应该重新读取年份到分钟的值。 3)后备电池 RTC 单元可以使用后后备电池通过引脚 RTCVDD 供电。当系统关闭电源以后, CPU 和 RTC 的接口电路被阻断。后备电池只需要驱动晶振和 BCD 计数器,从而达到最小功耗。 4)闹钟报警功能 RTC 在指定的时间产生报警信号,包括 CPU 工作在正常 模式和休眠( Power Down)模式下。在正常工作模式,报警中断信号( ALMINT)别激活;在修们模式,报警中断信号和唤醒信号( PMWKUP)同时被激活。 RTC 报警寄存器( RTCALM)决定报警功能的使能 /屏蔽和完成报警时间检测。 5)时间片中断 RTC
13、 时间片中断用于中断请求。寄存器 TICNT 由一个中断使能位和中断计数。该中断计数自动递减,当达到 0 时,则产生中断。中断周期) Period 计算公式如下: Period( n 1) /128s 其中, n为 RTC 时钟中断计数,可取值为 1 127。 6)置 0 计数功能 RTC 的置 0 计数功能可以实现 30s、 40s 和 50s 步长重新计数,供某些专用系统使用。当使用 50s 置 0 设置时,如果当前时间是 11: 59: 49,则 1s后时间将变为 12: 00: 00。 注意:所有的 RTC 寄存器都是字节型的,必须使用字节访问指令( STRB、LDRB)或字符型指针访
14、问。 RTC 初始化 。 LCD 初始化模块设计 本模块的主要功能完成 LCD的初始化,加载 LCD驱动程序,使 LCD与S3C44B0X实现对接,完成显示功能。本模块我们使用了实验箱现有的相关程序。 LCD模块是嵌入式应用系 统中重要的人机交互部件。目前,许多常用的 LCD模块一般自身都不带有字库,而实际应用中人机界面又经常需要显示中英文字符。对于不带字库的 LCD模块显示字符的解决方法通常是利用字模提取软件来进行预处理,即将系统中可能用到的字符一一将其字模提取出来,并将字模数据存放在程序空间中。该方法只适用于显示字符固定且数量较入式系统中,灵活性差。考虑到嵌入式系统一般带有一定容量的 RO
15、M存储系统,本文以无字的图形 LCD模块LM2028为例,搭建了以 ARM微处理器 s3C44BOX为基础的嵌式液晶系统工作平台,在此平台的基础上,讨论 了一种基于自制硬件字库的中英文字符显示方案。 LCD控制器的作用是将系统存储器中的 LCD图像数据传送到外部 LCD驱动器中,并产生必须的 LCD控制信号。 S3C44BOX LCD控制器支持在灰白 LCD上的单色、 4级灰度、 16级灰度显示,也能与彩色 LCD接口支持最大 256色的显示。可以编程支持不同水平和垂直点数 (64O 480、 320 240、 160 160等 )、不同数据线宽度、不同接口时序和刷新速率的 LCD,支持 4位
16、双扫描、 4位单扫描、 8位单扫描的 LCD显示器,并支持水平垂直卷动,以用来支持更大的屏幕显示 (如 1280 1280) 。 S3C44BOX支持查找表,用于各种色彩选择或灰度级别的选择。在灰度模式中,通过查找表可以在 16级灰度中选择四种灰度,在彩色模式中,一个字节的图像数据是用 3位表示红色, 3位表示绿色, 2位表示蓝色,通过查找表可以选择 16级红色中的 8种红色、16级绿色中的 8种绿色和 16级蓝色中的 4种蓝色。 S3C44B0X 中具有内置的 LCD 控制器,它能将显示缓存(在 SDRAM存储器中)中的 LCD图像数据传输到外部的 LCD驱动电路上的逻辑功能。它支持单色、4
17、级、 16级灰度 LCD显示,以及 256彩色 LCD显示。在显示灰度时,它采用时间抖动算法( time-based dithering algorithm)和帧率控制 (Frame Rate Control)方法,在显示彩色时,它采用 RGB的格式,即 RED、 GREEN、 BLUE,三色混合调色。通过软件编程,可以实现 233或 332的 RGB调色的格式。对于不同尺寸的 LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对 LCD 控制器中的相应寄存器写入不同的值,来配置不同的 LCD 显示板。 S3C44B0X 中内置的 LCD 控制器提供了下
18、列外部接口信号: VFRAME: LCD 控制器和 LCD 驱动器之间的帧同步信号。它通知 LCD屏开始显示新的一帧, LCD 控制器在一个完整帧的显示后发出 VFRAME 信号。 VLINE: LCD 控制器和 LCD 驱动器间的同步脉冲信号, LCD 驱动器通过它来将水平移位寄存器中的内容显示到 LCD 屏上。 LCD 控制器在一整行数据全部传输到 LCD 驱动器后发出 VLINE 信号。 VCLK: LCD 控制器和 LCD 驱动器之间的象素时钟信号, LCD 控制器在VCLK的上升沿发送数据, LCD 驱动 器在 VCLK 的下降沿采样数据。 VM: LCD 驱动器所使用的交流信号。
19、LCD 驱动器使用 VM 信号改变用于打开或关闭象素的行和列电压的极性。 VM 信号在每一帧触发,也可通过编程在一定数量的 VLINE 信号后触发。 VD3:0: LCD 象素数据输出端口。 VD7:4: LCD 象素数据输出端口。 LCD 控制器包含 REGBANK, LCDCDMA, VIDPRCS, 和 TIMEGEN。 REGBANK 具有 18 个可编程寄存器,用于配置 LCD 控制器。 LCDCDMA为专用的 DMA,它可以自动地将 显示数据从帧内存中传送到 LCD 驱动器中。通过专用 DMA,可以实现在不需要 CPU 介入的情况下显示数据。 VIDPRCS 从 LCDCDMA 接
20、收数据,将相应格式(比如 4 8 位单扫描和 4 位双扫描显示模式)的数据通过 VD7:0发送到 LCD的驱动器上。 TIMEGEN 包含可编程的逻辑,以支持常见的 LCD 驱动器所需要的不同接口时间和速率的要求。 TIMEGEN 部分产生 VFRAME,VLINE, VCLK, VM 等信号。 Lcd 显示的时钟界面包括:静止不动的圆形钟面和一直在走动的时钟指针。 所以需要 构建两个重要的函数实现画圆和画直线。 以下为画圆函数: 该算法是通过 X 变量的自增,补偿 1 修正正方形控制 Y 变量自减,找到距中心恒定距离的点,其中 rs=45, X自 0加 1增至 45。和原点坐标运算,可以在第
21、一象限找到一点,再通过折叠对称找到其他象限的三个点,通过画点函数描绘出。再画他的 45 度镜像就好了。 以中心的坐标为起点,使用 while 函数与指针最外圈的点比较,不断延长直至相等,所以事先计算出时针,分针和秒针三个同心圆最外圈点的坐标,以便带入函数。也同圆类似,要考虑不同象限点的情况,根据不同的位置带参数到画点函 数中描绘。 时钟应用系统模块设计 本模块是电子时钟功能实现的主要模块,也是本次课程设计的核心模块,本模块实现的功能主要有:时间计时,钟面时间显示,数字时间显示。 其中,时间计时功能和在 LCD 上显示数字钟显示功能较易实现,之前的单片机课程设计和 HDL 课程设计均有所涉及。计
22、时使用 S3C44B0X 内部时钟脉冲和分频实现,在 LCD 上显示数字钟显示使用 LCD 数字显示功能实现。 在 LCD 上实现钟面显示功能较为复杂,主要包括以下过程: 1、 给秒针、分针各设定 60 个坐标(包括 X 左边和 Y 坐标),表示 60 秒和60 分,给时针 设定 12 个坐标(包括 X 左边和 Y 坐标); 2、 设定钟面显示初值并完成初值与时针、分针、秒针的坐标的映射,更更改初值可以完成时间的设定; 3、 使用画线函数完成秒针、分针、时针显示,主要功能是擦除上一秒(分、时)的轨迹和显示这一秒(分、时)。 4、 使用画点函数完成钟面基本构造,即钟面与 12 个整点时间点。 除
23、此之外,需要在整个移植后的系统中初始化堆栈并设定任务,通过任务完成时钟的各项功能。 实验结果及讨论 调试结果与分析 通过编译调试下载到实验箱的 S3C44B0X 芯片中进行调试, LCD 显示结果如图 7 所示。 图 7 LCD 调试结果显示 屏幕右上角显示出学号姓名和作品信息; 屏幕中间显示的是钟面,有时针、分针和秒针,显示实时时间; 屏幕下方显示的是数字时钟,显示时分秒(与钟面时间相对应)和年月日。 完成系统设计要求的各项功能。 结 论 本课程设计属于嵌入式系统项目设计,利用 EL-ARM-830 教学实验箱上的嵌入式微处理器 S3C44B0X 和 LCD 模块,实现如下功能: 1、 LCD 显示“钟面”样式,时针、分针、秒针显示实时时间; 2、 LCD 显示“数字钟”样式,动态显示年、月、日 、时、分、秒; 3、 显示时间可以修改并保持“钟面”与“数字钟”时间保持一致; 4、 LCD 左上角动态显示小组成员姓名、学号及选题信息。 本课程设计完成选题要求,但是有如下方面有待改进: