基于单片机的简易电子时钟设计
- 格式:doc
- 大小:117.00 KB
- 文档页数:20
基于单片机电子时钟设计电子时钟是一种利用单片机技术来实现精确时间显示的装置。
它可以准确地显示时间,并且可以根据需要进行闹铃功能等扩展。
接下来,我将详细介绍基于单片机的电子时钟设计。
首先,我们需要选择合适的单片机来实现电子时钟。
目前,常用的单片机有STC51系列、PIC系列、AVR系列等。
在选择单片机时,我们需要考虑其性能参数、价格以及开发环境等因素。
接下来,我们需要设计电子时钟的电路结构。
电子时钟的核心是单片机,通过连接显示屏、RTC(实时时钟)、按键以及扬声器等设备,来实现时间的显示、调整以及报警功能。
首先,我们需要选择合适的显示屏。
常用的显示屏有数码管、液晶显示屏、LED点阵等。
数码管和液晶显示屏可以直接连接到单片机的IO口,而LED点阵需要借助驱动芯片来完成控制。
其次,我们需要选择合适的RTC模块,以确保时钟的准确性。
RTC模块可以借助于DS1302等实时时钟芯片来实现。
同时,我们还需要连接按键,来实现对时钟进行调整的功能。
通过按键的组合操作,我们可以调整年、月、日、小时、分钟等时间参数。
此外,如果我们希望实现报警功能,我们还需要连接一个扬声器。
通过控制扬声器的开关,我们可以在设定的时间点播放报警铃声。
在硬件设计完成后,我们就可以进行软件开发工作了。
首先,我们需要编写主程序来初始化硬件设备,并进入主循环。
在主循环中,我们需要不断读取RTC模块的时间数据,并在显示屏上进行实时显示。
同时,我们也需要编写按键检测和处理的程序。
按键检测可以通过查询IO口的状态来实现,而按键处理则需要根据按键的值进行相应的功能调整。
如果需要实现报警功能,我们还需要编写报警处理的程序。
在设定的时间点,我们可以通过控制扬声器的开关来实现报警铃声的播放。
最后,我们需要进行整体的调试和测试工作。
通过不断地调整和优化程序,来确保整个电路和软件的正常运行。
总结起来,基于单片机的电子时钟设计包括硬件设计和软件开发两部分。
通过选择合适的单片机、显示屏、RTC模块、按键和扬声器等设备,并编写相应的程序,我们可以实现一个功能完善的电子时钟。
基于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;//熄灭数码管```四、总结通过以上的硬件设计和软件实现,可以实现一个基于单片机的电子时钟。
毕业设计论文_单片机电子时钟的设计摘要:电子时钟作为一种常见的时间显示装置,在现代社会中应用广泛。
本文设计了一款基于单片机的电子时钟,使用DS1307实时时钟芯片来获取系统时间,并通过数码管进行显示。
设计过程中,通过对单片机的编程和电路的连接,实现了时间的显示与调节功能,具有较高的准确性和稳定性。
该设计方案简单、实用,可用于各种场合。
关键词:单片机;电子时钟;DS1307;数码管1.引言电子时钟是一种利用电子技术构造的显示时间的装置,具有时间准确、使用简单、显示清晰等特点,广泛应用于生活和工作中。
本文以单片机为核心,设计了一款实时准确的电子时钟,提高了时间的准确度和稳定性。
2.设计原理该设计的核心是通过单片机与DS1307实时时钟芯片的连接,使得单片机可以获取到准确的系统时间,并通过数码管进行显示。
DS1307芯片通过I2C总线与单片机连接,通过读取芯片中的时间寄存器,单片机可以获得当前的时间信息。
3.硬件设计本设计中使用了AT89S52单片机作为主控芯片,通过引脚与DS1307芯片相连。
单片机的P0口接到数码管的段选信号,P1口接到数码管的位选信号,通过控制这两个口的输出状态,可实现对数码管上显示的数字进行控制。
同时,为了使时钟可以正常运行,需外接一个晶振电路为单片机提供时钟信号。
4.软件设计通过对单片机的编程,实现了以下功能:(1)初始化DS1307芯片,设置初始时间;(2)每隔一秒读取一次DS1307芯片的时间寄存器,将时间信息保存到单片机的RAM中;(3)根据当前时间信息,在数码管上显示对应的小时和分钟。
5.调试与测试经过硬件的连接以及软件的编写,进行了调试与测试。
将初始时间设置为08:30,观察数码管上的显示是否正确,以及时间是否准确。
同时,通过手动调节DS1307芯片中的时间,检查单片机是否能正确获取时间,并进行显示。
6.总结与展望本文设计了一款基于单片机的电子时钟,通过单片机与DS1307芯片的连接和编程,实现了准确的时间显示功能。
基于51单片机的电子时钟设计51单片机是一种广泛应用于嵌入式系统的微控制器,由于其性能稳定、易于编程和成本相对较低的特点,被广泛应用于各种电子设备中。
在现代社会,电子时钟已经成为人们日常生活中不可或缺的工具。
随着科技的不断发展,电子时钟在功能和外观上都得到了极大的提升,如今的电子时钟不仅可以显示时间,还能设置闹钟、定时、显示温湿度等功能。
本文通过对51单片机的应用和实践,设计了一款功能丰富的电子时钟,旨在探讨如何利用51单片机实现电子时钟的设计与制作过程。
首先,我们将介绍51单片机的基本原理和特点。
51单片机是一种8位微控制器,由Intel公司于1980年推出,至今已有数十年的历史。
它采用哈佛结构,具有较高的工作速度和稳定性,适合用于各种嵌入式系统。
51单片机的指令系统简单,易于学习和掌握,因此被广泛用于各种嵌入式应用中。
除此之外,51单片机的外围设备丰富,可以通过外部扩展模块实现各种功能,如串口通信、定时器、数模转换等,这也为我们设计电子时钟提供了便利。
其次,我们将详细介绍基于51单片机的电子时钟的设计和实现过程。
电子时钟主要由时钟模块、显示模块、闹钟模块等部分组成,通过合理的接线和程序设计实现各种功能。
首先,我们设计时钟模块,通过外部晶振产生时钟信号,并利用51单片机的定时器模块实现时间的精确计算和显示。
同时,我们还设计了显示模块,采用数码管或液晶屏显示时间和日期信息,通过数字或字符的组合,使信息直观清晰。
此外,闹钟模块也是电子时钟的重要功能之一,我们可以设置闹钟时间,并在设定时间触发闹钟功能,提醒用户。
通过合理的程序设计,我们可以实现电子时钟的各种功能,并提升用户体验。
最后,我们将讨论基于51单片机的电子时钟在实际生活中的应用前景和发展趋势。
随着智能家居的快速发展,电子时钟作为家庭必备的电子设备,其功能和外观需求也在不断提升。
未来,基于51单片机的电子时钟将会更加智能化,可以与手机、电视等智能设备联动,实现更多个性化的功能。
基于单片机电子时钟的设计一、设计背景随着科技的不断进步,电子设备在我们的生活中扮演着越来越重要的角色。
时钟作为时间的测量工具,也从传统的机械时钟逐渐发展为电子时钟。
单片机作为一种集成度高、功能强大的微控制器,为电子时钟的设计提供了高效、可靠的解决方案。
基于单片机的电子时钟具有精度高、易于编程、成本低等优点,能够满足人们对时间测量和显示的各种需求。
二、系统设计方案1、硬件设计单片机选择:选择合适的单片机是整个系统设计的关键。
常见的单片机如STM32、AT89C51 等,具有不同的性能和特点。
根据系统需求,我们选择了 AT89C51 单片机,其具有成本低、性能稳定等优点。
时钟芯片:为了保证时间的准确性,需要选择高精度的时钟芯片。
DS1302 是一款常用的实时时钟芯片,具有低功耗、高精度等特点,能够为系统提供准确的时间信息。
显示模块:显示模块用于显示时间。
常见的显示模块有液晶显示屏(LCD)和数码管。
考虑到显示效果和成本,我们选择了 1602 液晶显示屏,能够清晰地显示时间、日期等信息。
按键模块:按键模块用于设置时间和调整功能。
通过按键可以实现时间的校准、闹钟的设置等功能。
电源模块:为整个系统提供稳定的电源。
可以选择电池供电或外部电源供电,根据实际使用场景进行选择。
2、软件设计编程语言:选择合适的编程语言进行软件编程。
C 语言是单片机编程中常用的语言,具有语法简单、可读性强等优点。
主程序流程:主程序首先进行系统初始化,包括单片机端口初始化、时钟芯片初始化、显示模块初始化等。
然后读取时钟芯片中的时间信息,并将其显示在液晶显示屏上。
通过按键检测模块,判断是否有按键操作,如果有,则进行相应的处理,如时间校准、闹钟设置等。
中断服务程序:为了保证时间的准确性,需要使用定时器中断来实现时钟的计时功能。
在中断服务程序中,对时钟芯片进行时间更新,确保时间的准确性。
三、硬件电路设计1、单片机最小系统单片机:AT89C51 单片机是整个系统的核心,负责控制和协调各个模块的工作。
基于单片机电子时钟设计与制作一、设计需求与原理我们的目标是设计一款能够准确显示时间(包括小时、分钟和秒),具备设置时间功能,并且可以在不同的显示模式(如 12 小时制和 24小时制)之间切换的电子时钟。
其工作原理主要基于单片机的控制。
单片机作为核心控制器,接收来自时钟芯片的时间数据,并将其处理后输出到显示模块进行显示。
同时,通过按键模块,用户可以向单片机输入指令,实现时间的设置和显示模式的切换等操作。
二、硬件设计1、单片机选择我们选用常见的 STC89C52 单片机,它具有性能稳定、价格低廉、易于编程等优点。
2、时钟芯片DS1302 时钟芯片被用于提供准确的时间信息。
它能够在掉电情况下保持时间数据不丢失,保证了时钟的可靠性。
3、显示模块为了清晰直观地显示时间,采用了液晶显示屏(LCD1602)。
它能够显示多行字符,满足我们显示小时、分钟、秒以及其他相关信息的需求。
4、按键模块设置四个独立按键,分别用于时间的调整(增加、减少)、显示模式的切换以及时间设置的确认。
5、电源模块为整个系统提供稳定的 5V 直流电源,可以通过 USB 接口或者电池进行供电。
三、软件设计1、编程语言使用 C 语言进行编程,它具有语法简单、可读性强、可移植性好等特点。
2、程序流程初始化系统后,单片机不断从时钟芯片读取时间数据,并将其显示在液晶显示屏上。
当检测到按键操作时,进入相应的处理函数,实现时间设置和显示模式切换等功能。
四、制作过程1、硬件焊接首先,将各个元器件按照原理图焊接在电路板上。
注意焊接的质量,避免虚焊和短路。
2、软件烧录使用编程器将编写好的程序烧录到单片机中。
3、系统调试接通电源,检查液晶显示屏是否正常显示,按键是否能够准确响应操作。
如果出现问题,通过调试工具(如示波器、逻辑分析仪等)进行故障排查和修复。
五、系统测试1、时间准确性测试将制作好的电子时钟与标准时间进行对比,观察其在长时间运行中的时间准确性。
2、功能测试测试时间设置功能、显示模式切换功能是否正常,按键操作是否灵敏可靠。
基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。
二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。
1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。
以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。
同时,根据用户按键的操作,可以调整时间的设定。
2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。
可以显示当前时间和设置的闹钟时间。
初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。
3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。
通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。
4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。
同时可以添加外部中断用于响应用户按键操作。
三、主要功能和实现步骤1.系统初始化。
2.设置定时器,每1秒产生一次中断。
3.初始化LCD显示屏,显示初始时间00:00:00。
4.查询键盘状态,判断是否有按键按下。
5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。
-数字键:根据键入的数字进行时间的调整和闹钟设定。
6.根据定时器的中断,更新时间的显示。
7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。
8.循环执行步骤4-7,实现连续的时间显示和按键操作。
四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。
但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。
基于单片机的电子时钟设计电子时钟是人们日常生活中常见的设备之一,它不仅能够准确显示时间,还可以搭配其他功能,如闹钟、温度显示等。
本文将介绍基于单片机的电子时钟的设计原理和步骤,并探讨其在现代生活中的应用。
一、设计原理基于单片机的电子时钟主要由以下几个模块组成:时钟模块、显示模块、控制模块和电源模块。
时钟模块负责获取当前时间并进行计时,显示模块用于将时间信息显示出来,控制模块用于处理用户的输入操作,电源模块为电子时钟提供稳定的电源。
1. 时钟模块时钟模块的核心是一个定时器,它可以定时触发中断,通过中断服务程序来更新时间。
在单片机中,我们可以使用定时器模块来实现这个功能,通过设定合适的定时器参数,可以实现从毫秒级到秒级的计时精度。
2. 显示模块显示模块通常采用数码管或者液晶显示屏来显示时间信息。
数码管可以直接显示数字,在低功耗和成本方面具有优势;液晶显示屏可以显示更多的信息,具有更好的可视角度和美观性。
在电子时钟中,我们可以通过控制显示模块的引脚,以适当的方式显示小时、分钟和秒数。
3. 控制模块控制模块主要用于处理用户的输入操作,如设置闹钟时间、调整时间等。
可以通过按键开关、旋转编码器或者触摸屏等方式来实现用户交互。
当用户按下按键或者滑动触摸屏时,控制模块会相应地改变时钟模块中的时间数据或者触发其他操作。
4. 电源模块电子时钟需要一个稳定的电源来工作,通常使用交流电转直流电的方式进行供电。
电源模块可以通过整流、滤波和稳压等电路来提供稳定的直流电源。
二、设计步骤基于单片机的电子时钟的设计步骤如下:1. 确定需求和功能:首先需要明确设计的需求和功能,包括显示方式、时间格式、附加功能等。
2. 选择单片机:根据需求选择适合的单片机型号,考虑处理性能、存储空间、外设接口等因素。
3. 设计电路图:根据选择的单片机和其他模块,设计电子时钟的电路图。
包括时钟模块、显示模块、控制模块和电源模块的连接方式。
4. 编写源代码:根据电路图和功能需求,编写单片机的源代码。
基于51单片机的电子时钟的设计与实现综述基于51单片机的电子时钟是一种常见的嵌入式系统设计项目。
它通过使用51单片机作为核心处理器,结合外部电路和显示设备,实现了时间的计时和显示功能。
本文将对基于51单片机的电子时钟的设计和实现进行综述,包括硬件设计和软件设计两个部分。
一、硬件设计1.时钟电路时钟电路是电子时钟的核心部分,它提供稳定的时钟信号供给单片机进行计时。
常用的时钟电路有晶振电路和RTC电路两种。
晶振电路通过外接晶体振荡器来提供时钟信号,具有较高的精度和稳定性;RTC电路则是通过实时时钟芯片来提供时钟信号,具有较高的时钟精度和长期稳定性。
2.显示电路显示电路用于将时钟系统计算得到的时间信息转换为人们可以直接观察到的显示结果。
常用的显示器有数码管、液晶显示屏、LED显示屏等。
显示电路还需要与单片机进行通讯,将计时的结果传输到显示器上显示出来。
3.按键电路按键电路用于实现对电子时钟进行设置和调节的功能。
通过设置按键可以实现修改时间、调节闹钟等功能。
按键电路需要与单片机进行接口连接,通过读取按键的输入信号来实现对时钟的操作。
4.供电电路供电电路为电子时钟提供电源,通常使用直流电源。
供电电路需要满足单片机和其他电路的电源需求,同时还需要考虑电源的稳定性和保护措施等。
二、软件设计1.系统初始化系统初始化主要包括对单片机进行外设初始化、时钟初始化和状态变量初始化等。
通过初始化将各个外设配置为适合电子时钟功能运行的状态,并设置系统初始时间、闹钟时间等。
2.计时功能计时功能是电子时钟的核心功能,通过使用定时器和中断技术来实现。
通过设置一个固定时间间隔的定时器中断,单片机在每次定时器中断时对计时寄存器进行增加,实现时间的累加。
同时可以将计时结果转化为小时、分钟、秒等形式。
3.显示功能显示功能通过将计时结果传输到显示器上,实现时间信息的显示。
通过设置显示器的控制信号,将时间信息依次发送到各个显示单元上,实现数字或字符的显示功能。
基于单片机的简易电子时钟设计1 设计任务与要求1.1 设计背景数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示。
机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
1.2 课程设计目的(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
1.3 设计要求1).时制式为24小时制。
2).采用LED数码管显示时、分,秒采用数字显示。
3).具有方便的时间调校功能。
4).计时稳定度高,可精确校正计时精度。
2 总体方案设计2.1 实现时钟计时的基本方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。
(1) 计数初值计算:把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒,而100次计数可用软件方法实现。
假设使用T/C0,方式1,50ms定时,fosc=12MHz。
则初值X满足(216-X)×1/12MHz×12μs =50000μsX=15536→0011110010110000→3CB0H(2) 采用中断方式进行溢出次数累计,计满20次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。
2.2 电子钟的时间显示电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAM中设置显示缓冲区共8个单元。
LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED137H 36H 35H 34H 33H 32H 31H 30H时十位时个位分隔分十位分个位分隔秒十位秒个位2.3 电子钟的时间调整电子钟设置3个按键通过程序控制来完成电子钟的时间调整。
A键调整时;B键调整分;C键复位2.4 总体方案介绍2.4.1 计时方案利用AT89S51单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。
2.4.2 控制方案AT89S51的P0口和P2口外接由八个LED数码管(LED8~LED1)构成的显示器,用P0口作LED的段码输出口,P2口作八个LED数码管的位控输出线,P1口外接四个按键A、B、C构成键盘电路。
AT89S51 是一种低功耗,高性能的CMOS 8位微型计算机。
它带有8K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51和80C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。
简易电子钟的功能不复杂,采用其现有的I/O便可完成,所以本设计中采用此的设计方案。
3 系统硬件电路设计根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示。
图1 硬件电路方框图3.1单片机模块设计3.1.1 芯片分析AT89C51单片机引脚图如下:图2 AT89C51引脚图MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:VCC:+5V电源。
VSS:接地。
RST:复位信号。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。
XTAL1和XTAL2:外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
P0口:P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。
P2口:P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。
P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。
P3口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。
当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。
当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表1所示。
3.1.2 晶振电路右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图3晶振电路3.1.3 复位电路单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常见的复位如图所示。
电路为上电复位电路,它是利用电容充电来实现的。
在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。
只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。
该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
图4单片机复位电路3.2 数码显示模块设计系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。
动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。
图5 数码显示电路3.3 按键模块下图为按键模块电路原理图,A为复位键,B为时钟调控键,C为分钟调控键。
图6 按键模块电路原理图4、系统软件设计4.1 软件设计分析在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。
在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能,系统总流程图如下图7:图7 系统总体流程图4.2 源程序清单ORG 0000HMOV 30H,#1 设置时钟的起始时间12.00.00,分配显示数据内存MOV 31H,#2MOV 32H,#0MOV 33H,#0MOV 34H,#0MOV 35H,#0MOV TMOD,#01 启动计数器XS0: SETB TR0 使TRO位置1MOV TH0,#00H 计数器置零MOV TL0,#00HXS:MOV 40H,#0FEH 扫描控制字初值MOV DPTR,#TAB 取段码表地址MOV P2,40H 从P2口输出MOV A,30H 取显示数据到AMOVC A,@A+DPTR 查显示数据对应段码MOV P0,A 段码放入P0中LCALL YS1MS 显示1MSMOV P0,#0FFH PO端口清零MOV A,40H 取扫描控制字放入A中RL A A中数据循环左移MOV 40H,A 放回40H地址段内MOV P2,40HMOV A,31HADD A,#10 进位显示MOVC A,@A+DPTRMOV P0,ALCALL YS1MSMOV P0,#0FFHMOV A,40HRL AMOV 40H,AMOV P2,40HMOV A,32HMOVC A,@A+DPTR MOV P0,ALCALL YS1MS MOV P0,#0FFH MOV A,40HRL AMOV 40H,AMOV P2,40HMOV A,33HADD A,#10MOVC A,@A+DPTR MOV P0,ALCALL YS1MS MOV P0,#0FFH MOV A,40HRL AMOV 40H,AMOV P2,40HMOV A,34HMOVC A,@A+DPTRMOV P0,ALCALL YS1MSMOV P0,#0FFHMOV A,40HRL AMOV 40H,AMOV P2,40HMOV A,35HMOVC A,@A+DPTRMOV P0,ALCALL YS1MSMOV P0,#0FFHMOV A,40HRL AMOV 40H,AJB TF0,JIA 如果TF0为1时,则执行JIA,否则顺序执行JNB P1.0,P100 为0则转移到P100JNB P1.1,P1000 为0则转移到P1000JNB P1.2,P10000 为0则转移到P10000AJMP XS 跳转到XSP100: MOV 30H,#0 清零程序MOV 31H,#0MOV 32H,#0MOV 33H,#0MOV 34H,#0MOV 35H,#0JIA: CLR TF0 TF0清零MOV A,35H 秒单位数据到ACJNE A,#9,JIA1 与9进行比较,大于9就转移到JIA1MOV 35H,0 秒个位清零MOV A,34H 秒十位数据到ACJNE A,#5,JIA10 与5进行比较,大于5就转移到JIA10MOV 34H,#0 秒十位清零P10000: JNB P1.2,P10000 为0则转移到P10000MOV A,33H 取分的个位到ACJNE A,#9,JIA100 与9进行比较,大于9就转移到JIA100MOV 33H,#0 分的个位清零MOV A,32H 分十位数据到ACJNE A,#5,JIA1000 与5进行比较,大于5就转移到JIA1000MOV 32H,#0 分的十位清零P1000: JNB P1.1,P1000 为0则转移到P1000MOV A,31H 时个位数据到ACJNE A,#9,JIA10000 与9进行比较,大于9就转移到JIA10000MOV 31H,#0 时的个位清零MOV A,30H 时十位数据到ACJNE A,#2,JIA100000 与2进行比较,大于5就转移到JIA100000MOV 30H,#0 时的十位清零AJMP XS0 转移到XSOJIA100000:INC 30H 加1AJMP XS0 跳转到XS0JIA10000:CJNE A,#3,JIAJIA 与3进行比较,大于则转移到JIAJIAMOV A,30H 将时的十位放到ACJNE A,#02,JIAJIA 与2进行比较,大于则转移到JIAJIAMOV 30H,#0 时段清零MOV 31H,#0AJMP XS0 跳转到XSOJIAJIA:INC 31H 加一AJMP XS0JIA1000:INC 32HAJMP XS0JIA100: INC 33HAJMP XS0JIA10: INC 34HAJMP XS0JIA1: INC 35HAJMP XS0RET 返回YS1MS: MOV R6,#9H 延时程序YL1: MOV R7,#19HDJNZ R7,$DJNZ R6,YL1RETTAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H 共阳段码表DB 040H,079H,024H,030H,019H,012H,002H,078H,000H,010HEND5 系统仿真与实验测试5.1 系统仿真运用proteus软件进行仿真现在proteus软件中建立一个新的文件,再根据自己的要求选择所需的器件,把器件进行适当的排位后进行连接,连接后运行软件进行仿真。