基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx

上传人:b****5 文档编号:18753531 上传时间:2023-01-01 格式:DOCX 页数:45 大小:1.20MB
下载 相关 举报
基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx_第1页
第1页 / 共45页
基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx_第2页
第2页 / 共45页
基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx_第3页
第3页 / 共45页
基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx_第4页
第4页 / 共45页
基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx

《基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx(45页珍藏版)》请在冰豆网上搜索。

基于AT89C51电子万年历的设计与仿真设计方案Word文档格式.docx

由于AT89C51单片机片有4K字节的在线编程Flash存储器,可以擦写1000次,具有掉电模式,而且具有掉电状态下的中断恢复功能,对设计开发非常实用。

从这三种电路设计方案的比较而言,利用单片微型计算机及外围电路编写软件程序来设计万年历,简单灵活,而且可扩展各种功能,能完全达到设计要求,体现了现代计算机工具的方便、简捷、准确性。

综上所述,选用AT89C51单片机作为电子万年历芯片的控制单片机。

2.显示模块选择方案和论证

方案一:

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

采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。

但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍。

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于电子万年历而言,一个1602的液晶屏即可,价格也还能接受,需要的接口线较多,但会给调试带来诸多方便。

本次电子万年历设计需要显示的参数多,数码管需要的数量较多,综合性价比,所以采用了LCD液晶显示屏。

3.时钟芯片的选择方案和论证

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

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

采用DS1302时钟芯片实现时钟,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。

采用普通32.768kHz晶振。

本次设计在时间显示方面需要尽可能的减少误差,与现实时间同步,所以在时钟方面选用了DS1302芯片。

4.温度传感器的选择方案与论证

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

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

采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以避免A/D模数转换模块,降低硬件成本,简化系统电路。

另外,数字式温度传感器还具有测量精度高、测量围广等优点。

本设计为尽可能的减少误差,所以采用DS18B20温度传感器作为温度采集模块。

5.电路设计最终方案决定

综上各模块的选择方案与论证,确定最后的主要硬件资源如下:

采用AT89C51作为主控制系统;

DS1302提供时钟;

DS18B20作为数字式温度传感器;

LCD1602液晶屏作为显示。

2.2系统设计结构图

根据系统设计的要求和设计思路,确定该系统的系统设计结构图。

如图2-1所示。

硬件电路主要由主控制器、键盘控制模块、温度传采集模块、DS1302时钟模块、液晶显示模块构成。

图2-1系统结构设计图

第三章硬件设计

3.1系统硬件概述

本电路是由AT89C51单片机作为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;

时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒等进行计时,具有闰年补偿功能,工作电压为2.5V-5.5V。

DS1302部有一个用于临时存放数据的RAM寄存器。

可产生年、月、日、时、分、秒等,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;

温度的采集由DS18B20构成,显示部分为LCD液晶显示屏,能够实现字符与数字同时显示的功能。

3.2系统的模块电路设计

3.2.1单片机最小应用系统电路

单片机系统是整个硬件系统的核心,它即协调整机工作,又是数据处理器,是软硬件系统连接的桥梁,AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器〔PENROM和128字节的存取数据存储器〔RAM,这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。

片含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。

因此,我们选用AT89C51单片机来满足我们程序的要求。

单片机最小应用系统电路包括以下的两个部分:

时钟电路和复位电路。

如图3-1所示。

1、时钟电路

单片机的时钟信号用来提供单片机片各种微操作的时间基准,时钟信号通常用两种电路形式得到:

部振荡和外部振荡。

MCS-51单片机部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。

2、复位电路

为了初始化单片机部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。

单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。

复位后系统将输入/输出<

1/0>

端口寄存器置为FFH,堆栈指针SP置为07H,SBUF置为不定值,其余的寄存器全部清0,部RAM的状态不受复位的影响,在系统上电时RAM的容是不定的。

复位操作有两种情况,即上电复位和手动<

开关>

复位。

本系统采用上电复位方式。

图3-1单片机最小应用系统电路

3.2.2DS1302时钟模块设计

1.DS1302性能特性介绍

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

采用双电源供电〔主电源和备用电源,可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。

2.DS1302引脚介绍

图3-2DS1302实物图

实物图如图3-2所示,各引脚的功能为:

8脚Vcc1:

备用电池端;

1脚Vcc2:

5V电源。

当Vcc2>

Vcc1+0.2V时,

由Vcc2向DS1302供电,当Vcc2<

Vcc1时,

由Vcc1向DS1302供电。

7脚SCLK:

串行时钟,输入;

6脚I/O:

数据输入输出口;

5脚CE/RST:

复位脚

2脚3脚:

X1、X2是外接晶振脚〔32.768KHZ的晶振

4脚地〔GND

3.电路原理

①时钟芯片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。

当"

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

②DS1302的控制字节

DS1302的控制字如表-1所示。

控制字节的高有效位〔位7必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;

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

最低有效位〔位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

表3-1DS1302的控制字格式

1

RAM

/CK

A4

A3

A2

A1

A0

RD

/WR

③数据输入输出〔I/O

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

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

如下图3-3所示。

图3-3DS1302读/写时序图

DS1302与CPU的连接需要三条线,即SCLK<

7>

、I/O<

6>

、RST<

5>

实际上,在调试程序时可以不加电容器,只加一个晶振即可。

如图3-4所示。

图3-4DS1302与单片机的接线图

3.2.3温度采集模块

1.DS18B202性能特性介绍

本设计中在温度模块中采用的是DS18B20温度传感器。

DS18B20是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。

独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压围为3.0V至5.5V无需备用电源测量温度围为-55度至+125度。

-10度至+85度围精度为±

0.5度温度传感器可编程的分辨率为9~12位。

表3-2DS18B20详细引脚功能描述

序号

名称

引脚功能描述

GND

地信号

2

DQ

数据输入/输出引脚。

开漏单总线接口引脚。

当被用着在寄生电源下,也可以向器件提供电源。

3

VCC

电源,输入电压为3~5.5V

 

图3-5DS18B20实物图

3.DS18B20温度数据对应关系

DS18B20是单总线接口的数字温度传感器,MSC-51通过串口将数据和指令写入或读出。

该芯片的温度测量围是﹣55℃~﹢125℃,转换完的数据通过两字节输出,对应关系如下表所示:

表3-3温度与两字节数据对应关系

温度

数字输出

〔二进制

数字输入

〔十六进制

+125℃

000001111101 

0000

07D0H

85℃

0000010101010000

0550H

+25.0625℃

0000000110010001

0191H

+10.125℃

0000000010100010

00A2H

+0.5℃

0000000000001000

0008H

0℃

0000000000000000

0000H

-0.5℃

1111111111111000

FFF8H

-10.125℃

1111111101011110

FF5EH

-25.0625℃

1111111001101111

FF6FH

-55℃

1111110010010000

FC90H

4.DS18B20的测温原理

图3-6DS18B20的测温原理

传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。

此电路连接简单,DS18B20采用电源供电方式,如图3-7所示,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源,I/O口接单片P0.3口。

图3-7DS18B20温度传感器数据采集电路

3.2.4独立式键盘设计

实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。

在本系统中我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。

由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。

独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。

4行4列共16个键,只占用8根I/O口线,键数目较多,可节省口线。

本设计采用的是独立式键盘。

键盘的工作方式可分为编程控制方式和中断控制方式。

CPU在一个工作周期,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;

若有键操作,则进而判断是哪个键,并执行相应的键处理程序。

这种方式为编程扫描方式。

由于单片机在正常应用过程中可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态,在进行本次设计中,只涉及到了切换、设置、上调、下调、闹钟五个功能。

因此采用独立式键盘。

如下图3-8所示。

图3-8按键的设计

3.2.5显示模块的设计

本设计中由于要对时间、温度进行显示所以选择液晶显示屏1602模块作为输出。

如图3-9所示。

图3-9LCD1602实物图

1.LCD1602主要技术参数

①显示容量:

16×

2个字符

②芯片工作电压:

4.5—5.5V

③工作电流:

2.0mA<

5.0V>

④模块最佳工作电压:

5.0V

⑤字符尺寸:

2.95×

4.35<

H>

mm

2.引脚功能说明

LCD1602采用标准的14脚〔无背光或16脚〔带背光接口,各引脚接口说明如下表所示。

表3-4引脚接口说明

编号

符号

引脚说明

VSS

电源地

9

D2

数据

VDD

电源正极

10

D3

VL

液晶显示偏压

11

D4

4

RS

数据/命令选择

12

D5

5

R/W

读/写选择

13

D6

6

E

使能信号

14

D7

7

D0

15

BLA

背光源正极

8

D1

16

BLK

背光源负极

LCD1602主要管脚介绍:

V0为液晶显示器对比度调整端,接正电源时对比度

最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个

10K的电位器调整对比度。

RS为寄存器选择端,高电平时选择数据寄存器,低电

平时选择指令寄存器。

R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址;

当RS为高电平R/W为低电平时可以写入数据。

E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

将LCD1602的RS端和P0.0,R/W端和P0.1,E端和P0.2相连,当RS=0时,对LCD1602写入指令;

当RS=1时,对LCD1602写入数据。

当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。

当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。

图3-10为1602液晶显示屏与单片机的硬件连接图。

图3-101602液晶显示屏与单片机的硬件连接图

3.3总硬件设计

本章主要介绍了系统硬件设计,其中对时钟芯片DS1302、1602液晶显示屏、DS18B20温度传感器和AT89C51最小系统的设计做了详细阐述。

此外还介绍了各模块和单片机的连接方法、其特性及电路原理最后确定系统的整体硬件设计方案。

图3-11总硬件设计电路图

第四章软件设计

4.1软件设计方案

软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。

因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。

电子万年历的程序主要包括3个方面的容:

一是DS1302从单片机中读取数据进行计数,二是利用按键进行时间和温度的调整,三是LCD从单片机中读取数据显示时间和温度。

4.2各模块分析

1.主函数

主函数是整个程序运行的开始,主函数的容并不复杂,就是不断的循环调用子函数,把各个子函数的功能均实现,最后主函数实现的功能就是我们设计、万年历的要求和目的。

主程序流程图如下图4-1所示。

由于LCD1602,DS18B20,DS1302的数据读取及指令写入函数均已在各自的头文件中完成,在主程序中只须引用即可。

主函数是软件设计的核心,它是把各个模块函数连接起来的桥梁。

把各个功能通过模块在主函数里实现。

图4-1主程序流程图

流程图分析:

首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间、温度等数据送入液晶屏显示;

在修改时间模式下设置时间完成后再送数据到液晶屏显示。

2.DS1302时钟模块

时钟流程图如图4-2所示。

DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。

这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;

若没有按键按下,则直接存入EPROM,送入液晶屏显示。

图4-2时钟流程图

3.温度采集模块

温度采集流程图如图4-3所示。

开始进入初始化DS18B20,就是通过主线拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令,当成功的执行操作命令后,就开始进行温度转换,当转换完成后又开始初始化DS18B20是否有应答脉冲,若有就发起命令,即能同时读出数据。

图4-3温度采集流程图

4.LCD显示模块

显示程序流程图如图4-4。

首先对1602显示屏进行初始化〔初始化大约持续10ms左右,然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;

若BF=1,则代表模块正在进行部操作,不接受任何外部指令和数据,直到BF=0为止。

图4-4显示程序流程图

3.键盘模块

键盘模块流程图如图4-5。

在这里采用是独立式按键,按键扫描其实很简单,也就是按键消抖,只需三步,一步是判断按键按下,是哪个按键按下;

二步是延时,大约10MS左右就可以了,三步是检测是否还是刚才按键按下。

按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;

如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;

如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;

如果没有按下,就把时间显示出来。

判断有键按下的标志为:

读取的键值取反后不全为0,if<

test<

>

>

而判断按键是否释放的标志是:

读取的键值取反后为0。

图4-5键盘模块流程图

值得注意的是,软件延时去抖动这一步不要省略,否则对按键的判断可能会产生误判断。

在使用动态扫描显示的程序中,一般采用动态扫描显示程序作为去抖动的延时。

如图4-6所示。

图4-6按键抖动信号波形

第五章系统调试

本系统已符合设计课程基本要求,即可用LCD1602液晶显示屏显示年、月、日、时、分、秒以及温度等信息;

可使用按键开关可实现时间和日期的调整。

系统调试分为硬件调试、软件调试和软硬件联调。

调试时按模块调试,各模块逐个调试通过后再联调。

5.1硬件调试

〔1按键调试

对于按键电路我们在PROTEUS上先进行了仿真,仿真图如图5-1所示,通过给按键电路一段简单的程序,去测试按键电路是否正常。

程序如下:

#include<

reg51.h>

sbitks=P3^0;

voiddelay<

void>

;

voidleft<

voidmain<

{unsignedchari,t;

P3=0xff;

while<

1>

{if<

ks==0>

{for<

i=0;

i<

250;

i++>

for<

t=0;

t<

5;

t++>

if<

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1