




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要社会的不断发展和人们生活水平的提高,时间观念也成为人们关注的一个话题,设计一款适合现代人生活需求的电子万年历,并为人们生活提供方便是本设计的目标。采用STC89C52单片机作为控制器,DS12C887作为时钟芯片,DS18B20作为温度芯片,结合液晶1602,运用C语言编程设计了一款多功能电子万年历。电子万年历除显示年、月、日、时、分、秒、星期等信息外,还可以显示温度。由于时钟芯片运行可能会带来系统误差,添加了时间调整模块。考虑到设计的实用性,添加了闹钟功能,用户可以预先设定时间,当系统时间到达用户设定的时间时蜂鸣器会嘟嘟报警。同时添加了阴历查询功能,阴历和阳历能够自动互联,方便用户使用。考虑到设计的娱乐性,添加了音乐模块来模拟MP3,让用户在休息之余可以欣赏到优美的旋律。同时利用12个发光二极管来模拟12生肖,让设计更加完善。关键词:电子万年历,调整,阴历,十二生肖Abstract With the development of society and the improvement of peoples living standards, the concept of time has become a common topic for the people, so its necessary to design a suitable electronic calendar .The purpose of the design is to make peoples life more convent .My design uses STC89C52 MCU as the control chip, DS12C887 as a clock chip and DS1820 as the temperature chip ,combined with 1602 and using C programming language designed a multi-function electronic calendar .In addition to displaying year, month, day, hour, minute, second, week, and other information, can also display the temperature, due to clock chip run may give rise to systematic errors, added time to adjust the module. Taking into account the practicality of the design, add the alarm clock function, users can pre-set time, when the time reaches the user set the time the buzzer will beep alarm. Query functions added to the lunar calendar at the same time, lunar and solar calendar can automatically connected. Taking into account the design of entertainment, add a music module to simulate the MP3, so that users can enjoy a rest while the beautiful melody. At the same time using 12 LEDs to simulate the 12 zodiac, so that it can make the design perfect .Key words :E-calendar, Regulate, Lunar calendar, Zodiac34目 录第1章 设计要求与方案论证11.1 设计功能要求11.2 系统方案选择和论证11.2.1 控制器芯片的选择方案和论证11.2.2 显示模块选择方案和论证21.2.3 时钟芯片的选择方案和论证31.2.4 温度传感器的选择方案与论证41.3 电路设计最终方案决定4第2章 系统的硬件设计与实现52.1 系统硬件设计52.2 主要单元电路的设计62.2.1 单片机主控制模块的设计62.2.2 时钟电路模块的设计72.2.3 温度采集模块设计92.2.4 音乐模块设计102.2.5 十二生肖模块112.2.6 1602液晶模块122.2.7 按键模块14第3章系统的软件设计153.1程序流程框图153.2调整模块程序流程图163.3阴历程序流程图17第4章 调试及性能分析194.1硬件测试194.2软件测试204.3测试结果分析与结论214.3.1 测试结果分析214.3.2 测试结论21结 论22致 谢23参考文献24附录 设计系统部分源代码25系统电路图37ContentsChapter 1 program design requirements and Demonstration11.1 Design requirements11.2 System basic choices and arguments11.2.1 controller chip options and arguments11.2.2 Display Module options and arguments21.2.3 clock chip options and arguments31.2.4 Temperature Sensor options and arguments41.3 The finial decision4Chapter 2 System hardware design and implementation52.1 System Hardware Overview52.2 Main Unit Circuit62.2.1 Main Control Module62.2.2 Clock Circuit Module72.2.3 Temperature Acquisition Module92.2.4 Speaker Module102.2.5 Zodiac Module112.2.6 LCD Module122.2.7 Key Module14Chapter 3 System Software153.1 The program flow diagram153.1.1 Adjustment procedure flowchart163.1.2 Lunar program flow diagram17Chapter 4 Debugging and Performance Analysis194.1 Hardware Test194.2 Software Testing194.3 Test Results and Conclusion214.3.1 Analysis of test results214.3.2 Test Conclusions21Conclusion22Acknowledgements23References24Appendix Parts of Source Code of the Designed System25System Diagram37第1章 设计要求与方案论证1.1 设计功能要求该电子万年历除了能显示阳历年、月、日、时、分、秒、星期外,还添加了阴历模块,用户通过按键可以查询当前系统对应的阴历日期,而且阴、阳历能够自动关联。考虑到芯片工作时带来的误差和用户使用的方便性,添加了时间参数调整模块。同时可以设置闹钟,具有定时功能,方便用户使用。另外可以显示室内温度,可以显示十二生肖,具有直观的效果,具有音乐模块,方便用户在休息时间可以听音乐。考虑到DS12C887芯片误差较小,时钟精度较高。1.2 系统方案选择和论证1.2.1 控制器芯片的选择方案和论证 目前市场上流行的主流控制芯片主要单片机、ARM、SOPC、FPGA等,考虑到芯片的实用性、复杂程度和系统硬件设计的成本等问题,下面简单介绍ARM芯片和单片机的选择。 1.方案一 采用ARM芯片作为硬件核心,采用RISC架构的ARM微处理器具有如下的特点:(1)体积小、低功耗、低成本、高性能;(2)支持Thumb/ARM双指令集,能很好的兼容8位、16位器件;(3)大量使用寄存器,指令执行速度更快;(4)大多数数据操作都在寄存器中完成;(5)寻址方式灵活简单,执行效率高1。 2.方案二 STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C52可以按照常规方法进行编程,也可以在线编程2。它将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。STC89C52单片机采用高性能的静态80C51设计,并并采用先进工艺制造,还带有非易失性Flash程序存储器3。它是一种高性能、低功耗的8位CMOS微处理器芯片,市场应用最多。而且考虑到单片机芯片价格便宜,控制方便,便于应用,因此本设计采用STC89C52作为控制芯片。1.2.2 显示模块选择方案和论证 作为输出模块,常用的显示设备主要有数码管、1602液晶、12864液晶、LCD显示屏,不同的显示设备用在不同的场合,结合本设计的特点和芯片的固有特性,下面介绍几种显示设备的特性。 1.方案一 采用1602液晶显示屏,1602液晶为5V电压驱动,带背光,可以显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集库,只有并行接口,无串行接口。液晶显示屏的显示功能强大,考虑到设计和驱动方便,采用1602液晶作为显示模块,稳定方便,避免采用数码管带来的显示不稳定的问题4。 2.方案二 当采用LED数码管显示时,需要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。根据数码管的驱动方式的不同,可以分为静态式和动态式两类。当采用静态显示时,显示的数字会比较稳定,但是会浪费大量的I/O口。所谓动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极增加位选通控制电路,位选通由各自独立的I/O线控制5。当单片机输出字形码时,所有数码管都接收到相同的字形码,此时哪个数码管会显示出字形,取决于单片机对片选信号的控制。这种控制方式可以连接多个数码管,但是考虑到程序运行的时间和延时问题,会造成数码管闪烁,延时时间不好控制。作为本设计综合多方面考虑,采用1602液晶是最佳方案。1.2.3 时钟芯片的选择方案和论证 单片机时间的产生可以应用内部的定时器,也可以搭接外部硬件电路,使用时钟芯片,下面分别介绍各种选择的特点。 1.方案一 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,时间误差较大。所以不采用此方案。 2.方案二 采用DS1302作为时钟芯片,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,8位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,当电压为2.5V时,耗电小于300nA6。考虑到DS1302芯片内部没有闹钟寄存器,而且不带锂电池供电,因此设计不易采用该时钟芯片。 3.方案三 DS12C887时钟芯片能够自动产生世纪、年、月、日、时、分、秒等时间信息,内部带有世纪寄存器。DS12C887中自带锂电池,外部掉电时,其内部时间信息还能够保持10年之久。DS12C887时钟芯片中带有128BRAM,其中11BRAM用来存储时间信息;4BRAM用来存储DS12C887的控制信息,113B通用RAM供用户使用。闹钟寄存器可设置为每秒一次至每星期一次7。.2.4 温度传感器的选择方案与论证随着科学技术的进步,现在的温度芯片内部都带着AD转化,这样减少的硬件设计的复杂程度。不同的系统采用不同的温度传感器,结合本设计下面就论述热敏电阻和DS18B20温度芯片。 1.方案一 使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。 2.方案二 采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点8。1.3 电路设计最终方案决定根据以上各方案所述,考虑到硬件设计的稳定性和编程的简易性,以及芯片价格和规格等因素,对此次设计的方案最终选定为: 采用STC89C52作为主控制系统;DS12C887作为时钟芯片;数字式温度传感器DS18B20;液晶1602作为显示模块。第2章 系统的硬件设计与实现 硬件设计是电路设计的基础,也是设计的最关键部分。单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等。当不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路,系统的扩展和配置应遵循一定的原则。硬件设计要考虑到很多因素,如系统的稳定性、准确性、易编程性等,下面将分模块介绍系统的硬件设计与实现。2.1 系统硬件设计 按照系统设计的功能要求,确定硬件系统由主控制模块、时钟模块、温度采集模块、音乐模块、1602模块、键盘扫描模块、十二生肖模块七个模块组成,图2-1为系统结构框图。时钟模块采用DS12C87,温度采集模块采用DS18B20芯片,音乐模块采用LM384驱动喇叭,1602液晶作为显示模块,键盘扫描用6个独立按键,12个发光二极管模拟12生肖模块。1602显示模块 主控模块 时钟模块1602显示模块键盘扫描模块 温度采集模块十二生肖模块 音乐模块图2-1 系统结构框图2.2 主要单元电路的设计 本设计系统的主要模块有七部分构成,主要包括单片机主控模块、时钟电路模块、温度采集模块、音乐模块、十二生肖模块、1602液晶显示模块、键盘扫描,下面分别介绍各模块主要功能和设计。2.2.1 单片机主控制模块的设计 STC89C52单片机为40引脚双列直插芯片,有4个I/O口分别为 P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。单片机的最小系统图2-1所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端9。单片机P0口作为普通IO使用时是漏极开路形式的,在不加上拉电阻的情况下,输出0时是低电平,输出1时是悬浮的,状态不确定,因此加入上拉电阻10。单片机工作的最小电路为:电源、晶振、复位,图2-2为单片机工作的最小电路。 图2-2 单片机最小系统2.2.2时钟电路模块的设计 (1)DS12C887与单片机连接 时钟芯片采用DS12C887,它是一款纯数字式的芯片,只要它与单片机的I/O口直接相连就可以操作它。图2-3为DS12C887时钟芯片连接图。操作DS12C887时钟芯片共需要13条信号线,分别是并行数据地址复用线AD0-AD7,CS,AS,R/W,DS和IRQ。然后将RESET引脚固定接高电平,再将DA12C887芯片的VCC和GND引脚与电源和地相连接即可。DS12C887芯片的数据地址复用线可以与单片机的P0口相连。P0口同时连接着液晶1602数据口,这样复用不会发生冲突,因为单片机在操作液晶的时候是不会操作DS12C887的,它们自都有片选信号,选中时操作对应的芯片就不会造成冲突。DS,AS,R/W和CS分别连接到单片机P2.4-P2.7。IRQ是DS12C887芯片的中断申请端,该引脚不能随便连接,必须与单片外部中断引脚连接,这样当DS12C887芯片向单片机申请中断时,单片机才不会遗漏地检有里我们将其与单片机的P3.3口连接,这里的中断用来设置闹钟。图2-3 DS12C887时钟芯片连接图 (2)DS12C887写操作和读操作 DS12C887操作控制包括写操作和读操作。主要对应的端口有数据口P0、RW、DS、CS、AS。当进行写操作控制时,先写入地址再写入数据,首先片选信号CS为低电平,AS、DS、RW为高电平,当P0再送入地址信息后,AS、RW分别拉为低电平。接着P0口再送入控制命令,AS、DS、RW拉为高电平,完成控制命令写入到芯片。当进行读操作时,也是先地址信息到P0口,操作类似于写控制中的送地址 信息,然后再将对应的地址上的数据信息送到P0口,完成读操作。(3)DS12C887时间、日历、闹钟区域 从DS12C887中读取时间信息就是对相应的地址位进行控制,时间、日历、闹钟的数据格式如下表2-1所示。 表2-1 DS12C887寄存器具体地址及取值地址功能取值范围十六进制BCD码0 秒0-5900-3B00-591秒闹钟0-5900-3B00-592分0-5900-3B00-593分闹钟0-5900-3B00-59424小时模式0-2300-1700-235时闹钟0-2300-1700-236 星期1-701-0701-077日1-3101-1F01-318月1-1201-0C01-129年0-9900-6300-99 当要对读取秒的值时,可以调用DS12C887读操作,此时的地址就是秒对应的地址0,读到的信息保存在数据口P0。当设置闹钟时,就是对DS12C887进行写操作,写入的地址位秒闹钟对应的地址,此处为1,要写入的信息就是用户设置的值。 2.2.3 温度采集模块设计采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P1.7与DS18B20的I/O口连接同时在数据线上加一个上拉电阻4.7 K电阻,另外2个脚分别接电源和地。DS18B20典型电路如图2-4所示。图2-4 DS18B20连接图系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。主机控制DS18B20完成温度转换必须经过3个步骤:初始化、RO操作指令、存储器操作指令。当单片机系统所用的晶振频率为11.0592 MHz,根据DS18B20的初始化时序、写时序和读时序,分别编写3个子程序:Init_DS18B20为初始化子程序,WriteOneChar为写(命令或数据)子程序,ReadOneChar读数据子程序,所有的数据读写均由最低位开始。为了便于读取温度信息信息可以编写带有返回值的ReadTemperature函数,返回值就是DS18B20读取到的温度,可以通过编程将初始化子函数、写子函数、读子函数全部集中到ReadTemperature函数中去,这个可以给用户提供一个很好的接口,方便用户使用。2.2.4 音乐模块设计音乐模块采用LM386来驱动喇叭,LM386作为一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。LM386的外形和引脚的排列如下图2-5所示。引脚2为反相输入端,3为同相输入端,引脚5为输出端,引脚6和4分别为电源和地,引脚1和8为电压增益设定端。 图2-5 LM386连接图 本设计中播放的音乐是同一首歌,首先要对音乐进行编码,然后设计中采用了现有的程序入口,加载音乐编码,当音乐键按下时就调用音乐模块子程序播放音乐。2.2.5 十二生肖模块本设计采用74HC595来驱动12个放光二极管来模拟12生肖,考虑到直接连接到单片机I/O口上会造成端口的浪费,因此选择使用74HC595来驱动。74HC595是具有8位移位寄存器和一个存储器,三态输出功能。它的引脚描述如下:Q0-Q7并行数据输出,GND接地,Q7串行数据输出,MR主复位(低电平有效),SHCP移位寄存器时钟输入,STCP存储寄存器时钟输入,OE输出有效(低电平有效),DS串行数据输入,VCC电源。74HC595在工作时,每个SH_CP上升沿数据从SIN端口串行输入,延迟8个时钟周期数据从SOUT端口串行输出。每个ST_CP上升沿,最后输入的8位串行数据被锁存到内部寄存器,当OE有效,该8位数据在Q0-Q7端并行输出,反之Q0-Q7端为高阻态。当12个发光二极管对应端为低电平时,将点亮放光二极管,来表示相应的年份。由于一次只能点亮一个发光二极管所以采用数组的形式来传递编码,编码为20为二进制数,一个编码只有一位为0,每次传递时移动16位,这样可以就通过74HC595把编码传递给发光二极管,相应的发光二极管点亮。图2-6 12生肖连接图2.2.6 1602显示模块1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含有128个字符的ASCII字库,只有并行接口,无串行接口。液晶接口如图2-3所示。液晶在使用时注意事项:(1)液晶1,2端为电源,15,16为背光电源,为防止直接加5V电压烧坏光灯,在15脚串联一个10欧姆电阻用于限流。(2)液晶3端为液晶对比度调节端,通过一个10千欧姆电位器接地来调节液晶显示对比度。首次使用时,在液晶上电状态,调节到液晶上面一行显示出黑色小格为止。(3)液晶4端口为液晶控制器写数据/写命令选择端,接单片机的P3.0口。表2-3 液晶1602接口信号说明编号符号引脚说明编号符号引脚说明1Vss电源地9 D2数据口2VDD电源正极10D3 数据口3VO液晶显示对比度调节端11D4数据口4RS数据/命令选择端12D5数据口5R/W读写选择端13D6数据口6E使能信号14D7数据口7D0数据口15BLA背光正极8D1 数据口16BLK背光负极(4) 液晶5端为读/写选择端,因为我们不从液晶读取任何数据,只向其写入命令和显示数据,因此此端始终选择为写状态,即低电平接地。液晶6端为使能信号,是操作时必需的信号,接单片机的P3.2口。(5) 液晶在首次使用时屏幕可能会暗,这时要不断的转动滑动变阻器直到屏幕上显示出来字符,下次可以直接使用。图2-7 1602液晶连接图2.2.7 键盘扫描模块 本设计用到键盘为独立按键,独立按键操作方便,编程较为容易,采用程序查询法编程。BUT1到BUT6分别连接到P2.0到P2.5,BUT1实现时间调整切换,BUT2、BUT3时间参数加减,BUT4用来设置闹钟,BUT5用来查看阴历日期,BUT6用来播放音乐。 图2-8 键盘扫描连接图第3章 系统的软件设计3.1 程序流程框图 多功能电子万年历在不按下任何按键的情况下,显示基本的时间信息和温度。当程序执行时,初始化完毕后就开始扫描键盘,当有按键按下时执行相应程序,主程序流程图如图3-1所示。开始芯片初始化 闹钟中断?Y 闹钟报警NY 调整按键? 调整模块YN 音乐按键? 播放音乐NY 阴历按键? 阴历模块N显示时间、温度 图3-1 主程序流程图3.2调整模块程序流程图时钟芯片DS12C887运行难免出现误差,因此添加时间调整模块。调整时间信息就是改变时钟芯片里寄存器的数值,然后再把它读出来显示出来。当首次按下调整按键时,液晶1602秒对应的位置闪烁,此时改变秒的数值。这时检测加1按键和减1按键,当加1按键按下时,秒寄存器内的数字加1,当减1按键按下时,秒寄存器的数值减1。调整完秒时再按下调整按键就可以调整分,然后依次调整时、星期、日、月、年,各个参数的调整流程相同,如下图3-2为调整秒流程图。调整模块入口 调整键按下?NYY时间加1 加1键按下?NY 减1键按下?时间减1N下一状态调整返回图 3-2 调整秒流程图3.3阴历程序流程图阴历程序的实现是靠阳历日期来推算的。要根据阳历日期,首先要设计计算方法。推算方法:根据阳历当期日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年为29天,平年为28天)。阴历一年又12个月或者13个月(含闰年),一个月为30天或者29天。如果把一个只有29天的月成为小月,用1标志,把30天的月成为大月,用0标志,那么12位二进制就能表示一年12个月的大小。因此设计每年用三个字节,可以表示阳历年对应的阴历数据。第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,BIT3-0 对应农历第1-4 月的大小。第二字节BIT7-0 对应农历第5-12 月大小,第三字节BIT7 表示农历第13 个月大小。月份对应的位为1 表示本农历月大(30 天),为0 表示小(29 天)第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日期。总共用3个字节就可以存储一年中任何一天的阳历与阴历对应关系的有关数据。计算完当前阳历日期为该年中的第几天后,在减去阳历该年春节和元旦的日差,如果够减,则相减的结果就是阴历在该年的第几天了,根据该数据就可以推算出具体的当前阴历日期;如果不够减,则表示当前阴历年味阳历年的前一天年。在这种情况下,根据实际,当前阴历会处于11月或者12月份, 此时春节和元旦的日差减去前面计算出来的当前阳历日期在阳历年味第几天的数据,其结果表示当期阴历日期离春节的天数。计算出天数后,为了减少运算,用了两个表 day_code19、day_code23 ,如果公历月在九月或前,天数会少于0xff,用表day_code19,在九月后,天数大于0xff,用表day_code23。例如输入公历日为8月10日,则公历日离元旦天数为day_code18-1+10-1 ;如输入公历日为11月10日,则公历日离元旦天数为day_code211-10+10-1 。 计算出阳历为一年中第几天后,就可以根据它来推算阴历日期。推算方法:先用总天数减去春节和元旦的日差(Day表示),如果结果为1,则改天恰好就是春节(因为春节在元旦之后,在计算春节和元旦的日差,假设元旦为0天,春节为n天,则日差为n,而前面计算的阳历总天数是该天在该年中第几天,是以元旦1而得到的,与计算春节和元旦日差的这种方法相比,其数值少了1,所以要在原来本应该为0作为该天就是春节的根据的基础上加1,即以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年,从12月份开始查表计算;如果结果大于1,说明阳历和阴历为同一年,从1月份开始查表计算,可以就恩能够推算出改天对应的阴历日期,阴历程序流程图如图3-3所示。阴历模块入口 计算阳历是该年第几天 Day? 不等于1小于1 Day? 该天为春节等于1大于1 从12月开始计算 从1月开始计算显示阴历日期 返回图 3-3 阴历程序流程图 第4章 调试及性能分析 调试过程是设计过程中不能缺少的一个环节,因此一般在设计过程中都分模块设计,每个模块之间通过某些接口互相联系,这样可以在调试好的模块上不断完善,达到最终的设计要求。调试过程一般分为硬件调试和软件调试,现在将分别介绍本设计的调试过程。4.1 硬件调试 在制作面包板的过程中要焊接大量的导线,考虑到焊锡和导线的质量问题,和焊接水平存在缺陷,所以焊接过程中难免会出现错误。在焊接过程中庞大的电路系统中只要出现一处连线错误,就会对以后的检查造成很大的麻烦,而且由于电路的交线较多,对于各种锋利的引脚要注意处理,否则造成带有导线的外皮露出,造成短路现象。该电子万年历的硬件调试中遇到了很多的问题,以下为主要的问题。 (1)焊接单片机最小系统时,虽然按照电路图一步一步的焊接,但是当往单片机里下载程序时,出现了错误。仔细对照原理图没有发现问题,但是看到已经焊接好的最小系统板时发现MAX232的其中一个电容的阻值错了,当换上104电容后问题得到了解决,程序可以下载到单片机上,并且顺利点亮的第一个发光二极管9。 (2)在焊接电路时,考虑到是直接将导线连接到单片机的拐角上还是将接口留出来,留出口来对于编程是灵活,因此焊接时要考虑充分。留出接口带来的问题是接线显的比较乱,最终将系统分成了三块板,一块是最小系统板,一块是液晶1602和DS12C887,最后一块是音乐模块和十二生肖模块,这样可以分块调试,减小一些麻烦。 (3)在焊接1602液晶的过程中,15、16脚焊接反了,电源和地连接错误导致液晶不能显示字符,经过万用表测试发现错误。 (4)当各个模块都焊接好时,由于面包板自身存在的问题,背面的导线可能因为意外造成短接或者虚接,解决办法就是用一块大板及其固定住,这样避免导线带来的问题。同时考虑到各个小板导线连接的美观性,让导线从板子背面穿过。4.2 软件测试 数字型电子万年历,可以看到系统当前时间的信息和温度,同时还有用户实用的功能。考虑到电子万年历功能较多,所以对于它的程序也较为复杂,因此在编写程序和调试时会出现相对较多的问题。经过多次子模块程序的修改,最终解决了软件问题。在软件的调试过程中主要遇到的问题。 (1)DS12C887芯片不能显示时间信息解决:将DS12C887数据口接到P0口,注意P0口一定要加上拉电阻。这样原来不能显示时间的问题解决了。 (2)修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,阴历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题. (3)十二生肖对应的12个发光二极管不能跟年的信息同步解决:将十二生肖模块对应的程序放到调整年程序的模块中,这样在调整年信息的同时可以对发光二极管进行检测,让其产生同步。4.3测试结果分析与结论4.3.1测试结果分析 对于电路焊接方面存在的问题,只能万用表来检测,在焊接的过程中难免存在焊虚的地方,出现上面的问题要仔细对照电路图,用万用表一个一个的检查,只有在硬件焊接正确的前提下,才有编写出程序来,因此焊接电路一定仔细,这样才能避免一些没有必要的错误,显示相应的功能。 编程方面可以有时候想的跟看到的实验结果不一样,这也是在编程过程中经常出现的问题,可以忘了初始化某些端口和变量,也可能是0和1弄反了。记着在编写十二生肖模块时,由于没有留意int 和char 型变量的值的范围而编程不正确,得不知道结果,结果调试了挺长时间。4.3.2 测试结论 经过反复测试与分析,可以对电路的原理及功能更加熟悉,对各个芯片的了解更加深刻,同时提高了设计能力与及对电路的分析能力.在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固。结 论多功能电子万年历完成了设计的基本要求,在正常状态下能够显示年、月、日、时、分、秒、星期、温度等基本信息,而且用户可以根据自己的需要查看阴历时、分、秒,阴历与阳历可以直接关联起来。同时可以调整时间信息,避免出现较大的误差。考虑到系统的实用性,添加了音乐模块,当用户放松时可以播放音乐,达到娱乐的效果。用十二个发光二极管来模拟十二生肖,设计过程中实现了较多的功能。 电子万年历在设计过程中主要是作为学习用,现实生活中很少用单片机作为控制器制作万年历。另外在设计过程中首先考要虑时间的准确性,因为在设计过程中采用的是DS12C887时钟芯片,时间均从芯片中读出来,没法改变因此在设计过程中没有考虑这个问题,因此最好能设计一种方案或者算法考虑到时间的准确性。 由于设计过程中时间紧迫和缺乏设计经验,没用添加一个无线传输模块。因为目前的电子万年历都挂在较高的地方,使用者调整时间参数非常的不方便,有时可能要挂在较高的建筑物上,这样调整成为了不可能。这时如果加入无线调整模块,使用者通过手中的遥控器,就可以调整万年历上的时间参数,使用起来非常的方便。这样的控制类似于家里的电视的遥控器,因此加入无线传输模块会让设计更加完美,而且有使用价值。致 谢毕业设计是对知识运用能力的一次全面的考核,也是对进行科学研究基本功的训练,培养综合运用所学知识独立地分析问题和解决问题的能力,为以后撰写专业学术论文打下良好的基础。本次设计能够顺利完成,首先要感谢母校黑龙江科技学院,是她提供了学习知识的土壤,在这里茁壮的成长,再次感谢计算机与信息工程学院提供毕业设计的需要的器件和学习实验室,让我们有足够的时间和精力来完成本次毕业设计。在设计的过程中得到了蔡桂英老师的悉心指导,每当有问题,老师总是耐心的解答,使我能够充满热情的投入到毕业设计总去,在此向指导教师致以诚挚的谢意。还要感谢同学们,他们热心的帮忙,使我感到了来自兄弟姐妹的情谊。参考文献1 肖洪兵.跟我学用单片机M.北京航空航天大学出版社,2002:20-25 2 雷钢,王宏远.基于AVR单片机的控制系统设计J.计算机与数字工程 2009.(2):23- 253 丁茹,李辉.单片机原理及应用课程J.天津工程学院学报.2003.(1) 24-26 4 孙斌.液晶显示模块在单片机系统中的应用微计算机信息.J.2009, J.2009,(3):30-325 江世明,刘湘涛.省级重点建设课程的创新与实践J. 怀化学院学报.2006,(8):140-1426 何立民.单片机高级教程M.北京航空航天大学出版社,2001 (2):34-387 曹彩萍.基于单片机的键盘接口的设计与实现J.2006,(1):7-98 王悦善,陈曾汉.PC机与单片机接口技术的研究J.2006,(10):10-149 黄娇清,王宜怀. 51系列单片机C语言的若干编程技术J.2009,(1): 112-11510 梁家海.基于MCS-51系列单片机的并发式显示系统的设.J.2006, (1):45-5011 李剑心.基于单片机的红外发射器J.学术版.2006,(1):20-2112 金仁贵.单片机应用系统的开发方法J.电脑知识与技术.学术交 流,2006,(12):34-3613 李海鲲.Proteus在单片机课程设计中的应用J.2009,(1):2-314 葛素娟,朱祥贤.单片机应用系统的抗干扰技术J.重庆科技学院学 报:自然科学版.2009,(4):50-5315 KuglanP,KriegerE,SantiagoE.the_8051_microcontroller. 2009,P110-122附录 设计系统部分源代码主函数代码:#include#include#include#include#include#include#include#include#include#include#includeuchar num=0;void main()/主函数init();/调用初始化函数的说法当时 BeepIO=1; Com_init();while(1) keyscan();/按键扫描if(flag_ri=1)/当闹钟中断时进入这里 di();delay(100);di();delay(500);if(flag=0&flag1=0)/正常工作时进入这里beep=1;keyscan();/按键扫描year=read_ds(9);/读取12C887数据month=read_ds(8);day=read_ds(7);week=read_ds(6);shi=read_ds(4);fen=read_ds(2);miao=read_ds(0);write_sfm(10,miao);/送液晶显示write_sfm(7,fen);write_sfm(4,shi);write_week(week);write_nyr(3,year);write_nyr(6,month);write_nyr(9,day); write_temp(ReadTemperature(); void exter() interrupt 2/外部中断1服务程序uchar c; /进入中断表示闹钟时间到,flag_ri=1; /设置标志位,用以大程序中报警提示c=read_ds(0x0c);/读取12C887的C寄存器表示响应了中断阴历程序代码:bit get_moon_day(uchar month_p,uint table_addr) uchar temp; switch (month_p) case 1: temp=year_codetable_addr&0x08; if (temp=0) return(0);else return(1); case 2: temp=year_codetable_addr&0x04; if (temp=0)return(0);else return(1); case 3:temp=year_codetable_addr&0x02; if (temp=0)return(0);else return(1); case 4:temp=year_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年发动机试车台合作协议书
- 2025年雕刻雕铣设备控制系统合作协议书
- 商业消防设施检测与维护合同
- 民用建筑工程质量检测协议
- 日用百货采购与存储协议
- 2025年软胶囊剂机械项目建议书
- 会场租赁协议与会展场地租赁协议
- 展示职业背景与经验工作证明(6篇)
- 外包服务公司承揽协议
- 行政管理公文出题规律试题及答案
- 第18课《井冈翠竹》课件-2024-2025学年统编版语文七年级下册
- 第16课《有为有不为》公开课一等奖创新教学设计
- 【MOOC】《思想道德与法治》(东南大学)章节中国大学慕课答案
- 【MOOC】以案说法-中南财经政法大学 中国大学慕课MOOC答案
- 卜算子-送鲍浩然之浙东课件
- MOOC 中医与辨证-暨南大学 中国大学慕课答案
- 年产10吨功能益生菌冻干粉的工厂设计改
- 国家开放大学《高等数学基础》形考任务1-4参考答案
- 聚焦离子束系统虚拟仿真实验报告
- 脚手架进场质量验收表
- 商业保理行业分析实施报告
评论
0/150
提交评论