收藏 分享(赏)

江西财经大学软件与通信工程学院.ppt

上传人:天天快乐 文档编号:1178826 上传时间:2018-06-17 格式:PPT 页数:40 大小:2.86MB
下载 相关 举报
江西财经大学软件与通信工程学院.ppt_第1页
第1页 / 共40页
江西财经大学软件与通信工程学院.ppt_第2页
第2页 / 共40页
江西财经大学软件与通信工程学院.ppt_第3页
第3页 / 共40页
江西财经大学软件与通信工程学院.ppt_第4页
第4页 / 共40页
江西财经大学软件与通信工程学院.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、单片机系统设计,教师:朱华贵2016年11月22日、24日18970866755,数字电子钟的设计与制作(1) -DS1302、LCD1602,朱华贵2016年11月22、24日,单片机系统设计,一、实验目的,1、了解实时时钟芯片DS1302的工作原理,掌握单片机I/O口线模拟串行总线接口与编程方法;2、了解总线的工作原理和编程方法,掌握单片机与液晶显示LCD1602的接口与显示编程方法;3、了解并掌握Proteus平台下的调试器的使用。,二、设计要求,利用单片机系统扩展实时时钟芯片DS1302和LCD1602,设计并制作一数字电子钟。设计基本任务及要求:1.数字电子钟具有显示日期:年、月、日

2、、星期;2.具有显示实时时钟:时、分、秒的功能,LCD实时显示;3.其他等功能(例如:用彩屏显示)。,三、实验步骤,1、利用Proteus绘制数字电子钟的基本电路(主要包括AT89C51、DS1302、LCD1602)Proteus仿真电路,详见参考电路。2、利用Keil C51编写读写实时时钟芯片DS1302的时钟数据送到LCD1602中显示。显示格式为年月日时分秒。3、正确连接实验模块电路。(注意连线)4、将仿真成功后的程序.HEX文件下载到实验箱,进行显示。,数字电子钟的Proteus仿真电路,1. DS1302芯片相关知识(1) DS1302简介DS1302是DALLAS公司推出的一种

3、高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压为2.55.5V。DS1302采用三线接口,与CPU进行同步通信,并可采用突发方式一次传送多个字节的时间数据或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM存储器。(2) DS1302的引脚功能DS1302的引脚功能如图及表所示。,四、实验使用器件介绍-DS1302,(3) 控制字格式控制字格式如表7-2所示。控制字最高位必须是1,如果它为0,则不能把数据写入到DS1302中,位6如果为0则表示存取日历时钟数据,为1表示存取RAM数据;位51指示操作单元的地址

4、;最低位为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。,表7-2 控制字格式,控制字总是从最低位开始输出。在控制字指令输入后的下一个 SCLK时钟的上升沿时,数据被写入 DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个 SCLK脉冲的下降沿,读出 DS1302的数据,读出的数据也是从最低位到最高位。,(4) 复位和时钟控制DS1302通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,

5、所有数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此数据传送,并且I/O引脚变为高阻状态。上电运行时,在VCC2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。(5) DS1302寄存器7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字如表7-7所示。,时钟与日历暂停:时钟与日历包含在七个写/读寄存器中,采用BCD码形式。秒寄存器的位7(CH)为时钟暂停位,为1时,时钟振荡停止,DS1302为低功率的备份方式,当为0时,时钟将启动。AM-PM/12-24方式:小时寄存器的位7定义为1

6、2/24小时方式选择位。为高电平,选择12小时方式。在12小时方式下,位5是AM/PM位,此位为高电平时表示PM。在24小时方式下,位5是第二个10小时位(2023时)。,写保护寄存器:写保护寄存器的位7是写保护位。开始七位(位06)置为0,在读操作时总是读出0。在对时钟或RAM进行写操作之前,位7必须为0。当为高电平时,写保护防止对任何其他寄存器进行写操作。慢速充电寄存器:这个寄存器控制DS1302的慢速充电特征。慢速充电选择位(TCS)控制慢速充电器的选择。为了防止偶然的因素使之工作,只有1010模式才能使慢速充电器工作,所有其他模式将禁止慢速充电器。,DS1302上电时,慢速充电器被禁止

7、。二极管选择位(DS)选择一个还是两个二极管连接在VCC1与VCC2之间。如果DS为01选择一个,如果DS为10选择两个。如果DS为00或11,那么充电器被禁止,与TCS无关。RS选择连接在VCC1与VCC2之间的电阻。RS为00无电阻,为01用2K,为10用4K,为11用8K。时钟/日历多字节方式。时钟/日历命令字节可规定多字节方式,在此方式下,最先八个时钟/日历寄存器可以从地址0位开始连续地读写。当指定写时钟/日历为多字节方式时,如果写保护位被设置为高电平,那么没有数据会传送到八个时钟/日历寄存器的任一个。在多字节方式下,慢速充电器是不可访问的。,DS1302还有充电寄存器,时钟突发寄存器

8、及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共有31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的控制寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。,2. 主要功能DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:

9、首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的。,DS1302实时时间流程图,DS1302_CLK = P35; /实时时钟时钟线引脚 DS1302_IO = P16; /实时时钟数据线引脚 DS1302_RST = P36; /实时时钟复位线引脚,3、DS1302相关函数,/*DS1302驱动程序*/void DS1302InputByte(unsigned char d) /实时时钟写入一字节(内部函数

10、) unsigned char i; ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; ,unsigned char DS1302OutputByte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); ,

11、void Write1302(unsigned char ucAddr, unsigned char ucDa) /ucAddr: DS1302地址, ucData: 要写的数据 DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0;,unsigned char Read1302(unsigned char ucAddr) /读取DS1302某地址的数据 un

12、signed char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputByte(); / 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(ucData);,void DS1302_init() if(Read1302(0xc1) != 0xf0) Write1302(0x8e,0x00) ;/允许写操作 Write1302(0xc0,0xf0) ; /写入初始化标志

13、 ,系统上电后检测此标志,即此子函数只会在第一次初始化一次。 /*时间初始值*/ Write1302(0x8c,0x10) ;/年 Write1302(0x8a,0x03) ;/星期 Write1302(0x88,0x05) ;/月 Write1302(0x86,0x26) ;/日 Write1302(0x84,0x22) ;/时 Write1302(0x82,0x59) ;/分 Write1302(0x80,0x55) ;/秒 / Write1302(0xd2,0); /歌曲选择初始 Write1302(0xd4,5); / 贪睡初始延时时间 5分钟 Write1302(0xd6,0); /

14、贪睡初始值 关闭 /*闹钟初始值*/ Write1302(0xc2,0) ;/十时 Write1302(0xc4,0) ;/时 Write1302(0xc6,0) ;/闹钟标志 Write1302(0xc8,0) ;/闹钟次数标志 /第二个闹钟 Write1302(0xca,0) ;/十时 Write1302(0xcc,0) ;/时 Write1302(0xce,0) ;/闹钟标志 Write1302(0xd0,0) ;/闹钟次数标志 / Write1302(0xd8,0) ;/ 背光控制开关 Write1302(0xda,0x10) ;/ 背光延时时间 Write1302(0x90,0xa4

15、) ;/涓流充电 / Write1302(0x8e,0x80) ;/禁止写操作 ,LCD 1602液晶显示屏简介:,由液晶做成的显示器(Liquid Crystal Display,缩写为LCD)具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在单片机系统中得到广泛的应用。,目前,常用的字符型LCD显示屏主要有1602,能显示ASCII码字符。,四、实验使用器件介绍-LCD1602,2 控制指令, 显示电路, 程序,要求显示屏第一行显示:0123456789ab#$&共16个数符,第二行显示:ABCDEFGHIJKLMNOP共16个字母。,例:LCD 1602液晶显示屏显示,参考程序,#in

16、cludesbit RS=P12;sbit RW=P11;sbit E=P10;void out(unsigned char x)unsigned char i;RW=0;P0=x;for(i=0;i10;i+);E=1;for(i=0;i10;i+);E=0;void init1602()RS=0;out(0x38);out(0x06);out(0x0c);out(0x03);,void wr1602(unsigned char d,a)unsigned char i;unsigned int t;RS=0;out(a);for(t=0;t300;t+);RS=1;for(i=0;i16;i

17、+)out(di);for(t=0;t0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; ,unsigned char DS1302OutputByte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); ,void Write1302(unsi

18、gned char ucAddr, unsigned char ucDa) /ucAddr: DS1302地址, ucData: 要写的数据 DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0;,unsigned char Read1302(unsigned char ucAddr) /读取DS1302某地址的数据 unsigned char ucData;

19、 DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputByte(); / 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(ucData);,void DS1302_init() if(Read1302(0xc1) != 0xf0) Write1302(0x8e,0x00) ;/允许写操作 Write1302(0xc0,0xf0) ; /写入初始化标志 ,系统上电后检测此标志,即此子函数只

20、会在第一次初始化一次。 /*时间初始值*/ Write1302(0x8c,0x10) ;/年 Write1302(0x8a,0x03) ;/星期 Write1302(0x88,0x05) ;/月 Write1302(0x86,0x26) ;/日 Write1302(0x84,0x22) ;/时 Write1302(0x82,0x59) ;/分 Write1302(0x80,0x55) ;/秒,/ Write1302(0xd2,0); /歌曲选择初始 Write1302(0xd4,5); / 贪睡初始延时时间 5分钟 Write1302(0xd6,0); /贪睡初始值 关闭 /*闹钟初始值*/

21、Write1302(0xc2,0) ;/十时 Write1302(0xc4,0) ;/时 Write1302(0xc6,0) ;/闹钟标志 Write1302(0xc8,0) ;/闹钟次数标志 /第二个闹钟 Write1302(0xca,0) ;/十时 Write1302(0xcc,0) ;/时 Write1302(0xce,0) ;/闹钟标志,Write1302(0xd0,0) ;/闹钟次数标志 / Write1302(0xd8,0) ;/ 背光控制开关 Write1302(0xda,0x10) ;/ 背光延时时间 Write1302(0x90,0xa4) ;/涓流充电 / Write1302(0x8e,0x80) ;/禁止写操作 ,六、设计与制作报告要求,1.设计任务2.硬件电路设计及描述对硬件电路分模块进行介绍,并介绍元件选择的依据。3.软件设计流程及描述程序分模块进行介绍,要有流程图及流程图的文字说明。4.源程序代码(要有注释)5.调试过程中出现的问题及解决方法先介绍你的调试过程,再介绍调试过程中出现的问题及解决方法。,6.总结包括测试结果(电路所具有的功能和现象)、硬件操作说明(各按键的功能及操作)、心得体会等内容。7.参考文献。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报