课程设计(论文)基于AT89S52单片机的多功能万历设计.doc

上传人:仙人指路1688 文档编号:4150617 上传时间:2023-04-07 格式:DOC 页数:42 大小:6.67MB
返回 下载 相关 举报
课程设计(论文)基于AT89S52单片机的多功能万历设计.doc_第1页
第1页 / 共42页
课程设计(论文)基于AT89S52单片机的多功能万历设计.doc_第2页
第2页 / 共42页
课程设计(论文)基于AT89S52单片机的多功能万历设计.doc_第3页
第3页 / 共42页
课程设计(论文)基于AT89S52单片机的多功能万历设计.doc_第4页
第4页 / 共42页
课程设计(论文)基于AT89S52单片机的多功能万历设计.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《课程设计(论文)基于AT89S52单片机的多功能万历设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于AT89S52单片机的多功能万历设计.doc(42页珍藏版)》请在三一办公上搜索。

1、第二届电子设计竞赛 参赛题目 多功能万年历参赛级别 初级组 学生学院 信息工程学院_ 参赛队员 XXX_XXX XXX_作品编号 X7023 目 录摘要3第一章 作品设计4第一节、方案论证和比较4第二节、作品硬件设计51、作品硬件框图52、设计总电路图63、AT89S52主控模块74、实时时钟模块95、语音模块106、 液晶显示模块117、18B20温度测量模块128、无线编码发射与无线接收译码模块139、收音机模块15第三节、系统软件设计161、液晶显示模块182、语音模块183、18B20温度传感测温模块184、实时时钟模块185、阴阳历转换模块19第四节、Protues软件仿真19第二章

2、 作品功能与特色21第一节、作品功能与相关操作介绍211、能显示当前年、月、日、时、分、秒及星期并提示是否为阳历闰年。212、显示阴历月、日,在显示阴历时间时能标明是否为闰月;213、显示当前温度;224、可调整显示日期和时间;225、可设置定时闹钟提示。226、能够进行整点和半点语音报时;237、能用语音提示任意时刻的时间、温度、公历日期、农历日期。238、能在掉电的情况下保存用户之前的所有设置;239、具有日程管理与音乐提示功能2310、能够实现录音、留言功能;2411、能够无线控制相关操作并实现窃听2412、能够实现秒表计时2413、能够实现收音功能25第二节、作品特色26第三节、个别功

3、能指标26第三章 设计问题总结27附录A 作品实物图29附录B 页面显示图30附录C 系统源程序部分代码33参考文献42摘要随着科学技术的发展,电子产品的功能正在日益趋向多样化。低成本、多功能、低耗能已成为产品设计的主题。闹钟也一样,单一功能的闹钟似乎已经不能满足人们的要求,功能多样化已成为总的趋势,本作品正是为应呼人们需求而设计的。除基本闹钟功能外,还具备有语音报时、温度显示、收音机、秒表计时等十多项功能,实用性非常高;采用89s52单片机作为为主控芯片,外加语音、实时时钟、收音等8个模块,使得设计灵活性与稳定性高,用户或制作者可根据需要随时更改参数;作品中有些模块能设置进入睡眠待机状态,如

4、采用四节5号电池直接供电时,正常工作电流2025mA,功耗非常低;设计时使部分芯片肩负多个功能,充分利用硬件资源、使作品性价比高、成本低。关键词:AT89S52单片机 多功能 语音 功耗低 睡眠待机 第一章 作品设计第一节、方案论证和比较方案1:可提取现有整点报时闹钟芯片,用其做主控器,外加功放电路与显示电路,歌曲采用独立音乐芯片来达到设计要求设计要求,其具有设计容易、外围电路也较简单的特点,但是其功能不完善,资源少,可扩展空间不大。方案2:采用可编程逻辑器件(FPGA)作为主控芯片,然后运用AD、DA 转换实现语音的采集与播放,外加功放与现实电路来达到设计要求。采用FPGA可以大大缩短设计时

5、间,减少PCB面积,提高系统的可靠性。但此方案转换电路过多,设计成本很高,性价比低。方案3: 采用单片机(AT89S51)主控,外加ISD4002组成语音模块、DS12CR887组成时间模块、DS18B20温度模块、收音模块等来实现设计要求。外围电路模块化使作品工作更加稳定,而且扩展空间大,作品的功能多,其中有些芯片可同时用于几个模块,使设计成本大大降低,占用空间小;有些模块可设置进入睡眠状态,使得作品功耗低。在有线模式的基础上特意增加无线模式,使作品的功能更加丰富,实用性更高综合比较以上三种方案,我们选择最后一种第二节、作品硬件设计1、作品硬件框图本设计方案以AT89S52单片机为控制核心,

6、外加语音、实时时钟、温度采集、无线电发射与接受、编码与译码、LCD显示、按键控制等模块。DS12CR887实时时钟模块与18B20温度采集模块分别给系统提供当前时间、日期及温度信息,MUC对信息进行处理后控制LCD 显示。DS12CR887实时时钟模块还作为外部存储RAM。MUC再不断地将用户设置与当前信息进行监测,如果条件符合,就启动ISD4002语音模块与TDA2282功放模块进行语音提示。ISD4002语音模块作为语音信号存储器,键盘输入可实现各种模式的切换,与数值的调整。无线电发射与接受、编码与译码模块实现无线控制。LED实现工作提示。整个作品硬件电路方框图如下图所示:DS12CR88

7、7实时时钟模块18B20温度测量模块ISD4002语音模块LED灯提示按键输入、模式选择12864LD显示译码模块无线接收模块MUCAT89S52主机部分编码模块无线发射模块收音机模块 遥控器部分 收音机部分图1-12、设计总电路图3、AT89S52主控模块AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式

8、控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图3-1引脚工能介绍VCC : 电源GND: 地P0 P3 口:P0口是一个8位漏极开路的双向I/

9、O口。作为输出口,每位能驱动8个TTL逻引脚号 第二功能P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)RST: 复位输入。晶振工作时,RST脚持续2 个

10、机器周期高电平将使单片机复位。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。主控模块硬件电路图3-2其中AT89S52的P34、P35、P36分别对应接语音芯片的SCLK

11、、SS、MOSI引脚。通过SPI总线实现信息传输。P00P07分别对应实时时钟芯片的AD0AD7引脚及12864LCD显示模块的EB0!EB7引脚,进行并口通信。P25、P26、P27分别接12864LCED的E、R/W、RS控制端。P24接18B20的数据传输端DQ。P20、P21、P22、P23分别接DS12CR87D的/CS、AS、R/W、DS读写控制端。MUC对各模块的数据进行提取与分配。起着主控主用。4、实时时钟模块DS12R887是一款集成了DS12R885裸片、32.768kHz石英晶体和一个可充电电池的表面铁封装器件。该芯片提供实时时钟/日历、闹钟、控制/状态寄存器以及114字

12、节的非易失、电池备份的静态RAM。少于31天的月份,月末日期可自动调整,其中包括闰年补偿。该器件还可以工作于24小时或带AM/PM指示的12小时格式。一个精密的温度补偿电路用来监视VCC的状态。如果监测到主电源故障,该器件可以自动切到内部封装的备用电源供电。时钟、日历和闹钟BCD模式的数据存储方式如下表:表4-1 日历和闹钟BCD模式的数据存储方式模块电路图如下图4-15、语音模块ISD4002属于美国ISD公司4000系列产品,2.73.3V单电源单片语音录放电路,同时提供相应的28引线DIP/SOIC、 TSOP硬封。 ISD4002采用直接模拟量存贮技术,音质好,信息存放在芯片内部FLA

13、SHRAM中,抗断 电,无需专用语音开发工具,能随意更改内容和耗电省等优点。 该系列最大特点是录放时间长,并设计成和微处理器或微控制器配合使用实现 寻址和控制,使本器件引出端数减到最少,而使用更加灵活,且该芯片可设定进入待机状态,功耗接近为零。其指令由五位地址码和10地址码组成。具体操作指令如下表5-1:表5-1指令表模块电路图如下图5-1:图5-1如图5-1语音模块的接口解释:AT89S52的P34、P35、P36分别对应接语音芯片的SCLK、SS、MOSI引脚。通过SPI总线实现信息传输。在录音模式下,分段录好要播放的语音,并分配固定地址。当进入语音模式时,单片机发送发音指令取出指定地址的

14、语音信息进行播放,从而达到语音报时的目的。6、 液晶显示模块如图6-1,为液晶显示电路,AT89S52单片机的PC5、PC6、PC7做LCD12864的控制线,PA0PA7做数据传输线图6-17、18B20温度测量模块DS18B20数字温度计提供9为温度读数,指示器件的温度。信息经过单线接口送入DS18B20或是从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线(和地)。读、写和完成温度变换所需的电源可以有数据本身提供,而不需要外部电源。因为每个DS18B20有唯一的系列号,因此多个DS18B20可以存在于同一条单线总线上,这允许在许多不同的地方放置温度灵敏器件。DS18B2

15、0可使系统结构更趋简单,可靠性更高。测温范围:-55+125。固有测温分辨率为0.5。温度测量模块的硬件电路如图:通过P24脚对18B20写命令可以完成表的控制,如下图7-1所示:图7-1表2 DS18B20的控制命令指令代码操作说明温度转换44H开始启动DS18B20温度转换读ROM33H读ROM内容匹配ROM55H对指定器件操作跳过CCH跳过器件识别读暂存器BEH读暂存器内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H吧暂存器的TH、TL字节写到E2RAM中重新调用B8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节 8、无线编码发射与无线接收译码模块PT2262

16、/PT2272一种CMOS工艺制造的低功耗低价位通用编解码电路,最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平。从而实现解码。PT2262/2272同时具有低功耗,外部元器件少,RC振荡电阻,工作电压范围宽:2.615v 等特点。图

17、8-1表8-1 PT2262对应管脚功能表表8-2 PT2272对应管脚功能表TWH630/TWH631是一对专用的无线发与无线接收模块,能够实现数字信号的传送,添加频率调制器与解调器也可传送音频信号。TWH630以315MHz正弦波为载波,自动生成调制信号;TWH631接收到信号后自动解调,输出源信号。TWH630/TWH631具有外接电路简单,功耗小,稳定性高等特点。无线编码发射模块硬件电路图如下图8-3所示:图8-2无线接收与译码硬件电路图如下图所示:图8-39、收音机模块图1是自动搜索调频收音机的电原理图。图9-1其核心器件是一块TDA7088集成电路,这块集成电路中包含了调频收音机中

18、从天线接收、振荡器、混频器、AFC(频率自动控制)电路、中频放大器(中频频率为70kHz)、中频限幅器、中频滤波器、鉴频器、低频静噪电路、音频输出等全部功能,还专门设有搜索调谐电路、信号检测电路及频率锁定环路。自动搜索调频收音机采用电调谐方式选择电台,省去了可变电容器,设置了“搜索”和“复位”两个轻触式按钮。使用时只要按下搜索按钮,收音机就会自动搜索电台,当它搜索到一个电台后,会准确地调谐并停止下来。如果想换一个电台,只需再次按下搜索按钮,收音机就会继续向频率高端搜索电台。当调谐到频率最高端后,就需要按下复位按钮,让收音机本振频率回到最低端才能重新开始搜索电台。这种自动搜索调频收音机使用方便,

19、调谐准确,由于不使用可变电容器,所以使用寿命长。第三节、系统软件设计软件采用C语言设计。C语言对数据进行了许多专业性的处理,避免了运行间非异步的破坏;它提供复杂的数据类型,大大增强了程序的处理能力和灵活性;自动为变量分配合理的地址;提供丰富的库函数,宏定义等;基于以上的优点,采用C语言来开发可以大大提高效率,缩短开发周期。开发环境:Keil C51。 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全

20、Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。作品软件流程图闹钟标志flag=1语音报时日期、时间调整语音提示时间、温度、公历日期、农历日期日程调整否否否否否00是是是是是是11101初始化温度测量模块键盘扫描初始化液晶显示器开始判断闹钟、日程调整标志alarm判断闹钟标志flag1初始化实时时钟模块语音提示歌曲播放判断日程提醒标志flag3提取当前时间及温度信息阳历转阴历液晶显示相关信息判断时间调整标志flag闹钟时间比较判断是否半点或整

21、点判断key5是否按下判断key6是否按下判断key7是否按下判断key2是否按下闹钟调整进入录音模式进入放音模式进入秒表计时模式将相关信息输入时钟芯片将相关信息输送到外部RAM1、液晶显示模块液晶显示采用LCD128*64规格.程序主要有液显初始化、数据写入、指令写入、显示数据、显示字符串、定行定点显示数据、忙碌状态检查。主要为: void init(void) ; void write_date(uchar date) ; void write_com(uchar com); void writestring(uchar * str);void write_sfm1(uchar add,u

22、char date);bit checkBusy(void);2、语音模块这个模块程序主要是用来实现语音提示数据,录放相关信息,此模块的程序主是包括,语音芯片的初始化,数据输入,上电、掉电、停止、放音等。主要是如下函数名:void init2(); void ISDX(unsigned char d); void UP();void STOPP();void fangyin(uchar dz,uint time);3、18B20温度传感测温模块18B20温度传感的程序时序要求主要包括温度信息提取,数据转换等程序。调用get_temper_value()获取温度值;调用conversion1()

23、二-十进制;buf13正负符号位;buf12百位;buf11十位;buf10个位;4、实时时钟模块这个模块的的程序主要用来实现对实时时钟芯片DS12R887进行数据传输。主要包括有时钟芯片初始化、数据写入、数据读出、指令写入等程序。主要为:init();void ds_write(uchar add,uchar date);uchar ds_read(uchar add);void set_time();5、阴阳历转换模块该模块主要是实现公历年、月、日到农历年、月、日的转换;使用时,调用函数void Conversion(bit c,uchar year,uchar month,uchar d

24、ay) ,输入公历年、月、日,函数会自行进行寻址、运算和转换;然后就可以读取对应农历闰年标志(run)世纪(c_moon),年(year_moon),月(month_moon),日(day_moon)的值。第四节、Protues软件仿真软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运

25、行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,您不需要别的,Proteus为您建立了完备的电子设计开发环境!打开Proteus软件,并出画万年历测试模块电路的具体实验电路图。检查所画电路运行图,确保没有错误以后,在Proteus下对原理图进行加载keil下的源程序。加载完成后,单击电路图框下的开始按钮,进行仿真,观察LCD现实情况,此时LCD开始显示相关信息。作品设计过程中有关模块的仿真图如下图3-1图3-2第二章 作品功能与特色第一节、作品功能与相关操作介绍1、能显示当前年、月、日、时、分、秒及星期并提示是否为阳历闰年。按下“电源”键,系统能够自动提取实时芯片中年、月、日

26、、星期、时、分、秒等信息,并通过运算判断输入年份是否为“闰年”,并用“RN(“闰年”中文首字母)”标记出来,最后将数据进行处理,通过LCD显示出来,如图1-1所示:阳历闰年图1-12、显示阴历月、日,在显示阴历时间时能标明是否为闰月;系统能自动将公历年、月、日进行转换,输出相应的农历年、月、日,并判段是否为阴历“闰年”以及“闰月”,并用“RN(闰年中文首字母)” 、“RY(闰月中文首字母)”标记。结果通过LCD显示出来。如图2-1所示:阴历闰月阴历闰年图2-13、显示当前温度;作品装有温度传感器,能不断地提取周边环境的温度信息,经转换得出温度值;再通过LCD显示出当前气温。如图3-1所示。图3

27、-14、可调整显示日期和时间;作品带有键盘输入模块,用户可直接按“设置”键进入时间调整模式,此时再按“设置”键可实现调整对象的切换,LCD会以闪烁的形式进行标记,通过按“+”或“-”可对具体对象值进行调整。之后按“设置”直到退出时间调整模式。如下图4-1所示设置对象闪烁 图4-15、可设置定时闹钟提示;用户可直接按“闹钟”键进入闹钟调整模式,在通过按“设置”进行时、分、秒调整的切换,LCD会以闪烁形式标记,按“+”、“-”对具体值得调整。之后按“设置”直到退出闹钟调整模式。如下图所示之后按“设置”知道退出时间调整模式。如下图5-1所示图5-16、能够进行整点和半点语音报时;系统会自动对当前时间

28、进行监测,如果是半点、或整点,系统会自行启动语音模块,并将当前时间输入,之后通过扬声器将具体时间用语音方式报出。7、能用语音提示任意时刻的时间、温度、公历日期、农历日期;用户按下“语音提示”键后,作品会将当前时间,温度,公历日期,农历日期全部信息输入到语音模块,经单片机处理转换后,将全部信息通过扬声器告知用户。8、能在掉电的情况下保存用户之前的所有设置系统在工作的过程中会将用户设置的所有信息输送到外部RAM进行存储,在掉电的情况下,RAM中的信息不会丢失,实时芯片也因嵌有锂电池可以正常工作,再次上电时,系统会将外部RAM的信息重新载入,保证用户信息的安全。9、具有日程管理与音乐提示功能用户可直

29、接按“闹钟”键进入日程管理模式,按“设置”进行日程设置对象选择,其中有多达38个日程可供设置,用户设定日期时间后,系统会将设置信息传送到外部RAM存储,然后再定时的进行信息提取与监测,如果符合条件,就调用歌曲就行提示,有五首歌可供选择。具体数值可用“+”、“-”键进行调整。歌曲可重复播放,可按任意键退出。图9-110、能够实现录音、留言功能;按下“录音”键可实现即时录音的功能,用户留言后,可通过按“放音”键播放留言信息,用户可将录音内容设为闹钟响铃。例如可录“时间到了”等当闹钟响铃。11、能够无线控制相关操作并实现窃听;本作品主机上装有无线接收与译码模块,与之配合的有一带有无线发射与编码模块的

30、遥控器。遥控器上带有与主机对应的“-”、“语音提示”、“录音”、“放音”。用户可随时、随地通过按遥控上“语音提示”键控制主机播放有关信息。按“录音”键可窃听有关信息。按“-”键退出闹钟提示。这样使得作品的实用性更高。12、能够实现秒表计时;按“秒表”键进入秒表计时模式,“-”控制计时开始与暂停,按“*” 实现计时清零,按“+”键退出秒表计时模式;回到主页面。如图下图所示:图12-113、能够实现收音功能;本作品带有无线收音模块,能够作为一台收音机使用。打开收音机开关,按“复位”键复位,按“切换”键调节频道。第二节、作品特色本作品除实现要求的所有功能指标外。另具有以下多个功能特色。1、语音提示任

31、意时刻的时间、温度、日期;2、无线进行相关操做,使用者可在任何时间、地方通过遥控器进行控制或得到相关信息。3、作品加入收音机模块,共用无线模块中的接收电路,实现收音机功能;4、能复读、留言、录音;5、拥有秒表计时功能;6、温度测量并显示;7、能精确地推算阳历闰年、阴历闰年、以及阴历闰月;8、模块睡眠待机等;第三节、个别功能指标(1)温度测量精确到0.5度;(2)实时时钟在+25摄氏度的温度下运行天的误差不超过两秒;(3)无线控制距离不小于10m;(4)秒表计时误差不超过0.01s;第三章 设计问题总结从方案的制定到如今的总结,前后经历了整整一个月,其间设计进程曲曲折折、进进退退。问题更是接二连

32、三出现,但事实上,问题正为我们提供了一个学习、思考、锻炼的平台。从问题的提出到解决就是一个进步成长的过程,参加比赛设计的目的所在。似乎整个设计过程就是由问题串联起来的。让我们踏着问题的脚步一起回顾我们的设计之路。一开始,我们选用ISD4002做为语音模块的主芯片,还未调试,就碰到的第一个棘手的问题,ISD4002的工作电压为2.73.3V,在5V的电压环境下无法正常工作,更别说上电调试,当时我们只好参考其他类似电压转换问题的解决方法,之后采用3V电压单独供电,通信口串1k上拉电阻的方法减小电平差距,解决了这一问题。接下来就是ISD4002录放音指令问题。按照芯片PDF资料,芯片正常上电后,发送

33、地址,在发送录放音指令即可,但我们实际操作中上述方法总会出现失误,高失误率是这一模块所不予许的,为此我们用整整10天进行调试,终于我们发现上电后,先发送一录放音指令(不会有响应,但系统会标志后面的初始地址),然后发送地址,再发送录放音指令进行录放操作,能过大大减小失误率。问题到此也得到解决。这点要特别注意。引脚共用问题。本来实时时钟模块的硬软件设计进程都非常顺利,单独操作基本不会出现问题,这是我们一开始觉得欣慰的地方,但后来为节省设计中引脚接口的使用,实时时钟模块与液晶显示模块共用了P0数据接口。但这样以来,两模块经常出现乱码;为什么呢,理论上应该可以的;这问题困扰了我们整整4天。后来通过比较

34、乱码规律,终于我们推测出可能是接口的灌电流加大了,所以导致引脚的电平转换时间发生变化。因此两模块的电路时序图也要相应改变,最后我们在两个模块的每个操作环节都实行了延时,成功的解决了这一问题。因此我们士气大振。响应时间问题,在温度测量这一模块中,上电后我们直接对模块初始化,然后采集温度数据,但测出的的温度总是85摄氏度,也就是说错误,一开始我们百思不得其解,都完全符合元件的时序图,一番周折后,我们才意思到,可能是元件含有电容等元件,上电充电需要一定的响应时间,果然我们上电后先延时300ms后再初始化测量,数据就完全正确了。这一点也是容易被忽略的。干扰问题,在模块组合时,本来收音机模块在外面单独使

35、用十分正常,但一组合起来信号就十分不稳定,干扰很大,以至听不清。开始大家以为天线不够长,就加长了天线,但于事无补;后有认为实验场地信号不好或摆设角度不对,结果去空旷场地全方位调试也没用,队伍大受打击,但大家并不气馁,参考市场上相关产品后,我们发现大部分产品是给收音机这一模块单独供电的。我们就将供电电源分开来,结果大快人心。接着我们又做了其他门面的调试,最后总结出问题的所在单片机的晶振频率较高,对收音机的干扰很大,如果同用一电源,模块间相连干扰大。这在以后的高频设计中因十分注意。还有就是内存问题。一开始,各模块编程时我们是以功能实现和编译能通过为首要目的。但当所有模块一组合,问题就来了,RAM严

36、重不足,开始还在找RAM较大的单片机,后来发现者根本解决不了问题,那路在何方,之后我们回到了程序上,通过请教前辈和查找书籍我们总于认识到了是我们编程时没合理安排数据类型,全局变量设置过多,还有数组存储安排错误,问题关键知道了接下来就好办了,果然我们通过认真调配终于也解决了这一问题。其实我们还碰到硬件布局安排,接口分配等问题,它们也在我们的设计实验过程中得到的解决,这就是学习成长,是比赛设计的真正目的,也是一种乐趣,过程是辛苦的,也是快乐的。其实没有比难题解决的那一刻更让人兴奋地了。路漫漫其修远兮,吾等将上下而求索。附录A 作品实物图主机图一 主机图二 图三 遥控器附录B 页面显示图图一 主页面

37、图二 时间、日期设置图三 日程、闹钟页面图四 日程、闹钟调整图五 秒表计时页面附录C 系统源程序部分代码#include#include#include#include #include#includemain() uchar t=2,h1,h2,m1,m2,y1,y2,d1,d2,ym1,ym2,dm1,dm2,i,temp12,time1,time2,time3,time4,time5,time6;bit u,v;TMOD=0x01;TH0=-(5200/256);TL0=-(5200%256);IE=0x82; init(); /初始化温度测量模块、实时时钟模块、液晶显示模块while(

38、1) keyscan(); if(alarm=0) / 判断闹钟、日程调整标志alarm if(flag1=1) /判断闹钟标志位 LED=0; init2();isdh=0xe2;isdl=0x40; ISDX(isdl);ISDX(isdh);SS=1;delay2(3000);ISDX(0xf0);SS=1;STOPP();LED=1; if(flag3=1)/判断日程提醒标志位 init2();/初始化语音模块if(rmusic=1)/歌曲播放isdh=0xe1;isdl=0x00; if(rmusic=2)isdh=0xe1;isdl=0X32; if(rmusic=3)isdh=0

39、xe1;isdl=0X70; if(rmusic=4)isdh=0xe1;isdl=0Xb0; if(rmusic=5)isdh=0xe1;isdl=0Xff; ISDX(isdl);ISDX(isdh);SS=1;delay2(20000);ISDX(0xf0);SS=1; STOPP();LED=1; if(flag=0) /判断时间调整标志位 sec=ds_read(0); /提取时、分、秒信息 min=ds_read(2); hour=ds_read(4); write_sfm2(2,hour); writestring(xianshi13); /显示时、分、秒信息 write_sfm

40、2(4,min); writestring(xianshi14); write_sfm2(6,sec); writestring(xianshi15); if(e|hour=0&min=0&sec=0)/显示切换、初始化主页面 day=ds_read(6); /提取年、月、日信息date=ds_read(7);month=ds_read(8);year=ds_read(9);write_com(0x80); writestring(xianshi234);panduan1(d,year);if(leap)write_data(0x52);write_data(0x4e); elsewrites

41、tring(xianshi17);if(d) write_sfm1(3,19); else write_sfm1(3,20); write_sfm1(4,year); /显示年、月、日等信息 writestring(xianshi10);write_sfm1(6,month); writestring(xianshi11);write_sfm2(0,date); writestring(xianshi12);write_com(0x88);writestring(xianshi235); Conversion(d,year,month,date); /公历转农历if(leap2)write_d

42、ata(0x52);write_data(0x4e); elsewritestring(xianshi17);if(run)write_com(0x8a);write_data(0x52);write_data(0x59);writestring(xianshi5month_moon);writestring(xianshi11);writestring(xianshi2day_moon);if(month_moon11)writestring(xianshi17);write_com(0x98); writestring(xianshi3day); write_com(0x9b);writestring(xianshi17);get_temper_value(); /采集温度信息 conversion1();p=buf11

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号