基于51单片机温湿度检测及电子万年历的设计毕业论文.docx

上传人:b****0 文档编号:9685022 上传时间:2023-05-20 格式:DOCX 页数:84 大小:1.58MB
下载 相关 举报
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第1页
第1页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第2页
第2页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第3页
第3页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第4页
第4页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第5页
第5页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第6页
第6页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第7页
第7页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第8页
第8页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第9页
第9页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第10页
第10页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第11页
第11页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第12页
第12页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第13页
第13页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第14页
第14页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第15页
第15页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第16页
第16页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第17页
第17页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第18页
第18页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第19页
第19页 / 共84页
基于51单片机温湿度检测及电子万年历的设计毕业论文.docx_第20页
第20页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机温湿度检测及电子万年历的设计毕业论文.docx

《基于51单片机温湿度检测及电子万年历的设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于51单片机温湿度检测及电子万年历的设计毕业论文.docx(84页珍藏版)》请在冰点文库上搜索。

基于51单片机温湿度检测及电子万年历的设计毕业论文.docx

基于51单片机温湿度检测及电子万年历的设计毕业论文

基于51单片机温湿度检测及电子万年历的设计毕业论文

2.2系统基本方案选择和论证22.2.1单片机芯片2

2.2.2显示模块3

2.2.3时钟芯片3

2.2.4温湿度传感器3

2.3电路设计最终方案4

第5章KeilC51编译器19

5.1C51概述19

5.2KeilC51编译器的使用19

5.2.1创建项目19

5.2.2新建一个源文件21

5.2.3增加和配置启动代码、设置工具选项21

5.2.4Build项目并生成HEX文件24

第6章电路仿真25

6.1PROTEUS简介25

6.2使用PROTEUS进行电路仿真设计25

6.2.1PROTEUS功能特点26

6.2.2PROTEUS快捷键大全26

6.2.3仿真图27

7.2PCB设计的一般原则28

7.3PCB设计30

7.3.1创建PCB文件30

7.3.2元器件布局32

7.3.3自动布局32

7.3.4输出光绘文件32

附图38

附表39

附程序40

第1章绪论

随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。

二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!

因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……  

我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。

商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

本设计为软件,硬件相结合的一组设计。

在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。

基本的要了解一些主要器件的基本功能和作用。

  除了采用集成化的时钟芯片外,还有采用MCU的方案,利用STC89C52RC单片微机制成万年历电路,采用软件和硬件结合的方法,控制LCD1602输出,分别用来显示年、月、日、时、分、秒,还有温度和湿度,其最大特点是:

硬件电路简单,安装方便易于实现,软件设计独特,可靠。

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

本文介绍了基于STC89C52RC单片机设计的电子万年历。

第2章设计要求与方案论证

2.1 设计要求

2.1.1基本要求

具有年、月、日、星期、时、分、秒等功能;

2.1.2扩展功能

具有温湿度检测功能;

2.2系统基本方案选择和论证

2.2.1单片机芯片

PIC单片机是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片。

EMC单片机是台湾义隆公司的产品,有很大一部分与PIC8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差。

ATMEL单片机ATMEl公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫AVR单片机。

PHLIPIS51PLC系列单片机PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求。

HOLTEK单片机台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品。

TI公司单片机德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合。

方案一

采用89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。

方案二

采用STC89C52RC,片内ROM全都采用FlashROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术。

所以选择采用STC89C52RC作为主控制系统。

2.2.2显示模块

方案一

采用液晶显示屏(LCD),液晶显示屏具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。

方案二

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。

所以采用了液晶显示屏作为显示。

2.2.3时钟芯片

方案一

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。

采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案。

方案二

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。

所以采用DS1302时钟芯片实现时钟。

2.2.4温湿度传感器

方案一

使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。

此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。

方案二

采用SHT10作为温度和湿度的检测,该仪器具有测量精度较高、硬件电路简单、并能很好的进行显示,可测试不同环境温湿度的特点。

另外和控制电路相连,可以进行加湿电路和除湿电路的控制,使温度和湿度参数在预先设定的范围内,不需要人的直接参与。

所以采用SHT10温湿度传感器。

2.3电路设计最终方案

综上各方案所述,对此次作品的方案选定:

采用STC89C52RC作为主控制系统;DS1302提供时钟;温湿度传感器SHT10检测温湿度;LCD液晶显示屏作为显示。

第3章硬件设计与原理

以STC89C52RC单片机为核心,起着控制作用。

系统包括LCD1602液晶显示电路、复位电路、时钟电路、温湿度采集电路、按键调整子函数、按键提示音电路、报警指示灯电路和时钟芯片电路。

设计思路分为九个模块:

复位电路、晶振电路模块、STC89C52RC、LCD1602液晶显示电路、温湿度采集电路、按键调整子函数、按键提示音电路、报警指示灯电路和时钟芯片电路这九个模块。

3.1系统设计方框图

3.2硬件设计分析

3.2.1显示系统

LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3-2-1所示:

 

 

LCD1602的主要技术参数:

1、显示容量:

16×2个字符

2、芯片工作电压:

4.5—5.5V

3、工作电流:

2.0mA(5.0V)

4、模块最佳工作电压:

5.0V

5、字符尺寸:

2.95×4.35(W×H)mm

引脚功能说明

LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如图3-2-2所示:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

图3-2-2引脚接口说明

第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端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

3.2.2LCD1602的指令说明及时序

序号

指令

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

置输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示开/关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

置功能

0

0

0

0

1

DL

N

F

*

*

7

置字符发生存贮器地址

0

0

0

1

字符发生存贮器地址

8

置数据存贮器地址

0

0

1

显示数据存贮器地址

9

读忙标志或地址

0

1

BF

计数器地址

10

写数到CGRAM或DDRAM)

1

0

要写的数据内容

11

从CGRAM或DDRAM读数

1

1

读出的数据内容

图3-2-3控制命令表

1602液晶模块内部的控制器共有11条控制指令,如图3-2-3所示:

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置。

指令2:

光标复位,光标返回到地址00H。

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标。

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:

字符发生器RAM地址设置。

指令8:

DDRAM地址设置。

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据。

指令11:

读数据。

3.2.3LCD1602的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3-2-4是1602的内部显示地址。

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?

这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。

每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

图3-2-5液晶显示电路

3.2.4时钟电路模块

(1)时钟芯片DS1302的工作原理

DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图4所示。

图5为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。

对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。

位1至位5指操作单元的地址。

位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。

控制字节总是从最低位开始输入/输出的。

表6为DS1302的日历、时间寄存器内容:

“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。

“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。

当“WP”为1时,写保护位防止对任一寄存器的写操作。

图3-2-6时钟芯片DS1302电路图

(2)DS1302的控制字节

DS1302的控制字如表3-2-7所示。

控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出

RAMRD

1A4A3A2A1A0

/CK/WR

图3-2-7DS1302的控制字格式

(3)数据输入输出(I/O)

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

如下图3-2-8所示

图3-2-8DS1302读/写时序图

(4)DS1302的寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见图3-2-9。

图3-2-9DS1302的日历、时间寄存器

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。

DS1302与RAM相关的寄存器分为两类:

一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

图2-3示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电。

当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电。

X1和X2是振荡源,外接32.768KHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:

首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。

当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。

中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。

SCLK始终是输入端。

3.2.5温湿度采集模块

图3-2-10温湿度采集系统

3.2.6按键调整电路

图3-2-11按键调整电路

3.2.7按键提示音电路

图3-2-12按键提示音电路

3.2.8报警指示灯电路

图3-2-13报警指示灯电路

第4章程序设计

4.1程序设计的组成

该系统由延时子函数、检查LCD1602液晶忙位子函数、LCD1602液晶写指令子函数、LCD1602液晶写数据子函数、LCD1602液晶初始化子函数、SHT10写字节子函数、SHT10读字节子函数、SHT10启动传输子函数、SHT10连接复位子函数、SHT10温湿度检测子函数、SHT10温湿度值标度变换及温度补偿子函数、温湿度显示子函数、LCD1602液晶写参数子函数、按键提示音子函数、按键扫描子函数、主函数和数据定义这几部分组成。

4.2部分程序分析

4.2.1检查LCD1602液晶忙位子函数

//检查LCD1602液晶忙位子函数

voidLCD1602_busy()

{

uchari=0;

RS=0;

RW=1;

E=1;

P0=0xff;

i=0;

while(((P0&0x80)==0x80)&&i<150)

i++;

E=0;

}

4.2.2LCD1602液晶写指令子函数

//LCD1602液晶写指令子函数

voidwrite_com(ucharcom)

{

LCD1602_busy();

RS=0;

RW=0;

P0=com;

E=1;

E=0;

}

4.2.3LCD1602液晶写数据子函数

//LCD1602液晶写数据子函数

voidwrite_date(uchardate)

{

LCD1602_busy();

RS=1;

RW=0;

P0=date;

E=1;

E=0;

}

4.2.4LCD1602液晶初始化子函数

//LCD1602液晶初始化子函数

voidLCD1602_init()//初始化设置

{

uchari;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(i=0;i<16;i++)

{

write_date(table1[i]);

delay(500);

}

write_com(0xc0);

for(i=0;i<16;i++)

{

write_date(table2[i]);

delay(500);

}

a=35;

b=10;

c=65;

d=40;

}

4.2.5SHT10写字节子函数

//SHT10写字节子函数

chars_write_byte(ucharvalue)

{

uchari,error=0;

for(i=0x80;i>0;i>>=1)//高位为1,循环右移

{

if(i&value)

DATA=1;//和要发送的数相与,结果为发送的位

else

DATA=0;

SCK=1;

_nop_();

_nop_();

_nop_();//延时3us

SCK=0;

}

DATA=1;//释放数据线

SCK=1;

error=DATA;//检查应答信号,确认通讯正常

_nop_();

_nop_();

_nop_();

SCK=0;

DATA=1;

returnerror;//error=1通讯错误

}

4.2.6SHT10读字节子函数

//SHT10读字节子函数

chars_read_byte(ucharack)

{

uchari,val=0;

DATA=1;//释放数据线

for(i=0x80;i>0;i>>=1)//高位为1,循环右移

{

SCK=1;

if(DATA)

val=(val|i);//读一位数据线的值

SCK=0;

}

DATA=!

ack;//如果是校验,读取完后结束通讯;

SCK=1;

_nop_();

_nop_();

_nop_();//延时3us

SCK=0;

_nop_();

_nop_();

_nop_();

DATA=1;//释放数据线

returnval;

}

4.2.7SHT10温湿度检测子函数

//SHT10温湿度检测子函数

chars_measure(uchar*p_value,uchar*p_checksum,ucharmode)

{

unsignederror=0;

uinti;

s_transstart();//启动传输

switch(mode)//选择发送命令

{

caseTEMP:

error+=s_write_byte(0x03);

break;//测量温度

caseHUMI:

error+=s_write_byte(0x05);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2