单片机电子时钟设计大作业

合集下载

单片机完整电子时钟设计报告.doc

单片机完整电子时钟设计报告.doc

目一.作品介⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 2 二.片机系原理及工作原理描述⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 2 三.程中碰到的及解决方法⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 四.数据及差分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 4 五.⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 六.程序模框⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯ 5 七.程序清⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7单片机的个性化电子钟设计报告一.作品简介该作品是个性化电子钟设计,技术上主要用单片机(AT89S52)主控, 4 位 LED 数码显示,分别显示“小时:分钟”。

该作品主要用于24 小时计时显示,能整时报时 ,能作为秒表使用,能定时闹铃 1 分钟。

使用方法 :开机后显示日期,学号,时钟在00:00:00 起开始计时。

(1)长按进入调分状态 :分单元闪烁 ,按加 1,按减 1.再长按进入时调整状态 ,时单元闪烁 ,加减调整同调分 .按长按退出调整状态。

(2)按进入设定闹时状态: 12:00: ,可进行分设定,按分加 1,再按为时调整 ,按时加 1,按调闹钟结束.在闹铃时可按停闹,不按闹铃 1 分钟。

(3)按下进入秒表状态:再按秒表又启动,按暂停 ,再按秒表清零 ,按退出秒表回到时钟状态。

二.单片机系统原理图及工作原理描述(1)总原理图如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块组成。

(2)各个模块说明1.单片机最小系统AT89S52 是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051 ,8031 的指令系统,他的运行速度要比8051 快最高支持达33MHz 的晶体震荡器,在此系统中使用12MHz 的晶振。

AT89S52 具有以下标准功能:8k 字节 Flash, 256字节 RAM,32 位 I/O口线,看门狗定时器, 2 个数据指针,三个16 位定时器 / 计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。

基于单片机电子时钟的设计与实现

基于单片机电子时钟的设计与实现

基于单片机电子时钟的设计与实现一、设计目标设计一个基于单片机的电子时钟,能够准确显示时间并能够进行设置和调整。

二、硬件设计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芯片的连接和编程,实现了准确的时间显示功能。

单片机电子时钟设计毕业论文(1)159

单片机电子时钟设计毕业论文(1)159

单片机电子时钟设计毕业论文一. 题目:单片机电子时钟时钟二.内容:设计一个数字时钟,显示范围为00:00:00~23:59:59。

通过几个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。

选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。

一、设计要求1、准确计时,以数字形式显示时、分、秒的时间。

2、小时以24小时计时形式,分秒计时为60进位。

3、校正时间功能,即能随意设定走时时间。

4、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。

5、设计5V直流电源,系统时钟电路、复位电路。

二、设计方案和论证本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求。

四.电路及功能说明:电路图如图所示:图A图B图C该数字钟是用一片AT89C51A单片机通过编程去驱动8个数码管实现的。

通过6个开关控制,从上到下6个开关KEY1~KEY6的功能分别为:KEY1,切换至秒表;KEY2,调节时间,每调一次时加1;KEY3, 调节时间,每调一次分加1;KEY4,从其它状态切换至时钟状态;KEY5,切换至闹钟设置状态,也可以对秒表清零;KEY6,秒表暂停.控制键分别与P1.0~P1.5口连接.其中:A.通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的a——g端,是控制输出编码,P3口接数码管的1——8端,是控制动态扫描输出.B.从P0.0输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,若有乐曲可以去驱动扬声器实现。

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

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

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。

二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。

2.软件设计通过C语言编写单片机程序,用于实现时钟功能。

3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。

(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。

(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。

(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。

三、实验结果经过调试,电子时钟的各项功能都能够正常实现。

在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。

在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。

四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。

通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。

在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。

基于单片机的电子时钟设计报告(LCD显示)

基于单片机的电子时钟设计报告(LCD显示)

单片机原理及应用课程设计任务书题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。

显示格式为“时时:分分:秒秒”。

用3个功能键操作来设置当前时间。

功能键K1~K4功能下。

K1—设置小时。

K2—设置分钟。

K3—设置秒。

程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。

2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。

3、参考电路硬件设计电路图如下图所示:硬件电路原理图单片机原理及应用课程设计任务书题目:电子时钟(LCD显示)1、设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。

显示格式为“时时:分分:秒秒”。

用3个功能键操作来设置当前时间。

功能键K1~K4功能下。

K1—设置小时。

K2—设置分钟。

K3—设置秒。

程序执行后工作指示灯LED发光,表示程序开始执行,LCD显示“23:59:00”,然后开始计时。

2、工作原理本课题难点在于键盘的指令输入,由于每个按键都具有相应的一种功能,程序中有较多的循环结构用以判断按键是否按下,以及判断按键是否抬起,以及LCD显示器的初始化。

3、参考电路硬件设计电路图如下图所示:硬件电路原理图基于AT89C51单片机的电子时钟设计报告一、设计要求与目的1)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间。

2)、使用字符型LCD显示器显示当前时间。

显示格式为“时时:分分:秒秒”。

3)、用3个功能键操作来设置当前时间。

4)、熟悉掌握proteus编成软件以及keil软件的使用二、本设计原理本设计以AT89C51单片机为核心,通过时钟程序的编写,并在LCD显示器上显示出来。

单片机实验电子钟报告

实验四 电子钟(定时器、中断综合实验)一、实验目的熟悉MCS51类CPU 的定时器、中断系统编程方法, 了解定时器的应用、实时程序的设计和调试技巧。

二、实验内容编写一个时钟程序, 产生一个50ms 的定时中断, 对定时中断计数, 将时、分、秒显示在数码管上。

三、程序框图主程序中断处理电子钟程序框图四、实验步骤 1.连线说明: E5 区A0 ←→ A3 区A0 E5 区CS ←→ A3 区CS5 E5 区CLK ←→ B2 区2MHzE5 区A.B.C.D ←→ G5 区A.B.C.D (排线每个8 位, 注意高低位一致) 2.时间显示在数码管上五、程序清单 ms50 DATA 31H ;存放多少个50ms sec DATA 32H ;秒 min DATA 33H ;分hour DATA 34H ;时buffer DATA 35H ;显示缓冲区EXTRN CODE(Display8)ORG 0000HLJMP STARORG 000BH ;定时器T0中断处理入口地址LJMP INT_Timer0ORG 0100HSTAR: MOV SP,#60H ;堆栈MOV ms50,A ;清零ms50MOV hour,#12 ;设定初值: 12:59:50MOV min,#59MOV sec,#50MOV TH0,#60 ;定时中断计数器初值MOV TL0,#176 ;定时50msMOV TMOD,#1 ;定时器0: 方式一MOV IE,#82H ;允许定时器0中断SETB TR0 ;开定时器T0STAR1: LCALL Display ;调用显示JNB F0,$CLR F0SJMP STAR1 ;需要重新显示时间;中断服务程序INT_Timer0: MOV TL0,#176-5MOV TH0,#60PUSH 01HMOV R1,#ms50INC @R1 ;50ms单元加1CJNE @R1,#20,ExitIntMOV @R1,#0 ;恢复初值INC R1INC @R1 ;秒加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;分加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;时加1CJNE @R1,#24,ExitInt1MOV @R1,#0ExitInt1: SETB F0ExitInt: POP 01HRETIHexToBCD: MOV B,#10DIV ABMOV @R0,BINC R0MOV @R0,AINC R0RETDisplay: MOV R0,#bufferMOV A,secACALL HexToBCDMOV @R0,#10H ;第三位不显示INC R0MOV A,minACALL HexToBCDMOV @R0,#10H ;第六位不显示INC R0MOV A,hourACALL HexToBCDMOV R0,#bufferLCALL Display8RETENDEXTRN CODE (Display8)BUFFER DA TA 60HORG 0000HAJMP MAINORG 000BHAJMP IT0PMAIN: MOV TMOD,#01HMOV 20H,#20HCLR AMOV 52H,A ;计数和显示MOV 51H,A ;空间清零MOV 50H,#50HMOV 40H,AMOV 41H,AMOV 43H,AMOV 44H,AMOV 46H,AMOV 47H,ASETB ET0SETB EAMOV TH0,#9EH ;计数器赋初值MOV TL0,#58HSETB TR0MOV 45H,#11HMOV 42H,#11HMOV R0,#BUFFERLCALL Display8HERE: AJMP HEREIT0P: PUSH PSWPUSH ACCMOV TH0,#9EH ;重新转入计数值MOV TL0,#58HDJNZ 20H,RETURN ;计数不满20返回MOV 20H,#20H ;重置中断次数MOV A,#01H ;秒加1ADD A,50HDA A ;秒单元十进制调制PUSH ACCCJNE A,#60H,SWS ;是否到60秒, 否则返回MOV A,#00HSWS: MOV R5,ASW AP AANL A,#0FHMOV 41H,AMOV A,R5ANL A,#0FHMOV 40H,A ;满60秒, 秒单元清零LCALL AAAPOP ACCMOV 50H,ACJNE A,#60H,RETURNMOV 50H,#00HMOV A,#01H ;分单元加1ADD A,51H ;分单元十进制调整DA APUSH ACCCJNE A,#60H,SWS1;是否到60分, 否则返回MOV A,#00HSWS1: MOV R5,A·SW AP AANL A,#0FHMOV 44H,AMOV A,R5ANL A,#0FHMOV 43H,ALCALL AAAPOP ACCMOV 51H,ACJNE A,#60H,RETURNMOV 51H,#00H ;满60分, 分单元清零MOV A,#01H ;时单元加1ADD A,52HDA APUSH ACCCJNE A,#24H,SWS2 ;是否到24小时, 否则返回MOV A,#00HSWS2: MOV R5,ASW AP AANL A,#0FHMOV 47H,AMOV A,R5ANL A,#0FHMOV 46H,ALCALL AAAPOP ACCMOV 52H,ACJNE A,#24H,RETURNMOV 52H,#00H ;满24小时, 时单元清零RETURN:POP PSWPOP ACCRETIAAA: MOV R0,#40H ;计数器的值赋MOV R1,#60H ;给显示空间MOV R5,#08HABC: MOV A,@R0MOV @R1,AINC R1INC R0DJNZ R5,ABCMOV R0,#BUFFERLCALL Display8RETEND六、思考题1.电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?2、使用定时器方式二, 重新编写程序。

大工 《单片机原理及应用》大作业 答案

题目一:单片机电子时钟设计
准则:设计一个基于51单片机或STM单片机的电子时钟,并且能够实现时分
秒的显示和调节
撰写要求:(1)首先介绍课题背景,并进行需求分析及可行性分析,包括软硬件功
能分配、核心器件的选型等;
(2)对系统硬件进行设计,包括硬件功能模块划分、电路原理图设计等;
(3)对系统软件进行设计,选用汇编语言或C语言编写程序,给出软件
开发流程;
(4)总结:需要说明的问题以及设计的心得体会。

答:
单片机电子时钟设计
一、引言
单片机技术是计算机科学技术的独立分支,拥有着高性价比、高集成度、体积少、强大控制功能、功耗低、高可靠性、电压低、容易生产、方便携带等优点,越来越广泛的被应用于实际生活中。

单片机全称,单片机微型计算机,从应用领域来看,单片机主要用来控制系统运行,所以又称微控制器或嵌入式控制器,单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。

二、时钟的基本原理分析
利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管。

51单片机的电子时钟设计

51单片机的电子时钟设计一、引言随着科技的发展和人们对时间的准确度的要求日益提高,电子时钟成为了人们生活中不可缺少的一部分。

本文将介绍一种基于51单片机的电子时钟设计。

二、硬件设计1.主控部分本设计使用了51单片机作为主控芯片,51单片机具有丰富的接口资源和强大的处理能力,非常适合用于电子时钟的设计。

2.显示部分采用了数码管显示屏作为显示部分。

为了提高显示的清晰度,我们选用了共阳数码管。

使用4位数码管即可显示时、分和秒。

3.时钟部分时钟部分由振荡器和RTC电路构成。

振荡器提供时钟脉冲信号,RTC 电路实现对时钟的准确计时。

4.按键部分按键部分采用矩阵按键,以实现对时间的设置和调整。

三、软件设计1.系统初始化在系统初始化阶段,需要对硬件进行初始化设置。

包括对I/O口的配置,定时器的初始化等。

2.时间设置用户可以通过按键设置当前的时间。

通过矩阵按键扫描,检测到用户按下了设置键后,进入时间设置模式。

通过按下加减键,可以增加或减少时、分、秒。

通过按下确认键,将设置的时间保存下来。

3.时间显示在正常运行模式下,系统将会不断检测当前的时间,并将其显示在数码管上。

通过对时钟模块的调用,可以获取当前的时、分、秒并将其显示出来。

4.闹钟功能在时间设置模式下,用户还可以设置提醒闹钟的功能。

在设定时间到来时,系统会发出蜂鸣器的声音,提醒用户。

四、测试与验证完成软硬件设计后,进行测试与验证是必不可少的一步。

通过对硬件的连线接触检查和软件的功能测试,可以确保整个设计的正确性和可靠性。

五、总结通过本次设计,我对51单片机的使用和原理有了更清晰的认识,同时也对电子时钟的设计和制作有了更深入的了解。

电子时钟作为一种常见的电子产品,在我们的日常生活中发挥了重要的作用。

这次设计过程中,我遇到了许多问题,但通过查阅资料并与同学一起探讨,最终解决了问题。

相信通过不断的学习和实践,我可以在未来的设计中取得更好的成果。

51单片机电子时钟设计报告

51单片机电子时钟设计报告一、引言电子时钟是一种常见的电子产品,它通过控制数字显示器的数字显示,来实现时间的显示功能。

本报告将介绍一种基于51单片机的电子时钟设计方案。

二、系统架构本电子时钟系统采用分级结构,分为实时时钟电路、中央处理器、显示器等核心模块。

实时时钟电路模块负责提供系统的时钟信号,中央处理器负责对时间进行处理和控制,显示器用于显示时间。

三、硬件设计1.实时时钟电路实时时钟电路采用DS1302芯片,该芯片集成了时钟实时计数器,能够提供精确的时钟信号。

同时,芯片还内置了电池供电电路,当外部电源中断时,电子时钟可以通过电池继续工作。

2.中央处理器中央处理器使用51单片机,它具有较强的计算和控制能力,可以方便地对时间进行处理和控制。

通过与实时时钟电路的通信,中央处理器可以获取当前时间,并进行各种计算操作。

3.显示器显示器采用数码管,可以直观地显示时间。

通过中央处理器控制,可以实现小时、分钟、秒钟的显示,并且可以进行亮度的调节。

四、软件设计1.时钟管理中央处理器的软件主要负责对时间的管理。

它可以从实时时钟电路中获取当前时间,并根据需要进行时间的累加和更新。

同时,中央处理器还可以通过按键实现时间的手动调节。

2.显示控制中央处理器通过对数码管的控制,实现时间的显示功能。

它可以根据当前时间的变化,动态地更新数码管的显示内容。

同时,还可以通过按键控制,对数码管的亮度进行调节。

五、系统特点1.精确性高:采用DS1302芯片实时时钟电路,能够提供精确的时钟信号,确保时间的准确性。

2.易于操作:中央处理器软件通过按键实现时间的调节,操作简单方便。

3.显示效果好:采用数码管进行显示,显示效果清晰,易于观察时间。

六、应用领域本电子时钟设计适用于各种需要显示时间的场景,如家庭、办公室、学校等。

七、总结本报告介绍了一种基于51单片机的电子时钟设计方案。

通过实时时钟电路提供精确的时钟信号,中央处理器进行时间管理和控制,显示器进行时间的显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机原理与接口技术》大作业题目:《单片机电子时钟设计》专业:软件工程班级:软工146学号:**********学生姓名:**南昌大学软件学院一. 题目:单片机电子时钟时钟二.内容:设计一个数字时钟,显示范围为00:00:00~23:59:59。

通过几个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。

选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。

三.要求:开关K3进行加1调节时,当加至最大值(时为24,分和秒均为60)时要能正常归零。

开关K4进行减1调节时,当减至最小值00时,均能再回到从相应最大值(时为23,分、秒均为59)。

闹钟乐曲自定。

四.电路及功能说明:电路图如图所示:图A图B图C该数字钟是用一片AT89C51A单片机通过编程去驱动8个数码管实现的。

通过6个开关控制,从上到下6个开关KEY1~KEY6的功能分别为:KEY1,切换至秒表;KEY2,调节时间,每调一次时加1;KEY3, 调节时间,每调一次分加1;KEY4,从其它状态切换至时钟状态;KEY5,切换至闹钟设置状态,也可以对秒表清零;KEY6,秒表暂停.控制键分别与P1.0~P1.5口连接.其中:A.通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的a——g端,是控制输出编码,P3口接数码管的1——8端,是控制动态扫描输出.B.从P0.0输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,若有乐曲可以去驱动扬声器实现。

(图A是时钟运行状态,图B是闹钟运行状态,图C是秒表运行状态)功能说明:1.各个控制键的功能:可对时间进行校准调节(只能加1);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加1、分加1键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。

2.AT89C51单片机,通过编写程序对数码显示进行控制。

3.八个7段数码管显示时钟和秒表信号。

五.实验程序流程图:1.主程序流程图:2. 中断程序流程图2.秒表中断程序流程图:3.按键程序流程图:第一图为时钟和闹钟的调节.第二图为进入中断和清零六.开发板的结构七.通过SST51实现开发板只读模式和程序烧写的切换打开SSTEasyIAP11F.exe程序,选择串口选择芯片型号和内部程序存储器选择PC串口,MCU晶振和波特率先选择确定在复位MCU通讯成功后窗口右上角显示芯片信息和版本信息点击Download SoftICE选项,将MCU中的BOOT LOADER监控程序替换为Soft ICE监控程序选择确认更换打开Keil C51程序,新建一个工程保存在自己新建的文件夹中点击保存出现CPU选择对话框,选择SST系列的89X516RD2出现是否添加标准51初始代码对话框,选“否”工程建立之后新建源程序文件,点击”File”菜单下“New”选项保存在工程文件夹内,C程序文件后缀为“.C”,汇编程序文件后缀为“.ASM”在文本编辑区编写源程序并保存;在Source Group上右击选择“Add Files To Group…”选项添加源文件至工程选择编写好的源程序文件,点击Add添加所选文件点击编译按钮,编译工程进入目标板调试选项设置,点击“Project”菜单下“Options for Target…”选项选择为硬件仿真功能点击Setting进入通讯参数设定菜单,去掉所有Cache选项。

至此设置完毕,进入仿真调试阶段点击DEBUG下的“Start/Stop Debug Session”选项进入DEBUG界面进入后可以看到信息栏中由显示连接成功信息。

在此仿真界面可以进行单步、全速、断点等调试方式由Soft ICE监控程序转换回SST Boot-Strap Loader监控程序打开编辑器SUPERPRO程序进入SUPERPRO程序界面,单击“选择器件选项”进入器件选择对话框,在器件类型处选择“MCU/MPU”在查找处输入要器件名称,找到之后选择“确定”单击“装入文件”选项进入下载文件选择对话框,选择要下载的Soft ICE监控程序,文件格式一般为“.hex”或“.bin”格式因为SST单片机的监控程序存储在Block1中,Block1的地址为10000h,故数据缓冲区起始地址改为“10000”,下载一般执行程序则直接默认具体步骤为:Erase=》Program=》Verify;打开SST BOOT-STRAP LOADER软件工具,并按之前的步骤与单片机通讯连接成功。

在界面的右下方IAP Function菜单中有下载选项,选择“Download”选项下载程序进入了下载文件选择界面在文件查找对话框中找到要下载的用户程序,一般为.Hex或.bin格式文件选择好用户程序后,单击步骤二中的OK选项开始下载,界面最下面的状态栏显示下载进度,当显示为Done 时表示程序下载已经完成,单片机上电执行用户程序了八.实验结果分析:此时钟设计是利用仿真软件进行仿真。

基本上实现了要求的功能,该多功能数字钟实现的时钟显示、闹钟设置和秒表功能,校准时钟时只设计了时加键和分加键以及清零键,没有设置减分减时键。

可发通过循环调节得到正确的调节数值。

另外,要求有一段乐曲来作为闹钟,可这里只是用了一个二级管的发光来实现这个功能。

若用一个扬声器和一个乐曲能够实现。

九.程序代码:#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define delay_time 3uchar k,dat[]={0,0,0,0,0,0,0,0};uint tcount,t,u;uchar dat1[]={0,0,0,0,0,0,0,0};uchar dat2[]={0,0,0,0,0,0,0,0};uchar alarms[]={0,0,0,0,0,0,0,0};uchar dis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsigned char code SEG7[11]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/0xBF,/*-*/};sbit miaobiao1=P1^0;sbit tminute=P1^1;sbit thour=P1^2;sbit miaobiao2=P1^3;sbit alarm=P1^4;sbit P0_0=P0^0;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;uchar ms=0;uchar flag=0;uchar sec=0;uchar minit=0;struct time{uchar second;uchar minute;uchar hour;}time1; uchar n,i;void delay(n){while(n--){for(i=120;i>0;i--);}}void modify(void){EA=0;if(thour==0){if(flag==0){dat1[6]++;delay(180);if(dat1[6]>9){dat1[6]=0;dat1[7]++;if(dat1[7]>2){dat1[7]=0;}}}if(flag==1){alarms[6]++;delay(200);if(alarms[6]>9){alarms[6]=0;alarms[7]++;if(alarms[7]>2){alarms[7]=0;}}dat[6]=alarms[6];dat[7]=alarms[7];}}if(tminute==0){if(flag==0){dat1[3]++;delay(180);if(dat[3]>=10){dat1[4]++;dat1[3]=0;if(dat1[4]>5){dat1[4]=0;}}}if(flag==1){alarms[3]++; delay(200);if(alarms[3]>9){alarms[4]++;alarms[3]=0;if(alarms[4]>5){alarms[4]=0;}}dat[3]=alarms[3];dat[4]=alarms[4];}}if(miaobiao1==0){TR0=0;ET0=0;TR1=1;ET1=1; }if(miaobiao2==0){TR0=1;ET0=1;TR1=0;ET1=0;dat2[0]=0;dat2[1]=0;dat2[3]=0;dat2[4]=0;dat2[6]=0;dat2[7]=0;ms=0;sec=0;minit=0;}if(P1_5==0){TR0=0;ET0=0;TR1=0;ET1=0;}if(alarm==0){TR0=0;ET0=0;TR1=0;ET1=0;flag=1;dat[0]=0;dat[1]=0;dat[2]=10;dat[3]=0;dat[4]=0;dat[5]=10;dat[6]=0;dat[7]=0;}EA=1;}void init(void){TMOD = 0x11;TH0 = 0xDB;TL0 =0xFF;TH1=0xDB;TL1=0xFF;ET0 = 1; //10msET1=1;// TR1=1;TR0=1;tcount=0;ms=0;sec=0;minit=0;EA = 1;}void test(void){for(k=0;k<8;k++){P3=dis_bit[k];P2=SEG7[dat[k]]; delay(1);P3=0X00;}}void main(){init();delay(10);while(1){modify();test();}}void diplay() interrupt 1{ET0=0;TR0=0;TH0 = 0xDB;TL0 = 0xff;TR0=1;tcount++;if(tcount==100){time1.second++;tcount=0;dat1[0]=(time1.second)%10;dat1[1]=(time1.second)/10;}if(time1.second==60){time1.second=0;time1.minute++;dat1[3]=(time1.minute)%10;dat1[4]=(time1.minute)/10;}if(time1.minute==60){time1.minute=0;time1.hour++;dat1[6]=time1.hour%10;dat1[7]=time1.hour/10;}if(time1.hour>23){time1.hour=0;}dat[5]=10;dat[2]=10;dat[0]=dat1[0];dat[1]=dat1[1];dat[3]=dat1[3];dat[4]=dat1[4];dat[6]=dat1[6];dat[7]=dat1[7];flag=0;P0=0x00;if((alarms[7]==dat1[7])&&(alarms[6]==dat1[6])&&(alarms[4]==dat1[4])&&(alarms[3]==dat1[3])) {P0=0x01;}ET0=1;}void time_2(void)interrupt 3{EA=0;TR0=0;TH1=0xDB;TL1=0xFF;TR1=1;ms++;dat2[0]=ms%10;dat2[1]=ms/10;if(ms>=100){ms=0;sec++;dat2[3]=sec%10;dat2[4]=sec/10;if(sec>=60){sec=0;minit++;dat2[6]=minit%10;dat2[7]=minit/10;}}dat[5]=10;dat[2]=10;dat[0]=dat2[0];dat[1]=dat2[1];dat[3]=dat2[3];dat[4]=dat2[4];dat[6]=dat2[6];dat[7]=dat2[7];EA=1;。

相关文档
最新文档