《片单机课程设计报告公交车自动报站系统课程设计--大学毕设论文.doc》由会员分享,可在线阅读,更多相关《片单机课程设计报告公交车自动报站系统课程设计--大学毕设论文.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、湖 北 理 工 学 院电气与电子信息工程学院 单片机课程设计报告课设名称:基于单片机的公交车自动报站系统 专业名称:电气工程自动化 班 级: 2016级专升本( 1 )班 学号: 姓 名: 指导教师: 课设时间: 2016.12.52016.12.16 课设地点: K2407 电气与电子信息工程学院单片机课程设计任务书 2016 2017 学年第1学期学生姓名: 专业班级:电气工程及自动化2016级专升本(1)班 指导教师: 肖志军 工作部门: 电气自动化教研室 1、课程设计题目: 基于单片机的公交车自动报站系统 2、课程设计要求:2.1根据具体设计课题的技术指标和给定条件,以单片机为核心器件
2、,能独立而正确地进行方案论证和电路设计,完成仿真操作。要求概念清楚、方案合理、方法正确、步骤完整; 2.2 熟悉、掌握各种外围接口电路芯片的工作原理和控制方法;2.3 熟练使用单片机汇编语言或C51进行软件设计; 2.4 熟练使用Proteus、Keil软件进行仿真电路测试;(或用开发板联合调试) 2.5 熟练使用Protel软件设计印刷电路板;2.6 学会查阅有关参考资料和手册,并能正确选择有关元器件和参数; 2.7 编写设计报告,参考毕业设计论文格式。(1)根据课题要求确定系统设计方案;(2)绘制系统框图、系统仿真原理图(印刷电路板图),列出元器件明细表;(3)计算电路参数和选择元器件,画
3、出软件框图,列出程序清单;(4)打印仿真结果,根据测试结果进行误差分析与修改调整;(5)对设计进行全面总结。3、 技术指标:设计公交车自动报站系统,以实现公交车的语音自动报站,即在进站、出站时候自动播报语音提示信息及服务用语,同时利用LCD液晶电路进行本站站名以及下一站站名的显示,还可对实时时间进行显示。本设计利用STC89C52作为主控芯片完成主控电路的设计,辅助电路要求包括语音电路、显示电路、电源电路、时钟电路等。4、进度安排教学第 15 周:2016.12.52016.12.9时 间星期一星期二星期三星期四星期五星期六星期天1、2节讲解设计题目、要求3、4节方案的选择论证方案的选择论证系
4、统硬件设计(1)系统硬件设计(2)系统软件设计(1)5、6节7、8节地 点K2-407K2-407K2-407K2-407K2-407教学第 16周:2016.12.122016.12.16时 间星期一星期二星期三星期四星期五星期六星期天1、2节系统软件设计(2)3、4节仿真调试(1)仿真调试(2)设计答辩设计答辩讲解报告要求5、6节7、8节地 点K2-407K2-407K2-407K2-407K2-4074.1、基本要求根据过程、报告、答辩等确定设计成绩,成绩分优、良、中、及格、不及格五等。评定项目基本内涵分值平时表现考勤10分答辩情况回答问题情况20分操作能力实物或仿真测试正常无故障运行2
5、0分课设报告完成设计任务、报告规范性等情况50分90100分:优;8089分:良;7079分:中;6069分,及格;60分以下:不及格5、课程设计参考资料1贺哲荣.AT89S51单片机硬件设计与编程实例.北京:中国电力出版社.2012 2李泉溪.单片机原理与应用实例仿真.北京:北京航空航天大学出版社,2012.3王平.单片机应用设计与制作.北京:清华大学出版社, 2012.4彭为等.单片机典型系统设计实例精讲. 北京:电子工业出版社,20075王庆利等.单片机设计案例实践教程.北京:北京邮电大学出版社,20086韩志军等.单片机应用系统设计入门向导与设计实例.北京:机械工业出版社,20057皮
6、大能等. 单片机课程设计指导书. 北京:北京理工大学出版社,20108张毅刚.单片机原理及应用.北京:高等教育出版社,2011.基于单片机的公交车自动报站系统1、 课程设计方案选择1.1、示案论证:文字显示电路CPU控制晶振、复位语音播放电路脉冲检测电路 时钟电路图1-1系统组成结构图如图4-1所示本系统使用八位单片机作为控制器件。当系统进行语音再生时,单片机控制电路中的语音芯片来读取其外接的存储器内部的语音信息,并合成语音信号,再通过语音输出电路,进行语音报站和提示。同时,单片机通过程序读取文字信息并读取时钟电路的实时时间,送入液晶显示模组来进行站数和站名以及当前时间的显示。当脉冲检测电路达
7、到系统预定值是就表明到了某一站系统就会对当前车站进行播报和显示。当系统进行语音录制时,语音信号通过语音录入电路送给语音合成电路中的语音芯片,由语音芯片进行数据处理,并将生成的数字语音信息存储到语音存储芯片中,从而建立语音库。1.2、硬件方案的选择1.2.1语音芯片的选泽:方案一:基于ISD2560语音芯片的录放电路设计ISD2560系列语音芯片可通过SPI协议方便地与CPU接口。用ISD2560芯片构成的单片机通用开发板采用国内最常用的MCS-51语言单片机89C51来与ISD2560系列语音芯片相结合,可供用户开发各种新型智能型数码语音产品。方案二;基于ISD1730语音芯片的录放电路ISD
8、1730是华邦公司新推出ISD1700系列芯片的单片优质语音录放电路,该芯片能提供多项新功能,包括内置专利的多信息管理系统,新信息提示,双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。通过分析比较,本次设计采用ISD1730语音芯片设计录放电路,其相对于ISD2560语音芯片来讲功能更强大,由按键直接控制语音的录放等,电路工作稳定、可靠性高,完全达到了设计要求,具有非常好的实用性。1.2.2显示芯片的选泽:方案一:采用LCD点阵显示,用来显示文字、图形、图像、等各种信息的显示屏幕。它均由
9、LCD矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形,该方案简单易行。但所需的元件较多,且不容易进行操作,可读性差,一旦设定后,很难再加入其他的功能。方案二:采用液晶(LCD1602)显示器件,该液晶显示器件与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该器件的价格也略低于相同点阵的图形液晶模块。而且此液晶显示平稳、省电、美观,更容易实现题目要求,对后续的功能兼容性高,。只需将软件作修改即可,可操作性强,也易于读数,能同时显示日期、时间、星期且易于修改。综上分析,我们采用了第二个方案。1.2.3时钟芯片的选泽:方案一:采用软件实现,直接用单片机的定
10、时器编程实现,优点节省硬件,但编程复杂且程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,准确度较差。方案二:采用专用的时钟芯片实现时钟的记时,专用时钟芯片记时准确,容易控制,能够从芯片直接读出日期、时间、星期,更符合题目要求。综上分析,我们采用了第二个方案,时钟芯片选择常用的DS1302。1.2.4控制模块的选择:所学专业课中学习过51单片机,并且单片机体积小,重量轻,具有很强的灵活性而且价格便宜,所以控制模块选用AT89C52单片机。1.2.5脉冲检测电路的选择:脉冲检测电路该系统关键是对转轴所转过的圈数进行计数,考虑到车辆将在复杂的 环境中运行,故采用可靠的霍尔元件DN
11、6848作为信号的采集装置,再经光电耦合器4N25输入给单片机。光电耦合器的信号进入C51后,采用中断方式对脉冲计数。外部晶振12MHz。2、硬件设计图2-1 总原理图如图2-1所示:单片机的P0口接显示模块芯片1602的数据口,P20P22接1602的读写口及使能端。P10P12接时钟电路DS1302。P23接脉冲检测电路。P3口接语音电路。2.1语音播放电路(ISD1730)2.1.1语音播放电路的管脚图如图2-2所示:总共有28个管脚。通过STC89C51单片机控制ISD1730语音芯片的录放,并用单片机对录放时间的设定和控制。ISD1730 芯片提供了多项新功能,包括内置专利的多信息管
12、理系统,新信息提示,双运作模式,以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。此芯片的性能特点是:1) 可录、放音十万次,存储内容可以断电保留一百年。2) 两种控制方式,两种录音输入方式,两种放音输出方式。3) 可处理多达255 段以上信息。4) 有丰富多样的工作状态提示。 5) 多种采样频率对应多种录放时间。 图2-2 ISD1730管脚图6) 音质好,电压范围宽,应用灵活,价廉物美。2.1.2 与单片机的连接图2-3 接口图如图2-3所示图中的4-7脚和单片机P3口相连,此时P3口做基本的输入输出单片机通过P
13、3.0来控制此芯片成为当前被控制设备并且开启 SPI 接口,此端口为低电时平有效。SPI(13脚,15脚)为喇叭输出脚。MISO(4脚):SPI 接口的串行输出端口, SCLK 下降沿之前的半个周期将数据放置在 MISO 端,数据在 SCLK 的下降沿时移出,此时语音通过喇叭进行播放。MOSI(5脚):SPI 接口的数据输入端口。主控制芯片在 SCLK 上升沿之前的半个周期将数据放置在 MOSI 端。数据在 SCLK 上升沿被锁存在芯片内。此管脚在空闲时,应该被拉高。SCLK(6脚):接口时钟管脚,单片机通过此管脚来同步MISO和MOSI端各自的数据输入输出,此管脚空闲时,必须拉高。当REC(
14、24脚)接地时通过MIC(10脚、11脚)接麦克风进行语音信息的录入。2.2液晶显示电路(LCD1602):2.2.1 字符型液晶显示是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用的是LCD1602-LM032L型液晶显示器如图2-4所示,其外形尺寸为803614,单5V供电,由左到右共14个引脚. LCD1602分两行显示,每行可显示多达16个字符。本设计在LCD1602第一行固定显示时间,第二行显示欢迎语并在车辆到站时显示本站站名和下一站站名。在车辆离站时再次显示欢迎语。 图2-4 管脚图2.2.2 与单片机的连接如图2-5所示芯片(D0-D7)为其数据口和单片机P0口相接,
15、此时单片机P0口做基本的输入输出功能,因为P0口具有地址/数据复用的功能所以在当基本的输入输出时需要接上拉电阻。芯片的使能端以及读/写端寄存器的选择端接到P20P22。单片机通过P00对芯片进行控制,当E端由高电平跳变成低电平时,液晶模块执行命令,低电平时写入数据。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 图2-5接口图2.3时钟电路(DS1302):2.3.1 DS1302时钟芯片可以工作于24小时模式或AM/PM的12小时模式。其内部包含
16、了10个小时寄存器和31字节RAM,这些寄存器和RAM用来存放各种时间数据。在使用时,可以对芯片的当前时间进行设定。如图2-6所示芯片共有8个管脚采用了简单的I2C三线通信方式,便于节省芯片和与之接口的微处理器管脚。芯片有着2.05.5V的宽供电电压范围,在5V供电时其接口与TTL电平兼容;并且功耗很低,在2.0V供电时仅耗 图2-6 管脚图300nA的电流。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31日时可自动调整,包括闰年,有效至2100年。可采用12h或24h方式计时,采用双电源(主电源和备用电 源)供电,可设置备用电源充电方式,同时提供了对后背电源进 行涓细电流充电的能力
17、。主要性能:(1)31字节RAM存储时间数据。(2)2.05V供电。(3)支持单字节传输模式和突发式传输模式。(4)8针DIP封装和SOIC封装。(5)3线接口,简单易用。(6)兼容TTL电平。(7)操作温度-40+85C。2.3.2 与单片机的连接如图2-7所示DS1302与单片机的连接仅需要3条线,即SCLK、I/O、RST、。Vcc2在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。Vcc2在双电源系统中提供主电源,在这种运行方式下Vcc1连接带备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc
18、2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电15。RST接在P1.2上,此引脚为高电位时,选中此芯片,可对其进行操作。串行数据线I/O与串行时钟线SCLK分别接在P1.0和P1.2上,所有的单片机地址、命令及数据均通过这两条线传输。 图2-7 接口图 2.4脉冲检测电路: 如图2-8所示本设计的关键是对转轴所转过的圈数进行计数,考虑到车辆将在复杂的环境中运行,而霍尔元件具有耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀的优点,故采用可靠的霍尔元件DN6848作为信号采集装置,采集公交车车轴转数。再经过光电耦合器4N25输入给单片机。光电耦合器的电流传输比为10%
19、250%,响应时间小于10ms,把霍尔元件集成的开关按预定位置有规律地布置在物体上,当车轴转动经过它时,可以从测量电路上测得脉冲信号。根据脉冲信号列可以传感出该运动物体的位移。再通过光电耦合器是一种电信号的耦合器件,它一般是将发光二极管和光敏三极管的光路耦合在一起,输入信号加于发光二极管上,输出信号由光敏三极管输出,送入单片机的P23进行检测。 图2-8 脉冲电路图2、 软件设计3.1流程图 如图3-1所示为系统的总体流程图,系统运行时先对所有芯片进行初始化,然后通过对DS1302时钟芯片进行控制读取时钟芯片的系统时间并将时间显示在显示芯片LCD1602液晶显示屏的第一行,并使时间一直显示。然
20、后车子启动在液晶显示屏上显示欢迎语通过车轮的转动单片机对脉冲电路进行检测并计数,在和系统中的预定值进行比较,判断其是否达到预定值,如果达到预定值则读取预先储存的站名信息然后通过开始语音芯片ISD1730进行播放并提示, 然后将站名通过LCD1602进行显示如果对脉冲计数判断未达到预定值系统初始化则返回到脉冲计数在进行继续计数当计数达到预定值时就进行相应的操作最后执行完在返回脉冲计数来显示时间进行下一站的是否到达进行判断并执行相应的操作。一直到最后一站整个系统执行完毕再一次执行初始化进行第二次循环。对脉冲计数如图3-2所示为语音芯片ISD1730 的录音流程图,首先通过控制选定录音存放的地址,然
21、后设定控制字的命令,然后判断录音时相对应的按键是否到预设值?是否按下如果检测到按键按下则开始 录音操作,录音完毕返回。如果相对 否的按键未按下则返回继续进行判断 直到相对应的按键按下然后进行录音。 如图3-3所示为ISD1730的放音流程 图当系统要进行放音操作时通过 是语音播报当前站点并显示单片机对其进行相应的控制然后读取所播放语音的地址然后进行其控制字的控制,之后芯片进行自动播放语音显示下一站点播报信息。然后返回,播放语音完成。返回 图3-1 总流程图 图3-1 总流程图开始开始送放音地址送录音地址送放音控制字送录音控制字判断按键状态?自动放音 否返回 是开始录音返回 图3-3播放流程图图
22、3-2启动写入数据 录音流程图 读写线置0调用延时子程序开始启动使能控制线设定方向及位移调用延时子程序传输数据写指令子程序写指令子程序调用延时子程序调用延时子程序清屏调用忙子程序写指令子程序返回图3-4 显示流程图如图3-4所示为显示芯片LCD1602的显示流程图,当其需要显示信息时先调用一段延时子程序(这里如果不调用延时子程显示屏则无发显示)然后调用LCD的写指令子程序,完毕之后清屏再次调用写指令子程序和延时子程序,然后设定写入的方向以及写入的位移之后再次执行写指令子程序,又一次调用延时,所有的写操作准备做完之后,调用其忙子程序检测其是否可以进行写入,启动写数据操作指令,将读写线置0使其可以
23、进行写操作,启动使能控制端开始传输数据传输完毕之后再调用一次延时子程序,使显示信息可以被人看到,所有工作做完之后返回,在进行下一次的信息进行显示。依次循环。3、 仿真结果及分析4.1仿真结果图图4-1初始化图如图4-1所示为仿真结果运行开始的图也就是系统运行但公交车未启动时的初始图,只通过时钟芯片显示了当前时间。图4-2车辆启动显示图图4-2为公交车启动系统自动显示时间和显示欢迎语以及服务提示的语音播报,图中用一个按键来控制脉冲的输入来模仿公交车的启动。图4-3 A站显示图图4-3为公交车到达A站时的运行结果图,系统通过对车轮走过的的路程来判别是否到站,仿真图中用一个脉冲发生器来模拟单片机通过
24、对脉冲的的计数来与预定值进行判别,如果到站则进行播报并显示。图4-4 B站显示图图4-4为到达B 站时的仿真结果图,原理与A站的相同。本仿真只选取了少数几个站做代表,实际运用中可以添加更多的车站信息。5、课程设计小结经过了近几个月的学习和努力,我终于完成了基于单片机的公交车自动报站系统的设计,在这个过程中我的收获是非常多的,并且需要改进和学习的地方也非常多。我从以下两个方面来对自己在这次毕业设计的过程中的感想来做一下总结:5.1 收获通过这次设计我知道了在做一个系统之前很重要的是要做好需求分析,为此,我在网上查看了大量的相关资料,对目前市面上流行的几种公交车报站器进行了分析和比较,来为此次设计
25、个方案确定来做了充足的准备。通过研究各种公交车报站器来自己确定要完成的公交车报站器的工作原理和要具备的各种功能。在我做这次毕业设计之前,我以为这东西很好做,一做起来才感动力不从心,并且我对一些EDA的软件基本没有了解,甚至都不知道它是干什么,怎么用,对程序的理解也仅仅局限于书本上有限的知识。但是通过了这次设计,我深入了解了单片机的工作原理和机制,对它的各个模块功能有了更深层认识和更本质的理解,并且在这个过程中,我更加深入认识了Proteus和KeilC51这两个软件,对这软件的基本操作能够熟练的使用,了解了软件的优缺点,并且熟练了对C语言的使用和LCD1602程序设计。在做课程设计的过程中我遇
26、到了很多困难,很多方案确定不下来,编写代码时也总是出现这样或者那样的错误,并且有些功能自己也不知道该用什么方法来实现,经过和同学的讨论以及老师的深刻指导,我克服了这一些困难。最终基本完成了用Proteus来实现公交车的模拟报站,但是模块还是很简陋,也需要进一步的优化。5.2 不足之处该系统还存在着一些不足,主要体现在:仿真过程没有办法使用ISD1730语音模块和脉冲 检测电路的霍尔元件,用了蜂鸣器和脉冲信号发生器来代替,只对这两个模块根据资料进行了相应的介绍。如果以后做实物的过程,那应该完善这两部分。并且在设计过程中也暴露了很多的缺点,比如编程能力有待提高,需要通过不断的编译仿真调整才能最终得
27、到想要的结果。5.3 总结本次设计用Proteus仿真基本达到了预先的要求。设计采用了Atmel公司的AT89C51单片机来设计的一个公交自动报站系统,本设计使用了C语言进行编程,利用了KeilC51软件进行编译生成HEX文件,使用了Proteus软件进行了基本的仿真实现,能够完成对输入信号的判断处理,自动液晶显示站名以及声音提示。这次设计能够实现设计中提出的功能方案。通过这次的设计,对于在KeilC51环境下的编程能力有了进一步的提高,同时对单片机系统设计理念也有了进一步认识,理解了模块化设计在整个系统设计中的作用。电气与电子信息工程学院单片机课程设计成绩评定表课程设计名称:基于单片机的公交
28、车自动报站系统 答辩或质疑记录:1、设计中用ISD1730为语音播报芯片进行语音播报与站名信息的储存但在仿真时由于Proteus软件元件库的限制没有ISD1730这款芯片,然后用了一个蜂鸣器做了模拟,来代替语音芯片的放音,但设计中给出了此芯片的介绍及用法以及和单片机的接法。若做实物图则可以用ISD1730这款芯片来接喇叭进行语音播报。2、设计中用霍尔元件对车轮所转过的圈数进行计数然后再通过车轮转一周所走过的路程来得到每一站之间的路程,然后根据这个路程来判断车辆是否到站然后进行相应的操作。仿真中无法用霍尔元件来仿真所以用了一个脉冲发生器来代替,通过对脉冲的计数来判别是否到站,但设计中给出了其实际
29、检测电路的具体介绍以及应用及其和单片机的接法。若做实物图则可直接应用使设计更为精确可行。成绩评定依据:平时表现( 10):操作能力( 20):答辩情况( 20):课设报告( 50):最终评定成绩(以百分制评定)附录1 电路总原理图附录2 源程序清单#include #include #include #define uint unsigned int#define uchar unsigned charsbit IO = P10; /定义1302双向数据线管脚sbit SCLK = P11; /定义1302串行接口的同步时钟sbit RST = P12; /定义1302复位管脚sbit RS
30、= P20;sbit RW = P21;sbit EN = P22;sbit BEEP = P37;sbit P32 = P23;uchar *WEEK=SUN,*,MON,TUS,WEN,THU,FRI,SAT;uchar LCD_DSY_BUFFER1=TIME 00:00:00 ;uchar LCD_DSY_BUFFER2= welcome to:HS ;uchar LCD_DSY_BUFFER3=AAAAAAAAA ;uchar LCD_DSY_BUFFER4=BBBBBBBBB ;uchar LCD_DSY_BUFFER5=CCCCCCCCC ;uchar DateTime7;voi
31、d DelayMS(uint x) uchar t;while(x-) for(t=0;t120;t+);void Play(uchar t) uchar i;for(i=0;i100;i+) BEEP = BEEP;DelayMS(t);BEEP = 0;void Write_A_Byte_TO_DS1302(uchar x) uchar i;for(i=0;i=1;uchar Get_A_Byte_FROM_DS1302() uchar i,b=0x00;for(i=0;i8;i+) b |= _crol_(uchar)IO,i);SCLK=1;SCLK=0;return b/16*10+
32、b%16;uchar Read_Data(uchar addr) uchar dat;RST = 0;SCLK=0;RST=1; Write_A_Byte_TO_DS1302(addr);dat = Get_A_Byte_FROM_DS1302(); SCLK=1;RST=0;return dat;void GetTime() uchar i,addr = 0x81;for(i=0;i7;i+) DateTimei=Read_Data(addr);addr+=2;uchar Read_LCD_State() uchar state;RS=0;RW=1;EN=1;DelayMS(1);state
33、=P0;EN = 0;DelayMS(1);return state;void LCD_Busy_Wait() while(Read_LCD_State()&0x80)=0x80);DelayMS(5);void Write_LCD_Data(uchar dat) LCD_Busy_Wait();RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;void Write_LCD_Command(uchar cmd) LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;void Init_LCD()
34、 Write_LCD_Command(0x38);DelayMS(1);Write_LCD_Command(0x01);DelayMS(1);Write_LCD_Command(0x06);DelayMS(1);Write_LCD_Command(0x0c);DelayMS(1);void Set_LCD_POS(uchar p) Write_LCD_Command(p|0x80);void Display_LCD_String(uchar p,uchar *s) uchar i;Set_LCD_POS(p);for(i=0;i16;i+)Write_LCD_Data(si);DelayMS(
35、1); void Format_DateTime(uchar d,uchar *a) a0=d/10+0;a1=d%10+0;void main()int F=0; Init_LCD();while(1) GetTime();Format_DateTime(DateTime6,LCD_DSY_BUFFER1+5);Format_DateTime(DateTime4,LCD_DSY_BUFFER1+8);Format_DateTime(DateTime3,LCD_DSY_BUFFER1+11);strcpy(LCD_DSY_BUFFER1+13,WEEKDateTime5);Format_Dat
36、eTime(DateTime2,LCD_DSY_BUFFER1+5);Format_DateTime(DateTime1,LCD_DSY_BUFFER1+8);Format_DateTime(DateTime0,LCD_DSY_BUFFER1+11); Display_LCD_String(0x00,LCD_DSY_BUFFER1);if(P32=0) F+;switch(F) case 1:Display_LCD_String(0x40,LCD_DSY_BUFFER2);break;case 45:Play(2),Display_LCD_String(0x40,LCD_DSY_BUFFER3
37、);break;case 55:Display_LCD_String(0x40,LCD_DSY_BUFFER2);break;case 100:Play(2),Display_LCD_String(0x40,LCD_DSY_BUFFER4);break;case 115:Display_LCD_String(0x40,LCD_DSY_BUFFER2);break; case 150:Play(2),Display_LCD_String(0x40,LCD_DSY_BUFFER5);break;case 170:Display_LCD_String(0x40,LCD_DSY_BUFFER2);br
38、eak;case 200:Play(2),Display_LCD_String(0x40,LCD_DSY_BUFFER5);break;case 210:Display_LCD_String(0x40,LCD_DSY_BUFFER2);break;case 260:Play(2),Display_LCD_String(0x40,LCD_DSY_BUFFER4);break;case 270:Display_LCD_String(0x40,LCD_DSY_BUFFER2);break; case 300:Play(2),Display_LCD_String(0x40,LCD_DSY_BUFFER
39、3);break;case 310:Display_LCD_String(0x40,LCD_DSY_BUFFER2),F=0;break; 附录3 头文件清单(reg52.h)/*-REG52.HHeader file for generic 80C52 and 80C32 microcontroller.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _REG52_H_#define _REG52_H_/* BYTE Registers */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;