- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机设计设计内容及要求利用AT89C51单片机实现电子钟系统设计,其硬件原理框图如所示,其中显示采用液晶LCD1602,温度测量采用DS18B20
硬件原理框图系统的主要工作和流程
??此电子钟系统的设计,为实现其多方面的功能,需要收集芯片元件的资料和芯片的数据手册,理解芯片的工作原理,时钟芯片,温度芯片, LCD1602芯片的显示原理。设计中最为关键的是对整个系统设计原理的理解。
?系统的主要工作是进行整个电子钟系统的程序设计,主要是对时间算法,LCD显示设计,温度读取的程序设计。由于电子万年设计的功能较多,所编写的代码量较大,编程中更是用到了大量的算法,所以此次的软件设计使用C语言编程而没有使用汇编语言。软件的设计主要将程序分为主程序和各个子程序模块。
系统工作的流程为:在完成了程序的设计调试之后,便可将编译生产的文件下载到AT89C51单片机运行不断进行调试改进主控模块本系统主控模块采用的单片机AT89C51,外接12MHz晶振AT89C51具有40个引脚,128×8位内部RAM ,32可编程I/O线 ,两个16位定时器/计数器,5个中断源。可编程串行通道,低功耗的闲置和掉电模式, 片内振荡器和时钟电路也是其主要特性。液晶显示模块LCD1602采用标准的16脚接口,其中:
第1脚:GND为地电源
第2脚:VCC接5V正电源?
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSRW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可读忙信号,当RS为高电平RW为低电平时可以写入数据.
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:DB0~DB7为8位双向数据线。
第15~16脚:空脚。温度模块DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。 其引脚功能描述见表1。
表DS18B20详细引脚功能描述
序号 名称 引脚功能描述 1 GND 地信号 2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。 3 VDD 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 闹钟模块闹铃模块为单片机开发箱的蜂鸣器,当闹钟时间到后,蜂鸣器发声,直到过了闹钟时间后停止。按键模块本设计总共用了个独立按键,其中一个是设置键,两个是调整项增加、减少的键,一个是闹钟设置键,一个是显示模式设置键。系统的软件设计
软件的总体设计
系统是由AT89C51单片机控制,系统分为主函数部分和各模块子函数部分2个部分。系统主函数部分主要是调用各个模块的子函数。本系统的时间是通过软件进行设置,使用定时器使电子钟运行,并将值送入主控芯片,通过液晶显示器LCD1602来显示,时间、日期的修改通过按键来控制的。所以要对定时器、液晶显示器进行初始化。而其他模块的初始化在各模块函数中初始化。各模块的子函数包括LCD1602显示模块、DS18B20测温模块、时钟模块、按键扫描模块。闹钟设置模块包含在时钟模块和按键扫描模块中。
主程序
通过调用其他函数来实现系统的总体功能,其工作流程如下:
(1)?? 系统启动后,进行定时器和LCD显示初始化。
(2)??? LCD1602显示日期、时间、温度。
(3)??? 可以通过按键进行显示模式设置,调整日期、时间、还可以进行万年历查询。液晶显示模块于本系统是采用LCD1602显示的,系统的软件设计通过P0口输出数据,数据命令选择端P2.6,读写选择端是P2.5,使能信号选择端为P2.7。程序主要进行LCD1602的初始化设定,及根据时序图编写LCD1602的写指令、写字符函数。此外还需编写显示字符串函数等。
测温模块
温度检测相关函数包括:DS18B20的初始化函数, DS18B20的温度读取函数等。 由于DS18B20是单总线的时序工作方式,其每次工作前需要初始化。首先由总线拉低480-960us,而后释放总线60-120us,此后会有DS18B20自己拉地60-240us,然后释放总线。这样就完成了DS18B20的初始化过程。如果在有DS18B20自动拉低部分,读取总线其没被拉低,则表示DS18B20不存在。函数编写上由于只对一条总线进行编程,所以十分简单
文档评论(0)