多功能电子时钟设计.docx

上传人:b****0 文档编号:9133677 上传时间:2023-05-17 格式:DOCX 页数:34 大小:1.55MB
下载 相关 举报
多功能电子时钟设计.docx_第1页
第1页 / 共34页
多功能电子时钟设计.docx_第2页
第2页 / 共34页
多功能电子时钟设计.docx_第3页
第3页 / 共34页
多功能电子时钟设计.docx_第4页
第4页 / 共34页
多功能电子时钟设计.docx_第5页
第5页 / 共34页
多功能电子时钟设计.docx_第6页
第6页 / 共34页
多功能电子时钟设计.docx_第7页
第7页 / 共34页
多功能电子时钟设计.docx_第8页
第8页 / 共34页
多功能电子时钟设计.docx_第9页
第9页 / 共34页
多功能电子时钟设计.docx_第10页
第10页 / 共34页
多功能电子时钟设计.docx_第11页
第11页 / 共34页
多功能电子时钟设计.docx_第12页
第12页 / 共34页
多功能电子时钟设计.docx_第13页
第13页 / 共34页
多功能电子时钟设计.docx_第14页
第14页 / 共34页
多功能电子时钟设计.docx_第15页
第15页 / 共34页
多功能电子时钟设计.docx_第16页
第16页 / 共34页
多功能电子时钟设计.docx_第17页
第17页 / 共34页
多功能电子时钟设计.docx_第18页
第18页 / 共34页
多功能电子时钟设计.docx_第19页
第19页 / 共34页
多功能电子时钟设计.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

多功能电子时钟设计.docx

《多功能电子时钟设计.docx》由会员分享,可在线阅读,更多相关《多功能电子时钟设计.docx(34页珍藏版)》请在冰点文库上搜索。

多功能电子时钟设计.docx

多功能电子时钟设计

多功能电子时钟设计

多功能电子时钟设计

—按键调整时刻,自带直流稳压电源,整点语音报时

 

组别:

第一组

组长:

黄~~学号:

**********

组员:

杨~~学号:

**********

组员:

易~~学号:

**********

 

二○一二年四月

2021年桂林理工大学电子设计竞赛

设计报告

多功能电子时钟设计报告〔B题〕

摘要:

本次设计以STC90C51单片机为差不多数据处理平台和操纵核心,综合利用DS1302、LCD1602及ISD1730语音芯片,实现了利用按键调整时刻,自带直流稳压电源,同时具有语音整点报时的多功能电子时钟的设计。

其中:

DS1302包括时钟/日历寄存器31字节〔8位〕的数字暂存寄存器,数据通信仅通过一条串行输入输出接口,实时时钟/日历提供包括秒,分,时,日期,月份和年份信息,另外,其内部有充放电电容,电容充满电后即使掉电还能够保证时钟连续,假如使用外部电池,时钟在掉电的情形下能走的时刻会更久;ISD1730语音芯片能够实现录音和放音,内部包括11位语音储备地址,使用SPI操纵模式能够随意地进行划分录音和放音地址,实现准确地调用;使用STC90C51单片机对进行扫描,从DS1302读出时刻信息,然后送到LCD1602进行显示。

同时使用STC90C51单片机对ISD1730进行操纵,当时钟芯片刚好走到整点时,准确的调用差不多录好的报时语音地址进行放音,实现整点报时。

关键字:

多功能,电子时钟,整点报时

 

一、设计题目:

1、以单片机为核心设计一个多功能电子钟设计

2、差不多要求:

1、可实现时、分、秒的显示。

2、自带直流稳压电源

3、发挥部分:

1、整点语音报时功能;

2、可进行时、分、秒的手动设置。

二、方案论证及比较

方案一:

分析题目要求,可知要实现电子时钟的时、分、秒的显示并不困难,然而要在显示的同时方便的进行手动操纵就不是件容易的情况。

第一种方案我们考虑用6个数码管组合显示时、分、秒。

方案二:

第二种方案我们考虑用液晶显示时、分、秒。

利用语音芯片实现整点报时。

数码管和液晶显示模块存在的要紧区别有:

数码管显示内容单一,液晶那么比较丰富;

数码管一样确实是一个7段的8字,因此多的有16段的中间米字型的,液晶能够显示各种内容;(最差不多的)

数码管是自发光的,液晶是靠背光(环境)的;

数码管是LED发光的成效,液晶是分子偏转引起的暗影成效;

数码管比液晶耗电;

给数码管的信号是电平信号,确实是说其显示时期的信号是固定不变的电平;

给lcd的信号是具有一定频率的交流信号,不用电平信号是用来延长lcd显示寿命。

 

三、理论分析及运算

1、电源的设计

设计方案:

利用LM7805、LM317将220V的交流电转换为适合单片机工作的直流稳压电流。

运算过程:

〔1〕用lm78/lm79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的爱护电路,使用起来可靠、方便,而且价格廉价。

该系列集成稳压IC型号中的lm78或lm79后面的数字代表该三端集成稳压电路的输出电压,如lm7806表示输出电压为正6V,lm7909表示输出电压为负9V。

因为三端固定集成稳压电路的使用方便,电子制作中经常采纳。

在实际应用中,应在三端集成稳压电路上安装足够大的散热器〔小功率可不用〕。

当稳压管温度过高时,稳压性能将变差,甚至损坏。

当制作中需要一个能输出1.5A以上电流的稳压电源,通常采纳几块三端稳压电路并联起来,使其最大输出电流为N个1.5A,但应用时需注意:

并联使用的集成稳压电路应采纳同一厂家、同一批号的产品,以保证参数的一致。

另外在输出电流上留有一定的余量,以幸免个别集成稳压电路失效时导致其他电路的连锁烧毁。

LM7805引脚如图1所示:

1脚接输入,2脚接地,3脚接输出。

图1LM7805引脚图

图2LM7805各项参数表

〔2〕LM317是可调剂3端正电压稳压器,在输出电压范畴1.2伏到37伏时能够提供超过1.5安的电流,此稳压器专门易于使用。

稳压电源的输出电压可用下式运算,Vo=1.25〔1+R2/R1〕。

仅仅从公式本身看,R1、R2的电阻值能够随意设定。

然而作为稳压电源的输出电压运算公式,R1和R2的阻值是不能随意设定的。

  第一317稳压块的输出电压变化范畴是Vo=1.25V—37V〔高输出电压的317稳压块如LM317HVA、LM317HVK等,其输出电压变化范畴是Vo=1.25V—45V〕,因此R2/R1的比值范畴只能是0—28.6。

其次是317稳压块都有一个最小稳固工作电流,值一样为1.5mA。

在应用中,为了电路的稳固工作,在一样情形下,还需要接二极管作为爱护电路,防止电路中的电容放电时的高压把317烧坏。

能够通过设定R1和R2阻值的大小,解决317稳压块最小稳固工作电流的问题。

经运算可知R1的最大取值为R1≈0.83KΩ。

又因为R2/R1的最大值为28.6。

因此R2的最大取值为R2≈23.74KΩ。

在使用317稳压块的输出电压运算公式运算其输出电压时,必须保证R1≤0.83KΩ,R2≤23.74KΩ两个不等式同时成立,才能保证317稳压

块在空载时能够稳固地工作。

 

图3LM317引脚图图4LM317绝对最大额定值

〔3〕利用桥式整流电路。

桥式整流器是利用二极管的单向导通性进行整流的最常用的电路,常用来将交流电转变为直流电。

桥式整流器品种多,性能优良,整流效率高,稳固性好,最大整流电流从0.5A到50A,最高反向峰值电压从50V到1000V。

差不多电路如图5所示。

桥式整流电路的工作原理如下:

e2为正半周时,对D1、D3加正向电压,Dl、D3导通;对D2、D4加反向电压,D2、D4截止。

电路中构成e2、D1、Rfz、D3通电回路,在Rfz上形成上正下负的半波整流电压,e2为负半周时,对图5桥式整流电路

D2、D4加正向电压,D2、D4导通;对D1、D3加反向电压,D1、D3截止。

电路中构成e2、D2Rfz、D4通电回路,同样在Rfz上形成上正下负的另外半波的整流电压。

如此重复下去,结果在Rfz上便得到全波整流电压。

其波形图和全波整流波形图是一样的。

从图中不难看出,桥式电路中每只二极管承担的反向电压等于变压器次级电压的最大值,比全波整流电路小一半。

二极管作为整流元件,要依照不同的整流方式和负载大小加以选择。

如选择不当,那么或者不能安全工作,甚至烧了管子;或者大材小用,造成白费。

2、语音模块的设计

设计方案:

利用图6所示芯片,采样频率为4KHZ,录音时长60秒。

要对不同长度的语音信号进行不同的地址长度设置。

特点:

·可录、放音十万次,储备内容能够断电保留一百年

·两种操纵方式

·两种录音输入方式

·两种放音输出方式

·可处理多达255段信息

·有丰富多样的工作状态提示

·多种采样频率对应多种录放时刻

·音质好,电压范畴宽,应用灵活

电特性:

·工作电压:

2.4V-5.5V

·静态电流:

0.5-1μA

·工作电流:

20mA图6ISD1730芯片

用户可利用震荡电阻来自定芯片的采样频率,从而决定芯片的录放时刻和录放音质。

下表为ISD1730的参数表:

时刻〔秒〕2030374560

采样频率〔KHZ〕1286.45.34

ROSC阻值〔KΩ〕6080100120160

独立按键工作模式:

ISD1730的独立按键工作模式录放电路专门简单〔后附图〕,而且功能强大。

不仅有录、放功能,还有快进、擦除、音量操纵、直通放音和复位等功能。

这些功能仅仅通过按键就可完成。

在按键模式工作时,芯片能够通过LED管脚给出信号来提示芯片的工作状态,同时相伴有提示音,用户也可自定4种提示音效。

录音操作:

按下REC键,REC管脚电平变低后开始录音,直到松开按键使电平拉高或者芯片录满时终止。

录音终止后,录音指针自动移向下一个有效地址。

而放音指针那么指向刚刚录完的那段语音地址。

放音操作:

包括边沿触发模式,电平音模式,快进操作,擦除工作,复位工作,音量操、G、FT直通操作。

3、显示模块的设计

设计方案:

利用LCD1602进行时分秒的显示。

1602LCD分为带背光和不带背光两种,基操纵器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如以下图所示:

图7LCD1602尺寸图

1602LCD要紧技术参数:

显示容量:

16×2个字符芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)模块最正确工作电压:

5.0V

字符尺寸:

2.95×4.35(W×H)mm

引脚功能说明:

1602LCD采纳标准的14脚〔无背光〕或16脚〔带背光〕接口,各引脚接口说明如图8所示:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

图81602LCD引脚功能

4.时钟产生模块的设计

设计方案:

利用DS1302产生时钟

DS1302包括时钟/日历寄存器31字节〔8位〕的数字暂存寄存器,数据通信仅通过一条串行输入输出接口,实时时钟/日历提供包括秒,分,时,日期,月份和年份信息,闰年可自动调整,能够设置AM、PM。

其引脚如图9所示:

图9DS1302引脚分布

功能特点:

1、能够对秒、分钟、小时、月、星期、年的计数。

年计数可达到2100年。

2、有31*8位的额外数据暂存寄存器

3、最少I/O引脚传输,通过三引脚操纵

4、工作电压:

2.0-5.5V

5、工作电流小于320纳安〔2.0V〕

6、读写时钟寄存器或内部RAM〔31*8位的额外数据暂存寄存〕能够采纳单字节模式和突发模式

7、8-pinDIP封装或8-pinSOICs

8、兼容TTL〔5.0V〕

9、兼容DS1202较DS1202增加的功能:

1.可通过Vcc1进行涓流充电2.双重电源补给

3.备用电源可采纳电池或者超级电容(0.1F以上),能够用老式电脑主板上的3.6V充电电池。

其工作原理为:

在进行任何数据传输时,必须被制高电平〔注意尽管将它置为高电平,内部时钟依旧在晶振作用下走时的,现在,承诺外部读写数据〕,在每个SCLK上升沿时数据被输入,下降沿时数据被输出,一次只能读写一位,适度依旧写需要通过串行输入操纵指令来实现〔也是一个字节〕,通过8个脉冲便可读取一个字节从而实现串行输入与输出。

图10DS1302工作原理图

假如操纵指令选择的是单字节模式,连续的8个时钟脉冲能够进行8位数据的写和8位数据的读操作,SCLK时钟的上升沿时,数据被写入DS1302,SCLK脉冲的下降沿读出DS1302的数据。

8个脉冲便可读写一个字节。

在突发模式,通过连续的脉冲一次性读写完7个字节的时钟/日历寄存器〔注意时钟/日历寄存器要读写完〕,其原理图如上所示。

操纵指令:

每个字节的传输是有操纵字节指定的,操纵字节的最高位Bit7

图11DS1302操纵指令

必须是‘1’,假如是‘0’,写入将被禁止,因此我们假如将这位置一,能够禁止写入。

bit6为‘0’那么指定对时钟/日历寄存器操纵读写操作,为‘1’那么为RAM区数据的操纵读写操作,bir1~bit5指定相关寄存器待进行输入输出操作,最低位bit0指定是输入依旧输出,为‘0’那么为输入,相反那么输入有效,输入输出依照脉冲的上升沿和下降沿串行进行。

四、电路设计及程序设计

1、系统组成原理框图

图12系统组成原理框图

2、各部分电路图

图13操纵电路模块原理图

图14接口电路图图155V直流转换为3.3V直流电路图

图1612V交流转换为5V直流的原理图

 

图17录音放音原理图

3、各部分PCB图:

图18操纵电路模块PCB图

图19电源模块PCB图

图20语音模块PCB图

 

4、软件设计与流程图

 

 

 

部分程序:

#include

#include"ISD1730.h"

uchara=0,miao=0,shi=0,fen=0,ri=0,yue=0,nian=0,week=0,key1n=0,temp=0;

ucharflag=0;

#defineyh0x80//LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1〔100000000=80〕

#defineer0x80+0x40//LCD第二行初始位置〔因为第二行第一个字符位置地址是0x40〕

//液晶屏的与C51之间的引脚连接定义〔显示数据线接C51的P0口〕

sbitrs=P2^5;

sbitrw=P2^6;//假如硬件上rw接地,就不用写这句和后面的rw=0了

sbiten=P2^7;

sbitSCLK=P1^6;/*实时时钟时钟线引脚*/

sbitIO=P3^5;/*实时时钟数据线引脚*/

sbitRST=P1^7;/*实时时钟复位线引脚*/

sbitACC0=ACC^0;

sbitACC7=ACC^7;

//校时按键与C51的引脚连接定义

sbitkey1=P3^0;//设置键

sbitkey2=P3^1;//加键

sbitkey3=P3^2;//减键

sbitkey4=P3^3;

/**************************************************************/

ucharcodetab1[]={"20--"};//年显示的固定字符

ucharcodetab2[]={":

:

"};//时刻显示的固定字符

voidwrite_1602com(ucharcom)//****液晶写入指令函数****

{

rs=0;//数据/指令选择置为指令

rw=0;//读写选择置为写

P0=com;//送入数据

delay

(1);

en=1;//拉高使能端,为制造有效的下降沿做预备

delay

(1);

en=0;//en由高变低,产生下降沿,液晶执行命令

}

voidwrite_1602dat(uchardat)//***液晶写入数据函数****

{

rs=1;//数据/指令选择置为数据

rw=0;//读写选择置为写

P0=dat;//送入数据

delay

(1);

en=1;//en置高电平,为制造下降沿做预备

delay

(1);

en=0;//en由高变低,产生下降沿,液晶执行命令

}

voidlcd_init()//***液晶初始化函数****

{

write_1602com(0x38);

write_1602com(0x0c);

write_1602com(0x06);

write_1602com(0x01);

write_1602com(0x80);

write_1602com(yh+2);

for(a=0;a<14;a++)

{

write_1602dat(tab1[a]);

}

delay(5);

write_1602com(er+2);

for(a=0;a<8;a++)

{

write_1602dat(tab2[a]);

}

}

voidwrite_byte(uchardat)

{

ACC=dat;

RST=1;

for(a=8;a>0;a--)

{

IO=ACC0;

SCLK=0;

SCLK=1;

ACC=ACC>>1;

}

}

ucharread_byte()

{

RST=1;

for(a=8;a>0;a--)

{

ACC7=IO;

SCLK=1;

SCLK=0;

ACC=ACC>>1;

}

return(ACC);

}

voidwrite_1302(ucharadd,uchardat)

{

RST=0;

SCLK=0;

RST=1;

write_byte(add);

write_byte(dat);

SCLK=1;

RST=0;

}

ucharread_1302(ucharadd)

{

uchartemp;

RST=0;

SCLK=0;

RST=1;

write_byte(add);

temp=read_byte();

SCLK=1;

RST=0;

return(temp);

}

ucharBCD_Decimal(ucharbcd)

{

ucharDecimal;

Decimal=bcd>>4;

return(Decimal=Decimal*10+(bcd&=0x0F));

}

voidds1302_init()

{

RST=0;

SCLK=0;

write_1302(0x8e,0x00);

write_1302(0x8e,0x80);

}

voidwrite_sfm(ucharadd,uchardat)

{

uchargw,sw;

gw=dat%10;

sw=dat/10;

write_1602com(er+add);

write_1602dat(0x30+sw);

write_1602dat(0x30+gw);

}

voidwrite_nyr(ucharadd,uchardat)

{

uchargw,sw;

gw=dat%10;

sw=dat/10;

write_1602com(yh+add);

write_1602dat(0x30+sw);

write_1602dat(0x30+gw);

}

//-------------------------------------------

voidwrite_week(ucharweek)//写星期函数

{

write_1602com(yh+0x0c);//星期字符的显示位置

switch(week)

{

case1:

write_1602dat('M');//星期数为1时,显示

write_1602dat('O');

write_1602dat('N');

break;

case2:

write_1602dat('T');//星期数据为2时显示

write_1602dat('U');

write_1602dat('E');

break;

case3:

write_1602dat('W');//星期数据为3时显示

write_1602dat('E');

write_1602dat('D');

break;

case4:

write_1602dat('T');//星期数据为4是显示

write_1602dat('H');

write_1602dat('U');

break;

case5:

write_1602dat('F');//星期数据为5时显示

write_1602dat('R');

write_1602dat('I');

break;

case6:

write_1602dat('S');//星期数据为6时显示

write_1602dat('T');

write_1602dat('A');

break;

case7:

write_1602dat('S');//星期数据为7时显示

write_1602dat('U');

write_1602dat('N');

break;

}

}

voidkeyscan()

{

if(key1==0)

{

delay(10);

if(key1==0)

{

write_1302(0x80,0x80);

delay(5);

write_1602com(0x0f);

flag=1;

while(key1==0);

key1n++;

if(key1n==8)

key1n=1;

switch(key1n)

{

case1:

write_1602com(er+9);

break;

case2:

write_1602com(er+6);

break;

case3:

write_1602com(er+3);

break;

case4:

write_1602com(yh+0x0e);

break;

case5:

write_1602com(yh+0x0a);

break;

case6:

write_1602com(yh+0x07);

break;

case7:

write_1602com(yh+0x04);

break;

}

}

}

if(key4==0)

{

delay(10);

if(key4==0)

{flag=0;

key1n=0;

write_1602com(0x0c);

temp=(miao)/10*16+(miao)%10;

write_1302(0x8e,0x00);

write_1302(0x80,0x00|temp);

write_1302(0x8e,0x80);

}

while(key4==0);

}

if(key1n!

=0)

{

if(key2==0)

{

delay(10);

if(key2==0)

{

while(key2==0);

switch(key1n)

{

case1:

miao++;

if(miao==60)

miao=0;

write_sfm(0x08,miao);

temp=(miao)/10*16+(miao)%10;

write_1302(0x8e,0x00);

write_1302(0x80,temp);

write_1302(0x8e,0x80);

write_1602com(er+0x09);

break;

case2:

fen++;

if(fen==60)

fen=0;

write_sfm(0x05,fen);

temp=(fen)/10*16+(fen)%10;

write_1302(0x8e,0x00);

write_1302(0x82,temp);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2