多功能电子时钟设计.docx
- 文档编号:28285882
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:33
- 大小:1.57MB
多功能电子时钟设计.docx
《多功能电子时钟设计.docx》由会员分享,可在线阅读,更多相关《多功能电子时钟设计.docx(33页珍藏版)》请在冰豆网上搜索。
多功能电子时钟设计
2012年XX理工大学第六届电子设计竞赛
多功能电子时钟设计
—按键调整时间,自带直流稳压电源,整点语音报时
组别:
第一组
组长:
黄~~学号:
3090731219
组员:
杨~~学号:
3090718214
组员:
易~~学号:
3090748232
二○一二年四月
2012年XX理工大学电子设计竞赛
设计报告
多功能电子时钟设计报告(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端正电压稳压器,在输出电压X围1.2伏到37伏时能够提供超过1.5安的电流,此稳压器非常易于使用。
稳压电源的输出电压可用下式计算,Vo=1.25(1+R2/R1)。
仅仅从公式本身看,R1、R2的电阻值可以随意设定。
然而作为稳压电源的输出电压计算公式,R1和R2的阻值是不能随意设定的。
首先317稳压块的输出电压变化X围是Vo=1.25V—37V(高输出电压的317稳压块如LM317HVA、LM317HVK等,其输出电压变化X围是Vo=1.25V—45V),所以R2/R1的比值X围只能是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段信息
·有丰富多样的工作状态提示
·多种采样频率对应多种录放时间
·音质好,电压X围宽,应用灵活
电特性:
·工作电压:
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_1602(uchar)//****液晶写入指令函数****
{
rs=0;//数据/指令选择置为指令
rw=0;//读写选择置为写
P0=;//送入数据
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_1602(0x38);
write_1602(0x0c);
write_1602(0x06);
write_1602(0x01);
write_1602(0x80);
write_1602(yh+2);
for(a=0;a<14;a++)
{
write_1602dat(tab1[a]);
}
delay(5);
write_1602(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_1602(er+add);
write_1602dat(0x30+sw);
write_1602dat(0x30+gw);
}
voidwrite_nyr(ucharadd,uchardat)
{
uchargw,sw;
gw=dat%10;
sw=dat/10;
write_1602(yh+add);
write_1602dat(0x30+sw);
write_1602dat(0x30+gw);
}
//-------------------------------------------
voidwrite_week(ucharweek)//写星期函数
{
write_1602(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_1602(0x0f);
flag=1;
while(key1==0);
key1n++;
if(key1n==8)
key1n=1;
switch(key1n)
{
case1:
write_1602(er+9);
break;
case2:
write_1602(er+6);
break;
case3:
write_1602(er+3);
break;
case4:
write_1602(yh+0x0e);
break;
case5:
write_1602(yh+0x0a);
break;
case6:
write_1602(yh+0x07);
break;
case7:
write_1602(yh+0x04);
break;
}
}
}
if(key4==0)
{
delay(10);
if(key4==0)
{flag=0;
key1n=0;
write_1602(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_1602(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);
write_1302(0x8e,0x80);
write_1602(er+6);
break;
case3:
shi++;
if(shi==24)
shi=0;
write_sfm(2,shi);
temp=(shi)/10*16+(shi)%10;
write_1302(0x8e,0x00);
write_1302(0x84,temp);
write_1302(0x8e,0x80);
write_1602(er+3);
break;
case4:
week++;
if(week==8)
week=1;
write_1602(yh+0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 电子 时钟 设计