电子时钟设计(完美实现最终版)

合集下载

多功能电子时钟设计

多功能电子时钟设计

多功能电子时钟设计设计一个多功能电子时钟可以使用汇编语言来实现。

电子时钟应包括以下功能:1.显示当前时间2.显示当前日期3.显示当前星期几4.闹钟设置和提醒5.24小时制和12小时制的切换6.定时器功能整体设计思路如下:1.初始化显示屏和设置相关寄存器,包括时钟控制和中断配置寄存器。

2.设置时钟中断,以确保时钟可以按照设定的时间间隔更新时间。

3.初始化闹钟和定时器的相关变量。

4.进入主循环,在循环中读取按键输入并处理各种功能。

5.根据按键输入进行相应的处理:-如果是设置时间按键,进入时间设置模式,等待用户输入。

通过设置小时和分钟变量来修改时间,并在显示屏上更新时间。

-如果是设置日期按键,进入日期设置模式,等待用户输入。

通过设置年、月和日变量来修改日期,并在显示屏上更新日期。

-如果是设置闹钟按键,进入闹钟设置模式,等待用户输入。

通过设置闹钟小时和分钟变量来修改闹钟时间。

-如果是闹钟启动按键,开启或关闭闹钟功能。

-如果是设定定时器按键,进入定时器设置模式,等待用户输入。

通过设置定时器小时和分钟变量来修改定时器时间。

-如果是定时器启动按键,开启或关闭定时器功能。

-如果是24小时制和12小时制的切换按键,切换时钟显示模式。

6.每次闹钟中断,检查当前时间是否与设定闹钟时间相匹配,如果匹配则触发闹钟,并在显示屏上显示提醒信息。

7.每次定时器中断,检查当前时间是否与设定定时器时间相匹配,并触发定时器提醒,并在显示屏上显示提醒信息。

此外,还需要编写相应的子程序来处理时钟中断和定时器中断的逻辑。

总之,这是一个简单的多功能电子时钟的设计,可以使用汇编语言来实现。

通过以上步骤,可以实现时钟的基本功能,并且可以通过按键进行设置和切换不同的功能。

通过设置闹钟和定时器,可以实现提醒功能。

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

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

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

二、硬件设计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;//熄灭数码管```四、总结通过以上的硬件设计和软件实现,可以实现一个基于单片机的电子时钟。

设计制作电子时钟

设计制作电子时钟

设计制作简易数字钟一、设计要求1、设计一振荡源,用于产生1Hz的脉冲信号;2、能完成从00时00分00秒到23时59分59秒走时,并实时显示时、分、秒;3、具有手动校时、校分、校秒功能。

发挥部分:具有正点报时功能。

要求在59分58秒开始报时,持续5秒钟。

二、总体设计方案1、方案选择数字钟实际上是由一个对标准频率(1HZ)进行计数的计数电路为主要部分构成的。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ 时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路来构成数字钟的标准时间基准信号。

数字钟的组成框图如下图所示。

数字钟计时周期是24,因此必须设置24 计数器,秒、分、时由七段数码管显示。

为使数字钟走时与标准时间一致,校时电路是必不可少的。

设计中采用状态机控制校时,通过切换开关用秒脉冲或手动按键产生脉冲先后对“时” “分” “秒”计数器进行校时操作。

2、数字钟的构成(1)数字钟的构成:振荡器、分频器、计数器、译码器、LED数码管显示器等几部分。

附加功能的实现还需采用T’触发器及与门和或门及蜂鸣器组成报时电路。

(2)数字钟的时、分、秒实际上就是由一个24 进制计数器(00-23),两个60 进制计数器(00-59)级联构成。

设计数字钟实际上就是计数器的级联。

(3)芯片选型:由于24进制、60进制计数器均由集成计数器级联构成,且都包含有基本的十进制计数器,从设计简便考虑,芯片选择十进制计数器74LS390。

3、元器件列表:型号74LS00、74LS04、74LS08、74LS21、74LS32、74LS47、74LS74、74LS86、74LS390、CD4068、CD4060、CD4511。

晶体管8050、510欧姆电阻、LED、轻触开关、自锁开关、蜂鸣器、10p电容、晶振32768、10M电阻。

三、系统工作原理1、主计数部分原理图图1主计数部分原理图如图所示,用两个十进制计数器74LS390组成60进制计数器和24进制计数器,分别用于对分、秒和时的计数。

电子时钟设计及程序

电子时钟设计及程序

电子时钟设计及程序在现代生活中,电子时钟已经成为了我们不可或缺的一部分,无论是在家庭、办公室还是公共场所,都能看到它们的身影。

电子时钟不仅能够准确地显示时间,还具有多种功能,如闹钟、定时器等。

那么,电子时钟是如何设计和实现的呢?接下来,让我们一起深入了解一下。

一、电子时钟的硬件设计电子时钟的硬件设计主要包括以下几个部分:1、微控制器(MCU)微控制器是电子时钟的核心,负责控制整个系统的运行。

常见的微控制器有 51 单片机、STM32 等。

它们具有低功耗、高性能、易于编程等优点。

2、时钟芯片时钟芯片用于提供准确的时间基准。

常见的时钟芯片有 DS1302、DS3231 等。

这些芯片能够自动进行闰年补偿,并且在断电情况下仍然能够保持时间的准确性。

3、显示模块显示模块用于显示时间和其他信息。

常见的显示模块有液晶显示屏(LCD)和数码管。

液晶显示屏具有显示内容丰富、功耗低等优点;数码管则具有显示清晰、亮度高等优点。

4、按键模块按键模块用于设置时间、闹钟等功能。

通常使用独立按键或者矩阵按键。

5、电源模块电源模块为整个系统提供稳定的电源。

可以使用电池供电或者外部电源适配器供电。

二、电子时钟的软件设计电子时钟的软件设计主要包括以下几个方面:1、系统初始化在系统启动时,需要对微控制器、时钟芯片、显示模块、按键模块等进行初始化设置,确保系统能够正常工作。

2、读取时间通过与时钟芯片进行通信,读取当前的时间信息,并将其存储在变量中。

3、显示时间将读取到的时间信息在显示模块上进行显示。

可以采用动态扫描或者静态显示的方式。

4、按键处理当用户按下按键时,根据按键的功能进行相应的处理,如设置时间、设置闹钟等。

5、闹钟功能当到达设定的闹钟时间时,通过蜂鸣器或者其他方式进行提醒。

三、程序代码示例以下是一个使用 51 单片机和 DS1302 时钟芯片实现电子时钟的简单示例代码(C 语言):```cinclude <reg52h>include <intrinsh>// DS1302 引脚定义sbit DS1302_CLK = P1^0;sbit DS1302_IO = P1^1;sbit DS1302_RST = P1^2;//共阴极数码管段码unsigned char code SEGMENT_TABLE ={0x3F, 0x06, 0x5B, 0x4F,0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//数码管位选sbit DIGIT1 = P2^0;sbit DIGIT2 = P2^1;sbit DIGIT3 = P2^2;sbit DIGIT4 = P2^3;//全局变量unsigned char hour = 0, minute = 0, second = 0;//延时函数void Delay(unsigned int t){while(t);}//向 DS1302 写入一个字节void DS1302_WriteByte(unsigned char dat){unsigned char i;for(i = 0; i < 8; i++){DS1302_IO = dat & 0x01;DS1302_CLK = 1;DS1302_CLK = 0;dat >>= 1;}}//从 DS1302 读取一个字节unsigned char DS1302_ReadByte(){unsigned char i, dat = 0;for(i = 0; i < 8; i++){dat >>= 1;if(DS1302_IO)dat |= 0x80;DS1302_CLK = 1;DS1302_CLK = 0;}return dat;//向 DS1302 写入命令void DS1302_WriteCmd(unsigned char cmd){DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302_WriteByte(cmd);}//向 DS1302 写入数据void DS1302_WriteData(unsigned char addr, unsigned char dat){DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x00);DS1302_WriteCmd(addr);DS1302_WriteByte(dat);DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x80);//从 DS1302 读取数据unsigned char DS1302_ReadData(unsigned char addr){unsigned char dat;DS1302_WriteCmd(addr);dat = DS1302_ReadByte();return dat;}//初始化 DS1302void DS1302_Init(){DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x00);DS1302_WriteData(0x80, 0x00);DS1302_WriteData(0x82, 0x00);DS1302_WriteData(0x84, 0x00);DS1302_WriteData(0x86, 0x00);DS1302_WriteData(0x88, 0x00);DS1302_WriteData(0x8A, 0x00);DS1302_WriteData(0x8C, 0x00);DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x80);}//读取当前时间void ReadTime(){unsigned char buf7;buf0 = DS1302_ReadData(0x81);buf1 = DS1302_ReadData(0x83);buf2 = DS1302_ReadData(0x85);buf3 = DS1302_ReadData(0x87);buf4 = DS1302_ReadData(0x89);buf5 = DS1302_ReadData(0x8B);buf6 = DS1302_ReadData(0x8D);second =((buf0 & 0x70) >> 4) 10 +(buf0 & 0x0F);minute =((buf1 & 0x70) >> 4) 10 +(buf1 & 0x0F);hour =((buf2 & 0x70) >> 4) 10 +(buf2 & 0x0F);}//显示函数void Display(){unsigned char i;for(i = 0; i < 4; i++){switch(i){case 0:DIGIT1 = 0;DIGIT2 = 1;DIGIT3 = 1;DIGIT4 = 1;P0 = SEGMENT_TABLEhour / 10;break;case 1:DIGIT1 = 1;DIGIT2 = 0;DIGIT3 = 1;DIGIT4 = 1;P0 = SEGMENT_TABLEhour % 10; break;case 2:DIGIT1 = 1;DIGIT2 = 1;DIGIT3 = 0;DIGIT4 = 1;P0 = SEGMENT_TABLEminute / 10; break;case 3:DIGIT1 = 1;DIGIT2 = 1;DIGIT3 = 1;DIGIT4 = 0;P0 = SEGMENT_TABLEminute % 10; break;}Delay(500);}}void main(){DS1302_Init();while(1){ReadTime();Display();}}```上述代码只是一个简单的示例,实际的电子时钟程序可能会更加复杂,需要考虑更多的功能和异常情况。

课程设计_数字电子钟设计报告 -终

课程设计_数字电子钟设计报告 -终

数字闹钟设计报告目录1. 设计任务与要求 (2)2. 设计报告内容2.1实验名称 (2)2.2实验仪器及主要器件 (2)2.3实验基本原理 (3)2.4数字闹钟单元电路设计、参数计算和器件选择…………………………3-72.5数字闹钟电路图 (8)2.6数字闹钟的调试方法与过程 (8)2.7设计与调试过程的问题解决方案 (8)3.实验心得体会……………………………………………………………………9、101. 设计任务与要求数字闹钟的具体设计任务及要求如下:(1) 有“时”、“分”十进制显示, “秒”使用发光二极管闪烁表示。

(2) 以24小时为一个计时周期。

(3) 走时过程中能按预设的定时时间(精确到小时)启动闹钟, 以发光二极管闪烁表示, 启闹时间为3s~10s。

2. 设计报告内容2.1实验名称数字闹钟2.2实验仪器及主要器件(1)CD4511( 4片)、数码管(4片)(2)74LS00(6片)(3)74LS138(2片)(4)74LS163(6片)(5)LM555(1片)(6)电阻、电容、导线等(若干)(7)面包板(2片)、示波器等2.3数字闹钟基本原理要想构成数字闹钟, 首先应选择一个标准时间源——即秒信号发生器。

可以采用LM555构成多谐振荡器, 通过改变电阻来实现频率的变化, 使之产生1HZ的信号。

计时的规律是: 60秒=1分, 60分=1小时, 24小时=1天, 就需要对计数器分别设计为60进制和24进制的, 并发出驱动信号。

各计数器输出信号经译码器到数字显示器, 按“时”、“分”顺序将数字显示出来, 秒信号可以通过数码管边角的点来显示。

数字闹钟要求有定时响闹的功能, 故需要提供设定闹时电路和对比起闹电路。

设时电路应共享译码器到数字显示器, 以便使用者设定时间, 并可减少电路的芯片数量;而对比起闹电路提供声源, 应具有人工止闹功能, 止闹后不再重新操作, 将不再发生起闹等功能。

数字电子钟的逻辑框图如图所示。

电子时钟完整版 有实物图

电子时钟完整版 有实物图
3
3.6 校时电路……………………………………………………………….14 3.6.1 电路结构及工作原理……………………………………………14 3.6.2 电路仿真…………………………………………………………14 3.6.3 元器件的选择及参数确定………………………………………15
3.7 整点报时电路………………………………………………………….16 4 电路总体仿真………………………………………………………………16 5 电路安装、调试与测试……………………………………………………18
7
图 3.2 由仿真图可知,该电路可以得到 5V 的直流电源,因此可以做为整个系统的电源。
3.1.3 元件的选择
电网供给交流电压(220v 50HZ)经变压器降压后,得到符合电路需要的 交流电压,然后由整流桥经整流后变换成方向不变、大小随时间变化的脉动电流, 然后有滤波电容滤去其中的杂波,并且可以抵消线路的电感效应防止产生自激震 荡,但是这样的直流电压还会随电网和负载的变化而变化,因此在该电路中又使 用了稳压芯片(7805)可以得到比较理想的直流电压,输出端的滤波电容的作用 是用以滤除输出端的高频信号,改善电路的暂态效应。
这里我用 555 定时器构成一个多谐振荡器其产生的频率为 100Hz,然后 经过整形、分频获得 1Hz 的秒脉冲。电路原理图如图 3.3
8
图 3.3 3.2.2 电路仿真结果如下图 3.4
图 3.4 由仿真图可知,产生的波形符合我们的标准,周期大约为 1 秒,大致可以做为秒 脉冲信号。
3.2.3 元件的选择
电子技术综合训练
设计报告
题目:
多功能电子钟的设计
姓名: 学号: 班级: 同组成员: 指导教师: 日期:
杜鹏 10020106 控制工程基地一班 宋峰 杨新华 2012 年 12 月 31 日星期一

简易电子钟设计范文

简易电子钟设计范文

简易电子钟设计范文电子钟是一种通过电子技术实现时间显示的设备。

它通常由一个数字显示屏,一个控制电路和一个电源组成。

其主要功能是显示小时、分钟和秒钟等时间信息,可以准确地显示时间,并可以根据需要设置闹铃功能。

设计一款简易电子钟可以使用Arduino等开发板或单片机来实现。

首先,我们需要选择一块合适的数字显示屏。

常见的数字显示屏有数码管和液晶显示屏两种类型,它们的显示原理和控制方式有所不同。

如果选择数码管作为显示屏,可以考虑使用常见的7段数码管,它由八个LED灯组成,可以显示0-9的数字以及一些字母和特殊符号。

数码管的控制方式是通过控制每个LED灯的亮灭来实现显示,可以使用数字输出口来控制。

Arduino的数字输出口可以输出高电平(5V)和低电平(0V),通过控制输出口的电平,就能够控制数码管的亮灭。

如果选择液晶显示屏作为显示器,可以选择字符型液晶显示屏或者图形型液晶显示屏。

字符型液晶显示屏通常可以显示一些字符或者数字,它的控制方式是通过并行或者串行接口来控制,可以使用开发板的GPIO口来实现。

图形型液晶显示屏可以显示更多的信息,它的控制方式是通过SPI接口或者I2C接口来控制,这需要相应的驱动库或者芯片来实现。

无论选择数码管还是液晶显示屏,我们都需要编写程序来控制显示。

程序的核心是一个循环,其中使用时钟模块来获取当前的时间,并使用相应的控制方式将时间信息显示在显示屏上。

如果需要设置闹铃功能,可以在循环中判断当前时间和设置的时间是否相等,如果相等则触发闹铃。

设计一个简易电子钟的完整步骤如下:1. 选择适合的开发板或者单片机,例如Arduino。

2.选择合适的显示屏,例如7段数码管或者液晶显示屏。

3.连接显示屏到开发板,根据显示屏的类型选择合适的引脚连接方式。

4.编写代码来控制显示屏显示时间信息。

5.添加时钟模块,用来获取当前的时间信息。

6.根据需要添加闹铃功能。

7.测试电子钟的功能和性能,不断优化改进。

电工大作业-数字电子钟的设计

电工大作业-数字电子钟的设计

一、设计要求设计一个电子时钟,并使它具有自动运行的功能。

要求:1、用数码管显示:小时、分、秒。

24小时制或12小时制均可。

2、应用所学知识,产生1s的时钟信号,然后经过进位计数器,最后经过数码管示。

3、对使用何种电子元件及数量无要求。

二、设计思路电子时钟主要为秒信号发生器,计数部分和显示部分组成,用石英晶体震荡构成秒信号发生器,将信号输入计数部分,然后显示。

1、时钟信号:用555计时器和74LS161计数器实现1Hz的方波信号2、进位计数:用74LS90实现60,60,24进制,即实现时钟的计时3、显示设置:用数码管接74LS90实现时间的显示三、电子元件1、七段显示器6个2、计数器(74LS161)4个3、计数器(74LS90)6个4、与非门(74LS00)2个5、反相器(74LS04)2个5、石英晶体1个6、电阻、电容、导线等四、流程设计1、信号发生部分石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整、它是电子时钟的核心,用它产生标准频率信号,在由分频器分成秒时间脉冲。

下图为用反向器与石英晶体构成的振荡电路:(反向器与石英晶体构成的振荡电路)石英晶体振荡器选用32768Hz的石英晶体,发生的信号不符合要求,但通过分频,课产生1Hz的秒信号。

因为32768÷16÷16÷16÷8=1,所以用3个16分频和1个8分频就可以使信号达到要求。

用4个16进制计数器74LS161组成分频电路,与晶振部分共同组成信号发生部分。

如下图:(1Hz信号发生器)2、计数部分和显示部分整个计数器电路由秒计数器、分计数器、时计数器串接而成。

计数器之间采用并行接法,将进位输出信号接到置数端实现清零功能。

秒计数器和分计数器各自由一个十进制计数器和一个六进制计数器组成,形成两个六十进制计数器。

时计数器为两个十进制计数器接成的二十四计数器。

(本部分全部用74LS90计数器实现)秒计数器的设计:秒位60进制计数及显示电路四输入的数码管(显示作用)60秒后给分位的时钟信号信号发生器产生的1Hz信号分计数器的设计:分位60进制计数及显示电路四输入的数码管(显示作用)60分后给小时位的时钟信号从秒计数器来的时钟信号小时位采用24小时计时制设计过程:采用芯片为74LS90的2-10进制计数器,数量为两片。

电子时钟设计(完美实现最终版)要点

电子时钟设计(完美实现最终版)要点

电子时钟设计(完美实现最终版)要点————————————————————————————————作者:————————————————————————————————日期:电子时钟实验报告一,实验目的1. 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟二,实验要求A.基本要求:1. 在4位数码管上显示当前时间。

显示格式“时时分分”2. 由LED闪动做秒显示。

3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹铃时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。

4.实现秒表功能(百分之一秒显示)B.扩展部分:1.日历功能(能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整)2.音乐闹铃(铃音可选择,闹铃被停止后,闪烁显示当前时刻8秒后,或按键跳入正常时间显示状态)3.定时功能(设定一段时间长度,定时到后,闪烁提示)4.倒计时功能(设定一段时间长度,能实现倒计时显示,时间长减到0时,闪烁提示)5.闹铃重响功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调)三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

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

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

多功能电子时钟设计

多功能电子时钟设计

多功能电子时钟设计一、简介现代的电子时钟不仅仅具有显示时间的功能,还可以提供其他实用的功能,如闹钟、日历、温度显示等。

这种多功能电子时钟不仅在家庭中有广泛的应用,还在办公室、学校等场所发挥着重要的作用。

本文将设计一款具有多种功能的电子时钟。

二、主要功能1.时间显示:显示当前的小时、分钟和秒数。

2.闹钟功能:可以设置闹钟时间,并在设定的时间发出提示音。

3.日历功能:可以显示当前的日期和星期。

4.室内温度显示:可以测量当前的室内温度,并显示在屏幕上。

5.亮度调节:可以根据环境的光照情况调节屏幕的亮度。

6.背光功能:可以通过按钮控制屏幕的背光开关。

7.电池电量显示:可以显示当前电池的电量。

三、设计方案1.硬件设计(1)显示屏:选择一个大于7英寸的彩色液晶显示屏,用于显示时间、日期、温度等信息。

(2)CPU:选择一颗具有较快速度和较大内存的控制芯片,以确保系统的稳定运行。

(3)温度传感器:选择一个高精度的温度传感器,并将其与CPU连接,以实时获取室内温度。

(4)电池:选择一个高容量的可充电电池,以确保长时间使用时的续航能力。

(5)背光灯:选择一个高亮度且耗电量低的LED灯作为背光源。

(6)按钮:选择几个按钮用于调节时间、设置闹钟等操作。

2.软件设计(1)显示模块:设计一个显示模块,负责显示时间、日期、温度等信息。

(2)闹钟模块:设计一个闹钟模块,负责设置和触发闹钟。

(3)日历模块:设计一个日历模块,负责显示当前的日期和星期。

(4)温度模块:设计一个温度模块,负责测量并显示室内温度。

(5)亮度调节模块:设计一个亮度调节模块,负责根据环境光照情况调节屏幕的亮度。

(6)背光模块:设计一个背光模块,负责控制背光灯的开关。

(7)电池电量模块:设计一个电池电量模块,负责显示当前电池的电量。

四、功能实现1.时间的显示可以通过CPU和显示模块的协作实现,CPU读取当前的时间,并将其发送给显示模块,显示模块将时间显示在屏幕上。

电子时钟设计方案

电子时钟设计方案

毕业设计初步设计方案设计(论文)题目:电子时钟
指导教师:
学生专业:计算机控制专业
班级:
学生姓名:
教研室主任:
信息工程学院
二〇一一年十月九日
电子时钟设计方案模块组成:电子时钟主要由时钟模块、太阳能电源模块、白色小灯模块及一个矩形纸筒构成。

主要功能:具有时间、日期、星期、温度的显示,闹钟,太阳能充电,台灯照明切可自动开关等功能。

电子时钟实体图如下所示:
小台灯
电子时钟
矩形纸筒太阳能板
硬件模块分析:
1、时钟模块:液晶LCD1602显示、DS18B20温度检测,基
于AT89S51单片机控制;从而实现时间,年月日,星期,温度及闹钟定时。

2、太阳能电源模块:主要由两块6v太阳能板和四节1.2v
蓄电池组成。

3、白色小灯模块:由十多个发光二极管组成。

4、矩形纸筒:一个废旧小矩形纸筒。

5、
主要耗材:LCD1602液晶1块、DS18B20温度传感器1个、6v太阳能电池板两块、AT89S51单片机芯片1个及最小系统所需器材、10K电位器一个、万用版大小各一块、白色发光二极管十多个、红色发光二极管两个、蜂鸣器一个、NPN三极管三个。

(其他相应器材随后汇总报出)。

24时制数字电子钟设计

24时制数字电子钟设计

实验八 综合设计实验——设计24时制数字电子钟一、实验方案数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置.它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有闹钟功能和报时功能.。

因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成.干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、整点报时电路、闹钟电路组成。

秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现.将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发现胡一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲.“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”.“时计数器”采用24进制计时器,可实现对一天24小时的累计.译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过LED 七段显示器显示出来.整点报时电路及闹钟电路是根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时.(由于EWB 元件中没有扬声器,故电路中一红色小灯泡代替)。

二、系统框图三、数字时钟的原理图:1、信号源及分频器信号源及分频器是数字电子中的核心,其作用是信号源产生一个频率标准,即时间标准信号,然后再由分频器生成秒脉冲。

由于实验室的信号源可提供10Hz 的信号,故要分频成1hz。

74290的引脚图74290的功能表分频电路的仿真图为:2、振荡器(如果要做成一个独立的电子时钟,则要一个能自动产生信号的电路,即振荡电路)振荡器是数字电子中的核心,其作用是产生一个频率标准,即时间标准信号,然后再由分频器生成秒脉冲。

我们有三种选择,即石英晶体振荡器、集成逻辑门与RC组成的时钟源振荡器和由集成电路定时器555和RC组成的多谐振荡器。

(完整版)基于51单片机的电子时钟设计与实现毕业设计

(完整版)基于51单片机的电子时钟设计与实现毕业设计

摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。

电子时钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

电子时钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz 的晶振产生振荡脉冲,定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

电子时钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

关键词:单片机;AT89S51ABSTRACTSince the 1970 s chip since the advent, with its high cost performance and attention by people and attention, it is widely used and fast development. SCM small volume, light weight, strong anti-jamming capability, environmental demand is not high, low cost, high reliability, flexibility is good, development more easy. Because of the above features, in our country, the microcontroller is widely used in industrial automation control, automatic detection, intelligent instrument and apparatus, household appliances, power electronics, mechanical and electrical equipment, and other aspects, and 51 SCM is the most typical chip and most representative one. The graduation design through to its study, application to AT89S51 chips as the core, with the necessary circuit, design of a simple electronic clock, it by 4.5 V dc power supply, through the electronic tube can show time, adjust the time, thus to learning, the design, the development of software and hardware in the ability.Electronic Clock is a electronic circuit implementation of the "when", "sub", "seconds" The figures show the timing device. Electronic clock precision, stability, far more than the old mechanical clock. In this design, we use LED electronic display hours, minutes, seconds, to 24-hour time mode, according to electronic control theory to dynamic display to display, use the 12MHz crystal oscillation pulse, the timer count. In this design, the circuit has a display time of the this function, you can also realize the time adjustment. Electronic clock is its compact, low cost, travel time and high precision, easy to use, features and more, easy integration and loved by the general consumer, so widely used.Key words:Single-chip microcomputer ; AT89S51独创声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。

电子时钟设计报告模板

电子时钟设计报告模板

电子时钟设计报告模板一、设计背景电子时钟是基于数字电路和计时器实现的一种现代化计时工具,用于测量和显示时间。

相比于传统机械时钟,电子时钟具有更高的精准度、更好的稳定性和更便捷的使用方式。

因此,在日常生活中,电子时钟得到了广泛的应用。

二、设计原理电子时钟的设计主要依赖于数字电路和计时器这两种基本元件。

其原理如下:1.电源模块:电源模块主要用于对电子时钟的电力供应进行控制,确保其在正常工作状态下能够持续稳定运行。

2.振荡器模块:振荡器模块负责提供基本的时钟脉冲信号,以便进行计时和显示。

3.计数器模块:计数器模块分为秒计数器和分钟计数器两个部分,负责对时间进行计数和累加。

4.显示模块:显示模块采用数字型液晶屏幕(LCD)或数码管(LED)等方式来显示当前时间。

三、设计流程电子时钟的设计流程如下:1.定义所需要的元器件和电路板。

例如,在这种设计中,您需要选择合适的计时器、振荡器和电容等元器件,以及制作合适的电路板。

2.基于您的设计需求和所选元器件的规格,进行电路图的绘制和布线。

通过使用EDA工具等,将电路图进行绘制和布线,并建立原理图文件和PCB 文件。

3.进行元器件的采购和生产。

通过网络方式或到元器件销售商处,购买所需要的元器件,然后制作您的电路板。

4.进行电路测试和调试。

通过使用示波器等工具进行测试和调试,以保证您的电子时钟能够正常运行。

5.进行液晶屏和数码管的组装。

选择合适的显示模块,并完成电子时钟的组装工作。

6.电源接线和测试。

将电源接线连接至电源模块上,然后进行电源测试。

7.时间设置。

利用您的电子时钟的定时模块,设置当前时间。

8.完成设计验证。

通过长时间使用电子时钟,验证其在各种环境下的性能和精准度。

四、设计细节设计电子时钟时,需要注意以下细节:1.元器件的选择和布局要尽可能紧凑。

在有限的空间内,尽可能选用尺寸较小的元件,并合理布局。

2.保持设备的稳定性和精准度。

优化时钟同步和秒计数器等控制器设计,以保持设备的稳定性和精准度。

简易电子钟的设计与实现.docx

简易电子钟的设计与实现.docx

简易电子钟的设计与仿真一、设计要求和电路原理1.1 设计要求1)可以准确地显示北京时间。

2)时间显示选择24小时模式。

3)选用AT89C52单片机,将编写的程序下载到该单片机中,并能使数码管显示。

4)采用Keil C51编译,Proteus软件进行仿真。

1.2 设计原理与思路利用单片机的定时与中断系统功能实现电子钟的计数和调时。

采用AT89C52定时中断方式实现24小时制时钟精确的计时。

通过外部的12M(11.0529M)Hz 晶振产生稳定的谐振,在AT89C52的内部定时器电路实现定时,当定时器溢出时产生中断,累计定时器的定时时间达一秒时,数码管的秒显示加1,判断数码管的秒显示达60时,秒显示自动清零,分显示加1,判断分显示达60时,分显示自动清零,时显示加1,判断时显示达24时,时显示自动清零。

从而实现00:00:00—23:59:59 之间的任意时刻显示。

为了使时钟能够灵活的对时间进行调整、校对,通过增加外部的按键实现简单的复位、时调整、分调整的功能。

形成一个具有复位和校时功能的简易电子时钟。

二、电子时钟设计方案2.1电子钟设计的基本方法2.1.1电子钟实现计时的方法利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计时。

(1) 计数初值计算:把定时器T0设为工作方式2,产生0.25ms定时中断,计数溢出4000次即得时钟计时最小单位秒,而4000次计数可用软件方法实现。

假设使用T/C0,方式2,0.25ms定时,fosc=12MHz。

则初值a满足(256-a)×1/12MHz×12μs =250μsa=6 (6H)TH0=#6H; TL0=#6H(2) 采用中断方式进行溢出次数累计,计满4000次为秒计时(1秒);(3) 从秒到分和从分到时的计时是通过累加和数值比较实现。

2.1.2 电子钟的时间显示电子钟的时钟时间在8位数码管上进行显示,时、分、秒的显示值可以在单片机的内部RAM设置三个缓冲单元,30H、31H、32H分别存储时、分、秒的值。

电子数字时钟课程设计报告(完整实物图+原理图+web图)

电子数字时钟课程设计报告(完整实物图+原理图+web图)

数字电子钟的设计1. 设计目的数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计数字钟就是为了了解数字钟的原理,从而学会制作数字钟。

而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。

且由于数字钟包括组合逻辑电路和时叙电路。

通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。

1.1设计指标1. 时间以12小时为一个周期;2. 显示时、分、秒;3. 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;1.2 设计要求1、电路设计原理说明2、硬件电路设计(要求画出电路原理图及说明)3、实物制作:完成的系统能达到题目的要求。

4、完成3000字的课程设计报告2. 功能原理2.1 数字钟的基本原理数字电子钟由信号发生器、“时、分、秒”计数器、LED数码管、校时电路、整点报时电路等组成。

工作原理为时钟源用以产生稳定的脉冲信号,作为数字种的时间基准,要求震荡频率为1HZ,为标准秒脉冲。

将标准秒脉冲信号送入“秒计数器”,该计数器采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用60进制计数器,每累计60分,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计数器,可以实现24小时的累计。

LED数码管将“时、分、秒”计数器的输出状态显示。

校时电路是来对“时、分、秒”显示数字进行校对调整。

2.2 原理框图3. 功能模块3.1 振荡电路多谐振荡器也称无稳态触发器,它没有稳定状态,同时无需外加触发脉冲,就能输出一定频率的矩形波形(自激振荡)。

用555实现多谐振荡,需要R1,R2和电容,并接+5V的直流电源。

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。

扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。

二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。

4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。

电子钟的设计与实现毕业设计

电子钟的设计与实现毕业设计

题目:电子时钟的设计与实现摘要电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。

另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。

本设计主要为实现一款可正常显示时钟本设计主要为实现一款可正常显示时钟//日历、测量环境温度、带有定时闹铃的多功能电子时钟。

本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。

本设计应用AT89C51芯片作为核心,芯片作为核心,77位LED 数码管显示,使用DS1302实时时钟日历芯片完成时钟实时时钟日历芯片完成时钟//日历的基本功能,同时利用DS18B20温度传感器测量环境温度。

这种实现方法的优点是电路简单,性能可靠,实时性好,时间和温度精度高,操作简单,编程容易。

该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

关键词:电子时钟;多功能;电子时钟;多功能;AT89C51AT89C51AT89C51;时钟日历芯片;温度传感器;时钟日历芯片;温度传感器AbstractThe electronic clock mainly uses the electronic technology make the clock computerization, the digitization, with the clock precision, small size, friendly interface, scalable scalable performance performance performance and and and other other other characteristics, characteristics, characteristics, was was was widely widely widely used used used in in in life life life and and and work. work. Measuring temperature, in life, industry and agricultural production, so electronic clock need multi-function. The The design design design for for for the the the main main main implementing implementing implementing a a a clock/calendar clock/calendar clock/calendar can can can be be be displayed displayed displayed normal, normal, collecting collecting personal personal personal ambient ambient ambient temperature, temperature, temperature, with with with the the the timing timing timing alarm alarm alarm of of of the the the multi-function multi-function electronic clock. Comparing Comparing and analysising the development and analysising the development technology of the electron clock, the design design determines determines determines to to to use use use the the the MCU MCU MCU technology technology technology to to to realize realize realize the the the multi-functional multi-functional multi-functional electron electron clock. clock. This This This design design design application application application A A T89C51 as as a a a core core core chips, chips, chips, 7 7 7 LED LED LED digital digital digital displaying, displaying, using DS1302 real-time clock chip to complete the basic function of the clock/calendar. At At the the the same same same time time time the the the design design design use use use of of of DS18B20 DS18B20 DS18B20 temperature temperature temperature sensors sensors sensors to to to collect collect collect the the environmental environmental temperature. temperature. temperature. The The The method method method has has has the the the advantage advantage advantage of of of being being being simple simple simple circuit, circuit, reliable performance, good real-time, high precision of the time and temperature , simply operation, easy programming. The electronic clock can be applied to the general living and working ,can also be modified modified to to to improve improve improve performance, performance, performance, add add add new new new functions, functions, functions, and and and brings brings brings more more more convenient convenient convenient to to people people’’s life and work. Key words: Electronic clock; Multi-function; AT89C51; DS1302; Temperature pickup Electronic clock; Multi-function; AT89C51; DS1302; Temperature pickup 目 录录摘 要要................................................................... 1 Abstract (2)第一章 引 言............................................................ 5 1.1 1.1 多功能电子时钟研究的背景和意义多功能电子时钟研究的背景和意义多功能电子时钟研究的背景和意义........................................ 5 1.2 1.2 电子时钟的功能电子时钟的功能电子时钟的功能........................................................ 6 第二章 电子时钟设计方案分析 ..........................................7 2.1 FPGA 设计方案设计方案 ......................................................... .........................................................7 2.2 NE555时基电路设计方案时基电路设计方案 ................................................ ................................................7 2.3 2.3 单片机设计方案单片机设计方案单片机设计方案........................................................ 8 第三章 基于单片机的电子时钟硬件设计 ................................10 3.1 3.1 主要主要IC 芯片选择芯片选择...................................................... 10 3.1.1 3.1.1 微处理器选择微处理器选择微处理器选择....................................................... 10 3.1.2 3.1.2 环境温度传感器选择环境温度传感器选择环境温度传感器选择................................................. 11 3.2 3.2 电子时钟硬件电路设计电子时钟硬件电路设计电子时钟硬件电路设计................................................. 12 3.2.1 3.2.1 时钟电路设计时钟电路设计时钟电路设计....................................................... 13 3.2.2 3.2.2 环境温度采集电路设计环境温度采集电路设计环境温度采集电路设计............................................... 13 3.2.3 3.2.3 显示电路显示电路显示电路........................................................... 14 3.2.4 3.2.4 按键电路设计按键电路设计按键电路设计....................................................... 15 3.2.5 3.2.5 闹铃电路设计闹铃电路设计闹铃电路设计....................................................... 17 3.2.6 3.2.6 复位电路设计复位电路设计复位电路设计....................................................... 17 第四章 电子时钟软件设计 ..............................................19 4.1 4.1 主程序设计主程序设计主程序设计........................................................... 19 4.2 4.2 子程序设计子程序设计子程序设计........................................................... 19 4.2.1 4.2.1 实时时钟日历子程序设计实时时钟日历子程序设计实时时钟日历子程序设计............................................. 19 4.2.2 4.2.2 环境温度采集子程序设计环境温度采集子程序设计环境温度采集子程序设计............................................. 20 4.2.3 4.2.3 显示子程序设计显示子程序设计显示子程序设计..................................................... 23 4.2.4 4.2.4 键盘扫描子程序键盘扫描子程序键盘扫描子程序 .. (23)4.2.5 4.2.5 闹铃子程序设计闹铃子程序设计闹铃子程序设计..................................................... 23 第五章 系统调试 .......................................................27 5.1 5.1 硬件调试硬件调试硬件调试............................................................. 27 5.1.1 5.1.1 单片机基础电路调试单片机基础电路调试单片机基础电路调试................................................. 27 5.1.2 5.1.2 显示电路调试显示电路调试显示电路调试....................................................... 29 5.1.3 DS1302电路调试电路调试 .................................................... ....................................................30 5.1.4 5.1.4 按键电路调试按键电路调试按键电路调试....................................................... 39 5.2 5.2 软件调试软件调试软件调试............................................................. 39 5.2.1 5.2.1 环境温度采集子程序调试环境温度采集子程序调试环境温度采集子程序调试............................................. 39 5.2.2 5.2.2 键盘子程序调试键盘子程序调试键盘子程序调试..................................................... 32 结 论论 . (33)参考文献参考文献 ..................................................... .. (42)致 谢谢 (43)第一章 引 言时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。

毕业设计电子时钟制作---精品模板

毕业设计电子时钟制作---精品模板

目录一、设计目的方案…………………………………………………。

.3二、设计原理图框图 (4)三、时钟分频电路…………………………………………………5—8四、调时消抖电路 (9)12五、编码译码显示电路…………………………………………13—14六、整点报时电路 (15)七、DXP总电路图………………………………………………。

16八、PCB板电路图 (17)九、Multisim 10 仿真电路图 (18)十、总结..................................................................。

19 附录:元件清单 (20)一、设计目的1。

熟悉集成电路的引脚安排。

2。

掌握各芯片的逻辑功能及使用方法。

3. 了解面包板结构及其接线方法。

4. 了解数字钟的组成及工作原理。

5。

熟悉数字钟的设计与制作。

二、设计方案1.设计指标时间以24小时为一个周期;显示时、分、秒;有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时;为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。

2.设计要求画出电路原理图(或仿真电路图);元器件及参数选择;电路仿真与调试;3.编写设计报告写出设计与制作的全过程,附上有关资料和图纸,有心得体会。

三、设计原理及其框图1.数字钟的构成数字钟是一个将“时”,“分”,“秒"显示于人的视觉器官的计时装置。

它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和一些显示星期、报时、停电查看时间等附加功能.因此,一个基本的数字钟电路主要由译码显示器、“时”,“分",“秒”,“星期"计数器、校时电路、报时电路和振荡器组成。

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。

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

电子时钟实验报告一,实验目的1. 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。

2. 设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟二,实验要求A.基本要求:1. 在4位数码管上显示当前时间。

显示格式“时时分分”2. 由LED闪动做秒显示。

3. 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。

4.实现秒表功能(百分之一秒显示)B.扩展部分:1.日历功能(能对年,月,日,星期进行显示,分辨平年,闰年以及各月天数,并调整)2.音乐闹铃(铃音可选择,闹铃被停止后,闪烁显示当前时刻8秒后,或按键跳入正常时间显示状态)3.定时功能(设定一段时间长度,定时到后,闪烁提示)4.倒计时功能(设定一段时间长度,能实现倒计时显示,时间长减到0时,闪烁提示)5.闹铃重响功能(闹铃被停止后,以停止时刻开始,一段时间后闹铃重响,且重响时间的间隔可调)三,实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

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

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

四,实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

这是前期准备工作。

第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。

第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。

第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。

第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。

第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。

最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!五,实验要求实现A.电路设计1. 整体设计此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路用8个共阴数码管分别显示,星期(年份),小时、分钟(月份)和秒(日),通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/0端口,使电路更加简单。

单片机采用AT89S51系列,这种单片机应用简单,适合电子钟设计。

电路的总体设计框架如下:2. 分块设计模块电路主要分为:输入部分、输出部分、复位和晶振电路。

2.1 输入部分输入信号主要是各种模式选择和调整信号,由按键开关提供。

以下为输入部分样例:在本实验中主要用用P3口输入按键信号,还用到了特殊的P0口。

对于P0口,由于其存在高阻状态,为了实现开关功能,给其添加上拉电阻,具体如下图所示:2.2 输出部分本电路的输出信号为7段数码管的位选和段选信号,闹铃脉冲信号,提示灯信号。

本实验的数码管是共阴的,为了防止段选信号不能驱动数码管,故在P1口连接上拉电阻后,再送段选信号,以提高驱动,位选信号直接从P2口接入,如下图:闹铃由P2.6端输出,模块如下:2.3 晶振与复位电路本实验单片机时钟用内部时钟,模块如下:复位电路为手动复位构成,模块如下:各模块拼接组合,电路总体设计图如下:B.程序设计B.1 程序总体设计本实验用汇编程序完成.结合电路图,程序设计的整体思路为:接通电源,数码管显示星期数,时,分,秒。

并且走时显示LED灯每隔1秒改变一次明暗,此为正常工作模式。

以下为在该工作方式下模式选择的按键方式:1. 按1键——日期模式。

显示年月日且可调整,调整状态指示灯亮。

日期调整对应键如下:6键——年(千位,百位),按一次该位加15键——年(十位,个位),按一次该位加14键——月,按一次该位加13键——日,按一次该位加10键——调整状态指示灯灭,返回主程序,显示时间2. 按2键——调时模式。

显示时分秒且可调整,调整状态指示灯亮。

时间调整对应键如下:6键——时,按一次该位加15键——分,按一次该位加14键——秒,按一次该位清00键——调整状态指示灯灭,返回主程序,显示时间3. 按3键——闹铃调整模式。

显示闹铃时刻且可调整,调整状态指示灯亮。

闹铃调整对应键如下:5键——时,按一次该位加14键——分,按一次该位加10键——调整状态指示灯灭,返回主程序,显示时间4. 长按4键——定时调整(倒计时)模式。

显示定时长度且可调整,调整状态显示灯亮。

定时调整对应键如下:6键——分,按一次该位加15键——秒,按一次该位加14键——开启定时功能,并显示倒计时0键——调整状态指示灯灭,返回主程序,显示时间5. 按5键铃声测试,扬声器播放音乐。

6. 按下7键,进入秒表模式,显示秒表走时。

拨上7键,秒表暂停;按下7键,秒表又继续走时。

按下8键,秒表清零。

0键——调整状态指示灯灭,返回主程序,显示时间7. 按下8键,数码管熄灭,时钟仍在走时,进入节能模式。

拨上8键,数码管亮,恢复普通工作模式。

8. 9键为闹铃启动(停止)键,按下可以选择是否要闹铃,以及在闹铃响起时,按此键可以停止闹铃。

9. 10键为铃声选择开关,按下与否,可以选择两手音乐。

10. 11键为闹铃重响控制开关,重响功能开启时,从闹铃随音乐结束而结束的时刻开始,或从手动按9键停止闹铃的时刻开始定时,一段时间后闹铃重响。

11. 12键为闹铃重响间隔选择开关,可选两个定时长度,以便在闹铃重响功能开启时,闹铃初次响后,过一段时间闹铃继续响。

B.2 程序主要模块B.2.1 延时模块数码管显示动态扫描时,用到延时程序,这里使用延迟1ms的程序,此程序需要反复调用程序如下:D_1MS:MOV R7,#2D_5:MOV R2,#250DJNZ R2,$DJNZ R7,D_5RET除数码管动态扫描外,数码管的闪烁提示,以及音乐模块也用到了延时,只是延时的长短不同罢了,在此不再赘述。

B.2.2中断服务程序本实验中,计数器T0,T1中断都有运用,其中T0中断为时钟定时所用,T1中断用于音乐播放。

T0的定时长度为0.01s,工作于方式1,计数1次,时长1us,故计数器计数10000次,进入中断,计数初值为65536-10000=55536=#0D8F0,装满定时器需要0.01s的时间,从而100次中断为一秒,一秒之后,判断是否到60秒,若不到则秒加一,然后返回,若到,则秒赋值为0,分加一,依次类推。

包括日期显示的功能也是如此。

另外,由于要实现倒计时功能,因此在中断程序中还要加入减一的寄存器,需要时将其进行显示。

基于以上考虑,以R3为倒计时中的秒,R4为倒计时的分,当秒加1时R3减一,减到0之后,秒赋值为59,分减一,直到分为0。

以下为定时中断流程图:计数器T1工作于方式1,当调用响铃程序时,其计数功能开启,为音乐音调不同频率的方波的形成,提供延时。

其中断服务程序就是根据音调改变音乐方波输出口电平的高低,用语句 CPL实现。

中断服务程序中日历的实现较为复杂,要考虑平年,闰年,特殊的2月,每月的天数的不尽相同。

具体的逻辑判断方法为:首先,要考虑年份是不是闰年,闰年的判断方法是:将年份除以100,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;若不能被100整除,则判断是否能被4整除,若能,则为闰年,若不能则为平年。

只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。

其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月为每月30天。

日历进位判断流程图如下:本实验用8个数码管,刚好能显示年,月,日,扫描显示与时间的扫描显示类似。

年比较特殊,由两个寄存器存储,个位,十位为0时,表明年数能被100整除,若此时千位,百位组成两位数能被4整除,则年数被400整除,为闰年。

若十位,个位组成两位数能被4整除,则年数能被4整除,为闰年。

B.2.3主程序主程序主要对按键进行扫描,以及判断定时和闹铃时间是否已到,若到则调用相关程序,该段程序如下:MAIN:JNB P3.0,DATETZ ;按下0键,显示日期并可对日期进行调整JNB P3.1,ZSTZ1 ;按下1键,显示时间,并可调时JNB P3.2,NLTZZ ;按下2键,进行闹铃设置JNB P3.3,DSTZ ;按下3键,进行定时设置JNB P3.4,CESHI ;闹铃测试JNB P3.6,STOPWATCHTZ ;按下6键,进入秒表方式ACALL DISP ;调用时钟显示子程序JNB P0.6,RERING ;判断是否开启闹铃重响功能RE: JNB P2.7,DSPDKQ ;判断是否开启闹铃功能,没开则去判断定时FMQPD: ;判断定时值R4,R3是否到零、闹铃时刻是否已到MOV A,HOUR;SUBB A,38H;JZ FEN ;判断小时数是否到闹铃所定时间,若到,则对分进行判断;若不到,则对定时进行判断AJMP DSPDKQFEN:MOV A,MINUTE;SUBB A,37H;JZ MIAO ;判断分是否到闹铃所定时间,若到,则对秒进行判断;若不到,则对定时进行判断AJMP DSPDKQMIAO:MOV A,SECONDSUBB A,#0JZ SHENGYIN1 ;判断秒是否到闹铃所定时间,若到,则时,分,秒都到达闹铃时刻,进入响铃子程序;若不到则判断定时AJMP DSPDKQRERING: ;闹铃重响判断程序JNB F0, RE ;标志位F0为0,不进行闹铃重响设定CPL F0MOV 3CH,#1 ;定时判断标志位赋1,定时判断功能开启JNB P0.7,M1 ;闹铃重响间隔时间选取MOV R4,#0 ;闹铃重响间隔30秒MOV R3,#30AJMP MAINM1: ;闹铃重响间隔60秒MOV R4,#1MOV R3,#0AJMP MAINDSPDKQ: ;判断是否应该进行定时判断MOV A,3CH ;3CH是引入的判断因子,当其为0时,不对定时时间是否到0进行判断JNZ DSPD2 ;当3CH不是0时,跳转到定时判断程序AJMP MAINDSPD2:MOV A,R4;JZ S_PD ;R4所存定时分数为0,则转而判断R3所存定时秒数AJMP MAIN;S_PD:MOV A,R3;JNZ MAIN ;R4,R3所存参数减为0,定时长度已到JNB P0.6,SHENGYIN2 ;闹铃重响功能开启时,跳入响铃程序AJMP TISHI ;不是闹铃重响定时,则定时时间到时,跳入提示程序AJMP MAINCESHI:ACALL RINGAJMP MAINSHENGYIN1: ;调用响铃子程序LCALL RINGAJMP MAINSHENGYIN2:SETB F0 ;闹铃重响标志位设定LCALL RING ;响铃CLR F0 ;标志位复位AJMP MAINNLTZZ:AJMP NLTZ1 ;跳入闹铃调整程序DSTZ:AJMP DSTZ1 ;跳入定时调整程序DATETZ:AJMP DATETZ1 ;跳入日期调整程序STOPWATCHTZ:AJMP STOPWATCHTZ1 ;跳入秒表程序B.2.4 显示子程序8个数码管轮流进行显示,分别显示1ms,依赖人的视觉暂留效应,给人以数码管持续高亮的错觉。

相关文档
最新文档