APP下载

基于Proteus的电子钟项目的实践教学

2017-11-07王莉军

科技视界 2017年17期
关键词:电子钟

王莉军

【摘 要】单片机是一种集成度很高的微型计算机,是现代电子系统中重要的智能化工具,广泛应用于工业自动化控制、家用电器、智能仪表、汽车电子、航天电子等。在单片机课程教学中,理论结合实践的综合性课程设计项目教学是非常重要的。本论文介绍了一个单片机课程设计中非常经典的电子钟设计项目,通过该案例的设计分析,可以使同学们能够熟练掌握并灵活运用所学的知识,了解一个产品开发的全过程,锻炼学生的创新、独立思考、解决问题的能力。

【关键词】电子钟;Proteus;LCD1602;DS1302

中图分类号: F426.63 文献标识码: A 文章编号: 2095-2457(2017)17-0004-002

Practice Teaching of Electronic Clock Project Based on Proteus

WANG Li-jun

(Department of Computer Science and Technology,Sanda University,Shanghai 201209,China)

【Abstract】In Single chip microcomputer course, project teaching of comprehensive curriculum design is very important. This paper introduces a very classic curriculum design of the electronic clock project. Through this project, students can master and apply the knowledge, understand the whole process of a product development. Students' creativity, independent thinking and problem solving skills can be exercised.

【Key words】Electronic Clock; Proteus; LCD1602; DS1302

0 前言

随着LCD液晶显示屏的普及,很多地方我们都能看到电子钟的应用,比如电子手表、测试仪器、智能家电、公共场合的大屏幕时间显示屏等。本论文介绍了一个基于Proteus单片机仿真平台的电子钟设计[1]。

1 总体设计

本电子钟的功能是通过液晶显示屏实时显示时钟。电子钟包括时钟模块、显示模块,具体的流程是先把设置的初始时间写入时钟芯片并驱动时钟运行,然后单片机每隔一段时间读出时钟芯片的当前时间,并通过液晶显示屏显示出来。

2 详细设计

2.1 时钟模块

2.1.1 DS1302模块电路设计

时钟模块采用DS1302芯片,该芯片总共包括8个引脚:1脚VCC2为主电源和8脚VCC1为后备电源,可接电池;2脚X1和3脚X2为晶振引脚,外接32768Hz晶振;4脚GND接地;5脚/RST为复位/片选引脚;6脚I/O为串行数据输入输出引脚;7脚SCLK为串行时钟引脚。单片机通过5、6、7脚控制DS1302时钟芯片。5脚/RST连接到单片机P1.7, 6脚I/O连接到单片机P3.4,7脚SCLK连接到单片机P3.5[1]。

2.1.2 DS1302模块软件设计

对DS1302的操作实际上就是对主要的8个时钟寄存器进行读写。具体的控制流程是先写入控制字,然后再写入或读出寄存器数据。寄存器控制字包括读写的寄存器地址和读写操作等信息,最高位bit7固定为1,bit6为RAM和时钟的选择位,bit5~bit1为寄存器地址位,bit0为读写选择位。

接下来就是怎样写入寄存器控制字和读写寄存器数据,这就要涉及到DS1302读写时序。DS1302

单字节一次读取和写入过程可以看成是对两个字节的读写操作,即1个字节的寄存器控制字和1个字节的读写寄存器数据。例如单字节读时序是先写入一个字节的寄存器控制字(以便知道要读取哪个寄存器数据),然后再读出对应寄存器的一个字节数据。单字节写时序也是先写入一个字节的寄存器控制字,然后写入一个字节数据到对应的寄存器。而且对于一个字节的寄存器控制字和寄存器数据,它们的写过程是一样的,也就是说写一个寄存器控制字和写一个寄存器数据可以调用同一个函数的,所以可以只设计两个底层接口函数,用于读、写单个字节:void write_byte(uchar addr)和uchar read_byte(void)。DS1302单字节读时序可以调用写控制字write_byte(addr)和读数据read_byte()两个函数,对上一层的接口函数为uchar read_ds1302(uchar addr),即从某个寄存器中读取数据。而DS1302单字节写时序可以调用写控制字write_byte(addr)和写数据write_byte(data),对上层的接口函数为write_ds1302(uchar addr,uchar dat),即将数据写入指定地址的寄存器。

写单字节函数void write_byte(uchar addr)的流程是在时钟的上升沿将每一个数据位写入DS1302,具体流程为:将字节从低位开始依次写入DS1302,即先取数据的最低位放在I/O数据线上,然后SCLK电平设为高电平,产生上升沿,此时I/O上数据会写入DS1302,再将SCLK置为低电平,数据右移一位,为下一次数据位传输做准备,然后又进入下一位数据的传输。读单字节函数uchar read_byte(void)的流程是在时钟的下降沿时通知DS1302要取数据位,在低电平一段时间等DS1302准备好数据后,再从I/O数据线上读取一位数据,而且在写控制字的最后一位的时钟周期,要读取的数据最低位已经在I/O数据线上,具体流程为:先讀取I/O数据线上的数据位,将它保存在一个数据的最高位,SCLK置为高电平,然后再置为低电平,产生下降沿,通知DS1302要取下一位数据,并且将保存的数据右移一位,以便将新接收的数据位放在保存数据的最高位[2]。endprint

2.1.3 DS1302模块仿真测试

通过Proteus和Keil软件联合仿真DS1302时钟模块,写入时间2017年9月1日 12点30分30秒能正常写入,仿真結果如图1所示:

图1 DS1302模块仿真测试结果

图2 LCD1602液晶显示流程图

2.2 显示模块

2.2.1 电路设计

显示模块采用LCD1602,它总共能显示32个字符,分两行显示。LCD1602芯片总共有16个引脚。主要的控制和数据引脚有:RS指令/数据寄存器选择引脚4,高电平时选择数据寄存器,低电平时选择指令寄存器,接单片机P1.0;RW读写选择引脚5,高电平时读操作,低电平时写操作,接单片机P1.1;E使能引脚6,接单片机P1.5;D0~D7数据引脚7~14,接单片机P0端口[3]。

2.2.2 软件设计

单片机主要是通过4脚寄存器选择RS、5脚读写选择RW、6脚使能E来控制LM1602液晶显示模块。

LM1602有16×2个显示位,每个显示位对应于一个RAM单元,而且系统规定,写操作时的地址最高位为1,读操作时的地址最高位为0,所以读操作时RAM的地址范围为:第一行00H~0FH,第二行40H~4FH,写操作时RAM的地址范围为:第一行80H~8FH,第二行C0H~CFH。根据RAM地址表,可以确定如何显示字符,即先写入字符显示的首地址,然后依次连续写入要显示的字符。那么如何将显示的地址和显示的字符写入LCD1602呢,它们都是根据LM1602芯片的读写操作控制时序写入的,当E为下降沿脉冲时写入指令或数据,当E为高电平时读出状态字或数据,而且它是并行数据传输的,时序相对于DS1302的串行数据传输简单些。

要在液晶显示器上显示两行字符串,可以将需要显示的两行字符串分别存放在两个字符数组里,流程图如图2所示。LCD的初始化主要是设置LCD的工作模式、清屏、光标显示方式等,即清屏显示指令为0x01,表示清除所有显示数据;输入模式指令为0x06,表示读写一个字符后地址指针会自动加1;显示开关控制指令为0x0F,表示整屏显示;显示模式指令为0x38,表示8位数据接口,双行显示。设置第一、二行首地址,写命令和写数据操作可以根据LM1602芯片的读写操作控制方式写出[4]。

2.2.3 仿真测试

LCD1602模块显示功能测试结果如图3所示,第一二行都能正常显示字符。

图3 LCD1602模块仿真测试结果

图4 电子钟系统仿真测试结果

2.3 系统测试

将时钟模块和液晶显示模块联合仿真测试,结果如图4所示,设置的初始时间为2017年9月1日,12点30分30秒,星期五,设置后,时钟能正常工作。图中也包括单片机的时钟、复位电路[5]。(下转第7页)

(上接第5页)

3 结语

本文介绍了基于Proteus的电子钟项目的教学实践过程,它的特点是在没有硬件开发平台的环境下,同学们也可以进行项目的开发实践,并且通过该项目,同学们可以了解一个项目的开发流程,以及熟练掌握常用的时钟模块DS1302、液晶显示模块LCD1602的设计方法。

【参考文献】

[1]老杨.51单片机工程师是怎样炼成的-基于C语言和Proteus仿真[M].北京:电子工业出版社,2012:284-298.

[2]宋雪松,李冬明,崔长胜.手把手教你学51单片机[M].北京:清华大学出版社,2014:264-298.

[3]魏芬主,戴丽佼,李红霞.基于Proteus的单片机实验与课程设计[M].北京:清华大学出版社,2015:218-222.

[4]林立,张俊亮.单片机原理及应用-基于Proteus和Keil C. 第3版[M].北京:电子工业出版社,2014:213-218.

[5]张霞,周克,何威,张超.基于MCS-51单片机的液晶显示设计[J].自动控制,2014.3:71-74.endprint

猜你喜欢

电子钟
基于LIN总线的车载电子钟控制系统设计与研发
电子钟被拆之后
基于STC80C51的电子钟研制
基于QuartusⅡ可校时电子钟的设计
用电子钟演示电容器的电荷量与电压的关系值得商榷
基于EPM1270的可校时电子钟设计