毕业设计论文.docx
《毕业设计论文.docx》由会员分享,可在线阅读,更多相关《毕业设计论文.docx(34页珍藏版)》请在冰点文库上搜索。
![毕业设计论文.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/a8e04745-38e3-46bf-819b-a19f952ae646/a8e04745-38e3-46bf-819b-a19f952ae6461.gif)
毕业设计论文
南京化工职业技术学院
毕业论文设计
题目:
基于AT89C52电子万年历的设计
姓名:
所在系部:
自动控制系
班级名称:
学号:
指导老师:
2011年12月
毕业论文中文摘要
基于AT89C52的电子万年历设计
摘要:
本文介绍了基于AT89C52的电子万年历的设计,主要由温度传感器电路、单片机控制电路、显示电路以及校正电路等四个模块组成。
本系统采用单片机AT89C52控制、实时时钟电路DS1302计时、数字温度传感器DS18B20采集温度、1602字符型液晶屏显示。
系统程序采用汇编语言编写,经Keil软件进行调试后在Proteus软件中进行仿真,可以显示年、月、日、星期、时、分、秒和温度,并具有校准功能和与即时时间同步的功能。
经过调试,本次设计的电子万年历具有读取方便、显示直观、功能多样、电路简洁等诸多优点。
关键词:
万年历AT89C52DS1302DS18B20
1引言
2系统的硬件设计
2.1电路设计框图
2.2系统硬件概述
2.3主要单元电路设计
3系统的软件设计
3.1系统总流程图
3.2温度程序流程图
3.3时钟程序流程图
3.4显示程序流程图
4仿真与调试
4.1调试软件简介
4.2Keil软件调试流程
4.3Proteus软件运行流程
4.4万年历的功能仿真
结论
致谢
参考文献
附录一电路原理图
附录二部分程序说明
各模块充分配合单片机的工作,AT89C52单片机通过输出各种电脉冲信号来驱动控制各部分正常工作;晶振电路为单片机提供精准的时序;DS18B20电路时刻监测环境温度并随时将采集的信号送给单片机处理;而系统的时间、温度等数据则最终通过液晶模块显示出来;整个系统设计简单、合理,能够充分完成设计要求。
图2.1系统结构框图
将系统拆分成以上的这些基本功能模块后,再根据各个模块所要完成的功能分别去设计,也就是按照“逐步求精”的思想去设计本系统,这将使设计工作细化,也有助于制定进度安排。
2.2系统硬件概述
本电路是以AT89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作;时钟芯片采用DS1302,它是一款高性能、低功耗、自带RAM的实时时钟芯片,具有使用寿命长,精度高和功耗低等特点,同时具有掉电自动保存功能,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,其工作电压为2.5V~5.5V;温度检测模块由DS18B20构成,它采用独特的单线接口仅需一个端口引脚进行通讯,具有测量精度高、测量范围广等优点,其测温范围在-55~+125℃,工作电压为3V~5.5V;显示部分使用1602液晶显示屏来实现,该显示屏具有低功耗、寿命长、可靠性高的特点,其工作电压为5V。
2.3主要单元电路设计
2.3.1AT89C52单片机简介
AT89C52是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复擦写的程序存储器和256B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
AT89C52单片机属于AT89C51单片机的增强
型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。
AT89C52单片机的基本结构如图2.2所示,
图2.2AT89C52单片机的基本结构
其基本结构包括:
8k字节Flash;256字节RAM;32位I/O口线;看门狗定时器;2个数据指针;三个16位定时器/计数器;一个6向量2级中断结构;全双工串行口;片内晶振及时钟电路。
AT89C52单片机的存储器结构特点之一是程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式。
AT89C52单片机在物理上有四个存储空间:
片内程序存储器和片外程序存储器;片内数据存储器和片外数据存储器。
AT89C52单片机有4个8位的并行接口,记作P0,P1,P2和P3,共32根I/O口线,实际上它们就是SFR中的4个。
这4个接口特性上主要差别是P0,P2和P3都具有第二功能,而P1口只能用做I/O口。
4个口的驱动能力也是不相同。
P1,P2和P3都能驱动3个LSTTL门,并且不需外加上拉电阻就能驱动MOS电路。
P0能驱动8个LSTTL门,但驱动MOS电路时,若作为地址/数据总线,则可以直接驱动;而作为I/O口时,需外接上拉电阻才能驱动MOS电路。
2.3.2单片机主控制模块的设计
本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂
的数据计算,一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。
单片机的最小系统如图2.3所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。
XTAL0接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
RESET为复位引脚,连接复位电路,它用于对单片机进行初始化。
复位电路包括复位电容(C3)、复位电阻(R1)和复位开关。
VSS为电源地,VCC为电源正。
图2.3单片机最小系统
单片机最小系统复位、晶振电路简介。
(1)复位电路的设计
复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。
1)单片机常见的复位电路
通常单片机复位电路有两种:
上电复位电路,按键复位电路。
上电复位电路:
上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。
它利用的是电容充电的原理来实现的。
按键复位电路:
它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。
如果要实现复位的话,只要按下RESET键即可。
它主要是利用电阻的分压来实现的。
在本设计中,采用的按键复位电路。
按键复位电路如图2.4所示。
图2.4复位电路
2)复位电路工作原理
上电复位要求接通电源后,单片机自动实现复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RESET引脚的高电平将逐渐下降。
RESET引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作。
(2)晶振电路的设计
晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图2.5中Y1、C1、C2。
可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。
图2.5时钟振荡电路
2.3.3时钟电路模块的设计
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。
图2.6所示为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。
DS1302由VCC1或VCC2两者中的较大者供电。
所以在主电源关闭的情况下,也能保持时钟的连续运行。
X1和X2是振荡源,外接32.768KHz晶振用来为芯片提供计时脉冲。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电行动时,在VCC大于等于2.5V之前,RST必须保持低电平。
在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。
SCLK始终是输入端。
图2.6DS1302的硬件接线图
时钟芯片DS1302的工作原理:
(1)DS1302的控制字节
DS1302控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
(2)数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
(3)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
2.3.4温度传感器电路设计
数字温度传感器DS18B20是由Dalles半导体公司生产的,它具有耐磨耐碰,体积小,使用方便,封装形式多样(如图2.7),适用于各种狭小空间设备数字测温和控制领域。
图2.7DS18B20的两种封装
(1)DS18B20的主要特性
1)适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电。
2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
9)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
(2)DS18B20的内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、温度报警触发器TH和TL、配置寄存器(如图2.8)。
图2.8DS18B20的内部结构组成
DS18B20的供电方式有两种:
寄生电源供电方式和外部电源供电方式。
本设计采用外部电源供电方式(如图2.9),DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。
图2.9DS18B20引脚接线
引脚说明:
GND为接地引脚;DQ为数据输入输出脚。
VCC接电源正。
2.3.5独立式键盘设计
在本系统中,我们采用了单片机来进行控制,因为单片机可以很好的解决按键抖动。
图2.10按键的设计
由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。
独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。
4行4列共16个键,只占用8根I/O口线,键数目较多,可节省I/O口线。
本设计采用的是独立式键盘。
键盘的工作方式可分为编程控制方式和中断控制方式。
CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。
这种方式为编程扫描方式。
由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态,在进行本次设计中,只涉及到了设置、上调、下调三个功能。
因此采用独立式键盘。
如图2.10所示。
2.3.6显示模块的设计
本设计中由于要对时间、温度进行显示,所以选择液晶显示屏1602模块作为输出。
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。
它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
管脚功能如表2-1所示。
表2-1LCD1602引脚功能
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端。
4
RS
RS为寄存器选择。
5
R/W
R/W为读写信号线。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)
LCD1602主要管脚介绍:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。
RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址;当RS为高电平R/W为低电平时可以写入数据。
E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
将LCD1602的RS端和P2.0,R/W端和P2.1,E端和P2.2相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。
当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。
当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。
图2.11为1602液晶显示屏与单片机的硬件连接图。
图2.11LCD液晶显示与单片机硬件连线图
3系统的软件设计
3.1系统总流程图
系统总流程图如图3.1所示。
流程图分析:
首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间、温度等数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。
图3.1系统总流程图
3.2温度程序流程图
温度读取流程图如图3.2所示。
流程图分析:
开始进入初始化DS18B20,就是通过主机拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令当成功的执行操作命令后,就使用ConvertT命令即开始温度转换,当转换完后,又初始化DS18B20是否有应答脉冲,若有,就发起ReadScratchpad(读取暂存器和CRC字节)命令,既同时读出第1,2个字节,即为温度的数据。
图3.2温度显示流程图
3.3时钟程序流程图
时钟流程图如图3.3所示。
流程图分析:
DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。
这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;若没有按键按下,则直接存入EPROM,送入液晶屏显示。
3.4显示程序流程图
显示程序流程图如图3.4所示。
流程图分析:
首先对1602显示屏进行初始化(初始化大约持续10ms左右),然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。
图3.3时钟流程图图3.4LCD显示程序流程图
4仿真与调试
4.1调试软件简介
4.1.1Keil简介
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。
KeilC51软件编译后生成的汇编代码,能展现出生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
Keil软件可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及A51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,可载入Proteus仿真软件中的MCU中,进行功能仿真。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存;建立工程并添加源文件;设置工程;编译/汇编、连接,产生目标文件;程序调试。
4.1.2ProteusISIS简介
ProteusISIS是英国LabcenterElectronics公司开发的电路分析与实物仿真软件。
ISIS是一款便捷的电子系统仿真平台软件,它运行于Windows操作系统上,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。
该软件的特点是:
(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(3)目前支持的单片机类型有:
ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
4.2Keil软件调试流程
首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c。
然后选择菜单Project-NewProject…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2),工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-OptionforTarget‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如果要写片,还必须在Output选项卡中选中“CreatHexFi”;其它选项卡内容一般可取默认值。
工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态(如图4.1),Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。
Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-StepOver)、全速执行等多种运行方式进行程序调试。
图4.1仿真调试状态窗口
Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点,应用此软件来编写程序有着巨大的优势,熟悉此软件也是调试整个万年历系统的
基础。
4.3Proteus软件运行流程
ProteusISIS的工作界面是一种标准的Windows界面,如图4.2所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
运行Proteus程序后,进入软件的主界面。
通过左侧工具栏中的P(从库中选择元件命令)命令,在PickDevices左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。
连接原理图见附录。
图4.2ProteusISIS的工作界面
4.4万年历的功能仿真
模拟调试:
当电路搭建好之后,选中单片机AT89C52,左键点击AT89C52,在出现的对话框里点击ProgramFile按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击“OK”按钮就可以模拟了。
点击模拟调试按钮的运行按钮,进入调试状态。
上电后LCD显示:
图4.3LCD显示
调节秒钟:
图4.4秒钟的调节
调节分钟:
图4.5分钟的调节
调节时钟:
图4.6时钟的调节
调节星期:
图4.7星期的调节
调节日期:
图4.8日期的调节
调节月份:
图4.9月份的调节
调节年份:
图4.10年份的调节
按键功能自上而下依