课程设计:基于单片机AT89C51数字时钟设计说明书.doc
摘要本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计了多功能数字时钟系统。该时钟系统主要由时钟模块、环境温度检测模块、液晶显示模块以及键盘控制模块组成。系统具有简单清晰的操作界面,能在4V7V直流电源下正常工作。能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关、止闹功能,能够对时钟所在的环境温度进行测量并显示。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。由于系统所用元器件较少,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。关键词:单片机,数字时钟,时间调整,温度显示目 录1、绪论11.1 课题的提出及研究意义11.2 数字时钟的发展现状21.3 课题研究目的和研究内容42、多功能数字时钟硬件设计52.1 主控制模块62.2 显示模块82.3 时钟模块112.4 温度模块122.5 串行通信接口电路152.6 电源转换模块162.7 本章小结173 软件设计部分183.1时钟程序的设计183.2 温度采集流程183.3 液晶程序模块193.4 本章小结204总结20参考文献21附录 多功能数字时钟设计程序221、绪论人类的生活和工作均离不开时钟。从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进着计时工具。钟表的数字化,大力推动了计时的精确性和可靠性。1.1 课题的提出及研究意义1.1.1 课题的提出近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的要求。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。数字钟成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便。在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性能价格比的不断提高,新一代产品的应用也越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能。小则可以用于家电控制,甚至可以用于儿童电子玩具。它功能强大,体积小,质量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。随着电子技术的飞速发展,家用电器和办公电子设备逐渐增多,不同的设备都有自己的控制器,使用起来很不方便。根据这种实际情况,设计了一个单片机多功能数字时钟,它可以避免多种控制器的混淆,利用一个控制器对多路电器进行控制,同时又可以进行时钟校准和定点打铃。它可以执行不同的时间表(考试时间和日常作息时间)的打铃,可以任意设置时间。这种具有人们所需要的智能化特性的产品减轻了人的劳动,扩大了数字化的范围,为家庭数字化提供了可能。电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。在城市的主要营业场所、车站、码头等公共场所使用LCD数字电子钟已经成为一种时尚。但目前市场上各式各样的LCD数字电子钟大多数用全硬件电路实现,电路结构复杂,功率损耗大等缺点,因此有必要对数字电子钟进行改进。1.1.2 课题研究的意义多功能数字时钟的用途十分广泛,只要有计时的存在,便要用到数字时钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费者的喜爱。随着人类科技文明的发展,人们对于时钟的要求在不断提高。时钟已不仅仅被看出一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。高精度、多功能、小体积、低功耗,是现代时钟发展的趋势。在这种趋势下,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。1.2 数字时钟的发展现状几种常用数字时钟设计方案:一、基于微机系统的数字时钟设计计时单元由定时/计数器8253的通道0来实现。定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。8253定时时间到了之后产生中断信号,8253在中断服务程序中实现时、分、秒的累加。时间显示采用实验平台上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。按键包括校时键、闹钟定时键、加1键和减1键等。报警声响用蜂鸣器产生,将蜂鸣器接到8255的一个端口,通过输出电平的高低来控制蜂鸣器的发声。系统硬件设计主要利用微机实验平台上的电路模块。硬件电路主要由键盘电路、单脉冲产生单元、8253定时计数器、8255并行接口单元、8259中断控制器、LED显示电路和蜂鸣器电路等等。系统的硬件电路设计框图如图1所示。图1.1 基于微机系统的数字时钟设计框图二、基于VHDL的数字时钟设计基于VHDL语言,用Top_Down的思想进行设计。用CN6无进位六进制计数器选择数码管的亮灭以及对应的数,循环扫描显示,用SEL61六选一选择器选择给定的信号输出对应的数送到七段码译码器。K4模块进行复位,设置小时和分,输出整点报时信号和时,分,秒信号。单元模块设计部分对应的数模块CN6信号选择模块SEL61七段码译码器模块DISP图1.2 基于VHDL数字时钟的设计模块单元模块设计部分分三个部分,介绍数字钟选择显示数码管和对应的数模块CN6,信号选择模块SEL61,七段码译码器模块DISP和复位,秒,分,时显示,设置模块。三、基于单片机数字时钟设计基于单片机的数字时钟设计是模块化设计,以单片机做主控制模块,控制时钟芯片、温度传感器芯片等,又将数据控制输出到显示模块。基于MCS-51单片机的数字时钟系统具有显示准确、直观、易于调整等特点。单片机自诞生以来给全世界人类的生活和工作起到了剧烈的变化,而MCS-51单片机是我国使用最早、最易掌握和应用的一款单片机。通过该系统的设计,对单片机的原理和功能有个比较系统和全面的掌握,初步学习到有关工程设计的方法和思路。这样以后的就业面会更加宽广,也可以满足当今社会对单片机开发人才的大量需求。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,录象机、摄象机,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。1.3 课题研究目的和研究内容1.3.1 课题研究目的日常生活中人们离不开时钟。本文介绍是基于单片机的多功能数字时钟,在传统的时钟基础上它具有走时准确、显示直观、无机械传动装置等优点。随着电子产业的发展,时钟的数字化、多功能化已经成为现在时钟生产研究的主导设计方向。1.3.2 课题研究内容采用模块设计法完成多功能数字时钟的设计。基本功能是时钟显示,能准确显示“时”、“分”、“秒”,并具有快速校准时、分、秒的功能。时钟显示同时具有实时温度显示。扩展功能有具整点报时功能以及闹钟功能。2、多功能数字时钟硬件设计基于单片机的多功能数字时钟的设计,单片机芯片作为控制系统的核心部件,它除了具备微机CPU的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制。在本次设计中采用单片机技术来实现数字钟的功能。方案的设计可以从以下几个方面来确定。微处理器的选择,AT89S51是2003年ATMEL推出的新型品种,除了完全兼容8051外,还多了ISP编程和看门狗功能。显示电路的设计,随着科技的发展,液晶显示的使用越来越方便,已被普遍的使用。由于液晶显示与驱动都集成在一个芯片上,因此使用起来很方便。在这里采用液晶显示;校时和定时电路的设计;实时控制电路是时钟电路的一个重要组成部分,采用的是一个时钟芯片,单片机从中读取数据送到显示器上显示,从而实现数字钟的功能;还有一些其他控制电路如复位电路、时钟电路等。通过这些控制电路的连接构成了完整的电路.按照系统设计功能的要求,初步确定设计系统由电源转换模块、主控制模块、时钟及温度模块、显示模块、键盘接口模块共5个模块组成,电路系统构成框图如图2.1所示: 电源模块DS1302 STC89C52主控制模块键扫描电路 显示电路 DS18B20图2.1电路系统构成框图2.1 主控制模块2.1.1 STC89C52RC单片机的特性概述STC89C52是STC公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,可灵活应用于各种控制领域。其主要功能有:与MCS-51产品指令系统完全兼容;4k字节可重擦写Flash闪速存储器;1000次擦写周期;全静态操作:0Hz24MHz;三级加密程序存储器;128×8字节内部RAM;32个可编程IO口线;2个16位定时计数器;6个中断源;可编程串行UART通道;低功耗空闲和掉电模式2.1.2 STC89C52RC管脚说明 脚图如下图所示:图3.6 STC89C52引脚图VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口。 P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.2 显示模块随着科技的发展,液晶显示的使用越来越方便,已被普遍的使用,所以本次设计采用液晶显示。液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。由于液晶显示与驱动都集成在一个芯片上,因此使用起来很方便。数字钟要显示现在的日历时间包括年、月、日、星期、时、分、秒,在这里采用1602LCD液晶显示。2.2.1 1602LCD显示器的结构编号符号引脚说明编号符号引脚说明1VSS电源地9D2Date I/O2VDD电源正极10D3Date I/O3VL液晶显示偏压信号11D4Date I/O4RS数据/命令选择端(V/L)12D5Date I/O5R/W读/写选择端(H/L)13D6Date I/O6E使能信号14D7Date I/O7D0Date I/O15BLA背光源正极8D1Date I/O16BLK背光源负极图 1602液晶接口引脚定义1、2 组电源 一组是模块的电源 一组是背光板的电源 均为5V 供电。2、VL 是调节对比度的引脚调节此脚上的电压可以改变黑白对比度3、RS 是很多液晶上都有的引脚 是命令/数据选择引脚 该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。4、RW 也是很多液晶上都有的引脚是读写选择端 该脚电平为高是表示要对液晶进行读操作;为低时表示要进行写操作。5、E 同样很多液晶模块有此引脚通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化。6、D0D7 8 位双向并行总线,用来传送命令和数据。7、BLA是背光源正极,BLK是背光源负极。2.2.2 1602LCD数据原理读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无图2.4 1602LCD基本操作时序此液晶上电的时候需要初始化典型的指令码是38H,也就是上电的时候需要调用 void write_cmd(unsigned char command)这个函数写指令码,用法是write_cmd(0x38);执行完这个函数可以把液晶初始化成16x2 显示5x7 的点阵8 位总线接口。以下指令码用法相同。此液晶支持的指令码有 指令码功能00111000设置16×2显示,5×7点陈,8位数据接口第一行指令主要能完成的功能是 控制液晶显示否,光标显示否,光标闪烁否。共有以下8 种指令0000100008H关液晶显示 光标不闪烁 不显示光标位置0000100109H关液晶显示 光标不闪烁 显示光标位置000010100AH关液晶显示 光标不闪烁 不显示光标位置000010110BH关液晶显示 光标不闪烁 显示光标位置000011000CH开液晶显示 光标不闪烁 不显示光标位置000011010DH开液晶显示 光标不闪烁 显示光标位置000011100EH开液晶显示 光标不闪烁 不显示光标位置000011110FH开液晶显示 光标不闪烁 显示光标位置第二行指令主要能完成的功能是写完字符 光标或屏幕移动方向指令码功能80H+地址码(0-27H,40H-67H)设置数据地址指针2.2.3 显示模块的数据连接 1602LCD的D0D7的八位数据线分别接单片机89C51的P0.0P0.7。RS复位端接P2.0,EN使能端接P2.2,读、写信号端接P2.1图2.5 显示模块的数据连接图2.3 时钟模块单片机控制时钟模块,定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。本次设计采用DS12887芯片2.3.1 DS12887的性能特性DS12887为DALLAS公司生产的实时时钟芯片,除具有实时钟功能外,它还具有114字节的通用RAM。内藏锂电池,并与广泛应用的DS1287、MC146818B脚对脚兼容。本文从应用角度出发,概述了其功能特点、外部特性、内部结构及与微机芯片的接口应用。2.3.2 DS12887数据操作原理2.3.3 时钟模块的数据连接图2.9 时钟模块的数据连接2.3.4 键盘原理图键盘S1,S2,S3分别用做调时选择,上调按键,下调按键。2.4 温度模块多功能数字时钟拥有实时温度显示功能,由单片机将温度传感器数据控制输出由液晶显示。本次设计采用温度传感器是DS18B20.2.4.1 DS18B20的性能特性1.1 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。1.2 测温范围 55125,固有测温分辨率0.5。1.3 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温1.4 工作电源: 35V/DC1.5 在使用中不需要任何外围元件1.6 测量结果以912位数字量方式串行传送1.7 不锈钢保护管直径 6 1.8 适用于DN1525, DN40DN250各种介质工业管道和狭小空间设备测温1.9 标准安装螺纹 M10X1, M12X1.5, G1/2”任选1.10 PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。2:应用范围2.1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域2.2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。2.3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。2.5 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制2.4.2 DS18B20数据操作原理DS18B20的引脚功能图引脚引脚符号说明51GND地42DQ单线应用的输入、输出引脚33VDD电源图2.8 DS18B20的引脚功能独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55至+125。温度传感器可编程的分辨率为912位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。该装置信号线高的时候,内部电容器 储存能量通由1线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。 DS18B20的电源也可以从外部3V-5 .5V的电压得到。DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读,写都是从最低位开始。DS18B20有4个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号。2.4.3 温度模块的数据连接在设计中,温度传感器DS18B20的数据端口DQ与单片机89C51的P3.0。单片机读取数据送入显示模块进行温度显示。图2.10 温度模块及键盘接口模块连接图2.5 串行通信接口电路MAX232是电压转换芯片,将TTL电平转换成可以和电脑串口匹配的电压。DB9通过下载线缆与电脑连接,可以将程序下载到单片机上。2.6 电源转换模块日常用到的都是220V的交流电源,所以,需要用变压器将其转换为线路设计中所用到的直流电源。此转换后的直流电源为+12V,而线路设计中许多芯片所用到的电压为+5V,因此,还需有12V到5V的转换电路。此转换采用7805(三端稳压器)来完成,转换图如下:图2.11 7805电压转换电路当Vin>5V时,Vout端可得到稳定的5V电压。2.6 系统原理图2.7 本章小结本章通过对设计思想的介绍,分别对主控制模块、显示模块、时钟模块、温度模块以及电源转换模块的设计原理进行分析阐述。对各模块所需的芯片、元器件进行介绍。3 软件设计部分本次设计用Keil编程软件进行软件设计。Keil软件是目前最流行的开发系列单片机软件,近年来各仿真机厂商纷纷宣布全面支持Keil。Keil提供了包括C 编译器、宏汇编、连接器、库管理和仿真调试器在内的完整开发方案,通过集成开发环境将这些部分组合在一起。Keil支持汇编语言和C语言的程序设计,易学易用。3.1 时钟程序的设计对时钟芯片的操作主要包括2个方面:一是将芯片中的日期等数据读出来,二是在进行日期等设置时将设置的数据写入芯片,这也是按键处理时的主要内容。无论是读数据还是写数据,都要满足DS12887 对时序的要求。而对芯片各个数据部分的访问是通过地址进行的,且读和写的地址不一样。读出的数据同样要转为ASC II码,然后储存起来,等待送去显示。其流程图如下图所示:初始化读日期数据数据处理将设置的数据写入芯片转为ASCII送去显示3.2 温度采集流程系统程序的设计主要包括C程序主函数、DS18B20复位函数、DS18B20写字节函数、DS18B20读字节函数、温度计算转换函数和显示函数等,系统主程序设计流程图如图4.2所示。温度采集模块流程图3.3 液晶程序模块时钟需显示时间、温度。以上两个模块都需将数值送显示模块。液晶的一般初始化过程:延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置void en_toggle()en=0;/_nop_();delay();en=1;delay();/ _nop_();en=0; /液晶延时3.4 本章小结本章介绍了本次设计的软件部分的设计思想,即时钟程序与温度转换显示程序。4总结本设计能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整,具有闹钟时间设置、闹钟开/关、止闹功能,能够对时钟所在的环境温度进行测量并显示。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。基于单片机的数字时钟系统具有显示准确、直观、易于调整等特点,单片机所被占用的I/O口不多,因此系统具有一定的可扩展性。电子时代已经到来。做为新时代的我们,更应该提高自身能力,适应新时代的发展。知识来自实践,多去生活中探询所需要的。对于上述所提到的研究课题,我们应尽量考虑到人的因素,增强时钟的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生活氛围。所以,在设计的时候,应该从多方面、多角度去考虑问题,而且应该进一步提高时钟的质量。参考文献1 刘建英.基于单片机的时钟设计J.内蒙古石油化工,2005,1. 2余永权.ATMEL89 系列单片机应用技术,北京航空航天大学出版社,20023李广弟等.单片机基础,北京航空航天大学出版社,2001 4郁有文,常健,程继红.传感器原理及工程应用M西安:西安电子科技大学出版社,2008.75张韵华 符号计算系统Mathematica教程M 北京:科学出版社.20016张国营,陈缔缨 传感器实验指导书M.徐州:中国矿业大学物理实验中心.20087 张晔,王玉民.单片机应用技术M.高等教育出版社,2006.8AT89C51 Datasheet ,ATMEL,20049LCD1602 Datasheet www.21IC.com10DS1302 Datasheet ,DALLAS Semiconductor,200411DS18B20 Datasheet ,DALLAS Semiconductor ,200412李光飞.单片机C程序设计实例指导M. 北京:航空航天大学业出版社, 2005.13楼燃苗,李光飞. 51系列单片机设计实例M. 北京:航空航天大学业出版社, 2003.14马忠梅等. 单片机的C语言应用程序设计M. 北京:航空航天大学业出版社, 1999.15赖麒文. 8051单片机C语言彻底应用M . 北京:科学业出版社, 2002.5 心得体会通过本次的课程设计,我对专业知识有了更深的了解与体会。我们明白理论与实践相结合的必要性和重要性。它激发了我们两周的课程设计过程中,让我深深的感觉到自己在实际运用中的专业知识的匮乏,刚开始的一段时间里,对一些工作感到无从下手,茫然不知所措,在学校总以为自己学的不错,一旦接触到实际,才发现自己知道的是多么少,这时才真正领悟到“书到用时方恨少”的含义。而课程设计,就是给了我们这样一个机会。不谨提高了我们的动手能力,更是让我们,把学习中的知识有了更深的理解人们常说:“立足本行如下棋,输赢系于每个棋子”。大学,大代表广博,学代表学识。大学出去的人一定要有广博的学识才能算得上是真正的大学毕业生。从大学的第一天开始,我们就必须从被动转向主动,成为自己未来的主人,积极地管理自己的学业和将来的事业,做好人生和职业生涯规划。作为大学生,最重要的还是学习,学生第一要事是学习,学习好了才能做其他的事情。毕竟现在是知识,信息第一的时代,有了知识你才能改变,得到自己想要的,实现自己的梦想。总结一下在此次设计过程中的收获主要有二个方面:一是通过课程设计,学到了实践知识,同时进一步加深了对理论知识的理解,使理论与实践知识都有所提高,圆满地完成了此次实训的任务。二是通过这次学习,让我对各种自动化系统有了新的认识和更深的了解,增强了自己动手实践的能力。为就业和将来的工作取得了一些宝贵的实践经验。我想这次课程设计结束的同时,对自己以后的学习便是一个新的开始,争取精益求精,更上一层楼。“路漫漫其修远兮,吾将上下而求索”我相信自己在以后的学习中会不断的完善,不求最好只求更好!“天行健,君子以自强不息”。生活因奋斗而精彩。人生之路,使自己用双脚对全部生命历程的艰难丈量。每个人身后深深浅浅的脚印里,都蕴藏着许许多多个故事,蕴含着许许多多的快乐与艰辛。在这个弱肉强食的社会里,只有强者才有出路,才能在高手如云的环境中脱颖而出,占有一席之地。心如平原驰马,易放难收,趁着缰绳还在手,勒马回头,为时不晚。奋斗的过程很艰辛,也许一年两年都不会有什么进展,但只要保持一颗奋斗的心,总有“守得云开见月明”的时候。正如“临渊羡鱼,不如退而结网”。我们要永不退缩,永不言败!附录 多功能数字时钟设计程序#include<reg51.h>#include<intrins.h>#define busy (dq=0)#define uchar unsigned char uchar shu1,tshi,tge,td1,td2,temp_d,temp1;uchar code tab1=" Write By Wxg "uchar code tab2="V=12.0V"uchar rom8,year,month,date,week,shi,fen,miao,sflag,keys_num=0;/sbit p37=P37;sbit rs=P24;sbit rw=P25;sbit lcden=P26;sbit dq=P17;sbit dsas=P37;sbit dsrw=P33;sbit dsds=P36;sbit dscs=P35;sbit s2=P31;sbit s3=P32;bit temp_flag; void delayus(unsigned int us) /微秒延时,数据us不等值while(us-);void delayms(unsigned int k) /毫秒延时unsigned int i,j;for(i=1;i<=k;i+)for(j=1;j<=123;j+);void write_com(uchar com) /写液晶指令delayms(1);lcden=0;rs=0;rw=0;_nop_();lcden=1;P0=com;lcden=0;void write_shu(uchar shu) /写液晶数据 delayms(1);lcden=0;rs=1;rw=0;_nop_();lcden=1;P0=shu;lcden=0;void lcdinit() /液晶初始化 P0=0;/ p37=0;lcden=0;write_com(0x38);write_com(0x06);write_com(0x0f);write_com(0x01);void init_18b20() /18b20初始化dq=1;delayus(8);dq=0;delayus(80);dq=1;return;void check_exist() /检查18b20存在脉冲while(dq);while(dq);delayus(3);bit read_bit() /18b20位读取bit j;dq=0;_nop_();dq=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();j=dq;delayus(4);return