单片机数码电子钟的设计制作
- 格式:doc
- 大小:333.00 KB
- 文档页数:8
基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。
本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。
51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。
本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。
本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。
接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。
将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。
软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。
本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。
通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。
2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。
它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。
51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。
51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。
其存储器分为程序存储器(ROM)和数据存储器(RAM)。
程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。
51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。
51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。
基于单片机电子时钟的设计与实现一、设计目标设计一个基于单片机的电子时钟,能够准确显示时间并能够进行设置和调整。
二、硬件设计1.时钟部分:采用晶振芯片提供准确的时钟信号2.数码管显示部分:使用共阴数码管进行数字显示3.按键部分:设计几个按键用于设置和调整时间4.电源部分:采用直流电源供电三、软件设计1.功能设计a.时间设置功能:通过按键可以设置当前的时间,包括小时、分钟和秒钟。
b.时间调整功能:通过按键可以调整当前的时间,包括小时、分钟和秒钟。
c.时间显示功能:通过数码管可以实时显示当前的时间。
2.代码实现以C语言为例,以下是一个基于单片机的电子时钟的代码实现示例:```c#include <reg51.h>sbit DS18B20=P1^3; // 定义18B20数据线接口sbit beep=P2^3; // 定义蜂鸣器接口unsigned char hour,min,sec; // 定义小时、分钟、秒钟变量//函数声明void Delay_1ms(unsigned int count);bit Ds18b20Init(;unsigned char Ds18b20ReadByte(;void ReadTime(;void WriteTime(;void DisplayTime(;//主函数void mainP2=0x00;WriteTime(; // 写入时间while(1)ReadTime(; // 读取时间DisplayTime(; // 显示时间Delay_1ms(1000); // 延时1秒}//毫秒延时函数void Delay_1ms(unsigned int count) unsigned int i, j;for(i=0; i<count; i++)for(j=0; j<1275; j++);//18B20初始化函数bit Ds18b20Initbit presence;DS18B20=0;Delay_1ms(100); // 延时450us~1000us DS18B20=1;Delay_1ms(10); // 延时15us~60us presence=DS18B20;Delay_1ms(30); // 延时60us~240us return presence;//18B20读取字节函数unsigned char Ds18b20ReadByte unsigned char i, dat;for(i=0; i<8; i++)DS18B20=0;//主机发起读时序_nop_(; // 延时1us_nop_(; // 延时1us_nop_(; // 延时1usDS18B20=1;//主机释放总线_nop_(; // 延时1us_nop_(; // 延时1us_nop_(; // 延时1usdat,=(DS18B20<<i); // 读取数据位,存放在dat变量中Delay_1ms(3); // 读时序完成后等待48us再接收下一位}return dat;//读取时间函数void ReadTimeunsigned char temp;temp=0x00;while(temp!=0xaa)Ds18b20Init(; // 初始化温度传感器Delay_1ms(1);DS18B20=0xcc;Delay_1ms(1);DS18B20=0xbe;Delay_1ms(1);temp=Ds18b20ReadByte(; // 读取时间数组的标志位}for(temp=0; temp<7; temp++)//写入时间函数void WriteTimeunsigned char i,j;while(1)Ds18b20Init(;Delay_1ms(1);DS18B20=0xcc;Delay_1ms(1);DS18B20=0x4e;Delay_1ms(1);for(i=0; i<7; i++)DS18B20=0x55;Delay_1ms(1);DS18B20=0xaa;Delay_1ms(1);Ds18b20Init(;Delay_1ms(1);DS18B20=0xcc;Delay_1ms(1);DS18B20=0x48;Delay_1ms(1);j=Ds18b20ReadByte(; // 判断是否写入成功if(j==0x0a)break;}//显示时间函数void DisplayTimeP1=seg[hour/10]; // 显示十位小时P2=(P2&0xf0),0x08; // 点亮第一个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=seg[hour%10]; // 显示个位小时P2=(P2&0xf0),0x04; // 点亮第二个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=seg[min/10]; // 显示十位分钟P2=(P2&0xf0),0x02; // 点亮第三个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=seg[min%10]; // 显示个位分钟P2=(P2&0xf0),0x01; // 点亮第四个数码管Delay_1ms(5); // 延时一段时间P2=0x0f;//熄灭数码管P1=0x00;//空显示P2=0x00;//熄灭数码管```四、总结通过以上的硬件设计和软件实现,可以实现一个基于单片机的电子时钟。
51单片机数字钟设计是一种常用的电子设计,它使用51单片机作为控制核心,通过数码管显示时间。
以下是一个简单的51单片机数字钟设计步骤:
1. 硬件设计
首先,需要选择一个合适的51单片机型号,如AT89C51、AT89S52等。
然后,需要选择数码管显示模块,可以选择多个数码管显示小时、分钟和秒。
同时,还需要选择适当的电源模块为数码管和单片机提供电源。
2. 软件设计
在软件设计方面,需要编写程序来控制数码管的显示,并实现时间的计数和更新。
可以使用定时器中断来实现时间的计数和更新。
同时,还需要编写程序来读取按键输入,以便用户可以调整时间。
3. 调试
在完成硬件和软件设计后,需要进行调试。
首先,需要检查硬件连接是否正确,然后通过调试程序来检查数码管的显示是否正确,以及时间计数和更新是否正常。
以上是一个简单的51单片机数字钟设计步骤,实际的设计可能需要根据具体需求进行修改和调整。
单片机电子时钟的设计与制作
1.硬件设计:
a.选择合适的单片机芯片,如AT89C51、PIC16F877A等,并确保具备
相应的功能和IO口。
b.连接时钟模块,如DS1302或DS3231,用于获取实时时间。
c.连接LCD液晶显示屏,用于显示时间和其他信息。
d.接入按键模块,用于设置时间和其他功能。
2.软件设计:
a.编写初始化程序,包括对时钟模块、LCD屏幕和按键模块进行初始
化设置。
b.编写主程序循环,在循环中不断读取实时时间,并在LCD屏幕上显示。
c.编写设置程序,通过按键模块实现对时间的设置,包括年月日时分
秒等。
d.实现其它功能,如闹钟、定时器等。
3.制作与调试:
a.通过焊接和布板等方式,将硬件部分制作出来,并进行连线和连接。
b.使用编程器将软件程序烧录进单片机芯片中。
c.进行调试,检查硬件和软件是否正常工作,如实时显示时间、设置
时间是否生效等。
设计和制作单片机电子时钟需要有一定的电子基础知识和单片机编程
经验。
在设计过程中,需要灵活运用各类模块和接口,合理规划电路布局,并在软件编写方面考虑到功能的实现和用户体验。
在制作和调试过程中,
需要仔细对照电路图和数据手册进行连线和设置,并进行反复测试和修改,直至达到预期效果。
基于单片机电子时钟设计与制作一、设计需求与原理我们的目标是设计一款能够准确显示时间(包括小时、分钟和秒),具备设置时间功能,并且可以在不同的显示模式(如 12 小时制和 24小时制)之间切换的电子时钟。
其工作原理主要基于单片机的控制。
单片机作为核心控制器,接收来自时钟芯片的时间数据,并将其处理后输出到显示模块进行显示。
同时,通过按键模块,用户可以向单片机输入指令,实现时间的设置和显示模式的切换等操作。
二、硬件设计1、单片机选择我们选用常见的 STC89C52 单片机,它具有性能稳定、价格低廉、易于编程等优点。
2、时钟芯片DS1302 时钟芯片被用于提供准确的时间信息。
它能够在掉电情况下保持时间数据不丢失,保证了时钟的可靠性。
3、显示模块为了清晰直观地显示时间,采用了液晶显示屏(LCD1602)。
它能够显示多行字符,满足我们显示小时、分钟、秒以及其他相关信息的需求。
4、按键模块设置四个独立按键,分别用于时间的调整(增加、减少)、显示模式的切换以及时间设置的确认。
5、电源模块为整个系统提供稳定的 5V 直流电源,可以通过 USB 接口或者电池进行供电。
三、软件设计1、编程语言使用 C 语言进行编程,它具有语法简单、可读性强、可移植性好等特点。
2、程序流程初始化系统后,单片机不断从时钟芯片读取时间数据,并将其显示在液晶显示屏上。
当检测到按键操作时,进入相应的处理函数,实现时间设置和显示模式切换等功能。
四、制作过程1、硬件焊接首先,将各个元器件按照原理图焊接在电路板上。
注意焊接的质量,避免虚焊和短路。
2、软件烧录使用编程器将编写好的程序烧录到单片机中。
3、系统调试接通电源,检查液晶显示屏是否正常显示,按键是否能够准确响应操作。
如果出现问题,通过调试工具(如示波器、逻辑分析仪等)进行故障排查和修复。
五、系统测试1、时间准确性测试将制作好的电子时钟与标准时间进行对比,观察其在长时间运行中的时间准确性。
2、功能测试测试时间设置功能、显示模式切换功能是否正常,按键操作是否灵敏可靠。
基于单片机的数字电子钟设计(含完整程序+PCB图)--课程设计1 课题设计任务、功能要求及总体方案1.1 课题设计任务本课程设计选题目为:数字电子钟。
设计一个具有特定功能的电子钟。
1.2 功能要求设计的数字电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按数字电子钟启动/调整键,数字电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按数字电子钟启动/调整键,则数字电子钟进入时钟调整状态,并且时间停止不动,此时可分别利用各调整键调整时、分、秒,调整结束后可按启动/调整键再次进入时钟运行状态。
1.3 设计总体方案介绍及工作原理说明本课程设计采用AT89S52单片机设计一个数字电子钟,通过两个4位LED数码管显示时、分、秒,并设有9个按键。
其中一个用于单片机的复位;一个为启动/调整键;两个分别为加,减键;其他键本课题暂不用。
电路分为5部分,分别为复位电路、键盘电路、时钟电路、显示电路和控制电路。
复位电路采用按键复位方式。
键盘电路采用独立式键盘。
时钟电路用12MHz的晶振产生时钟信号。
显示电路采用8个三极管驱动两个4位LED显示。
控制电路采用8位的AT89S52单片机作为CPU;原理是:时钟用T0为时钟秒加1中断,时间常数位50MS,每20次加1S,T0用为时间加1中断,时间常数为50MS,中断20次时间加1。
其设计框图如图1.1所示:复位电路AT89S52 显示时钟电路键盘电路下载电路图1.1 设计方案框图42 数字电子钟硬件系统的设计2.1 硬件系统各模块功能简要介绍2.1.1 复位电路复位是单片机的硬件初始化操作。
经复位操作后,单片机系统才能开始正常工作。
单片机上有复位引脚RST,用于外接复位电路,这里复位电路采用按键电平复位。
2.1.2 时钟电路单片机工作所需的同步时钟信号由以下两种方法获得:由单片机片内时钟电路结合外部晶振、电容产生和直接从单片机外部引入脉冲信号。
单片机和数码管设计的电子时钟电子时钟是一种用电子技术实现时间显示的设备,它能够精确地显示时间,并通过单片机控制数码管进行数字显示。
在本文中,将介绍单片机和数码管设计的电子时钟的原理、设计过程和实现方法。
一、电子时钟原理电子时钟的原理主要包括时钟信号源、计数器、数码管显示和时钟控制等部分。
时钟信号源提供一个恒定的频率信号,一般使用晶振产生。
计数器用于计数时钟信号的脉冲数,通过累加到一定的脉冲数后,完成对秒、分、时等单位的计数。
数码管显示用于将计数器的计数值转化为数字进行显示。
时钟控制部分通过单片机对时钟模块进行控制,完成时钟的设置、调整和显示等功能。
二、电子时钟设计过程1.确定需求:首先确定电子时钟的功能和要求,包括时间显示、闹钟功能、调节功能等。
根据需求确定显示部分所需的数码管数量和接口方式。
2.选择单片机:根据需求选择一款适合的单片机,考虑其处理能力、接口数量和扩展性等因素。
3.设计时钟源:选择合适的晶振作为时钟源,并将时钟信号输入到单片机的计时部分,生成一个恒定频率的脉冲信号。
4.编程设计:根据单片机类型选择相应的开发工具,编写程序实现时钟的计数、显示和控制功能。
其中,需要实现时钟的秒、分、时等单位的计数和显示、时钟调节和设置等功能。
5.数码管接口设计:根据数码管的数量和接口方式,进行接口设计。
常用的接口方式有共阳和共阴两种方式。
通过连接适当的电阻和引脚控制,实现对数码管进行数字显示。
6.硬件设计:根据实际需求和电路原理进行电路设计,包括电源电路、晶振电路和数码管显示电路。
注意电源的稳定性以及数码管的驱动电流和电压等参数。
7.调试和测试:完成硬件设计后,进行电子时钟的调试和测试工作。
通过对时钟进行时间设置和调整,验证时钟的计时和显示功能是否正常。
8.最终优化:对电子时钟的功能和性能进行评估,并进行必要的优化。
可以考虑添加闹钟功能、温度显示等扩展功能。
三、实现方法电子时钟的实现方法主要有两种,一种是基于单片机开发板实现,另一种是自己设计和制作。
基于单片机的简易电子时钟设计电子时钟是一种以数字形式显示时间的设备,它使用电子元件来实现计时和显示功能。
基于单片机的简易电子时钟设计是一种使用单片机芯片作为核心控制器的时钟设备。
本文将介绍一个基于单片机的简易电子时钟设计的方案,并详细讨论其硬件和软件实现。
一、硬件设计基于单片机的电子时钟设计的核心是单片机芯片,这里我们选择AT89C51作为控制器。
AT89C51是一款典型的80C51系列单片机,具有高速、低功耗和强大的计数和定时功能。
此外,还需要以下硬件元件实现电子时钟设计:1.电源模块:提供电源给单片机和其他电路元件。
2.晶振:用于提供时钟信号给单片机。
3.液晶显示模块:用于显示时间。
4.按键模块:用于设置和调节时间,以及其他功能操作。
5.蜂鸣器:用于发出小时、分钟和秒的提示音。
二、软件设计基于AT89C51的电子时钟设计需要编写相应的嵌入式软件程序。
以下是设计思路和主要功能点:1.初始化设置:在电子时钟启动时,进行一些初始化设置,如设置系统时钟、显示模式和其他参数。
2.时钟计时:使用定时器和计数器模块,实现时钟的计数功能。
根据时钟信号逐秒递增,并根据设定的模式进行小时、分钟和秒的更新。
3.时间显示:将当前的小时、分钟和秒数转化成对应的数字,在液晶显示模块上显示出来。
4.时间调整:通过按键模块,实现时间的调整功能。
可以通过按键设置、递增和递减来调整小时、分钟和秒。
5.其他功能:可以添加一些其他功能,如闹钟设置、闹铃功能等,以增强电子时钟的实用性。
三、实施步骤1.硬件搭建:按照上述硬件设计需求,搭建电子时钟的硬件电路。
注意连接正确的引脚,提供稳定的电源。
2.软件编写:根据设计思路和功能点,编写相应的嵌入式软件程序。
使用C语言或汇编语言编写代码,并调试和测试程序。
4.测试和优化:将电源连接到电子时钟,进行测试和优化。
检查时钟的计时和显示功能是否正常,是否可以调整时间。
四、实际应用总结:基于单片机的简易电子时钟设计是一种使用单片机芯片作为核心控制器的时钟设备。
51单片机的电子时钟设计一、引言随着科技的发展和人们对时间的准确度的要求日益提高,电子时钟成为了人们生活中不可缺少的一部分。
本文将介绍一种基于51单片机的电子时钟设计。
二、硬件设计1.主控部分本设计使用了51单片机作为主控芯片,51单片机具有丰富的接口资源和强大的处理能力,非常适合用于电子时钟的设计。
2.显示部分采用了数码管显示屏作为显示部分。
为了提高显示的清晰度,我们选用了共阳数码管。
使用4位数码管即可显示时、分和秒。
3.时钟部分时钟部分由振荡器和RTC电路构成。
振荡器提供时钟脉冲信号,RTC 电路实现对时钟的准确计时。
4.按键部分按键部分采用矩阵按键,以实现对时间的设置和调整。
三、软件设计1.系统初始化在系统初始化阶段,需要对硬件进行初始化设置。
包括对I/O口的配置,定时器的初始化等。
2.时间设置用户可以通过按键设置当前的时间。
通过矩阵按键扫描,检测到用户按下了设置键后,进入时间设置模式。
通过按下加减键,可以增加或减少时、分、秒。
通过按下确认键,将设置的时间保存下来。
3.时间显示在正常运行模式下,系统将会不断检测当前的时间,并将其显示在数码管上。
通过对时钟模块的调用,可以获取当前的时、分、秒并将其显示出来。
4.闹钟功能在时间设置模式下,用户还可以设置提醒闹钟的功能。
在设定时间到来时,系统会发出蜂鸣器的声音,提醒用户。
四、测试与验证完成软硬件设计后,进行测试与验证是必不可少的一步。
通过对硬件的连线接触检查和软件的功能测试,可以确保整个设计的正确性和可靠性。
五、总结通过本次设计,我对51单片机的使用和原理有了更清晰的认识,同时也对电子时钟的设计和制作有了更深入的了解。
电子时钟作为一种常见的电子产品,在我们的日常生活中发挥了重要的作用。
这次设计过程中,我遇到了许多问题,但通过查阅资料并与同学一起探讨,最终解决了问题。
相信通过不断的学习和实践,我可以在未来的设计中取得更好的成果。
基于单片机的电子时钟的设计基于单片机的电子时钟是一种采用单片机作为主控芯片的数字显示时钟。
它能够准确显示时间,并可以通过编程实现其他功能,如闹钟、倒计时、温湿度显示等。
本文将介绍基于单片机的电子时钟的设计原理、硬件电路和软件编程等内容。
1.设计原理基于单片机的电子时钟的设计原理是通过单片机的计时器和定时器模块来实现时间的计数和显示。
单片机的计时器可以通过设定一个固定的时钟频率进行计数,而定时器可以设定一个固定的计数值,当计数到达设定值时,会触发一个中断,通过中断服务程序可以实现时间的更新和显示。
2.硬件电路基于单片机的电子时钟的硬件电路主要包括单片机、显示模块、按键模块和时钟模块。
其中,单片机作为主控芯片,负责控制整个电子时钟的运行;显示模块一般采用数字管或液晶屏,用于显示时间;按键模块用于设置和调整时间等功能;时钟模块用于提供稳定的时钟信号。
3.软件编程基于单片机的电子时钟的软件编程主要分为初始化和主程序两个部分。
初始化部分主要是对单片机进行相关寄存器的设置,包括计时器和定时器的初始化、中断的使能等;主程序部分是一个循环程序,不断地进行时间的计数和显示。
3.1初始化部分初始化部分首先要设置计时器模块的时钟源和计数模式,一般可以选择内部时钟或外部时钟作为时钟源,并设置计时器的计数模式,如自动重装载模式或单次模式;然后要设置定时器模块的计数值,一般可以通过设定一个固定的计数值和计数频率来计算出定时时间;最后要设置中断使能,使得当定时器计数器达到设定值时触发一个中断。
3.2主程序部分主程序部分主要是一个循环程序,通过不断地读取计时器的计数值,并计算得到对应的时间,然后将时间转换成显示的格式,并显示在显示模块上。
同时,还可以通过按键来实现时间的设置和调整功能,如增加和减少小时和分钟的值,并保存到相应的寄存器中。
4.功能扩展-闹钟功能:设置闹钟时间,并在设定的时间到达时触发报警;-温湿度显示:通过连接温湿度传感器,实时显示当前的温度和湿度数据;-倒计时功能:设置一个倒计时的时间,并在计时到达时触发相应的动作。
7.12 单片机数码电子钟的设计制作7.12.1 实验目的通过对“单片机数码电子钟”的设计制作,增强对单片机控制,实现数码电子钟功能技术的理解与应用;熟练使用仪器仪表,完成电子电路系统的制作、安装、调整和测试并实现电路系统的功能,增强动手能力和实践兴趣;通过对“单片机数码电子钟”基本原理的研究与制作实践,进一步提高实践技能和创新能力。
7.12.2 实验要求1、学习和了解数码电子钟的基本原理;2、学会设计和制作数码电子钟;3、学习系统硬件电路设计方法;4、学习软件程序设计原理和方法;5、学习单片机工作原理及实现软件程序控制的方法。
7.12.3 实验电路原理1、电路功能电子时钟已为人们所熟知,作为一个电子爱好者来说,自己动手制作一款数码显示的电子钟是一件非常有意义的事。
本次实验,是一款利用AT89S52作为主控制芯片的数码电子钟的制作,同时结合这款制作的外围器件,特别编写了一些控制电路的驱动程序,供单片机初学者参考。
本制作可显示当前时间信息,当前日期信息。
还具有定时报警功能,同时接入了后备电源,使得系统在外供电断电的情况下,仍可保持时钟数据不丢失。
2、电路工作原理单片机数码电子时钟的设计制作是利用51单片机中的简易型产品AT89S52作为主控制器件,利用单片机程序,通过与时钟芯片DS1302的通读,读取实时时钟信息,通过对四位一体共阴数码管的扫描控制,完成对时钟的显示。
直流12V输入电源经三端稳压集成电路IC4的稳压后,在其输出端输出一个稳定的5V 工作电压,作为系统的工作电源。
DS1302是一款性价比较高的时钟芯片,外围元件少,其第8脚为备用电源输入端,在这里我们设计用3V电池进行供电,当系统断电后,由备用电源向时钟芯片供电,使时钟数据在外供电停电时也不会丢失。
CD4543为一款BCD-七段译码器,可弥补单片机输出引脚数量不够的问题。
当单片机通过与DS1302的通讯,向时钟芯片写入启动命令后,时钟芯片便开始工作,时钟启动以后,自动会进行计时操作,将最新的时钟信息保存在其内部寄存器中,包括年、月、日、周、时、分、秒等信息,单片机只要不断地读取时钟芯片中各寄存器中的数据就可以。
单片机要将读取到的时钟信息进行显示时,通过对数据的处理,从P1口的高四位输出显示数据,四位BCD码数据输入CD4543进行译码后,驱动七段数码管,同时配合四位电子开关来完成四位数据的扫描显示。
单片机数码电子钟电路原理如图7.12.1所示。
图7.12.1 单片机数码电子钟电路原理图7.12.4 实验内容1、实验方法按照图7.12.1组装实验电路,学习理解电路工作原理,在掌握硬件电路系统设计和软件程序控制原理的基础上进行本次实验。
软件设计流程:2、制作与调试由于本制作主要通过单片机程序来完成时钟数据的读取与显示,因此对硬件电路的调试显得非常简单,一般只要焊无误,插上我们提供的烧有程序的单片机后,便可以正常工作。
(1)制作制作过程中可以参考以下步骤来完成:将所有元件焊好,先不要插上单片机,向电源插座送入12V直流电源,测量78L05输出脚对地电压,是否为5V左右,这个电压的测量可以直接在20脚的集成电路插座上完成,万用表负表笔接10脚,正表笔测20脚的电压。
若电压为0,应仔细查看电源插座边上的极性保护二极管是否焊反。
另外需要注意的是,CD4543和DS1302两块集成电路不要焊反,焊时查看线路板上的标识上的半圆缺口与集成电路上的缺口对牢,5只三极管的方向应将实际型状与线路板上的标识一致。
以上几步都正确后,断后,再插上单片机,通电便可以正常工作。
制作实物照片如图7.12.2所示,在周围环境光照较暗时,能具有更好的显示效果。
3、时钟的操作时钟芯片在初次上电时,其数据都为初始值,我们必须将时钟、日期等信息进行设定。
1、当前时钟的设定:长按左边的SB1按键不要松,当听到蜂鸣器“嘟”叫一声后松开,这时系统进入时钟设定模式。
此时按动SB1键便可以调整时信息,每按一次蜂鸣器响一声,同时小时显示加1,当加到23时,再按一下,便显示为00,其余类推;当小时设定完后,按一下右边的SB2键,退出时单元的设定,时入分的设定。
这时再按SB1时,相应的分单元动作,操作过程同设定小时时一致。
当分单元与设定完后,再一下SB2,这时蜂鸣器响二声,表示时钟设定完成,系统退出时钟设定,显示当前时钟,同时每过一秒,中间的亮点闪一下。
2、闹钟设定:短按左边的SB1键一下,系统进入闹钟设定状态,初始上电后的闹钟时间为06:00,闹钟的调整方法同前面的时钟设定。
3、日期设定:长按右边的SB2键不要松,当听到蜂鸣器“嘟”叫一声后松开,这时系统进入日期设定模式。
四位数码显示的两位月信息,两位日期信息,调整的方法与前面调时间的方法类似。
4、日期显示:短按SB2键一下,系统便显示当前日期,这时不用按任何按键,延时一段时间后返回到时钟显示状态。
参考程序(DS1302驱动程序):#include <reg52.h>#include <intrins.h>sbit SCK=P3^4; // DS1302时钟sbit SDA=P3^0; // DS1302输入输出口sbit RST = P3^1; // DS1302复位bit ReadRTC_Flag; //读DS1302全局变量unsigned char l_tmpdate[7]={0,0,12,15,5,3,8};//秒分时日月周年08-05-15 12:00:00unsigned char l_tmpdisplay[8];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};code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//共阴数码管0-9 '-' '熄灭‘表code unsigned char table1[]={0,1,2,3,4,5,6,7};//显示位码表/****************************************************************************/ void InitTIMER0(void){TMOD|=0x01;//定时器设置16位TH0=0xef;//初始化值TL0=0xf0;ET0=1;TR0=1;EA=1;}/****************************************************************************/ void Write_Ds1302_Byte(unsigned char temp){unsigned char i;for (i=0;i<8;i++) //循环8次写入数据{SCK=0;SDA=temp&0x01; //每次传输低字节temp>>=1; //右移一位SCK=1;}}/****************************************************************************/ void Write_Ds1302( unsigned char address,unsigned char dat ){RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_(); //启动Write_Ds1302_Byte(address); //发送地址Write_Ds1302_Byte(dat); //发送数据RST=0; //恢复}/****************************************************************************/ unsigned char Read_Ds1302 ( unsigned char address ){unsigned char i,temp=0x00;RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_();Write_Ds1302_Byte(address);for (i=0;i<8;i++) //循环8次读取数据{if(SDA)temp|=0x80; //每次传输低字节SCK=0;temp>>=1; //右移一位SCK=1;}RST=0;_nop_(); //以下为DS1302复位的稳定时间RST=0;SCK=0;_nop_();SCK=1;_nop_();SDA=0;_nop_();SDA=1;_nop_();return (temp); //返回}/****************************************************************************/ void Read_RTC(void) //读取日历{unsigned char i,*p;p=read_rtc_address; //地址传递for(i=0;i<7;i++) //分7次读取秒分时日月周年{l_tmpdate[i]=Read_Ds1302(*p);p++;}}/***********************************************************************/void Set_RTC(void) //设定日历{unsigned char i,*p,tmp;for(i=0;i<7;i++){ //BCD处理tmp=l_tmpdate[i]/10;l_tmpdate[i]=l_tmpdate[i]%10;l_tmpdate[i]=l_tmpdate[i]+tmp*16;}Write_Ds1302(0x8E,0X00);p=write_rtc_address; //传地址for(i=0;i<7;i++) //7次写入秒分时日月周年{Write_Ds1302(*p,l_tmpdate[i]);p++;}Write_Ds1302(0x8E,0x80);}/***********************************************************************/void tim(void) interrupt 1 using 1//中断,用于数码管扫描{static unsigned char i,num;TH0=0xf5;TL0=0xe0;P0=table[l_tmpdisplay[i]]; //查表法得到要显示数字的数码段P2=table1[i];i++;if(i==8){i=0;num++;if(10==num) //隔段时间读取1302的数据。