毕业设计(论文)-基于AT89C51单片机的数字钟设计.doc_第1页
毕业设计(论文)-基于AT89C51单片机的数字钟设计.doc_第2页
毕业设计(论文)-基于AT89C51单片机的数字钟设计.doc_第3页
毕业设计(论文)-基于AT89C51单片机的数字钟设计.doc_第4页
毕业设计(论文)-基于AT89C51单片机的数字钟设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海第二工业大学 计算机与信息学院本科毕业设计(论文) 摘要当前温度和时间的现场采集和显示系统已有广泛的使用,所以电子钟的应用范围非常的广,比如家里,公共场所还有一些特定的地方,如在电力,工业,农业等领域也有很多应用。本次设计的数字钟主要实现可以正确的显示时间日历,以及对环境温度的测量,并带有按键调整时间日历,和温度报警和定时闹钟功能。本次的毕业设计是以采用AT89C51单片机为核心,通过使用时钟芯片DS1302来实现时钟和日历的功能,同时利用DS18B20数字温度传感器来测量环境温度,最后通过LCD1602液晶显示器来把这些数据显示出来,同时利用按键来实现闹钟和数据的修改的功能以及温度的报警。这样的设计理念带来了许多好处,电路设计简单化,抗干扰能力强,时间和温度的精度高,数据清晰度高,而且提供了良好的人机界面。实践证明该系统的可靠性高,操作简单,除了可以应用在一般的生活和工作中,同时也可在电力化工等领域使用。关键字:AT89C51;DS1302;DS18B20;LCD1602;按键控制; ABSTRACT The current temperature and time of site acquisition and display systems had been widely used, so the electronic clock of the wide range of applications, like household, public places there are some specific places, such as in power, industry, agriculture and other fields have many applications . The main realization of the designed digital clock display correctly time / calendar, and the environmental temperature measurement, and with a key to adjust the time / calendar, alarm and temperature alarm and timer function. The graduation project is using AT89C51 microcontroller as the core, by using the clock chip DS1302 to achieve the clock and calendar functions, while using DS18B20 digital temperature sensor to measure ambient temperature, and finally through the LCD1602 LCD monitor to bring the data displayed ,at the same time using keys is achieving the alarm clock and data modification function and temperature alarm. This design has brought many benefits, simplified circuit design, anti-interference ability, time and temperature with high accuracy, high resolution data, but also provide a good user interface. The system proved reliable, simple operation, which can be used in the general life and work, but also in the areas of electrical, chemical use. Key words : AT89C51;DS1302;DS18B20;LCD1602;Key Control; 目录摘要.1ABSTRACT.2第一章 引言.51.1 数字钟研究的背景和意义.51.2 数字钟的功能.5第二章 数字钟的设计方案.6 2.1 单片机设计方案.6第三章 基于单片机的数字钟的硬件设计.7 3.1 核心部件的介绍.7 3.1.1 AT89C51单片机介绍.7 3.1.2 DS1302时钟芯片介绍.8 3.1.2.1 DS1302时钟芯片简介.8 3.1.2.2 DS1302时钟芯片引脚说明.8 3.1.2.3 DS1302片内寄存器.9 3.1.2.4 DS1302控制字和时序读写说明.11 3.1.3 DS18B20温度传感器介绍.12 3.1.3.1 DS18B20温度传感器简介和引脚说明.12 3.1.3.2 DS18B20温度传感器内部结构.13 3.1.3.3 DS18B20数据处理.14 3.1.3.4 DS18B20控制命令和读写时序.14 3.1.4 LCD1602液晶显示模块介绍.15 3.1.4.1 LCD1602液晶显示模块简介.15 3.1.4.2 LCD1602基本参数和引脚说明.16 3.1.4.3 LCD1602指令说明和读写时序.18 3.1.4.4 LCD1602RAM地址映射和以及标准库表.20第四章 数字钟硬件电路设计.21 4.1 时钟电路设计.21 4.2 温度采集电路设计. 4.3 数据显示电路设计. 4.4 按键设置电路设计. 4.5 闹钟和报警电路设计.第五章 数字钟的软件设计. 5.1 主程序设计. 5.2 子程序设计. 5.2.1 按键扫描子程序. 5.2.2 时钟日历子程序. 5.2.3 温度数据采集子程序. 5.2.4 显示子程序.第六章 软件调试. 6.1 时钟日历程序调试 6.2 温度数据采集程序调试 6.3 按键扫描程序调试第一章 引言 时间是人类生活必不可少的重要元素。如果没有时间的概念,社会将不会有所发展和进步。所以随着社会的不断发展,致力于数字钟的发展和研究有着重要的意义。1.1 数字钟研究的背景和意义自从单片机问世以来,以其高的性能比,和体积小,重量轻,价格低,可靠性高,开发简单,在我们生活中各个领域得到了广泛的应用,如航天,在电力,工业,农业等领域,因此用它开发的产品也比较多。在日常生活中时间和温度是人们时常关注的话题,时间对于人们来说总是那么的重要,由于一些特殊的原因使你无法了解当前的时间。所以为了解决这样一类问题,由此产生了一种数字钟,使你在任何地方都可以了解到当前时间并得到相应的提示信息,所以这种用51单片机开发的数字钟在当前应用范围的非常的广,比如家里,办公室里还有一些特定的地方,如在电力,工业,农业等领域也有很多应用,但是目前在应用的数字钟温度检测部分采用的是传统的电阻式温度传感器,导致测量的精度低,还要A/D转换,易受干扰,电路设计较复杂,同时采用数码管显示缺少可看性和操作复杂,已经无法满足现在人们的要求,所以开发一种结构简单成本低,容易操作和清晰度高具有良好人机界面的数字钟是未来发展的一种趋势。 如果数据显示采用液晶显示的话,数字钟的美观度和可看度将大大提高,使用的地方也将更加多。1.2 数字钟的功能 本次设计的数字钟的主要功能为:1. 具有年、月、日显示和手动按键校对功能;2. 具有时间显示和手动按键校对功能,24小时制;3. 具有环境温度采集和显示功能;4. 具有温度报警功能;5. 具有闹钟功能;6. 具有良好的人际界面功能;7.第二章 数字钟的设计方案2.1 单片机设计方案 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。 所以利用单片机可以方便的实现数字钟的设计。单片机均具有时钟振荡系统,如果用单片机内部的定时器/计数器来实现数字钟的功能的话,时钟误差比较大,所以需要在外接一个高精度时钟日历芯片,以精确时间,同时在外接一个数字温度传感器和液晶显示模块,从而构成一个数字钟系统。 第三章 基于单片机的数字钟的硬件设计3.1 核心部件的介绍3.1.1 AT89C51单片机介绍 目前生产51单片机的厂商有很多,AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机,片内含4k的字节可反复擦写的只读程序存储器(EPROM)和128k字节的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准的MCS-51指令系统,所以功能强大的AT89C51是开发各种系统的很好选择。 AT89C51具有的主要性能为:1. 兼容标准的MCS-51指令系统; 2. 4k字节的可反复擦写的flash;3. 1288字节的内部RAM;4. 1000次擦写周期;5. 全静态工作:0-24Hz;6. 32个双向的I/O口线;7. 2个16位定时/计数器;8. 6个中断源;9. 1个可编程的串行通道;同时,AT89C51可进行降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。当处于空闲方式时停止CPU工作,但是定时/计数器,RAM,串口通信以及中断系统都将继续工作,掉电方式时振荡器停止并禁止其他部件的一切动作,只到下一个硬件复位,同时将保存RAM中的数据。与AT89C51配套使用的11.0592MHz单片机晶振。 AT89C51为了满足更多的开发需要,提供了三种封装形式,PDIP,TQFP,PLCC,本设计采用PDIP封装形式,如图1 图1 AT89C51 PDIP封装引脚图 3.1.2 DS1302时钟芯片介绍 3.1.2.1 DS1302时钟芯片简介 现在流行的串行时钟电路很多,如DS1302、 DS1307、PCF8485等。DS1302是美国DALLAS公司推出的一款高性能、具有涓细电流充电能力的低功耗、带内部RAM的实时时钟芯片(RTC)。它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302 是由DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1 为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等。同时需要注意的是DS1302时钟芯片要外接一个32.768KHz的晶振。 3.1.2.2 DS1302时钟芯片引脚说明DS1302时钟芯片引脚图如图2 图2 DS1302时钟芯片引脚图 DS1302芯片引脚功能参照表1 表1 DS1302芯片引脚功能说明引脚号名称功能1VCC2主电源引脚2X132.768kHz晶振引脚3X232.768kHz晶振引脚4GND地引脚5RST复位引脚6I/O数据输入/输出引脚7SCLK串行时钟引脚8VCC1电池引脚 3.1.2.3 DS1302片内寄存器 表2 DS1302有关于日历和时间的寄存器寄存器名称 命令字 取值范围 各位内容写读76543210秒寄存器80H81H0059CH10SEC SEC分寄存器82H83H0059010MIN MIN小时寄存器84H85H0112或002312/240AHR HR日期寄存器86H87H0128,29,30,3100 10DATA DATA月份寄存器88H89H011200010M MONTH周寄存器8AH8BH010700000 DAY年份寄存器8CH8DH0099 10YEAR YEAR控制寄存器8EH8FHWP 其他为0DS1302内部共有12个寄存器,其中7个寄存器与日历和时钟相关,分别是秒,分,小时,日期,月份,周,年份。此外,DS1302还有年份寄存器、控制寄存器,充电寄存器、时钟突发寄存器以及与RAM有关的寄存器。小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,第五位为“0”时,表示AM,第五位为1时,表示PM。在24小时模式时,位5是第二个10小时位。秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 表3 充电控制寄存器寄存器名称 7 6 5 4 3 2 1 0充电寄存器 TCSTCS TCSTCSDSDSRSRS充电寄存器的第4位到第7位用来决定是否有充电功能,仅在1010的条件下才可以充电,其他条件下不允许。第2位和第3位是用来选择VCC1和VCC2之间串一个二极管还是两个。DS位为01时,放一个二极管,DS位为10时,放两个二极管,其他条件下不可以充电。第0位和第1位是用来选择与二极管串联的电阻值的大小。编码为RS=01时为2K,RS=10时为4K,RS=11时为8K,其他条件下不可以。 3.1.2.4 DS1302控制字和时序读写说明DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,同时还需要读取相应寄存器的数据。每次通信,单片机都要向DS1302写入一个命令帧。DS1302的命令字结构如表4 表4 DS1302命令字结构图1RAM CKA4 A3 A2 A1 A0 R/W 控制字的最高有效位(位7)必须是固定为1,如果它为0,则不能把数据写入到DS1302中。位6:决定对RAM还是时钟寄存器操作,如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4A0):是RAM或时钟寄存器在DS1302中的内部地址。位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。数据读写时序如图3 图3 数据读写时序图 其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,数据写入有效是在上升沿,读出是在下降沿,程序设计时:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读出数据,即数据操作总是在SCLK保持为低电平时候,相邻的操作之间间隔一个上升沿和一个下降沿。 3.1.3 DS18B20温度传感器介绍 3.1.3.1 DS18B20温度传感器简介和引脚说明 DS18B20是美国DALLAS公司生产的一线式数字温度传感器,它具有低功耗,抗干扰能力强,等特点,比较适用于组建多点温度检测系统。它的温度检测范围是-55+125C,可编程的分辨率为912位,并且不需要A/D转换直接可以把温度值转换成数字量。DS18B20采用的是单总线协议。它的三个引脚分别是DQ(数据线),GND(地),VDD(电源),所有的命令和数据都是通过数据线来传输,并且要接一个大约4.7k的上拉电阻,这样是为当总线空闲时,其为高电平。同时每一个DS18B20内均有一个唯一的64位序列号(最低8位是产品代码,其后48位是器件序列号,最后8位是前56位循环冗余的校验码),通过获得该序列号可以在多传感器系统中将它们一一识别。DS18B20引脚图参见图4 图4 DS18B20引脚图和封装说明 1-GND:地;2-DQ:数据输入输出引脚;3-VDD:可选电源引脚 3.1.3.2 DS18B20温度传感器内部结构 DS18B20内部结构主要有4部分组成:64为ROM,温度敏感元件,非易失性温度报警触发器TH和TL,配置寄存器。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现总线上挂载多个DS18B20。非易失性温度报警触发器TH和TL可通过软件来写入用户设置的报警上下限值。配置寄存器为高速暂存存储器中第5个字节。DS18B20在工作时按此寄存器中的分辨率来讲温度转换成相应的精度数值。 图5 DS18B20内部结构框图配置寄存器与分辨率关系表见表5TMR1R011111R0 R1 温度计分辨率/bit 最大转换时间/ms0 0 9 93.75 0 1 10 187.5 1 0 11 375 1 1 12 750 表5 配置寄存器与分辨率关系表TM为测试模式标志位,出厂时被写入0,不能修改;R0,R1温度计分辨率设置位。 3.1.3.3 DS18B20数据处理DS18B20的高速暂存存储器有9个字节组成,其分配图如表6。当温度转换命令发布后,经转换的温度值以2字节补码的形式存放在高速暂存存储器第0和第1字节。然后单片机通过单线接口读到数据,先读取低位再读高位。温度低位温度高位THTL配置保留保留保留8位CRC 表6 字节分配 表7 DS18B20温度数据表温度/ 二进制表示 十六进制表示符号位(5位) 数据位(11位) +125000001111101000007D0H +25.062500000001100100010191H +10.1250000000010100001000A2H +0.500000000000010000008H 000000000000000000000H -0.51111111111111000FFF8H -10.1251111111101011110FF5EH -25.06251111111001101111FE6FH -551111110010010000FC09H 3.1.3.4 DS18B20控制命令和读写时序DS18B20有六条控制命令:温度转换 44H 启动DS18B20进行温度转换;读暂存器 BEH 读暂存器9个字节内容;写暂存器 4EH 将数据写入暂存器的TH、TL字节;复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中;重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节;读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU; 主机使用时间间隙来读写DS18B20的数据位和写命令字的位。初始化时序,读写时序如图6 图6 DS18B20初始化时序,读写时序3.1.4 LCD1602液晶显示模块介绍 3.1.4.1 LCD1602液晶显示模块简介 LCD1602液晶显示模块是一种用于显示字母,数字,符号等点阵式LCD。它具有体积小,功耗低,显示内容丰富等特点。LCD1602液晶显示模块可以显示两行,每行16个字符。采用+5V电源供电。 LCD1602液晶显示模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字,英文字母的大小写,常用字符和日文假名等。 3.1.4.2 LCD1602基本参数和引脚说明 LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图7所示: 图7 LCD1602尺寸图1602LCD主要技术参数:显示容量:162个字符;芯片工作电压:4.55.5V;工作电流:2.0mA(5.0V);模块最佳工作电压:5.0V;字符尺寸:2.954.35(WH)mm; 引脚号符号 引脚说明 引脚号 符号引脚说明 1VSS电源地 9D2数据 2VDD电源正极 10D3数据 3VL液晶显示偏压 11D4数据 4RS数据/命令选择 12D5数据 5R/W读/写选择 13D6数据 6E使能信号 14D7数据 7D0数据 15BLA背光源正极 8D1数据 16背光源负极 表8 LCD1602引脚说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。 3.1.4.3 LCD1602指令说明和读写时序LCD1602液晶模块内部的控制器共有11条控制指令,见表9 序号 指令RSR/WD7D6D5D4D3D2D1D0 1清显示0000000001 2光标返回000000000* 3置输入模式00000001I/DS 4显示开/关控制0000001DCB 5光标或字符移位000001S/CR/L* 6置功能00001DLNF* 7置字符发生存储器地址0001字符发生存储器地址 8置数据存储器地址001 显示数据存储器地址 9读忙标志或地址01BF计数器地址 10写数到CGRAM或的DDRAM10要写的数据内容 11从CGRAM或DDRAM读数11读出的数据内容指令1:清显示,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。(有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。指令7:字符发生器RAM地址设置,地址:字符地址*8+字符行数。(将一个字符分成5*8点阵,一次写入一行,8行就组成一个字符)。指令8:置显示地址,第一行为:00H0FH,第二行为:40H4FH。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据 表10 基本操作时序表 读状态 输入RS=L,R/W=H,E=H 输出D0D7=状态字 写指令 输入RS=L,R/W=H, D0D7=指令码,E=高脉冲输出无 读数据输入RS=H,R/W=H,E=H输出D0D7=数据 写数据 输入RS=H,R/W=L, D0D7=数据,E=高脉冲输出无读写操作时序如图8和9所示: 图8 读操作时序 图9 写操作时序 3.1.4.4 LCD1602RAM地址映射和以及标准库表液晶显示模块是一个慢显示器件,所以在执行每一条指令之前一定要确认模块的忙标志位为低电平,否则指令无效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10是1602的内部显示地址。 图10 1602的内部显示地址 如果要在第二行第一个字符的地址是40H显示一个字符,那么要写入的数据是01000000B(40H)+10000000B(80H)=11000000(C0H),因为写入显示地址要求最高位D7恒定为高电平1,然后才能在40H地址上输入字符。 LCD1602液晶显示模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字,英文字母的大小写,常用字符和日文假名等,每一个字符都有一个固定的代码,比如“A”的代码是01000001B(41H),显示模块把地址41H的点阵字符图形显示出来,就可以看到“A”。同时也可以通过写入自定义的字符放入CGRAM,来显示自己想要的字符。 图11字符代码与图形对应图 第四章 数字钟硬件电路设计 硬件电路主要包括单片机控制电路,时钟电路,温度采集电路,液晶显示电路,按键设置电路和闹钟与温度报警电路。 时钟电路温度采集电路按键设置电路液晶显示电路51单片机控制系统闹钟与温度报警电路 图12 数字钟硬件系统框图4.1 时钟电路设计 时钟电路通过采用时钟芯片DS1302与AT89C51单片机相连来实现。连接图如图13。 图13 时钟电路如图13所示,AT89C51单片机的P2.4作为DS1302时钟芯片的I/O口,P2.5作为时钟的时钟接口,P2.6作为时钟的RST接口。同时在X1和X2的两端连接一个32.768KHz的晶振。同时DS1302采用双电源供电方式,平时有+5V电源供电,当+5V电源掉电时,采用备用的Battary(3V备用电池)供电。4.2 温度采集电路设计温度采集系统主要采用数字温度传感器DS18B20与AT89C51进行连接,而实现温度数据的采集和处理。连接图如图14 图14 温度采集电路 如图14所示,AT89C51单片机的P2.3引脚与DS18B20的I/O引脚相连,作为指令和数据的读写口。同时电阻R36作为益一个上拉电阻,这样是为当总线空闲时,其为高电平。4.3 数据显示电路设计 传统的数据显示都采用数码管显示,但是这种显示出的数据精度还是可看度都不是太好,而且每一个数码管只可以显示一个数字同时不能显示中文字体。所以本次设计的数据显示采用LCD1602液晶显示模块,可以同时显示32个字符,同时看数据比较舒服。LCD1602液晶显示模块与AT89C51单片机直接接口,连接图如图15 图15 AT89C51单片机与1602液晶显示器接口电路如图15所示,AT89C51单片机的P0口与LCD1602液晶模块的引脚714(D0D7双向数据线)相连,在LCD1602液晶模块的引脚3(VL)连接一个1.8 K的电阻来确定液晶显示器的对比度。 单片机的P2.0口与液晶显示模块的引脚4(RS数据命令选择,高电平时选择数据寄存器,低电平时指令寄存器),P2.1口与液晶显示模块的引脚5(RW读写选择,高电平时进行读操作,低电平时进行写操作),P2.2口与液晶显示模块的引脚6(E使能信号,当E从高电平变到低电平时,液晶模块执行命令)。4.4 按键设置电路设计 本次设计采用按键要实现的功能是:模式和校对选择键,加1操作键,减1操作键,数据修改确认键。为了不相互影响,采用独立按键的形式,每一个按键连接一个AT89C51的接口,从而使每个按键有特定的功能。本次设计采用了4个独立按键。按键电路如图16 图16 按键电路如图16所示,K2,K3,K4,K5按键分别对应AT89C51单片机的P1.3,P1.2,P1.1,P1.0.同时接4个10K上拉电阻,使电阻起到限流作用和在不确定的信号通过电阻嵌位在高电平。 K2按键主要是选择那种模式如:对年修改,月修改,日修改,星期修改,小时修改,分钟修改,秒修改,定时闹钟设置,温度报警设置。 K3按键主要实现对K2所选模式的数据进行加1操作。 K4按键主要实现对K2所选模式的数据进行减1操作。 K5按键主要实现数据修改确认操作。4.5 闹钟和报警电路设计 闹钟和报警电路使用了最简单的方法来实现,通过把蜂鸣器的一个端口与AT89C51单片机一个口相连,同时中间连一个电阻和一个PNP型三级管。如图17。 图17 闹钟和报警电路如图所示,当P2.7为低电平时,蜂鸣器发出报警声。 第五章 数字钟的软件设计 51单片机的程序可以用汇编语言和C语言编写,本次设计的程序全部是有C语言编写的。用C语言编写程序阅读起来比较方便,易于理解。5.1 主程序设计 电子钟系统第一次上电先进行初始化,在LCD1602上在短暂的时间里先显示Electronic Clock!,然后显示初始的日历和时间。 主程序流程图如图18 开始初始化按键扫描子程序DS18B20子程序DS1302子程序显示子程序闹钟或温度报警检测 图18 电子钟主程序流程图 如图18所示,单片机初始化后依次调用按键扫描子程序,DS18B20子程序,DS1302子程序和数据更新和显示程序。5.2 子程序设计 5.2.1 按键扫描子程序 本次设计中使用按键的功能主要是实现对年,月,日,星期,小时,分钟,秒的校对,以及进行定时闹钟设置和温度报警设置并对修改数据做确认。所以具体的流程是:首先51单片机扫描K2按键,判断按键是否按下,当每次确定按下后,模式计数变量每次加1,根据模式计数变量的值来把光标移动到相应的模式操作地方并停止执行中断程序。然后当K2按键确定按下后,51单片机就会扫描K3,K4,K5按键,确定有那个按键按下,如果确认到K3按键按下后,会先读取相应模式的数据(如计数变量为1时,读取年的数据)然后在读取数据的基础上加1,K3按键每按下一下,读取的数据就加1一次同时显示出结果在液晶显示器上;如果确认到K4按键按下后,会先读取相应模式的数据(如计数变量为1时,读取年的数据)然后在读取数据的基础上减1,K3按键每按下一下,读取的数据就减1一次同时显示出结果在液晶显示器上;如果确认到K5按键按下后,模式计数变量值变成初始化值和清屏,并可以执行中断程序。程序见附录A5.2.2 时钟日历子程序 本次设计中编写的时钟日历程序主要为了完成对DS1302时钟芯片年,月,日,周,小时,分钟,秒,以及内部31个字节RAM等寄存器进行正常的读写操作。其中为了时钟可以正常的计时,每次复位或重新上电后秒寄存器中第7位CH必为0。同时每次对时钟芯片进行写操作时,必须先让控制寄存器中第7位WP为0-允许写操作状态。开始初始化写入初始值计时开始读取数据 其流程图如图19 图19 时钟日历子程序流程图程序见附录A 5.2.3 温度数据采集子程序 本次设计中温度采集采用的DS18B20数字温度传感器,它通过一根和51单片机连接的数据线来实现数据和指令的传输,它是一种单总线器件,所有的单总线器件都要遵循严格的通信协议,以保证数据的完整性,所以对读写时序的要求比较严格。 因此51单片机要想对DS18B20传感器进行正常的读写操作,必须满足相应的读写时序规则,否则最后将无法读取正确的温度值。 DS18B20在通讯前必须进行初始化,初始化包括一个主机发送的复位脉冲紧跟着一个DS18B20发送的存在脉冲。一旦DS18B20发送存在脉冲回应主机的复位脉冲,就表示总线上存在DS18B20并准备好进行操作。在初始化期间,主机发送复位脉冲,要拉低总线在(480us960u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论