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

合集下载

实验八 简易电子时钟设计

实验八 简易电子时钟设计

实验六、简易电子时钟设计一、实验内容:(1)、任务:设计一个简易电子时钟,实现分、秒计时功能。

(2)、要求:控制实验板上液晶输出分、秒数值,在软件环境下编写源文件,用软件器件实现。

二、实验源程序顶层主程序:module lcdshizhong(clk,rstn,LCD_COM0_sig,LCD_COM1_sig,LCD_COM2_sig,LCD_COM3_sig,LCD_5_sig,LCD_6_sig,LCD_7_sig,LCD_8_sig,LCD_9_sig,LCD_10_sig,LCD_11_sig,LCD_12_sig);input clk;input rstn;output LCD_COM0_sig;output LCD_COM1_sig;output LCD_COM2_sig;output LCD_COM3_sig;output LCD_5_sig;output LCD_6_sig;output LCD_7_sig;output LCD_8_sig;output LCD_9_sig;output LCD_10_sig;output LCD_11_sig;output LCD_12_sig;wire [3:0] minute_h;wire [3:0] minute_l;wire [3:0] second_h;wire [3:0] second_l;clock clock_inst(.clkk(clk),.rstn(rstn),.minute_h(minute_h),.minute_l(minute_l),.second_h(second_h),.second_l(second_l));LCD LCD_inst(.clk(clk),.rstn(rstn),.LCDDP1(1'b0),.LCDDP2(1'b0),.LCDDP3(1'b0),.LCDCol(1'b1),.LCD1(minute_h),.LCD2(minute_l),.LCD3(second_h),.LCD4(second_l),// .LCD1(4'b0001),// .LCD2(4'b0010),// .LCD3(4'b0011),// .LCD4(4'b0100),.LCD_COM0_sig(LCD_COM0_sig),.LCD_COM1_sig(LCD_COM1_sig),.LCD_COM2_sig(LCD_COM2_sig),.LCD_COM3_sig(LCD_COM3_sig),.LCD_5_sig(LCD_5_sig),.LCD_6_sig(LCD_6_sig),.LCD_7_sig(LCD_7_sig),.LCD_8_sig(LCD_8_sig),.LCD_9_sig(LCD_9_sig),.LCD_10_sig(LCD_10_sig),.LCD_11_sig(LCD_11_sig),.LCD_12_sig(LCD_12_sig));endmoduleendmodule调用子程序:1、时钟模块module clock(clkk,rstn,minute_h,minute_l,second_h,second_l);input clkk;//input clk;input rstn;output [3:0] minute_h; //分钟的高位output [3:0] minute_l; //分钟的低位output [3:0] second_h; //秒钟的高位output [3:0] second_l; //秒钟的低位reg [3:0] minute_h;reg [3:0] minute_l;reg [3:0] second_h;reg [3:0] second_l;reg second_l_flag; //秒钟低位的进位标志reg second_h_flag; //秒钟高位的进位标志reg minute_l_flag; //分钟低位的进位标志// reg minute_h_flag; //分钟高位的进位标志reg clk1;//reg clkk;reg [22:0] count;always@(posedge clkk)beginif(count == 23'b10110111000110110000000)begincount <= 0;clk1 <= ~clk1;endelsecount <= count + 1'b1;end//end/*//实验时选为2hz的时钟频率always @(posedge clk or negedge rstn)beginif(!rstn)clk1 <= 1'b0;elseclk1 <= ~clk1;end*///秒钟的低位always @(posedge clk1 o r negedge rstn)if(!rstn)beginsecond_l <= 4'b0000;second_l_flag <= 1'b0;endelsebeginif(second_l==4'b1001)beginsecond_l <= 4'b0000; //second_l + 1'b1;second_l_flag <= 1'b1;endelsebegin//if(second_l < 4'b1000)// beginsecond_l <= second_l + 1'b1;second_l_flag <= 1'b0;// end//else// begin// second_l <= 4'b0000;// second_l_flag <= 1'b0;endend//秒钟的高位always @(posedge second_l_flag or negedge rstn)if(!rstn)beginsecond_h <= 4'b0000;second_h_flag <= 1'b0;endelsebeginif(second_h==4'b0101)beginsecond_h <= 4'b0000;//second_h + 1'b1;second_h_flag <= 1'b1;endelsebegin//if(second_h < 4'b0100)// beginsecond_h <= second_h + 1'b1;second_h_flag <= 1'b0;// end//else// begin// second_h <= 4'b0000;// second_h_flag <= 1'b0;endend//分钟的低位always @(posedge second_h_flag or negedge rstn)if(!rstn)beginminute_l <= 4'b0000;minute_l_flag <= 1'b0;endelsebeginif(minute_l==4'b1001)beginminute_l <= 4'b0000;//minute_l + 1'b1;minute_l_flag <= 1'b1;endelsebegin//if(minute_l < 4'b1000)//beginminute_l <= minute_l + 1'b1;minute_l_flag <= 1'b0;//end//else//begin// minute_l <= 4'b0000;//minute_l_flag <= 1'b0;endend//分钟的高位always @(posedge minute_l_flag or negedge rstn)if(!rstn)beginminute_h <= 4'b0000;// minute_h_flag <= 1'b0;endelsebeginif(minute_h==4'b0101)beginminute_h <= 4'b0000;//minute_h + 1'b1; // minute_h_flag <= 1'b1;endelsebegin//if(minute_h < 4'b0100)//beginminute_h <= minute_h + 1'b1;// minute_h_flag <= 1'b0;//end//else//begin// minute_h <= 4'b0000;//minute_h_flag <= 1'b0;endendendmodule2、4-7译码模块,module seg4_7(clk,rst_n,data_in,seg_out);input clk;input rst_n;input [3:0] data_in;output [7:0] seg_out;reg [7:0] seg_out;always@(posedge clk or negedge rst_n)beginif(rst_n==1'b0) beginseg_out <= 8'b11111111;endelse begincase(data_in[3:0])4'b0000: seg_out <= 8'b11000000;//04'b0001: seg_out <= 8'b11111001;//14'b0010: seg_out <= 8'b10100100;//24'b0011: seg_out <= 8'b10110000;//34'b0100: seg_out <= 8'b10011001;//44'b0101: seg_out <= 8'b10010010;//54'b0110: seg_out <= 8'b10000010;//64'b0111: seg_out <= 8'b11111000;//74'b1000: seg_out <= 8'b10000000;//84'b1001: seg_out <= 8'b10010000;//94'b1010: seg_out <= 8'b10001000;//A4'b1011: seg_out <= 8'b10000011;//b4'b1100: seg_out <= 8'b11000110;//C4'b1101: seg_out <= 8'b10100001;//d4'b1110: seg_out <= 8'b10000110;//E4'b1111: seg_out <= 8'b10001110;//Fdefault: seg_out <= 8'b11111111;//全灭endcaseendendendmodule3、 // --将内部输入的4字节数码管电平信号处理,得到4+8bit电平输出module LCD4Digit(input LCDFrameclk,input LCDPWMclk,input rstn,input LCDDP1,input LCDDP2,input LCDDP3,input LCDCol,input [7:0] LCD1,input [7:0] LCD2,input [7:0] LCD3,input [7:0] LCD4,output LCD_COM0_sig,output LCD_COM1_sig,output LCD_COM2_sig,output LCD_COM3_sig,output LCD_5_sig,output LCD_6_sig,output LCD_7_sig,output LCD_8_sig,output LCD_9_sig,output LCD_10_sig,output LCD_11_sig,output LCD_12_sig);wire [1:0] LCD_COM0enc;wire [1:0] LCD_COM1enc;wire [1:0] LCD_COM2enc;wire [1:0] LCD_COM3enc;wire [1:0] LCD_5enc;wire [1:0] LCD_6enc;wire [1:0] LCD_7enc;wire [1:0] LCD_8enc;wire [1:0] LCD_9enc;wire [1:0] LCD_10enc;wire [1:0] LCD_11enc;wire [1:0] LCD_12enc;// LCD Com signals 处理共阳极公共引脚电平LCDEncoding4to1com LCD_COM0enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDcom({1'b1, 1'b0, 1'b0,1'b0}), .LCDcomEncoded(LCD_COM0enc));PWM LCD_COM0_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_COM0enc), .PWMV oltage(LCD_ COM0_sig));LCDEncoding4to1com LCD_COM1enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDcom({1'b0, 1'b1, 1'b0,1'b0}), .LCDcomEncoded(LCD_COM1enc));PWM LCD_COM1_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_COM1enc), .PWMV oltage(LCD_ COM1_sig));LCDEncoding4to1com LCD_COM2enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDcom({1'b0, 1'b0, 1'b1,1'b0}), .LCDcomEncoded(LCD_COM2enc));PWM LCD_COM2_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_COM2enc), .PWMV oltage(LCD_ COM2_sig));LCDEncoding4to1com LCD_COM3enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDcom({1'b0, 1'b0, 1'b0,1'b1}), .LCDcomEncoded(LCD_COM3enc));PWM LCD_COM3_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_COM3enc), .PWMV oltage(LCD_ COM3_sig));// LCD Segment Signals 处理数码管电平LCDEncoding4to1 LCD_5enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({!LCD1[3], !LCD1[4], !LCD1[6 ], !LCD1[5]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_5enc));PWM LCD_5_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_5enc), .PWMV oltage(LCD_5_sig) );LCDEncoding4to1 LCD_6enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({LCDDP1, !LCD1[2], !LCD1[1 ], !LCD1[0]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_6enc));PWM LCD_6_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_6enc), .PWMV oltage(LCD_6_sig) );LCDEncoding4to1 LCD_7enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({!LCD2[3], !LCD2[4], !LCD2[6 ], !LCD2[5]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_7enc));PWM LCD_7_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_7enc), .PWMV oltage(LCD_7_sig) );LCDEncoding4to1 LCD_8enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({LCDDP2, !LCD2[2], !LCD2[1 ], !LCD2[0]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_8enc));PWM LCD_8_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_8enc), .PWMV oltage(LCD_8_sig) );LCDEncoding4to1 LCD_9enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({!LCD3[3], !LCD3[4], !LCD3[6 ], !LCD3[5]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_9enc));PWM LCD_9_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_9enc), .PWMV oltage(LCD_9_sig) );LCDEncoding4to1 LCD_10enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({LCDDP3, !LCD3[2], !LCD3[1 ], !LCD3[0]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_10enc));PWM LCD_10_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_10enc), .PWMV oltage(LCD_10_s ig));LCDEncoding4to1 LCD_11enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({!LCD4[3], !LCD4[4], !LCD4[6 ], !LCD4[5]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_11enc));PWM LCD_11_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_11enc), .PWMV oltage(LCD_11_s ig));LCDEncoding4to1 LCD_12enc_inst(.clk(LCDFrameclk), .rstn(rstn), .LCDSegments({LCDCol, !LCD4[2], !LCD4[1], !LCD4[0]}), .LCDcom(LCDcom), .LCDSegEncoded(LCD_12enc));PWM LCD_12_inst(.clk(LCDPWMclk), .rstn(rstn), .V oltage(LCD_12enc), .PWMV oltage(LCD_12_s ig));endmodule4、公共引脚电平编码模块module LCDEncoding4to1com(clk, rstn, LCDcom, LCDcomEncoded);input clk, rstn;input [3:0] LCDcom;output [1:0] LCDcomEncoded; // {Full Drive, Pull Up, Pull Down}reg [1:0] LCDcomEncoded;reg [2:0] state;parameter seg1a=0, seg1b=1, seg2a=2, seg2b=3, seg3a=4, seg3b=5, seg4a=6, seg4b=7 ;always @(state)begincase (state)seg1a:beginLCDcomEncoded = LCDcom[3] ? 2'b00 : 2'b10; // (0V or 2V) endseg1b:beginLCDcomEncoded = LCDcom[3] ? 2'b11 : 2'b01; // (3V or 1V) endseg2a:beginLCDcomEncoded = LCDcom[2] ? 2'b00 : 2'b10; // (0V or 2V) endseg2b:beginLCDcomEncoded = LCDcom[2] ? 2'b11 : 2'b01; // (3V or 1V) endseg3a:beginLCDcomEncoded = LCDcom[1] ? 2'b00 : 2'b10; // (0V or 2V) endseg3b:beginLCDcomEncoded = LCDcom[1] ? 2'b11 : 2'b01; // (3V or 1V) endseg4a:beginLCDcomEncoded = LCDcom[0] ? 2'b00 : 2'b10; // (0V or 2V) endseg4b:beginLCDcomEncoded = LCDcom[0] ? 2'b11 : 2'b01; // (3V or 1V) enddefault:beginLCDcomEncoded = 21'b00;endendcaseendalways @(posedge clk or negedge rstn)beginif (rstn == 0)beginstate = seg1a;endelsebegincase (state)seg1a:state = seg1b;seg1b:state = seg2a;seg2a:state = seg2b;seg2b:state = seg3a;seg3a:state = seg3b;seg3b:state = seg4a;seg4a:state = seg4b;seg4b:state = seg1a;endcaseendendendmodule5、脉冲电压转换模块module PWM(clk, rstn, V oltage, PWMV oltage);input clk, rstn;input [1:0] V oltage;output PWMV oltage;reg PWMV oltage;reg [2:0] state;parameter PWM0=0, PWM1=1, PWM2=2 ;always @(state)begincase (state)PWM0:beginif (V oltage == 2'b00)PWMV oltage = 1'b0;else if (V oltage == 2'b11)PWMV oltage = 1'b1;else if (V oltage == 2'b01)PWMV oltage = 1'b1;else if (V oltage == 2'b10)PWMV oltage = 1'b1;endPWM1:beginif (V oltage == 2'b00)PWMV oltage = 1'b0;else if (V oltage == 2'b11)PWMV oltage = 1'b1;else if (V oltage == 2'b01)PWMV oltage = 1'b0;else if (V oltage == 2'b10)PWMV oltage = 1'b1;endPWM2:beginif (V oltage == 2'b00)PWMV oltage = 1'b0;else if (V oltage == 2'b11)PWMV oltage = 1'b1;else if (V oltage == 2'b01)PWMV oltage = 1'b0;else if (V oltage == 2'b10)PWMV oltage = 1'b0;enddefault:beginPWMV oltage = 1'b0;endendcaseendalways @(posedge clk or negedge rstn) beginif (rstn == 0)beginstate = PWM0;endelsebegincase (state)PWM0:state = PWM1;PWM1:state = PWM2;PWM2:state = PWM0;endcaseendendendmodule6、 LCD电平编码module LCDEncoding4to1(clk, rstn, LCDSegments, LCDcom, LCDSegEncoded);input clk, rstn;input [3:0] LCDSegments;output LCDcom; // Just used for simulationoutput [1:0] LCDSegEncoded;reg LCDcom;reg [1:0] LCDSegEncoded;reg [2:0] state;parameter seg1a=0, seg1b=1, seg2a=2, seg2b=3, seg3a=4, seg3b=5, seg4a=6, seg4b=7 ;always @(state)begincase (state)seg1a:beginLCDcom = 1'b0;LCDSegEncoded = LCDSegments[3] ? 2'b11 : 2'b01; // (3V or 1V)endseg1b:beginLCDcom = 1'b1;LCDSegEncoded = LCDSegments[3] ? 2'b00 : 2'b10; // (0V or 2V)endseg2a:beginLCDcom = 1'b0;LCDSegEncoded = LCDSegments[2] ? 2'b11 : 2'b01; // (3V or 1V)endseg2b:beginLCDcom = 1'b1;LCDSegEncoded = LCDSegments[2] ? 2'b00 : 2'b10; // (0V or 2V)endseg3a:beginLCDcom = 1'b0;LCDSegEncoded = LCDSegments[1] ? 2'b11 : 2'b01; // (3V or 1V)endseg3b:beginLCDcom = 1'b1;LCDSegEncoded = LCDSegments[1] ? 2'b00 : 2'b10; // (0V or 2V)endseg4a:beginLCDcom = 1'b0;LCDSegEncoded = LCDSegments[0] ? 2'b11 : 2'b01; // (3V or 1V)endseg4b:beginLCDcom = 1'b1;LCDSegEncoded = LCDSegments[0] ? 2'b00 : 2'b10; // (0V or 2V)enddefault:beginLCDSegEncoded = 2'b00;endendcaseendalways @(posedge clk or negedge rstn)beginif (rstn == 0)beginstate = seg1a;endelsebegincase (state)seg1a:state = seg1b;seg1b:state = seg2a;seg2a:state = seg2b;seg2b:state = seg3a;seg3a:state = seg3b;seg3b:state = seg4a;seg4a:state = seg4b;seg4b:state = seg1a;endcaseendendendmodule三、程序设计思想及原理:本次实验在液晶显示的基础上增加了一个秒分模块,设计秒分模块就是用时钟驱动计数器实现,比如秒针的低位从0变到9时就会给秒针的高位进一位。

简易电子钟的设计与实现

简易电子钟的设计与实现

简易电子钟的设计与实现电子钟是一种普遍使用的计时设备,它便利性与实用性使其成为家庭、学校、办公室等各个场所的重要组成部分。

本文将介绍一种简易电子钟的设计和实现,希望读者在本文的指导下,能够自己动手制作一款属于自己的电子钟。

1. 硬件选购制作电子钟需要一些硬件设备,在硬件选购时,需要考虑以下因素:- 显示器件:显示器件如LED点阵和数码管是电子钟的重要组成部分,我们可以选择4位LED数码管或者128*64 OLED显示屏。

- 控制器:控制器有多种选择,我们可以使用Arduino单片机或者STM32单片机,这两个均为常用的开发板,容易上手,支持多种编程语言。

- 时间模块:时间模块用于获取当前时间,我们可以选择DS1302时钟模块或者DS3231高精度时钟模块。

- 其他器件:红外遥控模块,蜂鸣器等辅助器件,可以根据需要选择。

2. 硬件连接在确定所需器件后,首先需要对这些器件进行连接,连接方式如下:- 数码管:数码管有四根引脚,分别代表数码管的4位数码,分别对应数字0~9,连接数码管需要了解其引脚定义,我们可以根据不同原理图实现引脚连接。

- 控制器:控制器和显示器连接,通过控制器的输入输出端口和显示器的输入输出端口相连。

- 时间模块:时间模块通过IIC通讯协议与控制器相连。

- 其他器件:按照器件对应原理图进行连接。

3. 程序设计电子钟的最重要的部分是程序设计,通过编写程序,实现获取时间并在数码管或者显示屏上显示当前时间的功能。

电子钟的程序设计分为两个部分:硬件驱动和逻辑控制。

硬件驱动:硬件驱动是基础部分,用于控制指定端口的输入输出和基本的口蹦,例如我们需要实现时间的获取和进行控制,我们需要实现对时间模块进行操作的函数,例如读取时间,设置时间等功能。

逻辑控制:逻辑控制是电子钟的核心部分,它把硬件驱动和显示控制进行了结合,实现了时间的获取和显示。

逻辑控制程序主要包括以下几个部分:- 时间获取:获取时间模块的信息。

毕业论文简易电子钟的制作硬件设计

毕业论文简易电子钟的制作硬件设计

简易电子钟的制作硬件设计序言单片机具有体积小、可靠性高、功能强、灵活方便等许多优点,故可以广泛应用于各个领域包括家庭生活必需品,对各行各业的产品更新换代起到了重要的推动作用。

而此次设计的简易电子钟就是一个很典型的例子电子钟在生活中非常有用,尤其是多路定时功能。

市场上有许多电子钟的专用芯片如:LM8363、LM8365等,但它们功能单一,电路连接复杂。

不便于制作。

用单片机配合计时软件,可制成功能任意的电子钟,而且可以做到硬件简单、成本低廉。

在本文中主要对软件进行阐述。

首先根据硬件的设计方案确定软件方案,然后对硬件作简要介绍后设计出总的流程图,其次根据总的流程图画出各部分的子流程图然后写出程序,再次对调试中所出现的问题进行分析并解决,最后对本次的设计结果进行分析,提出优点和不足之处,然后总结。

第1章绪论1.1电子钟的概述电子钟在生活中非常有用,尤其是多路定时功能。

市场上有许多电子钟的专用芯片如:LM8363、LM8365等,但它们功能单一,电路连接复杂。

不便于制作。

用单片机配合计时软件,可制成功能任意的电子钟,而且可以做到硬件简单、成本低廉。

1.2 数字钟的系统分析单片机的使用主要表现在以下三个方面:1、数字钟的结构简单,并且具备最小单片机系统的基本构成。

2、数字钟电路中使用了单片机系统中最为常用的输入输出设备:按键开关和数码管。

3、数字钟程序可以反映单片机系统中定时器和中断的用法。

单片机系统中的定时和中断是单片机最重要的资源,也是应用最为广泛的功能。

数字钟程序主要就是利用定时器和中断实现计时和显示功能。

按要求,本次的毕业设计要求完成的内容包括:1、时钟精度:±30秒/天。

2、可进行时、分、秒的调整。

3、采用六位数字显示。

4、具有报时功能。

添加的功能:数字钟闹铃功能。

上面所提到的技术指标的意义,主要包含了:1、定时器的使用:本设计中通过实现24小时时钟和秒表,充分说明了单片机定时器使用方法。

555式简易电子钟电路的设计方案

555式简易电子钟电路的设计方案

555式简易电子钟电路的设计方案简介本文档介绍了一种基于555集成电路的简易电子钟的设计方案。

利用该电路设计,我们可以制作出一个具备小时、分钟和秒钟显示功能的电子钟。

设计要点- 使用555定时器集成电路,该集成电路具备稳定的工作特性和可靠的性能。

- 使用数码时钟显示模块,该模块可以将输入的数据转换为数字显示。

- 利用七段数码管来显示小时、分钟和秒钟。

- 引入实时时钟(RTC)模块,用于提供准确的时间信息。

硬件设计1. 使用555定时器作为主要的时钟源。

通过连接合适的电容和电阻,调整555电路的工作频率以匹配我们所需的计时精度。

2. 连接数码时钟显示模块到555电路的输出引脚,以便将计时结果转换为数字显示。

3. 连接七段数码管到数码时钟显示模块的输出引脚,以实现小时、分钟和秒钟的显示功能。

4. 添加实时时钟(RTC)模块,连接到555电路以提供准确的时间信息。

软件设计1. 确保555电路正确工作并通过合适的电容和电阻值产生所需的时钟频率。

2. 使用适当的编程语言编写软件代码,将时间信息从RTC模块传输到数码时钟显示模块。

3. 根据时钟精度要求,实时更新数码时钟显示模块的输出数据。

4. 在七段数码管上显示小时、分钟和秒钟。

调试和测试1. 确保555电路和RTC模块正常工作并提供准确的时间信息。

2. 对数码时钟显示模块进行测试,确保它能正确地将时间信息转换为数字显示。

3. 确保七段数码管能正确显示小时、分钟和秒钟。

4. 对整个电子钟进行综合测试,确保各个组件的协同工作。

结论通过本文档所提供的555式简易电子钟电路的设计方案,我们可以制作出一个具备小时、分钟和秒钟显示功能的电子钟。

该设计方案综合了硬件和软件的设计,实现了稳定的时钟工作和准确的时间信息显示。

通过适当的调试和测试,我们可以确保电子钟的可靠性和性能。

261-简易电子钟论文

261-简易电子钟论文

专业课程设计基于单片机的简易电子钟设计专业课设说明:本次专业课程设计通过对本专业知识的学习、应用,以STC89C51单片机为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,调整时间。

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

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

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

本次课设由本人(傅锦城136712117)孙龙龙(136712116)黄宗旭(136712107)为一组共同完成。

本人负责搜集简易时钟的设计和制作原理以及所用电路元件的参数资料和使用方法等相关资料。

并且负责电路的焊接工作。

孙龙龙负责单片机程序的编写。

黄宗旭负责电路原理图的绘制和模拟。

1. 系统基本设计思路此设计是在数码管上显示时、分和秒,电路包括:键盘、单片机及显示驱动电路。

各部分说明:(1)键盘用于校正、调节数码管上显示的时间。

(2)单片机通过输出各种电脉冲信号开驱动控制各部分正常工作。

(3)单片机发送的信号经过显示电路通过译码最终在数码管上显示出来。

(4)按键还可以切换12小时制和24小时制,并有指示灯。

系统工作过程:时间的主要处理过程是在CPU中完成的。

CPU会随时对时间进行读取数据的操作。

在读取了相应的寄存器的值后,CPU将读取的值进行处理,再通过I/O口把数据显示在数码管上。

2. 单元电路方案根据设计要求,本系统主要由控制器模块、显示驱动模块和输入模块构成。

2.1 控制器模块采用51系列作为系统控制器单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。

由于其功耗低、体积较小、技术成熟和成本低等优点,在各个领域应用广泛。

而且抗干扰性能好。

2.2 计时模块本方案完全用软件实现数字时钟。

设计制作电子时钟

设计制作电子时钟

设计制作简易数字钟一、设计要求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. 引言电子时钟是一种用数字形式显示时间的时钟,广泛应用于日常生活中。

本文将介绍一种简易的电子时钟设计方案,包括硬件设计和软件实现。

该电子时钟采用数字LED显示屏,并通过开发板上的微控制器控制时间的显示。

2. 硬件设计2.1 硬件组成该电子时钟的主要硬件组成包括:- 数字LED显示屏:用于显示时钟的小时和分钟数。

该显示屏采用共阳极的数码管,每个数字有7个段可以点亮。

- 微控制器:使用STM32F103C8T6微控制器,具备足够的输入输出和处理能力。

- 调节按钮:用于调节时钟的小时和分钟数。

2.2 电路设计数字LED显示屏的每个段通过一个继电器和一个可控硅管来控制。

继电器通过微控制器的输出口来控制,可控硅管则通过脉宽调制(PWM)来控制。

微控制器通过GPIO口读取调节按钮的状态,根据按钮的操作来调整时钟的小时和分钟数。

同时,微控制器通过定时器中断来实现时钟的运行和显示。

电路设计如下图所示:![电子时钟电路设计图](clock_circuit_design.png)3. 软件实现3.1 开发环境本设计使用Keil MDK开发环境进行软件的编写和调试。

Keil MDK 是一款常用的嵌入式开发工具,提供了强大的代码编辑、编译和仿真功能。

3.2 时钟控制软件中定义了一个结构体`Time`,包含了小时数和分钟数的变量。

通过定时器中断,每隔一秒钟将时钟的秒数加一,并根据秒数的变化更新时钟的小时和分钟数。

具体实现如下:cstruct Time {int hour;int minute;int second;void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); time.second++;if (time.second >= 60) {time.second = 0;time.minute++;}if (time.minute >= 60) {time.minute = 0;time.hour++;}if (time.hour >= 24) {time.hour = 0;}}3.3 数字显示根据时钟的小时和分钟数,将数字转换成BCD码,然后通过GPIO 口控制数字LED显示屏的每个段点亮或熄灭。

电子数字钟的设计与制作

电子数字钟的设计与制作

电子数字钟的设计与制作
设计和制作电子数字钟的步骤如下:
1. 确定需求:确定所要设计的电子数字钟的功能要求,如显示时间、日期、闹钟功能等。

2. 选取器件:选取合适的微控制器、显示屏、时钟芯片、按键等器件。

微控制器需要具备足够的处理能力和接口,以便于控制显示屏和处理输入信号。

3. 硬件设计:根据选取的器件,设计电路图和PCB布局。


括时钟电路、显示电路、按键电路、电源供电电路等。

4. 软件开发:编写嵌入式软件程序,实现时钟的各种功能。

包括处理时间的计算与显示、闹钟功能的设置与触发、用户界面的交互等。

5. 制作电路板:利用电子设计软件将电路图转化为PCB文件,并进行打样加工,制作出电路板。

6. 组装调试:根据设计好的布局,将所选取的器件焊接到电路板上。

完成后进行电路的检查、组装和连线等工作。

7. 软件烧录:通过编程器将软件程序烧录到微控制器中。

8. 调试测试:进行电源接入,对时钟的各个功能进行测试调试,确保其正常运行。

9. 外壳设计与制作:设计合适的外壳以保护电子数字钟,可以采用3D打印、注塑等方式制作外壳。

10. 最终装配与测试:将完整的电子数字钟进行装配,并进行
最后的测试以确保其功能正常。

简易电子钟设计范文

简易电子钟设计范文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

简易电子时钟

简易电子时钟

难度等级:A简单
题目编号:013
简易电子时钟
一、功能介绍
该作品只利用单片机的最小系统板、一块时钟芯片和一块1602的液晶实现年、月、日、时、分、秒的显示及设定,最好有闹钟的功能。

二、设计要求
1.时间显示误差小于3s
2.能够设置时间及具有闹钟报警功能。

三、参考方案设计
1.原理框图见图1。

图1 红外线检测部分电路图
2.制作思路
(1)本作品可以有两种方案,一是直接用单片机的定时器;二是用一块时钟芯片实现时钟的控制;
(2)本作品主要分为两大部分来调试,一是时钟芯片的调试,二是显示器的调试;
(3)该作品集趣味性、实用性于一体,能很好的激发同学们的兴趣;
3.设计注意的地方
图2 PCF8563时钟芯片的原理图。

毕业设计76简易数显电子钟设计

毕业设计76简易数显电子钟设计

毕业设计76简易数显电子钟设计一、引言电子钟是指使用数字显示的时钟,通过LED或LCD等显示器件显示时间。

本文将设计一款简易数显电子钟,采用数字管显示器件,实现准确显示时间的功能。

设计的电子钟具有简单、易操作、精确显示等特点,适合作为毕业设计的对象。

二、设计原理1.时钟芯片选取:选用高精度的时钟芯片,可以提供准确的时间信号。

2.数字显示器件选取:采用数字管显示时、分、秒的数据。

3.控制电路设计:根据时钟芯片提供的时间信号,通过控制电路将时、分、秒的数据传输到数字显示器件进行显示。

三、设计步骤1.选择时钟芯片:根据设计需求,选择适合的高精度时钟芯片,如DS13022.搭建电路原理图:根据选定的时钟芯片的电路原理图,搭建控制电路的原理图,包括时钟芯片、数字显示器件等。

3.PCB设计:根据电路原理图,进行PCB设计,制作电路板。

4.组件焊接:根据PCB设计制作的电路板,将所有的电子组件焊接到电路板上。

5.软件编程:根据时钟芯片的数据手册,编写软件程序,实现数据传输和显示功能。

6.系统调试:完成软硬件的搭建后,进行系统调试,检查时钟芯片和控制电路的正常工作情况。

7.最终制作:将电路板安装到外壳中,搭建简易数显电子钟的最终产品。

四、设计注意事项1.保证电路的稳定性和可靠性:在电路设计和焊接过程中,注意选择合适的电子元件,以确保电路的稳定性和可靠性。

2.时钟芯片的驱动:在软件编程过程中,需要熟悉时钟芯片的控制寄存器和通信协议,以确保准确的数据传输。

3.屏幕显示:在选择数字显示器件时,需考虑显示器件的亮度、清晰度等因素,以保证用户操作的便捷性。

五、设计成果展示通过厚一学期的努力,成功设计并制作了一款简易数显电子钟。

设计的电子钟具有准确的时间显示功能,通过数字管显示时、分、秒的数据。

用户可以方便地通过操作按钮调整时间。

电子钟外观简洁大方,适合放置在家居或办公场所使用。

六、结论本文以设计一款简易数显电子钟为目标,经过认真的设计与制作,成功实现了时、分、秒的准确显示功能。

智能电子钟的设计与制作

智能电子钟的设计与制作

智能电子钟的设计与制作
一、智能电子钟介绍
智能电子钟是一种智能时钟,它使时间管理变得更加简单。

它能够自
动调整时间,从而使您能够更准确地了解接下来要做什么事情和按时完成。

此外,您还可以利用它来设置闹钟来提醒您定期进行的事务,以及跟踪重
要节日和事件。

二、智能电子钟的设计原理
三、电子钟的设计过程
1.准备电子元器件:在制作智能电子钟的过程中,要准备一些电子元
器件,比如电阻、导线、电磁铁、晶体振荡器等;
2.绘制原理图:在绘制原理图时,需要根据设计的功能,在原理图上
指定每个模块的功能模式以及每个部件的工作方式;
3.制作电路板:通过制作电路板,可以将整个电子钟系统的小模块组
合成一个完整的系统,以实现功能的设计要求;
4.编写程序:经过前三步,需要根据实际应用的需要,编写出智能电
子钟的控制程序,以实现具体的智能功能;
5.试验与调试:在最后一步。

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

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

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

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

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

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

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

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

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

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

数字电子钟设计(原理图+pcb图+程序)--课程设计.docx

数字电子钟设计(原理图+pcb图+程序)--课程设计.docx

1设计课题任务、功能要求说明及方案介绍1.1设计课题任务与要求设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示学 生班级学号,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时 0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟 进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整 键再次进入吋钟运行状态。

1.2设计课题总体方案介绍及工作原理说明本电子钟主要由单片机、4个独立键盘、显示接口电路和复位电路构成,设 计课题的系统框图如图1. 1所示:图1.1系统框图本电子钟的所有的程序、参数均存放在AT89S52的Flash ROM 和内部RAM 中。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程 形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过 端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

晶振电路复位电路数码管驱动数码管LED2设计课题硬件系统的设计2.1设计课题硬件系统各模块功能简要介绍本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块(1 )单片机最小系统模块:AT89S52单片机芯片;复位电路;晶振电路。

本模块AT89S52系统控制核心,单片机系统复位由按键电平复位电路完成,通过按键S1来控制,单片机通过芯片引脚XTAL1、XTAL2,外并接石英晶体振荡器和两只电容。

这样就为能为单片机提供频率为12MHz的晶振。

(2)输入模块:本模块共用到了5个按键,1个电源开关,1个复位键,单片机运行期间,利用按键S1完成复位操作。

4个独立按键,S2键控制电子钟的启动/调整状态,S3键为小时调整键,S4键为分钟调整键,S5键位秒调整键,且 S2、S3、S4、S5 任一键都独自连一个I/O (Pl.O、P1. 1、P1. 2、P1. 3) 口线,说明它们可以独立实现相应的电子钟功能。

简易电子钟的设计与实现.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分别存储时、分、秒的值。

最新电子时钟的设计毕业论文[1]

最新电子时钟的设计毕业论文[1]

毕业设计题目秒表电子钟的设计院别专业班级姓名学号指导教师日期设计任务书设计题目:电子钟的设计设计要求:1.显示范围:时、分、秒正常显示,显示格式:时间按时分秒排列,例如:08点25分52秒显示为08.25.52。

2.通过4个按键进行调整,调整范围:时、分。

按键P2.1按一次表示待调整,按键P2.2每按一次按键调整值加一。

按键P2.3每按一次按键值减一。

按键P2.4按一次表示启动定时。

3.具有定时功能,定时时间到蜂鸣器报时。

设计进度要求:指导教师(签名):摘要时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。

怎样让时钟更好的为人民服务,这就要求人们不断设计出新型时钟。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。

关键词:单片机,电子钟,位码,段码,显示目录摘要 (II)1 总体方案设计 (1)1.1电路原理 (1)1.2设计的系统 (1)1.3计时控制方案 (2)1.4显示控制方案 (2)1.5键盘控制方案 (2)2 硬件设计 (3)2.1AT89C51单片机的简介 (3)2.2AT89C51单片机复位方式 (5)2.374LS244的功能 (5)2.474LS07的功能 (6)2.5键盘接口工作原理 (7)2.6显示电路的工作原理 (8)3 软件设计 (11)3.1设计思路 (11)3.2定时1秒的实现 (11)3.3主程序 (12)3.4中断服务程序 (14)3.5显示程序 (17)3.6按键程序 (18)小结 (22)致谢 (23)参考文献 (24)1 总体方案设计1.1 电路原理电路的核心是AT89C51单片机,设计中有6位LED显示和4个按键接口,采用P0接口外接8路反相三态缓冲器74LS244作LED动态扫描的段码控制驱动信号,用P1接口的P1.0-P1.3外接一片集电极开路反相门电路74LS07做为6位LED的位选信号驱动口, LED共阴极端与74LS07的输出端相连;按键接口,由P2.1,P2.2,P2.3,P2.4来完成。

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计引言:电子时钟是人们日常生活中广泛应用的一种设备,基于单片机的电子时钟可以实现精确的时间显示、闹钟设置、定时功能等。

本设计将使用单片机控制电子时钟的各种功能,通过一个LCD显示屏来显示时间和其他信息。

一、设计目标:1.实现准确显示时间功能;2.设计带有闹钟设置的功能;3.实现定时功能。

二、设计原理:该电子时钟工作原理主要是通过单片机将外部的时钟信号进行调整和处理,然后控制液晶显示屏显示时间。

电子时钟的核心是单片机,通过单片机的计时功能实现时钟的准确显示,并通过输入设备设置闹钟功能和定时功能。

三、设计流程:1.系统初始化:首先,将单片机初始化,设置时钟和计时器的相关参数,开启显示屏的显示功能。

2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。

3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。

4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。

四、硬件设计:1.单片机选择:选用一款适合的单片机,如51系列单片机。

2.时钟电路:通过外部晶振或者RTC芯片来提供准确的时钟信号。

3.输入设备:使用按键作为输入设备,用于设置闹钟和定时功能;4.显示屏:选用合适的液晶显示屏,用于显示时间。

五、软件设计:1.系统初始化:设置时钟和计时器的相关参数,开启显示屏的显示功能。

2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。

3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。

4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。

六、实验结果:本设计可以准确显示时间,并可以设置闹钟和定时功能。

当闹钟和定时时间到达时,会触发相应的动作,实现了基本要求。

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

简易电子钟的设计与仿真一、设计要求和电路原理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分别存储时、分、秒的值。

显示如下表:表2.1 电子钟的时、分、秒显示2.1.3 电子钟的时间调整电子钟设置3个按键通过程序控制来完成电子钟的时间调整。

A键复位;按下A键,时钟显示初始值12 00 00B键调整分;快速按下A键,分显示加1,当分显示为59,加1变成00 C键调整时;快速按下B键,时显示加1,当时显示为23,加1变成002.2 芯片以及元件2.2.1 AT89C52简介AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的,是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Fl ash只读程序存储器和256 bytes的随机存取数据存储器(RAM),有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。

主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。

RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。

P0~P3 为可编程通用I/O 脚,其功能用途由软件定义。

下面对相关的引脚作介绍:➢VCC:+5V电源。

➢VSS:接地。

➢P0口:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。

在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

➢P1 口:P1口是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

➢P2 口:P2口是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。

对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。

Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

➢P3 口:P3口是一组带有内部上拉电阻的8 位双向I/O 口。

P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。

对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。

此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。

P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能。

P3 口还接收一些用于Fl ash 闪速存储器编程和程序校验的控制信号。

➢RST:复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

➢XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

➢XTAL2:振荡器反相放大器的输出端。

AT89C52芯片的引脚图和芯片图如下:图2.1 AT89C52引脚图和芯片图2.2.2 八位动态显示数码管1) 数码管动态显示接口图图2.2 数码管的动态显示接口图图2.3 数码管实物图2)数码管的动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

2.3 电子钟模块化电路2.3.1电子钟的硬件设备模块电子钟的总体硬件模块电路有:晶振、手动复位、数码管显、和时间调整和单片机接口电路,如图2.4所示。

下面分别介绍个模块的设计。

图2.4 电子钟硬件模块2.3.2 时钟电路模块图2.5所示为时钟电路原理图,在AT89C52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图2.5 时钟电路2.3.3 复位电路模块单片机复位的条件是:必须使RST/VPD 或RST引(9)加上持续两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12 MHz,每机器周期为1μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机常见的复位如图所示,这是一个微分型电路。

电路为上电复位电路,它是利用电容充电来实现的。

在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。

只要保证RST为高电平的时间大于两个机器周期,便能正常复位(由电容的通电时间计算得到,复位电阻的阻值在10—30pF)。

该电路除具有上电复位功能外,若要复位,只需按图中的RST键,此时电源VCC经电阻R1、R2分压,在RST端产生一个复位高电平。

图2.6 复位电路2.3.4 数码管显示电路模块系统采用动态显示方式,单片机AT89C52的P0口控制LED数码管的段选线,P2口控制数码管的位选线。

动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任何时刻都只有一位数码管被点亮,但由于人眼存在视觉残留效应,只要每位数码管间隔时间足够短,就可以给人以同时显示的感觉。

下图为共阴极8位数码管动态显示。

图2.7 数码管显示电路2.3.5 按键电路模块下图为按键模块电路原理图,A为复位键,B为时钟调控键,C为分钟调控键。

A、B、和C三个按键一路有上拉电阻连接高电平,另一路接入单片机的控制引脚P1.0,、P1.1、P1.2。

按钮断开时,控制引脚P1.0,、P1.1、P1.2均为高电平,当按下某一个按键时,控制引脚变为低电平,由程序控制其相应的作用。

图2.8 按键电路2.3.6 电子时钟系统的设计原理图结合所有的模块设计,综合得出电子钟系统的总体设计原理图如图2.9所示。

图2.9 电子钟原理图2.3.7 相关引脚和元件a)AT89C52单片机用到的引脚:P0口:用于控制数码管的段选P2口:用于控制数码管的位选P1口:P1口的P1.0,、P1.1、P1.2脚分别控制时钟的复位、分调整、时调整。

XTAL1、XTAL2:接晶振的脉冲输入RST:复位电路b)其他的元件和相关作用电阻R1—R11:上拉电阻,保护电路,起限流的作用电阻R12:复位电路的充电电阻8个8段数码管:1、2显示时,4、5显示分,7、8显示秒,3、6不显示。

电容C1、C2:晶振的微电容,单片机的脉冲周期产生晶振:12M,与电容构成晶振电路材料清单见附录1三、电子时钟的Protues仿真3.1 Protues软件概述Protues软件是英国Labcenter electronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

Protues软件具有其它EDA工具软件(例:multisim)的功能。

这些功能是:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真(4)互动的电路仿真,用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

相关文档
最新文档