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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

电子系统设计.docx

1、电子系统设计电子系统设计:具有报时报温功能的电子钟一、目的及任务 1.通过查阅相关资料,深入了解温度测量相关知识;2.学习动态显示方式的实现方法及原理;3.复习“MCS-51单片机原理及C语言程序设计”,掌握其借口扩展,如:显示、键盘等;4.确定具有报时报温功能的电子钟原理图,构建硬件平台;5.采用C语言编写应用程序并调试通过;6.制作出样机并测试达到功能和技术指标要求;7.写出设计报告和答辩PPT。二、功能说明1.具有显示年、月、日、星期、时、分、秒的基本时钟功能;2.具有显示实时温度的功能;3.具有设定闹钟的功能;4.具有设定日期、时间的功能;5.具有整点语音播报时间和温度的功能。三、设计

2、思路以51单片机为核心,运行程序。由DS1302提供时钟日历,DS18B20实现温度测量,ISD1760实现语音播报功能。四、使用说明录入程序后,数码管默认显示当前时间(初始值由程序提前录入),依此按下K4分别显示当前日期(初始值也为程序提前录入),当前星期(初始值依旧为程序初始化),当前温度和当前闹钟设定值,再次按下重新显示当前时间。在任何一个上述显示状态下按下K5进入设定时间的中断程序,默认进入时间设定界面,K1,K2,K3分别使时、分、秒依此加一,连按可连续加;再次按K5进入日期设定界面,K1,K2,K3分别对应年、月、日依此加一,同样连按可连续加;再次按K5进入星期设定界面,按下K1可

3、使星期依此加一;再按K5进入闹钟设定界面,可以设定要定闹钟的小时和分钟,K1,K2分别使小时、分钟依此加一,再按K5回到时间设定界面。在任何一个设定界面按下K4即可跳出中断,默认回到时间显示界面。在显示(K4)状态下,如果时间与闹钟所定的时间相同,则led1和数码管开始闪烁,默认闪烁一分钟(具体值可在程序中修改),此时按下K4表示已收到闹钟提示,可跳出闹钟闪烁状态。如果时间进入到整点,则语音功能开启,系统将自动播报当前时间和温度。如果时间在晚上18点以后数码管亮度将自动降低以适应晚上低亮度的显示环境。在温度显示界面,如果温度超过33度(也可在程序中修改)则数码管第一位将显示H表示HOT(HIG

4、H也行),并且数码管将闪烁显示以提示用户(不喜欢该功能也可以删掉)。五、硬件设计1.主要硬件说明 (1)SST89E516RD单片机 通用8位8051系列兼容微处理器。 工作电压: 4.50V - 5.50V工作频率040MHz内部RAM共有1Kbyte(256Byte + 768Byte)支持最大64KByte外部程序和数据存储空间 3个16位定时/计数器(T0,T1,T2)全双工增强型串行通讯口(UART) 帧错误识别 - 自动地址识别 10个中断源,4个优先级4个8位I/O口(32个I/O引脚)和1个4位口,共36个I/O准的每个指令周期12个时钟,也可以倍频,以实现每个指令周期6个时钟

5、支持掉电检测SST89E516RD的功能方框图和引脚定义图 (2)DS1302DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。结构DS1302的引脚排列,其中Vcc2为主电源,VC

6、C1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此

7、次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。下图为DS1302的引脚功能图: (3)ISD1760语音芯片ISD1700系列芯片是Winbond推出的单片优质语音录放电路,该芯片提供多项新功能,包括内置专利的多信息管理系统,新信息提示(vAlert),双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。工作电路: (4)DS

8、18B20温度传感器 DS1302是 Dallas 公司生产的一种实时时钟芯片.它通过串行方式与单片机进行数据传送,能够向单片机 提供包括秒,分,时,日,月,年等在内的实时时间信息,并可对月末日期,闰年天数自动进行调整; 它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供 31 字节的用于高速数据暂存的 RAM.鉴于上述特点,DS1302 已在许多单片机系统中得 到应用,为系统提供所需的实时时钟信息。DS1302 时钟芯片内主要包括移位寄存器,控制逻辑电路,振荡器,实时时钟电路以及用于高速暂存的31 字节 RAM。DS1302 与单片机系统

9、的数据传送依靠 RST,I/O,SCLK 三根端线即可完成。其工作过 程可概括为:首先系统 RST 引脚驱动至高电平,然后在作用于 SCLK 时钟脉冲的作用下,通过 I/O 引脚 向 DS1302 输入地址/命令字节,随后再在 SCLK 时钟脉冲的配合下,从 I/O 引脚写入或读出相应的数据 字节.因此,其与单片机之间的数据传送是十分容易实现的。独特的单线接口,只需1个接口引脚即可通信 多点(multidrop)能力使分布式温度检测应用得以简化 不需要外部元件 可用数据线供电 不需备份电源 测量范围从-55至+125,增量值为0.5。等效的华氏温度范围是-67至257,增量值为0.9 以9位数

10、字值方式读出温度 在1秒(典型值)内把温度变换为数字 用户可定义的,非易失性的温度告警设置 告警搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况) DS18B20系统方框图2.硬件电路设计(1)原理图绘制(2)硬件布局 (3)PCB布线六、程序设计 1.程序设计说明 因为程序要实现的功能比较多,考虑到程序的可读性和简洁性使用了头文件的方式调用相关的功能。因为几乎每个功能都要用到数码管显示,为了以后设计和调试方便所以第一步先编写了数码管显示的头文件,具体先了解了锁存器的使用方法,写出P2.5,P2.6和WR位在显示时的状态,然后输入简单段码进行运行和调试,功能实现完全并且修正各种显示问

11、题后将函数编写为头文件方便调用。时钟日历为该电路主要功能,所以接下来开始该部分的设计。各种初始化、写入、读出函数都采用课本上例程,然后对例程进行补充,增加了对日期和星期的显示和设定函数,再次封装为头文件方便主程序调用。温度显示部分依旧采用了课本上的例程,依旧对程序进行了补充,增加了小数位的读取,并在读取函数中直接加入了数码管显示函数进行显示(这个是为了主程序而服务),然后封装头文件。语音部分首先用书上例程加单步调试进行语音的录入,录入完成后删除主函数中while(1), Erase和 set 函数,只保留play功能,封装为头文件。主程序的编写为此次试验主要部分,它综合全部功能导致逻辑部分难度

12、较大,使得调试也比较困难。大体设计思路为:在主函数中先进行系统的初始化,然后进入while(1)循环中,实现按下K4使当前显示状态的标志switch_statu自加1,并加入了防止连按的功能。然后判断switch_statu的值分别调用不同的函数显示当前值,再后面的功能为夜间自动调低亮度、闹钟闪烁和整点播报。按下K5进入设定部分的中断,并且按下K4跳出中断,具体原理类似于主函数部分。同时在主程序中还有对所需的各种变量、数组的定义,闹钟部分的显示、设定函数,实现了所有要求的功能。 2.源程序(1)主函数#include #include #include #include #include di

13、splay.h#include time.h#include temprature.h#include voice.hvoid change_time();void change_date();void change_week();void DelayMs(unsigned char);void read_clock();void change_clock();unsigned char code seg_code=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,0x77,0x7C, 0x39,0x5E,0x79,0x71,0x00,0x40

14、;unsigned char i,j=0,k=0,l=0,m=0,switch_statu=1,switch_buffer,stemp=0;unsigned char time_data,times_temps=1;unsigned char clock_buffer8,clock_display_buffer8;unsigned char voice_buffer_s16=0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x78,0x80,0x90,0x98;unsigned char voice_buffer_e16=

15、0x17,0x1f,0x27,0x2f,0x37,0x3f,0x47,0x4f,0x57,0x5f,0x67,0x77,0x7f,0x8f,0x97,0x9f;sbit K1=P10;sbit K2=P11;sbit K3=P12;sbit K4=P13;sbit K5=P32; void main() initial_ds1302(); EA=1; EX0=1; for(i=0;i8;i+) clock_bufferi=0; clock_buffer0=clock_buffer1=clock_buffer7=16; clock_buffer4=17; P1=0x0f; while(1) if

16、(K4=0&stemp=0) switch_statu+; stemp=1; if(K4=1) stemp=0; if(switch_statu=6) switch_statu=1; switch(switch_statu) case 1: read_time();break; case 2: read_date();break; case 3: read_week();break; case 4: read_temp();break; case 5: read_clock();break; default:read_time();break; if(switch_statu!=4&switc

17、h_statu!=5) for(i=0;i8;i+) display_bufferi=seg_codedisplay_bufferi; display(8,display_buffer); read_time(); j=0; for(i=0;i=1&display_buffer1=8) DelayMs(5); if(display_buffer3=0&display_buffer4=0&display_buffer6=0&display_buffer7=0) Cpu_Init(); ISD_Init(); ISD_SET_PLAY(voice_buffer_s11,0,voice_buffer

18、_e11,0); / delay(1200); if(display_buffer0=1) if(display_buffer0=2) ISD_SET_PLAY(voice_buffer_sdisplay_buffer0,0,voice_buffer_edisplay_buffer0,0); /x delay(1200); ISD_SET_PLAY(voice_buffer_s10,0,voice_buffer_e10,0); / delay(1200); if(display_buffer1!=0) ISD_SET_PLAY(voice_buffer_sdisplay_buffer1,0,v

19、oice_buffer_edisplay_buffer1,0); /x delay(1200); ISD_SET_PLAY(voice_buffer_s12,0,voice_buffer_e12,0); / delay(1200); ISD_SET_PLAY(voice_buffer_s13,0,voice_buffer_e13,0); / delay(1200); ISD_SET_PLAY(voice_buffer_slast_shi,0,voice_buffer_elast_shi,0); /x delay(1200); ISD_SET_PLAY(voice_buffer_s10,0,vo

20、ice_buffer_e10,0); / delay(1200); if(last_ge!=0) ISD_SET_PLAY(voice_buffer_slast_ge,0,voice_buffer_elast_ge,0); /x delay(1200); ISD_SET_PLAY(voice_buffer_s12,0,voice_buffer_e12,0); / delay(1200); ISD_SET_PLAY(voice_buffer_slast_shifen,0,voice_buffer_elast_shifen,0); /x delay(1200); ISD_SET_PLAY(voic

21、e_buffer_s14,0,voice_buffer_e14,0); / void int0_int(void)interrupt 0 switch_statu=4; while(1) if(switch_statu!=4) display(8,display_buffer); P1=0x0f; if(K5=0&stemp=0) switch_statu+; stemp=1; if(K5=1) stemp=0; if(switch_statu=5) switch_statu=1; switch(switch_statu) case 1: read_time();change_time();b

22、reak; case 2: read_date();change_date();break; case 3: read_week();change_week();break; case 4: read_clock();change_clock();break; default:read_time();change_time();break; for(i=0;i8;i+) display_bufferi=seg_codedisplay_bufferi; if(K4=0) switch_statu=5; return; void read_clock() for(i=0;i=100)time_data=0; display_buffer2=time_data/10; display_buffer3=time_data%10; set_date(); DelayMs(50); k=1; if(K2=0&k=0) DelayMs(50); if(K2=0) time_data=display_buffer4*10+display_buffer5; time_data+; if(time_data=13)time_data=1; display_buffer4=time_data/10; display_buffer5=time_da

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

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