ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:154.41KB ,
资源ID:630179      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/630179.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机控制的语音报时万年历课程设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、基于51单片机控制的语音报时万年历课程设计基于51单片机控制的语音报时万年历1实验要求运用单片机及相关外设实现以下功能:1)万年历及时钟显示2)时间日期可调3)可对时间进行整点报时和随机报时2方案分析根据实验要求,选用STC公司的8051系列,STC12C5A16S2增强型51单片机。此单片机功能强大,具有片内EEPROM、1T分频系数、片内ADC转换器等较为实用功能,故选用此款。实验中,对日期和时间进行显示,显示的字符数较多,故选用12864LCD屏幕。该屏幕操作较为便捷,外围电路相对简单,实用性较强。为了实现要求中的时间日期可调,故按键是不可缺少的,所以使用了较多的按键。一方面,单片机的I

2、/O口较为充足;另一方面,按键较多,选择的余地较大,方便编程控制。实验中,并未要求对时间和日期进行保存和掉电续运行,所以并未添加EEPROM和DS12C887-RTC芯片。实际上,对万年历来说,这是较为重要的,但为了方便实现和编程的简单,此处并未添加,而是使用单片机的定时器控制时间,精度有差别。且上电默认时间为2014-01-01 09:00:00 之后需要手动调整为正确时间。要求中的语音报时功能,这里选用ISD1760芯片的模块来帮助实现。此模块通过软件模拟SPI协议控制。先将所需要的声音片段录入芯片的EEPROM区域,之后读出各段声音的地址段,然后在程序中定义出相应地址予以控制播放哪一声音

3、片段。3电路硬件设计实际效果图4程序代码部分Main.h#ifndef _MAIN_H#define _MAIN_H#include reg52.h#include INTRINS.H#include math.h#include string.h#include key.h#include led.h#include 12864.h#include main.h#include isd1700.h#include sound.hextern unsigned int count;extern unsigned int key_time8;extern unsigned char key_ne

4、w;extern unsigned char key_old;extern unsigned char stop_flag;extern unsigned char key_follow8;extern unsigned int key_num8;sbit BEEP=P37;sbit ISD_SS=P07;sbit ISD_MISO=P04;sbit ISD_MOSI=P05;sbit ISD_SCLK=P06;extern unsigned char date_show;extern unsigned char time_show;extern unsigned char sec;exter

5、n unsigned char min;extern unsigned char hour;extern unsigned char day;extern unsigned char month;extern unsigned char year_f;extern unsigned char year_l;extern unsigned char leap_year_flag;extern unsigned char update_flag;extern unsigned char adjust_flag;extern unsigned char key;unsigned char repor

6、t();#endifMain.c#include main.hunsigned int count=0;unsigned int key_num8=0;unsigned char key_new=0;unsigned char key_old=0;unsigned char stop_flag=0;unsigned char key_follow8=0;unsigned char sec=1;unsigned char min=0;unsigned char hour=9;unsigned char day=1;unsigned char month=1;unsigned char year_

7、f=20;unsigned char year_l=14;unsigned char leap_year_flag=0;unsigned char date_show=2014-01-01;unsigned char time_show=09:00:00;unsigned char update_flag=1;unsigned char key=0;unsigned char adjust_flag=0;unsigned char adjust_pos=0;unsigned char report_flag=0;void main() unsigned char i; P2=0XFF; BEE

8、P=0; init(); initinal(); /调用LCD字库初始化程序 TMOD=0x01; /使用定时器T0 TH0=(65536-1000)/256; /定时器高八位赋初值 TL0=(65536-1000)%256; /定时器低八位赋初值 */ EA=1; /开中断总允许 ET0=1; /允许T0中断 TR0=1; /启动定时器T0 while(1) if(update_flag) lcd_pos(1,0); for(i=0;i10;i+) write_dat(date_showi); lcd_pos(2,4); for(i=0;i=80) sec=0; if(min=80) min

9、=0; if(hour=40) hour=0; if(month30) month=1; if(day50) day=0; if(year_f=120) year_f=0; if(year_l=120) year_l=0; if(key=3) report_flag=1; if(report_flag) clrram(); Dingwei(2,1); lcd_mesg(REPORTING!); report(); clrram(); void time0() interrupt 1 static unsigned char timer=0; TH0=(65536-50000)/256; /定时器高八位赋初值 TL0=(65536-50000)%256; /定时器低八位赋初值 timer+; if(timer=2

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

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