基于单片机的智能数字钟设计

摘 要

本设计论文介绍了应用STC90C516RD+单片机作为主控芯片的智能数字钟的软、硬件设计,给出了C语言源程序。此数字钟可以将时间、日期、温度、重大节日等显示于液晶屏上。它采用24时计时法,另外设有校时功能,可以调整其时间。电路由控制芯片CPU、时钟信号发生模块、显示模块、温度检测模块及时钟调整电路组成。运用时钟芯片产生标准时钟信号,从时钟芯片直接读出时间、日期等数据,分别经处理后送显示模块。选用LCD液晶屏作为显示器件,显示出清晰、直观的数字符号与汉字。由于时钟芯片长时间工作会产生误差,在电路中设计有时钟调整电路,方便校时。

关键词:单片机;STC90C516RD+;数字钟;LCD

Abstract

This paper introduces the application of STC90C516RD+ microcontroller as the main control chip of the intelligent digital clock software, hardware design, gives the C language source code. The digital clock can display the time, date, temperature, major festivals, etc. on the LCD screen. It uses 24 time method, in addition with the school function, you can adjust the time. The circuit is composed of a control chip CPU, a clock signal generating module, a display module, a temperature detection module and a clock adjusting circuit. Use the clock chip to produce the standard clock signal, from clock chip directly read time and date data, respectively the evacuation display module. LCD screen as a display device, showing a clear, intuitive digital symbols and Chinese characters. Due to the clock chip long time work will produce error, in the circuit design of the clock circuit, the convenience of school.

Key words:Single-chip microcomputer; STC90C516RD+; Digital clock; LCD

目录

第一章 绪 论 1

1.1前言 1

1.2 课题来源 1

第二章 数字钟的功能实现与设计方案 3

2.1 数字钟的功能及设计要求 3

2.2数字钟的实现形式 3

2.2.1用NE555电路的形式 3

2.2.2采用基于单片机的实现形式 4

2.2.3采用石英钟专用芯片的实现形式 4

2.3 方案的确定 4

2.3.1 微处理器 4

2.3.2时钟信号模块 5

2.3.3显示电路 5

2.3.4 按键电路 5

2.3.5温度检测电路 6

第三章 数字钟的硬件系统设计 7

3.1 数字时钟的硬件系统框架 7

3.2 数字时钟的主机电路设计 7

3.2.1 系统控制芯片CPU(STC90C516RD+)的选择 8

3.2.2 系统震荡电路设计 12

3.2.3 系统复位电路设计 14

3.2.4 按键与按钮电路设计 15

3.2.5 数字钟的显示电路设计 15

3.2.6电源设计 21

3.2.7时钟信号发生电路设计 24

3.2.8温度检测电路设计 26

第四章 程序设计 28

4.1软件开发语言及平台 28

4.1.1 单片机开发语言的选择 28

4.2软件设计 29

4.2.1主程序设计 29

4.2.2显示模块程序设计 30

4.2.3时钟信号发生模块程序设计 32

第五章 系统的调试与结果 34

5.1 系统调试环境及设备 34

5.2 软件调试 34

5.2.1软件调试环境 34

5.2.3软件调试中遇到的主要问题 36

5.3硬件调试 37

第六章 总结与展望 38

6.1总结 38

6.2展望 38

致谢 40

第一章 绪 论

1.1前言

自1976由英特尔公司推出MCS-48,已经超过20年了。由于单片机具有集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等优点,已经渗透到人们的工作和生活中,几乎无处不在,应有尽有。单片机的应用范围包括工业控制、通信交通、智能仪表、家用消费品、办公自动化、汽车电子、电脑及外围通讯等各大领域。

单片机的基本结构形式有两种:一是在通用微型计算机中广泛采用的,程序存储器和数据存储器合用同一存储空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器的分别设置存储单元,分别进行寻址的结构,此种结构将提供较大的程序存储空间,目前的单片机多采用第二种结构[1]。

本文使用当前性价比较高,应用较为方便的51系列单片机,配置必要的外围部件,组成一个可调节的、集多功能于一身的数字钟系统,具有体积小,性价比高,功能强大,安全可靠等特点。可以完全满足此设计要求,并且可以扩展更多的功能,有着广泛的应用领域和发展前景。

20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给许多半导体芯片生产厂家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而,常用80C51系列来称呼所有具有8051指令系统的单片机,它们对8051单片机一般都作了一些扩充,更有特点[2]。其功能和市场竞争力更强,不该把它们直接称呼为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列型号。MCS-51系列及80C51单片机有多种品种。它们的引脚及指令系统相互兼容,主要在内部结构上有些区别。目前使用的MCS-51系列单片机及其兼容产品通常分成以下几类:基本型、增强型、低功耗型、专用型、超8位型、片内闪烁存储器型。

1.2 课题来源

在日常生活工作中,时钟的应用非常广泛,定时控制在工业生产中也发挥着重要作用,如混凝土搅拌的时间等。在早期,大多数时间控制单元都用模拟电路设计,定时精度和稳定性都较差,现在可以运用基于数字技术的新型集成控制芯片,随着单片机技术的发展,单片机的性能不断提高,单片机系统可以完成各种各样的工作。它体积小,质量轻,功能强大,性价比高,具有丰富的外围芯片、接口配置,可以构成各种形式功能强大的微电子产品。

随着社会生产生活的发展,对时间准确性的要求越来越高,对时钟的性能,体积稳定性的要求也在提高。根据这一情况,设计了一个单片机智能数字钟,它可以准确的进行计时,同时有重大节日提醒功能,同时又可以进行时钟校准与当前温度的显示。它可以执行不同的计时法(12时和24时),可以任意设置时间。这种便于携带的智能数字钟为人们的生活提供了便捷,同时扩大了数字技术的应用范围。

第二章 数字钟的功能实现与设计方案

2.1 数字钟的功能及设计要求

显示时/分/秒,可以随时调节时间

显示日期与温度

使用LCD显示

可以显示重要节日

2.2数字钟的实现形式

数字钟实现形式多种多样,根据时钟信号产生的方式划分,通常有三钟形式:

2.2.1用NE555电路的形式

采用NE555时钟电路或其他震荡电路产生秒脉冲信号,作为微处理器的外部中断信号,实现秒信号计时,可构成电子时钟。由555构成的秒脉冲发生器电路如图2.1所示。输出的脉冲信号V0的频率F=1.443/(RA+2RB)×C,可通过调节RA ,RB ,C这3个参数,得到精确的脉冲信号。

图2.1 基于555的秒脉冲发生器

2.2.2采用基于单片机的实现形式

利用单片机自身携带的定时计数器,采用对微处理器系统自身标准时钟震荡信号进行计时的方式产生秒信号。产生秒信号后再运用累加器等产生时钟信号。此种方法不需要外接专用芯片即可实现,硬件简单,但是计时精度较差。

2.2.3采用石英钟专用芯片的实现形式

采用石英钟专用计时芯片实现的电子钟具有体积小、计时精度高、方便稳定的特点。石英计时芯片(机芯)比较多,常见的有DS1302、3252和LM8560等[3]。使用DS1302的输出时间信号,可实现电子时钟。DS1302的引脚如图2.2所示。

其中,引脚1接主电源正极,电源为5V,引脚2、3为外接晶振及振荡电路,引脚5为复位引脚,引脚6为数据输入输出引脚,引脚7为串行传输的时钟信号引脚,引脚8接备用电源。

2.3 方案的确定

本设计从以下几个方面确定智能数字钟的设计方案:

2.3.1 微处理器

采用宏晶科技的STC90C516RD+微处理器,是基于以下几个因素:

处理器内自带Flash 存储器,在系统的开发过程中, 可以修改调试程序,编程错误可以重新修改,没有浪费,大大缩短了开发周期;同时在系统的工作过程中能有效保存数据信息[4];

采用静态时钟方式,功耗低 ,可以有效降低系统整体功耗;

是以8051内核构成的,兼容MCS51系列单片机,具有丰富的仿真调试资源,包含众多库函数,使用方便。

性价比高,货源充足;

DIP40封装,体积小,使产品便于携带;

具有空闲模式和掉电模式两种工作模式,便于进行低功耗设计;

具有较宽的工作电压范围: 5.5V - 3.8V(5V 单片机),便于交直流供电。

2.3.2时钟信号模块

DS1302是一种高性能,低功耗的集成时钟芯片,可以对年、月、日、时、分、秒进行计时,计时精度较高。工作电压宽:2V~5.5V,刚好与单片机电源系统相匹配。采用同步串行通信,与单片机连接简单,节约I/O资源[5]。同时,DS1302在DS1202的基础上,增加了备用电源引脚,并可对其进行涓流充电,提高了它的适应性,可以更加方便的应用于各种电子产品中。选择DS1302作为时钟信号产生模块,可精确提供日期与时间,满足设计要求,同时其使用方便,信价比高,故本设计采用DS1302产生时钟信号。

2.3.3显示电路

智能数字钟的显示电路,通常可采用数码管显示或LCD液晶显示两种方式。若采取数码管,需要专门的译码驱动电路,占用IO口较多且无法显示汉字,显示效果相对较差;采用集成了驱动电路的液晶显示模块,无需自行设计驱动电路,集成度高。现在大多LCD都自带字库,可以方便的显示汉字。LCD多采用并行接口,程序简洁,显示效果较好,性价比较高。因此,本设计采用了液晶显示的方式。

2.3.4 按键电路

由于正常使用中按键使用频率较低,本设计设置四个独立按键,完成校时和日期设定功能。

(1)SET键,在正常工作状态下,按下SET键,进入时间日期设定界面。

(2)加一键,每按一次,当前设定位数值加一,根据其24小时工作模式和正在编辑的当前位的含义(年、月、日、时、分、秒)自动进行数据的上限和下限判断。例如,分钟位只能是00到59,如果当前值为59,则按+1键后为00,再按+1键后为01,再按+1键后为02。

(3)减一键,每按一次,当前设定位数值减一。

(4)确认键,用于时间和日期修改后返回正常工作状态

2.3.5温度检测电路

常规的温度检测方式较多,如热电偶,热电阻,金属应变片等。考虑到本设计使用条件,只需测量日常生活中的温度变化,因此,可以考虑使用集成式温度传感器。综合考虑性能、稳定性、性价比等,最终选定使用DS18B20实时检测温度。

DS18B20是一种常用的温度传感器,具有体积小,精度高的特点。开发出的产品硬件成本低,使用方便,稳定可靠。DS18B20数字温度传感器接线非常方便,由于其独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条线即可实现微处理器与DS18B20的双向通讯。其测温范围为 -55℃~+125℃,足以满足设计需求,并且在使用过程中不需要任何外围原件,使用非常方便。

第三章 数字钟的硬件系统设计

本设计硬件部分包括控制电路、显示电路、时钟信号产生电路、温度检测电路、按键电路、电源电路等几部分。

3.1 数字时钟的硬件系统框架

电子时钟的系统框架入图3.1所示。

3.2 数字时钟的主机电路设计

数字钟的系统框架图如图3.1所示,主体设计部分分为

(1)主控芯片的选择;

(2)按键电路设计;

(3)时钟信号产生电路的设计;

(4)液晶显示电路设计;

(5)温度检测电路设计;

(6)电源系统设计。

3.2.1 系统控制芯片CPU(STC90C516RD+)的选择

STC90C516RD+系列单片机是宏晶科技推出的新一代高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。

(1)STC90C516RD+的主要性能:

AT89C516RD+是宏晶科技推出的带64KB闪速可编程可擦除只读存储器(PEROM)的单片机,它具有一下突出特点:

1.增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU

2.工作电压:3.8V~5.5V(5V 单片机)

3.工作频率范围:0-40MHz,工作频率宽,适应性强。

4.提供 64K的用户程序存储空间

5.片上集成1280字节 RAM

6.通用I/O口复位后为: P1/P2/P3 是准双向口/ 弱上拉(普通8051 传统I/O 口)

P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器 / 仿真器。

可通过串口(P3.0/P3.1)直接下载用户程序,下载方便快捷。

8.EEPROM 功能。

9.看门狗功能,可提高产品稳定性。

10.内部集成MAX810专用复位电路,外部晶体频率12M以下时,不需特别设置外部复位电路,复位脚可直接接地[6]。

(2)STC90C516RD+内部结构及引脚描述

STC90C516RD+引脚配置如图3.2所示。

它是一个有40个引脚排列直插式的芯片,其引脚描述如下:

VCC:+5V电源;

GND:电源地;

RST:复位输入。当RST变为高电平并保持2个机器周期时,单片机复位。单片机内部集成MAX810专用复位电路,外部晶体12M以下时,可省外部复位电路,RST可直接接地。

XTAL1:外部晶体振荡器的输入及内部时钟工作电路的输入。

XTAL2:外部晶体振荡器的输出。

EA /VPP: 外部访问允许;如果要访问外部程序存储器,必须是EA接低电平,才能够选通外部程序存储器。如果EA接高电平,则单片机选择内部程序存储器执行指令。如果锁定LB1,则单片机内部锁定EA为高电平,无法访问外部程序存储器[7]。

PSEN:程序储存允许(PSEN)输出;PSEN有效才能访问外部程序存储器。当STC90C516RD+需要从外部程序存储器取指令(或数据)时, 每个机器周期两次PSEN有信号,即输出两个脉冲[8]。

P0口:8位双向I/O口,开漏输出,作为总线扩展用时,不用加上拉电阻。若用来访问外部程序或数据存储器,则P0口作为地址、数据复用口,在访问期间激活内部上拉电阻。

在FIash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,此时,必须接外部上拉电阻。

P1/P2/P3 是准双向口/ 弱上拉(普通8051 传统I/O 口)

P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能:

表3.1 P3口引脚的特殊功能

上述P3口第二功能脚提供了扩展外部存储器、I/O设备时所必须的各类引脚,因此,该单片机可以方便的进行外围设备的扩展。既可以之使用本单片机构成最小系统,也可以配合其他外部设备,构成复杂的控制系统,完成更为复杂的工作。P3口第二功能脚的引入,使得单片机的应用范围大大增加。

(3)振荡器

单片机外部振荡器接口:XTAL1和XTAL2分别是片内反向放大器的两端口,如图3.3所示。选择一振荡器,接电容后分别连接两端口。此振荡器可以选择晶体振荡器或者陶瓷振荡器。若不使用外部振荡器,改用外部时钟信号直接驱动,则XTAL2悬空,XTAL1的驱动如图3.4所示。由于单片机内部设计有二分频电路,故对外部时钟信号的频率没有特殊要求,只需满足最基础的时间规范即可[9]。

(4) 特殊功能寄存器SFR

继承了8051单片机的设计思路,STC90C516RD+片内同样设置有19个特殊功能寄存器,被称为特殊功能寄存器块SFR,这些寄存器分布于80H~0F0H的地址空间内,完成单片机运行控制过程中的重要功能[10]。

(5)低功耗工作模式

STC90C516RD+具有优良的中低功耗工作模式:空闲方式与掉电方式。

空闲方式(休眠方式)

将IDL/PCON.0置为1,可以使单片机进入空闲模式。在空闲模式下,单片机内部时钟停止工作,使自身功耗大幅度降低。但是外部中断、定时计数器等部件仍然正常工作,以保证发生各种突发情况时能够快速恢复单片机的工作。空闲模式下,看门狗定时器是否工作取决于空间状态的模式位,若此位置"1",则看门狗在空闲模式下不再计数,停止工作。反之,看门狗定时器正常工作,以保证程序运行异常时能够快速恢复工作。

有两种方式可以退出空闲模式。一,任何中断的产生都会使单片机退出空闲模式,转向正常工作状态。二,可以通过外部复位脚RST来使单片机退出复位模式。当外部复位脚被施加24个时钟周期以上的高电平,可以使此状态下的单片机复位。单片机复位成功,用户程序从0000H执行。

掉电方式

掉电方式即停机方式,进入掉电模式后,单片机内部时钟停止工作。由于缺少时钟源,单片机的大部分模块,如:CPU、定时计数器、串行口等停止工作,但是外部中断口仍然保持正常的工作。进入本模式时,所有I/O口、特殊功能寄存器保持进入本状态前的工作状态。

(6) 闪速存储器的编程

STC90C516RD+单片机内部自带64K的用户存储器,该存储器初始状态均为"1",此时可以对其进行编程。

编程时,STC90C516RD+ 单片机利用内部携带的地址指针控制器完成地址指针的修改工作。

(7) 在线编程

STC90C516RD+编程需要悬空RST,使用P1、P3口提供编程所必须的控制信号与数据信号,这就对用户程序提出要求,即用户设计不与这些引脚冲突。因此,在线编程需要与用户电路分开,由专用电路实现。例如,图3.5显示了在线编程的一个例子,它使用2选1器件74LS357来实现芯片的选择信号,实现在线编程。利用XTAL1选择SW加载,产生控制信号的选择,2选1器件74LS157和三态缓冲器74LS244装置的开关线。正常工作时的STC90C516RD+单片机,选择控制信号(selecg = 0)所有74LS157输入端和输出连接控制,输出74ls244-1有效,74ls244-2三态输出使STC90C516RD+可以控制用户电路;当STC90C516RD+需要编程,选择控制信号(E= 1)都74LS157 输入端输出端连接到控制,和74ls244-1三态输出,输出74ls244-2有效,使STC90C516RD+被编程电路选中,接受编程电路控制,进行编程操作。

3.2.2 系统振荡电路设计

单片机系统利用晶体振荡器产生标准时钟信号,以驱动其各部分工作。根据晶振不同的使用条件和环境,主要有以下几种:普通晶振、温补晶振、压控晶振等。在设计晶振电路时,应注意晶振在电路中是重要的干扰源,抗干扰设计必须得到重视[11]。

装置使用直流电源供电,试验装置应具有足够的精度,连接布置合理,以尽量减少试验和外围电路的影响。

(1) 普通晶振(PXO):不带任何补偿措施的晶体振荡器,在使用中的频率稳定性取决于晶体的使用性能,一般在10-5量级。由于其不具有补偿功能,其稳定性较其他种类的晶振可能较低,但其性价比高,在一般系统中足以承担起作用,时应用最为广泛的一类晶振。

(2) 温补晶振(TCXO):在振荡器内部,设计了温度补偿措施,使得温度变化对晶振频率的变化影响降到最低。可以在较大的温度范围内保持较高的准确性和稳定性。工作在温度变化较大且对晶振频率要求较高的系统可以考虑使用此类晶振一保证系统整体质量。

(3) 恒温晶振(OCXO):内部设置精确的温度控制电路,时晶振工作在零温度系数点,晶振的精度大大提高。产品精度频率稳定性10-7 、10-8、10-9量级以上的为高精密产品的频率稳定性。主要用作频率源或产生标准信号。

(4) 压控晶振(VCXO):通过调节外加电压,引起晶振的变化,主要用于锁相环和频率调谐振荡器的输出频率。电压控制晶体运行参数于由外部的变容二极管组成的晶体参数电路决定[12]。

晶体振荡器的技术指标:

(1)总频差:在单位时间内,晶振的频率和给定的标称频率和晶体振荡器的频率之间的最大频率差是由规定的工作和非工作参数的组合引起的。

(2)温度稳定度:在额定功率和负载下,基准温度或内隐参考温度的最大允许频率偏移量在规定的温度范围内。

(3)频率稳定预热时间:从上电到输出频率符合规定频率允许偏差所用的时间。

(4)频率压控范围:频率控制电压由基准电压变化到终点电压过程中,晶振频率的最小峰值改变量。

(5)频率压控线性:输出频率-输入控制电压特性的理想函数是一条直线,频率压控线性表示所允许频偏的非线性度。

本系晶振电路的设计如图3.6。由于系统对晶振电路要求不是很高,此电路可以使系统稳定可靠的运行。但由于C1 C2电容可以起到稳定系统电路,减小系统时钟偏差的作用。因此,这两电容的选择应尽量保证电路的对称性,选择正规厂家生产的瓷片或云母电容,温度系数尽可能低,这样可以保证电路的稳定工作。

3.2.3 系统复位电路设计

单片机系统应该设计有上电复位和手动复位电路。复位电路正常有两种实现方式:即专用µp监控电路和RC复位电路。专用µP监控电路复位准确性高,可靠性高,但是成本较高,适合对复位要求很高的系统。对于一般单片机电路,对复位电路要求较低,RC复位电路即可满足要求,且电路简单易于实现,成本也低。

(1) 专用µP监控电路

专用µP监控电路称为电源监视,当电源电压下降到"阈值"产生一个可靠的复位信号电源监控电路与功率等功能。按时效电平分,有高电平输出、低电平输出两种;按功能分,有简单的电源监视复位电路、带看门狗定时器(WATCH DOG Timer,WDT)的监控电路和WDT+E2PROM的监控电路等多种类型。

(2) RC复位电路

本设计采用RC复位电路。电路设计如图3.7:

该电路在上电时可以提供一段时间的高电平信号直至系统电源稳定,该高电平信号便作为单片机的复位信号即可。单片机的复位信号只需要高电平时长达到两个机器周期即可完成复位操作。

在实际设计制作中,通过改变电容C和电阻R1的大小,可以改变该电路的时间常数,即可改变其保持高电平的时间。只需改变着两参数,使上电时输出电平保持两个机器周期以上的高电平。通常C1取值10µF,R1取10ΚΩ左右。从图3.8所示的复位信号波形图可以明显看出,可以在电路中增加二极管,改善复位性能,时系统能够可靠复位。

3.2.4 按键与按钮电路设计

按键电路正常有两种设计方式,矩阵键盘电路和独立按键电路。矩阵键盘电路可以使用较少的I/O口控制较多的按键,但是硬件较独立按键复杂。独立按键则每个按键占用一个I/O口,硬件简单易实现。由于本设计只有四个按键,按键较少,且I/O资源充沛,因此选用独立按键设计,简化设计增加稳定性。

设计过程中,需考虑按键去抖动的问题,正常有两种解决方式:硬件去抖动和软件去抖动。硬件去抖可以使用专用接口芯片,也可以使用触发器等器件实现。但是这种方法需要增加额外的部件,增加成本与硬件复杂度,本设计对按键部分要求较低,可以选用软件去抖动方式。软件方式在读取到有键被按下信号后,设置一段时间的延时,再次进行扫描,通过延时达到去抖动的目的。

3.2.5 数字钟的显示电路设计

(1) LCD的选择

LCD(Liquid Crystal Display)即液晶显示器。

LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。

图3.9为LCD液晶屏:

12864ZW汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)

主要技术参数和显示特性:

电源:VDD 3.3V~+5V(内置升压电路,无需负压);

显示内容:128列×64行

显示颜色:黄绿

显示角度:6:00钟直视

与MCU接口:8位或4位并行/3位串行

配置LED背光

多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等

12864ZW在单片机系统中作为液晶显示器输出器件有以下几个优点:

显示质量高

由于在接收信号的液晶显示器每一个点的颜色和亮度保持恒定,恒定发亮,而不像一个阴极射线管显示器(CRT),需要不断刷新新亮点。因此,液晶显示不会出现任何几何失真,线性失真。高质量,不会闪烁,体积小、重量轻。

液晶显示器由于其工作原理的特殊性,无须如阴极射线管这类设备,大大降低了体积,厚度只有6~8.5mm,重量上也比传统显示设备低得多。

低压微功耗

液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。12864液晶屏可直接由单片机驱动,不需要专用电源电路,安全节能可靠。

(2)模块引脚说明

12864ZW引脚说明如表3.1所示:

表3.1 12864ZW引脚说明

逻辑工作电压(VDD):4.5~5.5V

电源地(GND):0V

工作温度(Ta):0~60℃(常温)/-20~75℃(宽温)

(3)接口时序

此模块有并行和串行两种连接方法(时序如下):

8位并行连接时序图

MCU写资料到模块时序如图3.10:

MCU读数据时序如图3.11:

串行连接时序图

串行读写时序如图3.12:

串行数据传送共分三个字节完成

第一字节:串口控制---格式 11111ABC

A为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCD

B为数据类型选择:H表示数据是显示数据,L表示数据是控制指令

C固定为0

第二字节:(并行)8位数据的高4位---格式 DDDD0000

第三字节:(并行)8位数据的低4位---格式 0000DDDD

串行接口时序参数:(测试条件:T=25℃VDD=4.5V)

LCD模块硬件实现

LCD液晶屏与单片机的通信方式可以分为两种:并行方式与串行方式,两者应用场合不同,硬件电路和软件设计都有着很大的区别。

并行方式:一次传输8位(4位)数据,传输速度快,但是占用I/O口较多。适合短距离通信。

串行方式:一位一位传送,传输速度较慢,但占用I/O口少,硬件简单。

LCD并行驱动的电路原理图如图3.12所示:

图中显示的是12864的8位数据线与单片机的P0口相连,3根控制线分别连接P2.0,P2.1,P2.2。该电路使用单片机的11个端口使液晶屏顺利显示。

3.2.6电源设计

在本设计中,由于STC90C516RD+工作电压是4~6V。考虑精简设计,降低成本,选用最方便可靠的5V。电源系统设计如图3.13示。

3.2.7时钟信号发生电路设计

本设计采用DS1302时钟芯片产生日期与时间信号。

DS1302与单片机之间采用同步串行方式进行通信,只需要三根线即可完成通信:RES复位、I/O数据线、SCLK时钟线。此种通信方式,一位一位进行传输,由起始位开始,后接8位数据位,以终止位结束,完成一个字节的传输。单片机在SCLK的上升沿写指令、数据到DS1302。写入完成后,在SCLK的下降沿可以读出芯片内部存储器中的内容。

DS1302 是由DS1202 改进而来的,提供了双电源管脚分别用于主电源和备用电源供电。正常工作状态下可以对备用电源进行涓流充电,延长其使用寿命。本芯片体积小,使用方便,广泛应用于需要时钟信息的各类便携式电子产品中

DS1302的外部电路如图3.14所示:

由于DS1302与单片机只有三根信号线相连,采用串行方式进行数据传输,此芯片的单字节读时序如图3.15所示:

图3.15 DS1302单字节读时序

单字节写时序如图3.16所示:

图3.16 DS1302单字节写时序

SINGLE BYTE READ:以字节为单位进行读写,若要读出内部存储器中的内容,需要先对其写命令。在SCLK的每个上升沿写入一位数据,从最低位开始,当八位全部写入后,紧接着八个下降沿,单片机可以从数据线上按位由低到高读数据。

3.2.8温度检测电路设计

普通的温度传感器输出的是模拟信号,需要经过放大、AD转换等环节才可转化为数字信号送入计算机进行处理。这样温度检测模块的可靠性和稳定性将降低。

因此,本设计采用数字温度采集芯片DS18B20采集信号。DS18B20可直接输出数字信号,避免复杂的外部放大处理电路,提高温度采集的工作效率和采集精度。本芯片采用单总线数据传输方式,测量分辨率达到0.0625℃,测量精度高,温度信息直接以十六位数字量形式输出。采用DS18B20测量温度,可以提高集成度,大大减小产品体积,减小外部干扰,提高系统稳定性。

DS18B20与控制器之间采用串行方式进行数据传输,它有独特的单线接口,仅需要一根线即可完成控制器与DS18B20的双向数据传输。根据本芯片的通信协议,控制器控制DS18B20完成温度转换必须经过一下几个步骤:

1.复位DS18B20;每次都写之前都要进行本操作,复位要求CPU将数据线下拉500MS,然后拉高。DS18B20发到信号后,复位成功发出应答信号,CPU收到此信号后表面复位成功,可进行下一步操作。

2.发送一条ROM指令。

3.发送RAM指令。

DS18B20接线如图3.17所示:

第四章 程序设计

4.1软件开发语言及平台

4.1.1 单片机开发语言的选择

本设计选择使用C语言作为编程语言进行软件部分的设计。

单片机的C51编程与用汇编ASM-51编程相比,有如下优点:

1.不要求编程人员对单片机的指令系统有深刻的认识,也不要求编程人员熟悉存储器的结构和工作方式,可以直接用C语言编程实现其功能。

2.汇编编程需要手动分配存储空间,操作繁琐。这项工作在C语言中由编译器完成,简化编程。

3.标准函数库中包含诸多标注子程序,具有很强的数据处理功能,编程中可直接调用这些子程序,方便快捷。

4.结构化的编程方式,使得程序结构一目了然,各模块实现各自的功能,可读性高,可移植性高。

5.与使用汇编语言相比,C语言开发和调试的周期大大缩短。

因此,选用C语言作为本设计的开发语言

4.2软件设计

4.2.1主程序设计

主模块是系统软件的主框架。结构化程序设计是先把系统要实现的功能划分为一个个模块,分别解决每一模块的问题,使各模块实现自身的功能,然后将各模块组合成完整的系统。每一模块的合理与否关系到程序最终功能的多少和性能的好坏。本系统主模块的程序框图如图4.1。

图4.1 主程序流程图

根据系统设计要求,本设计的软件设计部分主要包括显示程序设计,按键模块设计与时钟信号读写处理程序设计。

其中主函数由初始化函数和while死循环组成。初始化函数主要对DS1302和12864液晶屏进行初始化。DS1302初始化程序写入初始日期时间,设定时钟芯片的计时方式为24时计时法。12864液晶屏的初始化程序设计本模块的通讯方式为8位并行方式,无光标显示指针方向加一并清屏。主函数程序结构如下:

4.2.2显示模块程序设计

根据系统要求,数字钟的显示由12864完成,显示程序包括初始数据的写入,地址的写入,数据的刷新等部分完成。其流程图如图4.2所示。

12864显示根据上章时序图,在主程序完成初始化后,如果没有需要更新的内容,则短暂延时后再检测是否需要更新显示内容。若有内容需要更新,判断其忙标志位,若其处于空闲状态,先向12864写入控制信号,指定本次操作的目标寄存器。随后写入数据信号,完成显示内容的更新。12864显示屏的程序结构如下:

写命令程序:

写数据程序

图4.2 显示模块流程图

4.2.3时钟信号发生模块程序设计

时钟信号由DS1302产生,在完成DS1302初始化后,该芯片自动进行计时并刷新内部RAM。该模块程序主要完成对DS1302内部RAM数据的读写与读出数据后的处理工作。本模块程序结构如下:


第五章 系统的调试与结果

分别完成了智能数字钟的硬件和软件设计,需要对其进行调试,以验证设计的正确性和合理性,保证系统能够正常稳定运行。

5.1 系统调试环境及设备

本设计硬件部分制作在电路板上,与采用面包板搭建系统相比,整个电路结构紧凑,体积小,不需要外部接线,降低了元器件之间的互相干扰,方便调试系统。PCB图如图附录3所示。

5.2 软件调试
5.2.1软件调试环境

系统以单片机C51语言编程,在Keil uVision4集成环境中完成软件的编写与调试,其工作窗口如图5.1所示。整个软件编程调试过程中,应先对各个模块分别进行编程调试,各个模块能够正确完成其功能后,进行整体系统的调试。这是系统调试最重要环节,也是整个系统能否顺利顺利完成的重要步骤。

程序编译通过后,如果编译器显示:0错误,说明程序编译通过,但并不意味着程序能够实现我们需要的功能,我们需要将程序下载到单片机中,与硬件结合进行调试。STC90C516RD+单片机可以在线编程,可以使用STC-ISP V483 下载软件通过计算机串口将程序烧录到单片机中,程序下载界面如图5.2所示;第一步,在MCU type中选择单片机型号:STC90C516RD+;第二步,点击打开文件按钮,选择程序调试通过后生成的HEX文件;第三步,选择计算机的COM口和波特率(一般选择9600bps);第四步,选择系统默认值;第五步,点击Download按钮。下载时,先连接单片机,点击按钮后再连接单片机的电源线(冷启动),等待下载完成即可

5.2.3软件调试中遇到的主要问题

虽然数字钟的功能比较少,但是程序调试过程中所遇到的问题还是比较多。主要问题集中在以下几个部分:

1.12864液晶屏显示问题

由于12864液晶屏的读写时序与1602基本相同,读写命令控制函数完成的都比较顺利。但是在写数据过程中,对于写什么类型的数据,数据是如何显示的这方面比较模糊,只能继续在数据手册中去寻求答案。由于本次设计采用的液晶屏是带汉字字库,要显示汉字只需要输入汉字的内码即可显示,在程序中即以字符串数组的形式写入。

搞清楚了液晶屏的数据形式后,可以在液晶屏上显示一些画面,但是无法显示预想中的结果。为了解决此类问题,考虑到问题有可能出现在初始化阶段,根据数据手册中的初始化部分内容,现将初始化模块归纳为以下几个部分:清屏,显示方向的选择,开启液晶显示,设置液晶从第0行开始显示等。在完成初始化程序后,液晶屏可以显示某些正确内容,但是也很容易出现乱码。经过仔细的检查调试,发现乱码的原因可能出现在单片机的忙检测函数没有正确工作。由于读写指令、数据过程中都添加了短暂延时,本以为并不需要忙检测函数即可正常工作。在频繁出现乱码后,添加忙检测函数,使每次传输的数据都可以完整的传送到液晶屏,能够避免出现数据、指令传输不完全的情况。经过这些错误的排除,液晶屏模块的调试基本完成,可以按照预想的方式显示汉字与数字

2.DS1302芯片的数据处理问题

我使用的单片机的P2.1(CLK),P2.0(IO),P2.2(CE),可是时间读出来总是85,把1302拔掉,读出来还是85,知道是没有读到1302。没有办法,自己研究数据手册,发现与其他芯片不同的读写时序,此芯片是在上升沿读取数据,下降沿写入数据。更改完读写程序,单片机可以读到初始化后的时、分、秒等数据了。于是将从DS1302读出的数据写入显示屏,可以在显示屏上显示出一些数据,但是这些数据并不是我所期望的时、分、秒,并且秒数据极其不稳定,会出现乱跳的情况,从20跳到40......此时意识到从DS1302中读出的数据是以BCD码的形式存放的,因此程序中缺少一段BCD转16进值的转化程序。在读出数据后添加转化程序后,将从DS1302中读出的BCD码转化为16进值以字符串的形式送显示屏显示。在解决了数据转化的问题后,可以在显示屏上正确显示出时间与日期信号。到此,时钟信号发生模块的调试告一段落。

解决了12864液晶屏的显示与时钟信号发生模块的问题之后,整体的软件调试就得以顺利进行了。经过整体的调试,电子钟的功能基本得以实现。

5.3硬件调试

在硬件调试的过程中,最大的困难在于液晶显示电路的测试工作。由于12864ZW液晶模块具有20个引脚,除去DB0到DB7八根数据线和使能端(E)、读写选通信号(RW)、地址数据选择信号(RS)三根控制线,剩余的9个引脚的接线方式成为主要问题。通过查阅数据手册,12864的1号脚VSS是模块的电源地接0V,2号脚VDD是模块的电源正段接+5V,16,18脚为空引脚直接悬空。17号脚复位引脚,由于不需要外部复位电路,此引脚直接接+5V。19脚为背光电源正极,20脚为背光电源的负极,分别接0V和+5V。剩下两个引脚:3号脚V0,LCD驱动电压输入端,应通过电阻接电源正极。由于本设计选择的12864ZW液晶屏集成了驱动电源,因此,3号脚可以直接悬空。15号脚PSB并/串行接口选择端,此引脚在调试过程中带来了很大的麻烦。

本设计采用8位并行的方式传输数据,则PSB应该接高电平。在最初的设计中,PSB接单片机的P3.1口,软件中赋予其高电平,选通并行传输方式。此方案在实际调试过程中出现了非常严重的乱码问题,即数据线上的数据不能完整的传输到液晶屏中。经过长时间的修改程序,这一问题难以得到解决。只能采取其他的方式解决这一问题,考虑到设计中液晶显示模块只用到并行的传输方式,那么直接将PSB引脚在硬件部分赋予高电平,使其直接选中并行传输方式。经过调试,此方案简单可靠,成功的解决了软件赋值带来的乱码问题。

第六章 总结与展望

6.1总结

本次的论文主要完成了基于单片机的智能数字钟的设计与调试,该数字钟主要具备了日期时间的显示,温度的显示,重大节日的提醒等功能。

单片机智能数字钟发挥了单片机在智能化方面的应用,是一个理想的智能化的设计。本设计虽然规模较小,但是功能较为实用,并且能够进行进一步的扩展,使其功能更加多样,应用范围更加广泛。

通过这段时间的学习和调试,最终完成了智能数字钟的设计与调试工作,使之能顺利运行,符合其设计要求。在这次设计调试过程中,也了解了单片机系统的开发步骤:先了解实际的具体要求,在确定具体的设计方案,了解所用到的各个模块的功能,然后画出电路图,完成各模块的设计调试,最后进行整体的调试。

硬件部分主要完成了PCB电路板的制作与焊接,完成了各模块的调试与系统整体的调试工作。在制作过程中,有效学习了Altium Designer的使用,了解了电路板制作过程中的步骤与注意事项。强化了对陌生芯片的学习与使用能力,在今后的学习工作中,遇到此类问题可以通过对数据手册的学习来解决芯片的使用问题。软件部分完成了C语言的编程,强化了用C语言解决问题的能力。

单片机是功能强大的软硬件结合的系统,随着数字技术的发展,单片机的功能更加强大和应用领域将更为广泛,将为我们的生活带来更多的便利。对于我们自动化的学生来说,这既是一种机遇也是一种挑战。通过本课题的设计,系统的将大学四年学习的各种知识运用到实践当中,也培养了直接独立解决问题的能力,给以后的学习工作带来很大的帮助。

6.2展望

随着微电子工业的发展,特别是片上集成电路的飞速发展,单片机技术会越来越多的被应用于工业生产与我们的日常生活之中。社会生活节奏的加快也催生了对高精度时钟的要求,基于这些方面的原因,本设计主要完成了单片机的智能数字钟设计。

为了适应当今社会和市场的要求,单片机技术与现实生产生活的联系将越来越紧密,单片机技术应向以下几个方面发展:

1.不断提高单片机的计算速度

单片机系统将被运用于越来越复杂的工作中去,复杂工作对单片机的计算能力与计算速度提出了新的要求。由最初的8位机,发展到现在的16位,32位,总线宽度的扩展似的CUP的计算能力得到提高。虽然目前单片机的运算速度较之前已经有了巨大的提高,但仍有巨大的发展空间。

2.片内存储器的发展

片内的程序存储器现在通常采用闪速(Flash)存储器。Flash存储器可以在+5V条件下读/写,既有静态RAM的读写,又有掉电数据不丢失的有点。片内存储器的应用,使得单片机可以不用片外扩展存储器,大大优化了系统结构。目前单片机的片内存储器容量越来越大,从最初的1K发展到现在的128K甚至更多。今后的单片机片内存储器容量会更大。

3.低功耗化

目前,8位单片机产品基本已CMOS化,CMOS芯片的单片机具有低功耗的优点。同时,为了充分发挥这一的特点,这类单片机设计了睡眠模式、等待模式、关闭状态等工作方式。设计了这些工作方式,单片机的功耗电流可以控制为uA量级,非常适合电池供电的可携带电子产品中,大大减小其体积。

综上所述,单片机系统正向着高性能、高速度、大容量、低功耗的方面发展。在社会生活的方方面面发挥着重大作用。

致谢

本次设计与论文撰写是在老师的指导下完成的,从论文的选题,开题报告的撰写,到实物的制作调试,到最后论文的修改定稿,徐老师都倾注了大量的心血。徐老师严谨的治学态度和科学的工作方法给了我极大的帮助;老师帮我们拟定题目,遇到问题时,帮助我们解决问题,教给我们解决问题的方法。四年的大学生活中,徐老师给予了我许多帮助,借此机会,向徐老师表示感谢

大学期间,自动化教研室的各位老师在学习、生活上给予了我大量帮助。还有身边的同学,每次遇到困难,他们总是与我站在一起,共同度过,在此对大家表示感谢。

此次毕业设计即将结束,在顺利完成答辩后,我们将走出校园,进入人生的下一个阶段。但是,大学四年老师同学的关心照顾我将铭记在心。

参 考 文 献

[1]蔡渊志.浅谈单片机电子时钟[J].华人时刊.2013

[2]张帅.一种兼容MCS-51指令集的高速MCU的设计及实现[D].哈尔滨:哈尔滨工业大学.2012

[3]刑铁增.GPS在瞬变电磁系统同步中的应用研究[J].物探化探计算技术.2010

[4]林敏,于忠得,舒奎.74LS164在2051单片机LED显示电路中的应用[J].大连轻工业学院学报.2001

[5]谢奕胜.基于DSP的心电监护仪的设计与研究[D].西安.西北工业大学.2005

[6]吕成丽.基于遥控与手写屏的电子席位卡设计与实现[D].镇江.江苏大学.2011

[7]李谊萍.基于单片机的水浴电锅炉恒温控制系统设计[D].南昌.南昌大学.2014

[8]魏丽芳.浅谈超声波测距仪设计[J].投资与创业.2012

[9]刘凤格.MCS-51单片机的时钟电路[J].菏泽师范专科学校学报.2003

[10]詹文彬.智能钻孔测斜仪设计[D].西安.西安交通大学.2009

[11]肖鹏.一种用于温度补偿晶体振荡器的芯片设计[D].武汉.华中科技大学.2009

[12]胡上.基于C8051F061的微机补偿晶体振荡器.湖南.湖南大学.2010

相关推荐
WaaTong15 分钟前
《重学Java设计模式》之 原型模式
java·设计模式·原型模式
m0_7430484415 分钟前
初识Java EE和Spring Boot
java·java-ee
AskHarries17 分钟前
Java字节码增强库ByteBuddy
java·后端
小灰灰__37 分钟前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
夜雨翦春韭41 分钟前
Java中的动态代理
java·开发语言·aop·动态代理
程序媛小果1 小时前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林1 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨1 小时前
El表达式和JSTL
java·el
duration~2 小时前
Maven随笔
java·maven
zmgst2 小时前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql