搜档网
当前位置:搜档网 › 实时时钟设计 - 副本

实时时钟设计 - 副本

实时时钟设计 - 副本
实时时钟设计 - 副本

成绩_______

指导教师评定成绩:

审定成绩:

重庆邮电大学移通学院

课程设计报告

设计题目:基于数码管显示的实时时钟

学校:重庆邮电大学移通学院

学生姓名:

专业:电气工程及其自动化

班级:

学号:

指导教师:

设计时间:2015年10 月

重庆邮电大学移通学院

《嵌入式系统》课程设计任务书

引言:嵌入式系统课程设计是电气工程及其自动化专业的一个重要教学环节,既有别于毕业设计,又不同于课堂教学。它需要学生统筹运用所学各个专业的基本理论、基本方法对现实生活中的实际问题进行设计和调试。

一、设计题目:基于数码管显示的实时时钟

掌握嵌入式系统设计的基本方法,熟悉S3C2440的开发环境及软硬件的调试过程,了解S3C2440芯片各个引脚功能,工作方式,计时/定时,I/O口,中断等的相关原理,根据控制要求进行编程,解决时钟在数码管的显示问题。巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。

二、实验要求:

1. 作业由两人一组完成,作业完成时要提交设计报告书、固化在教学平台中的可执行代码(附录)。

2. 设计报告书要求:

(1)对设计题目的描述。

(2)设计思路说明,包括功能实现方法要点,硬件资源的使用,显示符号的约定说明等。

(3)软件总体结构,层次,功能划分等,核心代码注解。

(4)软件的调试修改过程,其中遇到的问题如何解决的,有什么技术难点问题。

(5)对完成的设计进行总结,说明哪些地方没有达到设计要求,是什么原因;哪些地方超过了设计要求,有什么优点和特色;有哪些改进设想和建议。

(6)程序代码固化在平台的片内flash中,上电后可以自动运行。

(7)结课时收纸质版作业。

摘要

本设计采用ARM9(S3C2440)开发板实现实时时钟(RTC)的功能,在一个嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒和年、月、日。即使系统处于关机状态下,它也能够正常工作(通常采用后备电池供电能够可靠工作十年)其外围也不需要太多的辅助电路,只需要一个高精度的晶振。

S3C2440A集成了具有日历功能的RTC模块,它可以在系统关闭的情况下使用备用电池工作。RTC使用STRB/LDRB ARM操作传输二进制编码的十进制数(BCD)的8位数据给CPU。数据包括年、月、日、星期、小时、分钟、秒的时间信息。此外,RTC模块还可以实现报警功能。RTC模块采用32.768 kHz 的外部晶体振荡器,外部晶体振荡器与S3C2440A的连接。XTIrtc和XTOrtc 分别是RTC的32.768 kHz晶体振荡器输入和输出,2个22 pF电容是晶体振荡器的匹配电容,只有在外部所接电容为匹配电容的情况下,晶体振荡器频率才能保证在标称频率附近的误差范围内。

【关键词】ARM9;实时时钟;晶振;报警;

目录

摘要.............................................................................................................................I 第一章绪论 .. (1)

一、设计目的 (1)

二、设计内容 (1)

三、实现目标 (1)

第二章系统分析及硬件设计 (2)

一、S3C2440芯片介绍 (2)

二、系统基础知识 (2)

第三章系统软件设计 (9)

一、基本思路 (9)

二、基本方案 (9)

四、系统调试 (10)

总结 (12)

参考文献 (13)

附录 (14)

第一章绪论

一、设计目的

(1)掌握系统IO口的配置

(2)掌握嵌入式系统中断的编程

(3)掌握嵌入式系统实时时钟的编程

二、设计内容

(1)完成时钟滴答功能,用数码管显示当前时间。

(2)可设置当前日期、时间。

三、实现目标

(1)时钟数据采用BCD编码或二进制表示;

(2)能够对闰年的年、月、日进行自动处理;

(3)具有告警功能,当系统处于关机状态时,能产生告警中断;

(4)具有独立的电源输入;

(5)提供毫秒级的时钟中断,该中断可用于嵌入式操作系统的内核时钟。

第二章系统分析及硬件设计

一、S3C2440芯片介绍

S3C2440A以ARM920T为核心,采用0.13um CMOS标准单元和存储器编译器开发。它的低功耗,简单,优雅和全静态设计特别适合于成本和功耗敏感的应用。它采用了被称为高级微控制器总线架构(AMBA)的新的总线架构。

S3C2440提供了出色的功能,其CPU内核,一个32位ARM920T RISC处理器设计的高级RISC机,ARM920T实现了MMU,AMBA总线,和哈佛缓存架构与独立的16KB指令和16KB数据高速缓存,每一个字线的长度为8。S3C2440减少了系统整体成本,无需配置额外的组件通过提供一套完整的通用系统外设。

S3C2440的特征:

(1)手持设备和通用嵌入式应用的集成系统。

(2)16/32-位RISC架构和以ARM920T CPU为核心的强大的指令集。

(3)增强ARM架构的MMU支持WinCE,EPOC32和Linux。

(4)指令缓存,数据缓存,写缓冲和物理地址TAG RAM性能,以减少主内存。带宽和延迟的效果。

二、系统基础知识

1、设计原理

(1)实时时钟RTC模块

S3C2440A 实时时钟单元是处理器集成的片内外设,由开发板上的后备电池供电,可以在系统电源关闭的情况下运行,RTC发送8位BCD码数据到CPU。传送的数据包括秒、分、时、星期、日期、月份和年份。RTC单元时钟源频率由外部32.768 kHz晶振提供,可以实现闹钟(报警)功能及时间片中断、置0计数功能,如图2-1。

图2-1 RTC模块示意图

RTC最重要的功能就是显示时间,是通过读/写寄存器实现的。要显示秒、分、时、日期、月、年,CPU必须读取存于BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON与BCDYEAR寄存器中得值。时间的设置也是通过以上的寄存器实现的,即以上寄存器是可读写的。

(2)RTC特殊功能寄存器

所有RTC寄存器都是字节型的,必须使用字节型访问指令(STRB、LDRB)或者字符型指令访问。在小端模式和大端模式中所采用的地址不同,这里采用小端模式的地址。

①时钟BCD数据寄存器

时钟BCD数据寄存器用于保存RTC的实时数据,包括BCDSEC、BCDMIN、BCDHOUR、BCDDATE、BCDDAY、BCDMON和BCDYEAR等7个寄存器,如图2-2所列。

寄存器地址读写操作描述未定义BCDYEAR 0x57000088 读/写BCD年数据寄存器未定义

图2-2时钟BCD数据寄存器

BCDSEC用于保存报警的秒数据,其中的位[6:0]SECDATA保存报警秒数据的BCD码,位[6:4]取值0-5,位[3:0]取值0-9。

BCDMIN用于保存报警的分数据,其中的位[6:0]MINDATA保存报警分数据的BCD码,位[6:4]取值0-5,位[3:0]取值0-9。

BCDHOUR用于保存报警的时数据,其中的位[5:0]HOURDATE保存报警

时数据的BCD码,位[5:4]取值0-2,位[3:0]取值0-9。

BCDDATE用于保存报警的日数据,其中的位[5:0]DATEDATA保存报警日数据的BCD码,取值0-28、29、30、31,位[5:4]取值0-3,位[3:0]取值0-9。

BCDDAY用于保存报警的星期数据,其中的位[2:0]DAYDATA保存报警星期数据的BCD码,取值1-7。

BCDMON用于保存报警的月数据,其中的位[4:0]MONDATA保存报警月数据的BCD码,位[4]取值0-1,位[3:0]取值0-9。

BCDYEAR用于保存报警的年数据,其中的位[7:0]YEARDATA保存报警年数据的BCD码,取值00-99。

②实时时钟控制寄存器

实时时钟控制寄存器RTCCON如图2-3所列,共有四位。

寄存器地址读写操作描述复位值RTCCON 0x57000040 读/写RTC控制寄存器0x0

图2-3实时时钟控制寄存器

各位定义如下:

[3]CLKRST:RTC时钟计数器复位。0=不复位;1=复位。

[2]CNTSEL:BCD计数器选择。0=合并BCD计数器;1=保留(即分离BCD 计数器)。

[1]CLKSEL:BCD时钟选择。0=采用XTAL的1/215作为时钟;1=保留(XTAL 时钟仪用于测试)。

[0]RTCEN:RTC控制使能。0=禁止;1=使能。

RTCEN控制BCD寄存器的读/写使能,CLKSEL、CNTSEL和CLKRST 用于测试。RTCEN控制着CPU和RTC的所有接口,为了使能数据可读/写,在系统复位后RTCEN应该置1。

(3)串口通信模块

S3C2440A串行通信单元UART提供2个独立的异步串行通信口,皆可工作于中断和DMA模式。最高波特率达115200b/s。每个UART单元包含一个16字节FIFO,用于数据接收和发送。此外,每个UART模块还包含可编程波特率、红外发送/接收、1个或2个停止位、5/6/7/8位数据宽度和奇偶校验。通

过初始化好串口,与RTC进行通信,来设置RTC当前时间及报警时间。(4)液晶显示LCD模块

S3C2410A处理器集成了数码管控制器,支持4位单扫描、4位双扫描和8位单扫描工作方式。处理器使用内部RAM区作为显示缓存,并支持屏幕水平和垂直滚动显示。数据的传送采用DMA(直接内存访问)方式,以达到最小延迟。根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程,以支持多种类型的显示屏。数码管控制器主要液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。

2、存储器功能

(1)控制存储器

图2-4控制存储器

图2-5告警控制存储器(3)实时时钟计数器

图2-6实时时钟计数器

图2-7告警时间寄存器

(5)实时时钟寄存器

图2-8实时时钟寄存器

3、数码管显示原理

7段数码管由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。数码管的结构及连接图见图2-9。

图2-9 数码管结构及连接图

当选用共阴极的数码管显示器时,所有发光二极管的阴极连在一起接地,

当某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字

形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的

数据字来控制数码管的显示,此数据称为字符的段码。字符0、1、2…F 与数码管码段A 、B 、C…F 以及DP (小数点)的关系如表2-1所示。

表2-1 数码管字符与码段对应表

说明:共阴的数码管,被选中时的段为高电平有效,熄灭的段码为00H 。共阳的数码管,被选中时的段为低电平有效.熄灭的段码为FFH 。

4、数码管控制的电路原理图

图2-10数码管控制的电路原理图

字符 DP G F E D C B A 段码(共阴) 段码(共阳) 0 0 0 1 1 1 1 1 1 3FH C0H 1 0 0 0 0 0 1 1 0 06H F9H 2 0 1 0 1 1 0 1 1 5BH A4H 3 0 1 0 0 1 1 1 1 4FH B0H 4 0 1 1 0 0 1 1 0 66H 99H 5 0 1 1 0 1 1 0 1 6DH 92H 6 0 1 1 1 1 1 0 1 7DH 82H 7 0 0 0 0 0 1 1 1 07H F8H 8 0 1 1 1 1 1 1 1 7FH 80H 9 0 1 1 0 1 1 1 1 6FH 90H A 0 1 1 1 0 1 1 1 77H 88H B 0 1 1 1 1 1 0 0 7CH 83H C 0 0 1 1 1 0 0 1 39H C6H D 0 1 0 1 1 1 1 0 5EH A1H E 0 1 1 1 1 0 0 1 79H 86H F 0 1 1 1 0 0 0 1 71H 8EH - 0 1 0 0 0 0 0 0 40H BFH . 1 0 0 0 0 0 0 0 80H 7FH 熄灭

00H

FFH

第三章系统软件设计

一、基本思路

(1)读写RTC模块

S3C2440A内部集成了RTC模块,通过读取RTC模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值得到当前的相应的时间值。还可以往这些寄存器里写值以设置当前的时间值。(2)串口通信UART模块

采用S3C44B0X的UART模块,利用PC机进行当前时钟时间和时钟报警时间的设置。设置时间时S3C2410A发送新的时间值到BCDYEAR、BCDMON、BCDDAY、BCDHOUR、BCDMIN、BCDSEC修改当前时间。

(3)液晶屏数码管显示设计

使用液晶屏显示最基本的是像素控制数据的使用。像素控制数据的存放与传送形式决定了显示的效果,图形显示可以直接使用像素控制函数实现,把像素控制数据按一定形式存入即可实现字符显示。本次课设通过调用字符显示函数,将读取的实时时钟送到数码管上显示。

二、基本方案

本课设电子时钟的设计主要是将RTC模块中的时间传到数码管上进行实时显示;此外,通过串口与PC机通信,设置RTC模块中当前时间及报警时间,其结构框图如图3-1所示:

PC 串口RTC模块数码管显示

图3-1整体结构框图

四、系统调试

时钟滴答功能测试

1) 首先需设置TICK的周期,在例程中设置的是1秒,并打开TIME TICK 中断

rTICINT = 0x7f|0x80;

计算公式:T = ( 1 + 0x7f ) / 128 秒

2) 注册中断服务例程

使用install_isr_handler(HandleRTC, (void*)rtc_int_isr)将中断服务例程的地址填写到中断地址表中;

rtc_int_isr函数为RTC TIMETICK的处理例程,在该例程中我们首先要清除中断标志,接着可以刷新LED的显示,在例程中我们使用了一个全局变量来实现LED显示的更新。代码如下:

rI_ISPC=BIT_TICK; /*清除时钟滴答中断标志*/

*((U8*) 0x02000006) = 0x3E; /* 使能第一个数码管*/

*((U8*) 0x02000004) = seg7table[led_index&0xF];

led_index++;

3) 输入当前时间,并通过串口显示时间的运行情况

设置当前时间,即向各个寄存器赋初值;

rRTCCON = 0x01;

rBCDYEAR = p_date->year;

rBCDMON = p_date->mon;

rBCDDAY = p_date->day;

rBCDDATE = p_date->week_day;

rBCDHOUR = p_date->hour;

rBCDMIN = p_date->min;

rBCDSEC = p_date->sec;

rRTCCON = 0x00;

4) 每隔1秒读取一下时钟数据,并通过串口显示该数据

old_index = led_index; /* 保存当前的TICK计数*/

Uart_Printf("\r\n"); /* 串口显示换行*/

while(1)

{

/* 每隔一秒更新一次数据*/

if(old_index != led_index)

{

rtc_get_date(&m_date);

old_index = led_index;

/* 实时时钟数据为BCD码格式,以16进制显示*/

Uart_Printf("\r%02x:%02x:%02x", m_date.hour, m_date.min, m_date.sec);

}

};

时间告警功能测试

首先设置告警时间,如下例程设置每分钟的第5秒告警m_date.sec = 0x05 ;

rtc_alarm_set(&m_date, 0x41);

模式0x41表示使能RTC告警,以及使能秒时钟告警;

2) 注册中断例程,打开中断

install_isr_handler(HandleRTC, (void*)rtc_int_isr); rINTMSK=( rINTMSK&~(BIT_GLOBAL| BIT_RTC));

3) 中断服务例程中清除中断事件;

rI_ISPC=BIT_RTC; /*清除时钟告警中断*/

if(alarm_count&1)

*(unsigned char*)0x2000000 = 0x0f;

else

*(unsigned char*)0x2000000 = 0xff;

alarm_count ++;

总结

嵌入式系统是一门很有意思的课程。到了大四我才刚接触到嵌入式这门学科,学得还不够深入,可以说仅仅只是了解皮毛。即使如此我也愿意花时间去了解、去学习这们课。由于基础还不够扎实,理所当然的,在实验中遇到了种种困难,包括不了解专业术语、C语言编程、嵌入式开发板的使用等。第一次接触开发平台时也是一头雾水,不知道从何处下手。于是我查阅了许多网上的资料,虽然调试过程遇到了一些程序上的麻烦,以及软件或者电脑的问题(电脑与嵌入式实验平台连接不上,系统提示ADT发现不了硬件设备),不过在老师的帮助下,还是顺利的完成了这次实验。

通过这次课程设计,我发现了自己在课本知识上掌握的不足,同时把以前所学过的知识重新温故,巩固了所学的知识。我觉得这次的成功很大部分取决与团队合作与冷静,耐心与细心。团队合作可以增强我们的创新能力与加大我们的完成速度,而程序的修改,调试,编译则离不开冷静,耐心和细心等心理素质。另外这次课程设计的完满结束,给了我们日后毕业设计宝贵的经验,使我们受益匪浅。

参考文献

[1] 朱恺主编.《嵌入式系统基础》[M].北京:机械工业出版社,2012.4

[2] 刘彦文.《嵌入式系统原理及接口技术》.清华大学出版社2011年3月.

[3] 三星公司.《ARM9三星S3C2440英文数据手册》

[4] 王波波.《ARM9完全学习手册》

附录

一、源程序

#include "def.h"

#include "option.h"

#include "2440addr.h"

U8 beep=1;

void __irq IsrAlarm(void);//下面这些都是函数声明

void delay(int x);

void RTC_Alm_Set(U8 almyear,U8 almmon,U8 almdate,

U8 almhour,U8 almmin,U8 almsec);

void RTC_Time_Set( U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin,U8 wRTCsec );

void OpenAlarm(void);

void CloseAlarm(void);

//=================================================================== ===============

void RTC_Time_Set( U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin,U8 wRTCsec )//时间设置函数,操作是不是比较简单?呵呵

{

rRTCCON = 1 ;//RTC 读写使能

rBCDYEAR = wRTCyear ;//年

rBCDMON= wRTCmon ;//月

rBCDDATE = wRTCdate ;//日

rBCDDAY= wRTCday ;//星期

rBCDHOUR = wRTChour ;//小时

rBCDMIN= wRTCmin ;//分

rBCDSEC= wRTCsec ;//秒

rRTCCON &= ~1 ;//RTC read and write disable

}

void RTC_Alm_Set(U8 almyear,U8 almmon,U8 almdate,

U8almhour,U8 almmin,U8 almsec)//年、月、日、时、分、秒//闹钟设置

{rRTCCON=0x01; //RTCCON实时时钟控制寄存器,

//【0】位RTC使能信号控制位,0为禁止,1为允许

//对RTC模块进行读写操作前应对其最低位至1

rALMYEAR = almyear;

rALMMON= almmon;

rALMDATE = almdate;

rALMHOUR = almhour;

rALMMIN= almmin;

rALMSEC= almsec;

rRTCCON = 0; //读取数据完后禁止使能信号,以防误操作,

//整个文件的设置都一样,不重覆

}

void OpenAlarm(void) //开闹钟函数

{

pISR_RTC = (unsigned)IsrAlarm;//中断寄存器ISR中的RTC中断位

ClearPending(BIT_RTC);

rRTCALM = (0x7f); //RTCALM闹钟控制寄存器,

//【0-7】分别对应秒到年的闹钟使能,

//相应位0表示禁止,1表示允许

EnableIrq(BIT_RTC);//开中断

}

//关闹钟功能函数

void CloseAlarm(void)

{

rRTCALM = 0; //RTCALM闹钟控制寄存器所有位禁止

DisableIrq(BIT_RTC);//关中断

}

void __irq IsrAlarm(void)//利用中断,闹钟时进入中断函数

{

ClearPending(BIT_RTC);//SRCPND,INTPND分别置1.

beep = 0;// 蜂鸣器标志位清0

CloseAlarm();//关闹钟,即如果要开闹钟的先要把它关了,再开。

}

void delay(int x)//延时函数

{

while(x)

{

int k,j;

for(k=0xff;k>0;k--)

for(j=0xff;j>0;j--);

x--;

}

}

//=================================================================== ===============

void RTCmain(void)

{

rGPBCON = (1<<0)|(1<<10)|(1<<12)|(1<<16)|(1<<20); // GPB5,GPB6,GPB8,GPB10设置为输出,分别连了4个LED

rGPBDAT|=0x560;//4个LED全灭

RTC_Time_Set(0x11,0x08,0x06,0x06,0x10,0x00,0x00) ;//设置时间

RTC_Alm_Set(0x11,0x08,0x06,0x10,0x01,0x00);//设置闹钟时间按OpenAlarm();

while(1)

{

if(beep==0)

{

rGPBDAT=0x01;//灯亮,蜂鸣器响

delay(1000);

rGPBDAT=0x561;//灯灭,实际是闪烁

delay(1000);

}

}

}

实时时钟设计实验报告

实验报告

源代码: #pragma sfr //使用特殊功能寄存器 #pragma EI //开中断 #pragma DI //关中断 #pragma access //使用绝对地址指令 #pragma interrupt INTTM000 Time //定义时间中断函数为Time #pragma interrupt INTKR OnKeyPress //定义按键中断为OnKeyPress #pragma interrupt INTP5 OnKeyOver //定义INT中断为OnKeyOver void Init_Led(); void InitKey_INTKR(); void Init_Lcd(); void Init_Inter(); void LightOneLed(unsigned char ucNum); void LightOff(); int Count_Day(int month); char i=0; //定义变量i,是切换时间的标志 int key=0; //定义key=0 int temp=1; //用于存放当前月的天数 int temp1=1; int second=0; //默认的秒second=0 int minute=0; //默认的分minute=0 int hour=12; //默认的时hour=12 int day=1; //默认的天day=1 int month=5; //默认的月month=5 int year=2014; //默认的年year=2014 int c_hour=1; //默认的闹钟时=1 int c_minute=1; //默认的闹钟分=1 int buffs[2]; //秒的数码显示缓存区 int buffm[2]; //分的数码显示缓存区 int buffh[2]; //时的数码显示缓存区 int buffday[2]; //天的数码显示缓存区 int buffmonth[2]; //月的数码显示缓存区 int buffyear[4]; //年的数码显示缓存区 int buffmd[4]; //月,天的数码显示缓存区 int buffhm[4]; //时,分的数码显示缓存区 int buffms[4]; //分,秒的数码显示缓存区 int buffch[2]; //闹钟时的数码显示缓存区 int buffcm[2]; //闹钟分的数码显示缓存区 unsigned char Que = 0; //INT中断中间变量 int LCD_num[10]={0X070d,0x0600,0x030e,0x070a,0x0603,0x050b,0x050f,0x0700,0x070f,0x070b};// 数字0~~9的显示码 unsigned char Scond; //…………………………延时函数1……………………// void Delay(int k){ i nt i,j; f or(i=0;i

51定时器和lcd12864做的实时时钟显示(附图)

#include #include"intrins.h" #define uchar unsigned char #define uint unsigned int sbit rs=P1^0; sbit rw=P1^1; sbit e=P2^5; sbit psb=P1^2; sbit rst=P1^4; uchar hour,fen,miao,num; uchar code table[]="时间:"; uchar sbuf[]={0,0,0,0,0,0}; void delay(uint x) { uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void Timer0Init(void) //50??@11.0592MHz { TMOD |= 0x01; //??????? TL0 = 0x00; //??????

TH0 = 0x4C; //?????? EA=1; ET0=1; TR0=1; //???0???? } void Delay2ms() //@11.0592MHz { unsigned char i, j; _nop_(); i = 4; j = 146; do { while (--j); } while (--i); } void Delay100us() //@11.0592MHz { unsigned char i, j; i = 2; j = 109; do { while (--j); } while (--i);

void Delay50ms() //@11.0592MHz { unsigned char i, j, k; i = 3; j = 207; k = 28; do { do { while (--k); } while (--j); } while (--i); } void write_12864com(uchar com) { rs=0; rw=0; Delay100us(); P0=com; e=1; Delay100us(); e=0; Delay100us(); }

实时时钟实验报告

嵌入式系统开发实验报告 实验四:实时时钟实验 班级:应电112 姓名:张志可 学号: 110415151 指导教师:李静 实验日期: 2013年9月25日

实验四:实时时钟实验 一、实验目的 1. 了解实时时钟的硬件控制原理及设计方法。 2. 掌握 S3C2410X 处理器的 RTC 模块程序设计方法。 二、实验设备 硬件:Embest ARM 教学实验系统,ULINK USB-JTAG 仿真器套件,PC 机。 软件:MDK 集成开发环境,Windows 98/2000/NT/XP。 三、实验原理 1. 实时时钟(RTC) 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC 具有计时准确、耗电低和体积小等特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域的无人值守环境。随着集成电路技术的不断发展,RTC 器件的新品也不断推出,这些新品不仅具有准确的 RTC,还有大容量的存储器、温度传感器和 A/D 数据采集通道等,已成为集 RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 RTC 器件与微控制器之间的接口大都采用连线简单的串行接口,诸如 I2C、SPI、MICROWIRE 和CAN 等串行总线接口。这些串口由2~3 根线连接,分为同步和异步。 2. S3C2410X 实时时钟(RTC)单元 S3C2410X 实时时钟(RTC)单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。RTC 发送8 位BCD 码数据到CPU。传送的数据包括秒、分、小时、星期、日期、月份和年份。RTC 单元时钟源由外部32.768KHz 晶振提供,可以实现闹钟(报警)功能。 四、实验内容 学习和掌握 Embest ARM 教学实验平台中 RTC 模块的使用,编写应用程序,修改时钟日期及时间的设置,以及使用 EMBEST ARM 教学系统的串口,在超级终端显示当前系统时间。

网络时钟系统方案设计

时钟系统 技术方案 烟台北极星高基时间同步技术有限公司 2012年3月

第一部分:时钟系统技术方案 一、时钟系统概述 1.1概述 根据办公楼的实际情况,特制定如下施工设计方案: 时钟系统主要由GPS接收装置、中心母钟、二级母钟(中继器)、全功能数字显示子钟、、传输通道和监测系统计算机组成。 系统中心母钟设在中心机房内,其他楼各设备间设置二级母钟,在各有关场所安装全功能数字显示子钟。 系统中心母钟接收来自GPS的标准时间信号,通过传输通道传给二级母钟,由二级母钟按标准时间信号指挥子钟统一显示时间;系统中心母钟还通过传输系统将标准时间信号直接传给各个子钟,为楼宇工作人员提供统一的标准时间 二、时钟系统功能 根据本工程对时钟系统的要求,时钟系统的功能规格如下: 时钟系统由GPS校时接收装置(含防雷保护器)、中心母钟、扩容接口箱、二级母钟、数字式子钟、监控终端(也称监测系统计算机)及传输通道构成。其主要功能为: ☉显示统一的标准时间信息。 ☉向其它需要统一时间的系统及通信各子系统网管终端提供标准时间信息。 2.1 中心母钟 系统中心母钟设置在控制中心设备室内,主要功能是作为基础主时钟,自动接收GPS的标准时间信号,将自身的精度校准,并分配精确时间信号给子钟,二级母钟和其它需要标准时间的设备,并且通过监控计算机对时钟系统的主要设备进行监控。 中心母钟主要由以下几部分组成: ☉标准时间信号接收单元 ☉主备母钟(信号处理单元) ☉分路输出接口箱 ☉电源 中心母钟外观示意图见(附图) 2.1.1标准时间信号接收单元 标准时间信号接收单元是为了向时间系统提供高精度的时间基准而设置的,用以实现时间系统的无累积误差运行。 在正常情况下,标准时间信号接收单元接收来自GPS的卫星时标信号,经解码、比对后,经由RS422接口传输给系统中心母钟,以实现对母钟精度的校准。 系统通过信号接收单元不断接收GPS发送的时间码及其相关代码,并对接收到的数据进行分析,判断这些数据是否真实可靠。如果数据可靠即对母钟进行校对。如果数据不可靠便放弃,下次继续接收。

基于51单片机的实时时钟设计报告

课程设计(论文)任务书 信息工程学院信息工程专业(2)班 一、课程设计(论文)题目嵌入式课程设计 二、课程设计(论文)工作自 2014 年 6 月 9 日起至2014年 6月15日止。 三、课程设计(论文) 地点: 5-402 单片机实验室 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握单片机各功能模块的基本工作原理; (2)培养学生单片机应用系统的设计能力; (3)使学生能够较熟练地使用proteus工具完成单片机系统仿真。 (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)分析所设计系统中各功能模块的工作原理; (2)选用合适的器件(芯片); (3)提出系统的设计方案(要有系统电路原理图); (4)对所设计系统进行调试。 2)创新要求: 在基本要求达到后,可进行创新设计,如改善单片机应用系统的性能。 3)课程设计论文编写要求 (1)要按照书稿的规格打印撰写论文。 (2)论文包括目录(自动生成)、摘要、正文、小结、参考文献、附录等。 (3)论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:30分; (3)完成调试:20分; (4)回答问题:20分; (5)格式规范性(10分)。

5)参考文献: (1)张齐.《单片机原理与嵌入式系统设计》电子工业出版社 (2)周润景.《PROTUES入门实用教程》机械工业出版社 (3)任向民.《微机接口技术实用教程》清华大学出版社 (4)https://www.sodocs.net/doc/677057793.html,/view/a5a9ceebf8c75fbfc77db2be.html 6)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 系统设计与调试 4 实验室 撰写论文2图书馆、实验室 学生签名: 2014 年6 月9日 课程设计(论文)评审意见 (1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(30分):优()、良()、中()、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差(); (4)回答问题(20分):优()、良()、中()、一般()、差(); (5)格式规范性(10分):优()、良()、中()、一般()、差(); 评阅人:职称: 2014 年6 月15 日

课程设计 实时时钟

单片机原理课程设计报告 题目:实时时钟 院(系) 专业 年级 姓名学号 指导教师 设计时间2013.11.25-2013.12.6

电子信息工程专业10级学生单片机原理课程设计任务书课程设计题目二、实时时钟 指导教师职称高级工程师 设计任务和要求: 1.基本要求 (1)采用DS1302作为实时时钟芯片进行计时 (2)读出DS1302中的时间数据 (3)能显示时间数据,包括年月日,时分秒 (4)显示方式不限 2. 设计步骤 (1) 使用Proteus按设计要求绘制电路图。 (2) 按要求编写相应程序。 (3) 使用Proteus仿真程序,对程序进行调试。 (4) 撰写课程设计报告 3.撰写课程设计报告 课程设计报告内容包括题目、摘要、目录、正文、结论、致谢、参考文献等。 学生在完成上述全部工作之后,应将全部内容以先后顺序写成设计报告一份,阐述整个设计内容,要求重点突出、特色鲜明、语言简练、文字通畅,字迹工整。报告书以A4纸打印,装订成册(文字不少于3000 字)。

目录 1. 设计要求与方法论证 (3) 1.1 设计要求 (3) 1.2 系统基本方案选择和论证 (3) 1.2.1 单片机芯片的选择方案和论证 (3) 1.2.2 显示模块选择方案和论证 (4) 1.3 电路设计最终方案决定 (4) 2. 系统的硬件设计与实现 (4) 2.1 电路设计框图 (4) 2.2 系统硬件概述 (5) 2.3 系统硬件模块 (5) 2.3.1 AT89C51 (5) 2.3.2 DS1302 (6) 2.3.3点阵式LCD (7) 3.系统的软件设计 (7) 4. 硬件电路调试 (7) 5. 结论 (9) 6. 致谢 (9) 参考文献 (10) 附录 (11)

数字时钟设计实验报告

电子课程设计题目:数字时钟

数字时钟设计实验报告 一、设计要求: 设计一个24小时制的数字时钟。 要求:计时、显示精度到秒;有校时功能。采用中小规模集成电路设计。 发挥:增加闹钟功能。 二、设计方案: 由秒时钟信号发生器、计时电路和校时电路构成电路。 秒时钟信号发生器可由振荡器和分频器构成。 计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 三、电路框图: 图一 数字时钟电路框图 译码器 译码器 译码器 时计数器 (24进制) 分计数器 (60进制) 秒计数器 (60进制) 校 时 电 路 秒信号发生器

四、电路原理图: (一)秒脉冲信号发生器 秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。由振荡器与分频器组合产生秒脉冲信号。 ?振荡器: 通常用555定时器与RC构成的多谐振荡器,经过调整输出1000Hz 脉冲。 ?分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能 扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz标准秒脉冲。其电路图如下: 图二秒脉冲信号发生器 (二)秒、分、时计时器电路设计 秒、分计数器为60进制计数器,小时计数器为24进制计数器。 ?60进制——秒计数器 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。当计数到59时清零并重新开始计数。秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。其电路图如下:

基于ds1302的51单片机简易实时时钟-1602显示-源程序

。 ==================主程序================= #include

。#include "ds1302.h" #include "LCD1602.h" void change(); uchar times[9]; uchar date[9]; main() {LCD_init();//LCD初始化 init_1302(time_1302); gotoxy(1,1); LCD_display("Time:"); gotoxy(1,2); LCD_display("Date:"); times[8]='\0';// date[8]='\0'; while(1) {get_1302(time_1302); change(); gotoxy(7,1); LCD_display(times); gotoxy(7,2); LCD_display(date);

} } /*=========================== 转换子程序 ===========================*/ void change() { // 时间的转换 times[0]=time_1302[2]/10+'0'; times[1]=time_1302[2]%10+'0'; times[2]=':'; times[3]=time_1302[1]/10+'0'; times[4]=time_1302[1]%10+'0'; times[5]=':'; times[6]=time_1302[0]/10+'0'; times[7]=time_1302[0]%10+'0'; // 日期的转换 date[0]=time_1302[6]/10+'0'; date[1]=time_1302[6]%10+'0'; date[2]='-';

单片机电子时钟课程设计实验报告

单片机电子时钟课程设 计实验报告 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号: 班级:自动化1211 指导老师:阮海容 目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路 PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。

实时日历时钟显示系统的设计

微机原理及应用课程设计任务书 20 xx -20 xx 学年第 x 学期第 xx 周- xx 周 题目实时日历时钟显示系统的设计 内容及要求 内容:实时日历时钟显示系统 要求:设计一个实时日历时钟显示系统的程序。用“年/月/日”,“时:分:秒”(都是两位)的形式连续显示系统时间 进度安排 课程设计内容时间分配 方案论证1天 分析、设计、调试、运行3天 检查、整理、写设计报告、小结1天 合计5天 学生姓名: xx 指导时间: xxxx 指导地点: xxxx 任务下达任务完成 考核方式 1.评阅√ 2.答辩√ 3.实际操作□ 4.其它□指导教师系(部)主任 注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。 2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。

此次微机原理课程设计要求设计一个实时日历时钟显示系统。 本程序利用DOS中断2AH号功能调用取系统年月日,再逐个显示各数据,利用2CH号功能调用取系统时间,逐个显示各数据。用“时:分:秒”(都是两位)的形式连续显示系统时间,并利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。 任务安排: 主程序: xx:主体程序和流程设计 xx:日历调用显示系统 xx:时间调用显示系统 子程序: xx:显示两位数字的子程序

一、课程名称 (2) 二、课程内容及要求 (2) 三、小组组成 (2) 四、设计思路 (3) 五、程序流程图及介绍 (4) 六、调试 (5) 七、总结 (7) 八、参考资料 (9) 附录 (9)

一、课程名称:实时日历时钟显示系统的设计 二、课程内容及要求 课程内容:实时日历时钟显示系统 要求:设计一个实时日历时钟显示系统的程序。用“年/月/日”,“时:分:秒”(都是两位)的形式连续显示系统时间 三、小组组成: 成员: xx, xx, xx, xx 任务安排: 主程序: xx:主体程序和流程设计 xx:日历系统 xx:时间系统 子程序: xx:显示两位数字的子程序

单片机电子时钟课程设计报告

目录 1、引言·3 2、总体设计·4 3、详细设计·5 3.1硬件设计·5 3.2软件设计·10 4、实验结果分析·26 5、心得体会·27 6、参考文献·27

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机 AT89C51

1.引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

嵌入式软件开发基础实验报告 实时时钟

上海电力学院 嵌入式软件开发基础实验报告 题目:【ARM】实时时钟实验 专业:电子科学与技术 年级: 姓名: 学号:

一、实验目的 1、了解实时时钟的硬件控制原理及设计方法。 2、掌握S3C44B0X 处理器的RTC 模块程序设计方法。 二、实验设备 1、硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机。 2、软件:Embest IDE Pro ARM 集成开发环境,Windows 98/2000/NT/XP。 三、实验内容 学习和掌握 Embest EduKit-III 实验平台中RTC 模块的使用,进行以下操作: 1、编写应用程序,修改时钟日期及时间的设置。 2、使用EMBEST ARM 教学系统的串口,在超级终端显示当前系统时间。 四、实验原理 1. 实时时钟(RTC) 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC 具有计时准确、耗电低和体积小等特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域的无人值守环境。随着集成电路技术的不断发展,RTC 器件的新品也不断推出,这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D 数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 RTC 器件与微控制器之间的接口大都采用连线简单的串行接口,诸如I2C、SPI、MICROWIRE和CAN 等串行总线接口。这些串口由2~3 根线连接,分为同步和异步。 2. S3C44B0X 实时时钟(RTC)单元 S3C44B0X 实时时钟(RTC)单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。RTC 发送8 位BCD 码数据到CPU。传送的数据包括秒、分、小时、星期、日期、月份和年份。RTC 单元时钟源由外部32.768KHz 晶振提供,可以实现闹钟(报警)功能。 S3C44B0X 实时时钟(RTC)单元特性: BCD 数据:秒、分、小时、星期、日期、月份和年份 1、闹钟(报警)功能:产生定时中断或激活系统 2、自动计算闰年 3、无2000 年问题 4、独立的电源输入 5、支持毫秒级时间片中断,为RTOS 提供时间基准 读/写寄存器 访问 RTC 模块的寄存器,首先要设RTCCON 的bit0 为1。CPU 通过读取RTC 模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON 和 BCDYEAR 的值,得到当前的相应时间值。然而,由于多个寄存器依次读出,所以有可能产生错误。比如:用户依次读取年(1989)、月(12)、日(31)、时(23)、分(59)、秒(59)。当秒数为1 到59 时,没有任何问题,但是,当秒数为0 时,当前时间和日期就变成了1990 年1 月1 日0 时0 分。这种情况下(秒数为0),用户应该重新读取年份到分钟的值(参考程序设计)。

单片机综合实验报告51电子时钟

一、实验内容: 设计一个数字时钟,显示范围为00:00:00~23:59:59。通过5个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过蜂鸣器发声作为闹铃。 选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。 二、实验电路及功能说明 1602显示器电路(不需接线) 电子音响电路 按键说明: 按键键名功能说明 K1 切换键进入设定状态 K2 校时依次进入闹钟功能是否启用,闹钟时,分秒, 年,月,日及时间时,分,秒的设置,直到退出 设置状态 K3 加1键调整是否起用闹钟和调节闹钟时,分,秒, 年,月,日,时间的时,分,秒的数字三、实验程序流程图:

四、实验结果分析 定时程序设计: 单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果MCS-51采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。MCS-51单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/

计数器两种工作模式和4种工作方式。 定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX. 当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。 实时时钟实现的基本方法: 这次设计通过对单片机的学习、应用,以A T89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它主要通过51单片机综合仿真实验仪实现,通过1602能够准确显示时间,调整时间,它的计时周期为24小时,从而到达学习、设计、开发软、硬件的能力。主要实现功能为显示时间,时间校准调时(采用手动按键调时),闹铃功能(设置定时时间,到点后闹铃发出响声)。通过键盘可以进行校时、定时。闹铃功能使用I/O 口定时翻转电平驱动的无源蜂鸣器。本文主要介绍了工作原理及调试实现。 四个按键K1、K2、K3、K4、一个蜂鸣器。 1602显示时钟、跑表。 时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。 秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。 实时时钟程序设计步骤: 先对系统进行初始化,如:LCD1602初始化,DS1302初始化等,然后才能进入主显示模块,即可在LCD1602上看到相应的信息。对于LCD1602的初始化,主要是对开启显示屏,清屏,设置显示初始行等操作。DS1302的初始化主要是先开启写功能,然后写入一个初始值。 本系统采用的是LCD1602液晶显示器,由于其是本身带有驱动模块的液晶屏,所以对于LCD1602操作程序可分为开显示、设置显示初始行、写数据和清屏等部分。LCD1602的写命令程序和写数据程序分别以子程序的形式写在程序里,以便主程序中的调用。 (1)选择工作方式,计算初值; (2)采用中断方式进行溢出次数累计; (3)计时是通过累加和数值比较实现的; (4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部RAM中要设置显示缓冲区,共6个地址单元。显示缓冲区从左到右依次存放时、分、秒数值; (5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方法等待中断的到来; (6)中断服务程序:进行计时操作; (7)加1子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加1时共有三种条调用加1子程序,包括三项内容:合字、加1并进行十进制调整、分字。 程序说明: 按K1按键进入设定状态 按K2,依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设置状态按K3,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字 LCD第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行设置)正常状态,LCD上排最前面显示自定义字符,LCD下排最前面闪动"_" 设置状态,LCD上排最前面显示"P",下排最前面在设置闹钟时间时显示"alarm_",其它状态显示

时钟设计报告

教师签名: 说明:答辩未通过者总分记为0并重修。 总分 = 程序╳50% + 设计报告╳20% + 答辩╳30% 成都信息工程学院 课程设计 时钟设计报告 姓名:张双 学院:电子工程学院学院 学号:3140301005

摘要 时钟可以说是现代人们生活中必备的生活用品。市场上各种类型、款式的时钟数不胜数,一款良好的时钟可以给人们带来极大的便利。关于时钟的各种应用程序层出不穷,而我的目的是设计一款界面简单、方便易用、功能相对简洁实用的指针式时钟程序。 本次设计的简易时钟通过菜单栏可以实现启动时钟、暂停时钟、时钟清零以及时间设置等功能。一个时钟大致可由时钟背景、时针、分针、秒针四个部分构成。 该时钟的设计主要使用Windows操作系统、Visual C++ 6.0集成开发环境开发、MFC应用程序开发框架。通过本设计,我们进一步掌握Visual C++应用程序,系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++。 关键词:时钟;MFC ;VC++

第一章绪论 随着社会的发展,各种类型的时钟已经进入了千家万户。而操作简单、美观大方的指针式时钟备受家庭喜爱。本次时钟设计主要是了解简单的时钟显示窗口,进一步掌握Visual C++应用程序,系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++ 1.1课程设计目的 时钟几乎是每个人生活中必备的生活用品。时钟虽小确非常重要。一款良好的时钟可以给人们带来极大的便利。当然,现在关于时钟的各种应用程序层出不求,我的目的是设计一款界面简单、方便易用、功能相对丰富的指针式时钟程序。为了达到上述目标,以及课程设计的要求,结合自己自身的情况,选择了PC平台、Windows操作系统、Visual C++ 6.0开发平台、MFC框架来实现自己的程序。而且希望能通过自己这款小应用程序的设计,来掌握面向对象的程序设计方法,了解C++面向对象的设计方法和技巧,有效地、深刻地理解课程内容,体会理论、方法和设计原则;培养分析实际问题和解决问题的能力,具备使用面向对象程序设计开发工具设计实际系统的能力。 1.2 技术应用的基本现状 Microsoft公司1998年推出了Visual C++6.0,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开发的可视化编程的集成环境。与VC++5.0的最大不同之处是它的帮助功能更强大,MSDN(Microsoft Developer Networking)为包括VC++6.0在内的所有微软的程序产品提供在线帮助;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC++编程更加容易。所以VC++6.0可谓是Microsoft公司的王牌产品,编程功能强大而赢得广大程序的偏爱。

实时日历时钟系统设计

内蒙古工业大学本科毕业设计说明书 摘要 在当今社会,随着电子产品的不断发展,许多电子设备都趋于智能化,人们都基 本熟悉这些电子产品的基本功能,然而却很少人知道它的内部结构以及工作原理。这 些设备大部分都含有CPU控制器或者是单片机,其中单片机以其COMS化、体积小、成本低、运用灵活、易于产品化等一系列优点,这些年得到迅猛的发展和推广,广泛 的应用于工业自动控制,通讯设备,家用电器等各个领域。 本设计的日历时钟产品是小型电子产品。主要是以单片机AT89C51为总控制器,由时钟芯片DS12C887读取时间数据与掉电储存,用键盘来完成对时间调整,最后通 过1602液晶显示器显示出来,从而达到显示时间的目的。日历时钟广泛的应用于个 人家庭以及车站、医院、商场、办公室等公共场所,成为人们日常生活中不可少的必 需品。因此,本设计具有相当重要的现实意义和实用价值。 关键词:日历时钟;单片机;1602液晶显示;DS12C887

内蒙古工业大学本科毕业设计说明书 Abstract With the continuous development of electronic products in today's society, many electronic devices have tended to be intelligent, people are basically familiar with the basic functions of these electronic products, yet few people know about its internal structure and working principle. most of which containing CPU controller or microcontroller. In recent years, Microcontroller has been the rapid development and large-scale promotion with its with its COMS, small size, low cost, flexible use, easy-to-product such as a number of advantages. It has been widely used in various fields of industrial control systems, communications equipment, and household appliances. The design of the product is small calendar clock electronic products. Mainly based on AT89C51 microcontroller controller, by the clock chip DS12C887 access time data and power-down storage, and use the keyboard to complete on time to adjust, and finally LCD1602 monitor display, so as to achieve the purpose of display time. T he calendar clock is widely used in individual households, as well as railway stations, hospitals, shopping malls, offices and other public places to become the indispensable necessities of daily life. Therefore, the design has very important realistic significance and practical value. Key words: Calendar clock;Microcontroller;LCD1602; DS12C887

数字逻辑实验报告(数字时钟设计)

数字逻辑实验报告

实验三、综合实验电路 一、实验目的: 通过一个综合性实验项目的设计与实现,进一步加深理论教学与实验软硬件平台的实践训练,为设计性实验做好充分准备。 二、实验原理: 根据要求的简单设计性的电路设计实验,应用基本器件与MSI按照电路设计步骤搭建出初级电路;设计型、综合型的较复杂实验电路 三、实验设备与器件: 主机与实验箱 四、实验内容: (1)实验任务:根据所学习的器件,按照电路开发步骤搭建一个时钟, 要求实现的基本功能有计时功能、校对时间功能、整点报时、秒表等功能。 (2)实验任务分析:完成该数字时钟,采用同步时序电路,对于计时 的的功能,由于时间的秒分时的进位分别是60、60、24,所以可以应用74LS163计数器分别设计2个模60计数器以及一个模24计数器,那么需要有7个秒输出,7个分输出,6个小时的输出;对于校对时间的功能,由74LS163的特性可知,当该器件处于工作状态时,每来一个CLK脉冲,计数值加1,所以可以手动控制给CLK脉冲,来进行时间的校对;对于整点报时功能,可以采用一个比较电路,当时间的分秒数值全部为零时,那么此时可以接通报时装置,可以在电路中设置报时的的时间;对于秒表功能,有两种方案,可以单独重新设计一个秒表装置,采用模100计数器以及两个模60计数器,可以进行优化,使用原先的两个模60计数器,这样可以简化电路,是电路简洁。 (3)实验设计流程:

(4)输入输出表: (5)各个功能模块的实现: A、计时功能模块的实现(电路图及说明)秒表部分及说明

说明:该部分是实现功能正常计时中的秒部分的计时工作。如图所示,图中采用两个74LS163来做一个模60计时器,计数的起止范围是0~59,(第一个74LS163采用模10计数,起止为0~9,第二个74LS163的计数起止范围是0~5),两个器件采用级联方式,用预置位方法实现跳转;该部分有7个秒输出,接到BCD译码显示器。 注解:第一个163器件: LDN端统一接到清零端ABCD端接地 ENP端接到VCC高电平ENT接高电平VCC 第二个163器件: LDN端统一接到清零端ABCD端接地 ENP端接到VCC高电平ENT接高电平第一个163的预置位段 分钟部分以及说明:

51单片机1302实时时钟1602显示程序

/****************************************************************************** * * 标题: 试验数码管显示时钟* * * * 通过本例程了解DS1302时钟芯片的基本原理和使用,理解并掌握DS1302时钟芯片 * * 驱动程序的编写以及实现数字字符在数码管中的显示。 * * 注意:JP1302跳线冒要短接。* * 请学员认真消化本例程,懂DS1302在C语言中的操作* ******************************************************************************* */ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit rs=P3^2; // 1602引脚定义 sbit rw=P3^0; sbit e=P1^6; #define NOP() _nop_() /* 定义空指令*/ #define _Nop() _nop_() /*定义空指令*/ #define uchar unsigned char #define uint unsigned int uchar temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节uchar *p,TIM; code unsigned char table[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; //l_tmpdate[7]用于初始值的设定,设定后,就不用每次上电再次修改了 unsigned char l_tmpdate[7]={0,17,19,16,3,6,12};//秒分时日月周年08-05-15 12:00:00 ,初值code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年最低位读写位 code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; //注意,根据需要修改 sbit SCK=P1^0; //时钟 sbit SDA=P1^1; //数据 sbit RST = P1^2;// DS1302复位 /******************************************************************/ /* 函数声明*/ /******************************************************************/ void Write_Ds1302_byte(unsigned char temp); void Write_Ds1302( unsigned char address,unsigned char dat );

相关主题