基于51单片机控制的语音报时万年历.docx

上传人:b****4 文档编号:5037515 上传时间:2022-12-12 格式:DOCX 页数:15 大小:17.05KB
下载 相关 举报
基于51单片机控制的语音报时万年历.docx_第1页
第1页 / 共15页
基于51单片机控制的语音报时万年历.docx_第2页
第2页 / 共15页
基于51单片机控制的语音报时万年历.docx_第3页
第3页 / 共15页
基于51单片机控制的语音报时万年历.docx_第4页
第4页 / 共15页
基于51单片机控制的语音报时万年历.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于51单片机控制的语音报时万年历.docx

《基于51单片机控制的语音报时万年历.docx》由会员分享,可在线阅读,更多相关《基于51单片机控制的语音报时万年历.docx(15页珍藏版)》请在冰豆网上搜索。

基于51单片机控制的语音报时万年历.docx

基于51单片机控制的语音报时万年历

 

鉴于51单片机控制的语音报时万年历

 

-----20/11/2013SDU(WH)

 

一.实验要求

运用单片机及有关外设实现以下功能:

1)万年历实时钟显示

2)时间日期可调

3)可对时间进行整点报时和随机报时

二.方案剖析

依据实验要求,采用STC企业的8051系列,STC12C5A16S2加强型51单片机。

此单片机功能强盛,拥有片内EEPROM、1T分频系数、片内ADC变换器等较为适用功能,应采用此款。

 

实验中,对日期和时间进行显示,显示的字符数许多,应采用12864LCD屏幕。

该屏幕

操作较为便利,外头电路相对简单,适用性较强。

为了实现要求中的时间日期可调,故按键是不行缺乏的,因此使用了许多的按键。

一方

面,单片机的I/O口较为充分;另一方面,按键许多,选择的余地较大,方便编程控制。

实验中,并未要求对时间和日期进行保留和掉电续运转,因此并未增添EEPROM和

DS12C887-RTC芯片。

实质上,对万年向来说,这是较为重要的,但为了方便实现和编程的

简单,此处并未增添,而是使用单片机的准时器控制时间,精度有差异。

且上电默认时间为

2014-01-0109:

00:

00以后需要手动调整为正确时间。

要求中的语音报时功能,这里采用ISD1760芯片的模块来帮助实现。

此模块经过软件模

拟SPI协议控制。

先将所需要的声音片段录入芯片的EEPROM地区,以后读出各段声音的地点段,而后在程序中定义出相应地点予以控制播放哪一声音片段。

三.电路硬件设计

 

实质成效图

 

四.程序代码部分

 

#ifndef_MAIN_H

#define_MAIN_H

#include""

#include""

#include""

#include""

 

#include""

 

#include""

#include""

#include""

#include""

#include""

 

externunsignedintcount;

externunsignedintkey_time[8];

externunsignedcharkey_new;

externunsignedcharkey_old;

externunsignedcharstop_flag;

externunsignedcharkey_follow[8];

externunsignedintkey_num[8];

 

sbitBEEP=P3^7;

sbitISD_SS=P0^7;

sbitISD_MISO=P0^4;

sbitISD_MOSI=P0^5;

sbitISD_SCLK=P0^6;

 

externunsignedchardate_show[];

externunsignedchartime_show[];

externunsignedcharsec;

externunsignedcharmin;

externunsignedcharhour;

externunsignedcharday;

externunsignedcharmonth;

externunsignedcharyear_f;

externunsignedcharyear_l;

externunsignedcharleap_year_flag;

externunsignedcharupdate_flag;

externunsignedcharadjust_flag;

externunsignedcharkey;

unsignedcharreport();

 

#endif

 

#include""

 

unsignedintcount=0;

unsignedintkey_num[8]=0;

unsignedcharkey_new=0;

unsignedcharkey_old=0;

unsignedcharstop_flag=0;

unsignedcharkey_follow[8]=0;

unsignedcharsec=1;

unsignedcharmin=0;

unsignedcharhour=9;

unsignedcharday=1;

unsignedcharmonth=1;

unsignedcharyear_f=20;

unsignedcharyear_l=14;

unsignedcharleap_year_flag=0;

unsignedchardate_show[]="2014-01-01";unsignedchartime_show[]="09:

00:

00";unsignedcharupdate_flag=1;unsignedcharkey=0;unsignedcharadjust_flag=0;

unsignedcharadjust_pos=0;

unsignedcharreport_flag=0;

 

voidmain()

{

 

unsignedchari;

P2=0XFF;

BEEP=0;

init();

initinal();{

buzy();

RW=0;

RS=DI;

DataPort=data1;

EN=1;

EN=0;

}

voiddelayms(unsignedintn)//

{

unsignedinti,j;

for(i=0;i<3*n;i++)

for(j=0;j<2000;j++);

 

延时10×n毫秒程序

 

}

voiddelay(unsignedintm)//延时程序,奇妙级

{

while(m--)

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

}

 

voidwrite_cmd(unsignedcharcmd)

{

RS=0;RW=0;EN=0;

P1=cmd;

delayms

(1);

EN=1;

delayms

(1);

EN=0;

}

voidwrite_dat(unsignedchardat)

{

RS=1;

RW=0;

EN=0;

P1=dat;

delayms

(1);

EN=1;

delayms

(1);

EN=0;

}

voidlcd_pos(unsignedcharx,unsignedchary)

{

unsignedcharpos;

if(x==0)

x=0x80;

elseif(x==1)

 

x=0x90;

elseif(x==2)

x=0x88;

elseif(x==3)

x=0x98;

pos=x+y;

write_cmd(pos);

}

voidclrram(void)

{

write_cmd(0x30);

write_cmd(0x01);

}

 

#ifndef_SOUND_H

#define_SOUND_H

 

#include""

//以下为语音信息对应播放开端地点定义

A为开始,B为结束

#definesound_0A

0x0012

#definesound_0B

0x0017

#definesound_1A

0x0019

#definesound_1B

0x0025

#definesound_2A

0x0027

#definesound_2B

0x002e

#definesound_3A

0x002f

#definesound_3B

0x0039

#definesound_4A

0x003b

#definesound_4B

0x0048

#definesound_5A

0x004a

#definesound_5B

0x004f

#definesound_6A

0x0052

#definesound_6B

0x0159

 

#definesound_7A0x005c

 

#definesound_7B

0x0062

#definesound_8A

0x0065

#definesound_8B

0x0131

#definesound_9A

0x006f

#definesound_9B

0x015F

#definesound_10A

0x0079

#definesound_10B

0x015E

#definesound_11A

0x0082

#definesound_11B

0x018A

#definesound_12A

0x0091

#definesound_12B

0x0100

#definesound_13A

0x009f

#definesound_13B

0x0100

#definesound_14A

0x00ac

#definesound_14B

0x0100

 

voidGetSound(unsignedcharsoundtick);

voidPlaySoundTick(unsignedcharnumber);

voiddelay_isd(unsignedinttime);

voidshort_delay();

voidlong_delay();

 

#endif

 

#include""

 

voidGetSound(unsignedcharsoundtick)

{

ISD_SS=0;

switch(soundtick)

{

case

0:

{

isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,

sound_0A,

sound_0B);}break;

case

1:

{

isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,

sound_1A,

sound_1B);}break;

case

2:

{

isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,

sound_2A,

 

sound_2B);}break;

case3:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_3A,sound_3B);}break;

case4:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_4A,sound_4B);}break;

case5:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_5A,sound_5B);}break;

case6:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_6A,sound_6B);}break;

case7:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_7A,sound_7B);}break;

case8:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_8A,sound_8B);}break;

case9:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_9A,sound_9B);}break;

case10:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_10A,sound_10B);}break;

case11:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_11A,sound_11B);}break;

case12:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_12A,sound_12B);}break;

case13:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_13A,sound_13B);}break;

case14:

{isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED,sound_14A,sound_14B);}break;

 

default:

break;

}

ISD_SS=1;

}

 

voidPlaySoundTick(unsignedcharnumber)

{

spi_stop();

delay_isd(30000);

GetSound(number);

}

voiddelay_isd(unsignedinttime)

{

while(time--!

=0);

}

voidshort_delay()

{

delay_isd(30000);

 

delay_isd(30000);

delay_isd(30000);

delay_isd(30000);

delay_isd(30000);

delay_isd(30000);

delay_isd(30000);

delay_isd(30000);

delay_isd(30000);

 

}

voidlong_delay()

{

short_delay();

short_delay();

short_delay();

short_delay();

}

 

#ifndef_KEY_H

#define_KEY_H

 

#include""

 

sbitKEY1=P2^0;

sbitKEY2=P2^1;

sbitKEY3=P2^2;

sbitKEY4=P2^3;

sbitKEY5=P2^4;

sbitKEY6=P2^5;

sbitKEY7=P2^6;

sbitKEY8=P2^7;

sbitKEY_SURE=P3^6;

 

voidkey_delay(unsignedcharz);

unsignedcharkeyscan_nor();

 

#endif

 

#include""

 

unsignedcharkeyscan_nor()

{

 

if(!

KEY1)

{

key_delay(20);

if(!

KEY1)

{

LED1=0;

return1;

}

}

if(!

KEY2)

{

key_delay(20);

if(!

KEY2)

{

LED2=0;

return2;

}

}

if(!

KEY3)

{

key_delay(20);

if(!

KEY3)

{

LED3=0;

return3;

}

}

if(!

KEY4)

{

key_delay(20);

if(!

KEY4)

{

LED4=0;

return4;

}

}

if(!

KEY5)

{

key_delay(20);

 

if(!

KEY5)

{

LED5=0;

return5;

}

}

if(!

KEY6)

{

key_delay(20);

if(!

KEY6)

{

LED6=0;

return6;

}

}

if(!

KEY7)

{

key_delay(20);

if(!

KEY7)

{

LED7=0;

return7;

}

}

if(!

KEY8)

{

key_delay(20);

if(!

KEY8)

{

LED8=0;

return8;

}

}

return0;

}

voidkey_delay(unsignedcharz)

{

unsignedcharx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

 

五.参加制作人员

 

ZYL

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1