何中文 51单片机和lcd1602的万年历设计 - 图文

更新时间:2024-03-02 16:30:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科毕业设计(论文)

题目 基于单片机的万年历设计

学 院 电气与自动化工程学院 年 级 06 专 业 自动化 班 级 学 号 学生姓名 指导教师 职 称 论文提交日期 2010-5-24

常熟理工学院毕业设计(论文)

基于单片机的万年历设计

摘 要

古人依靠日冕、漏刻记录时间,而随着科技的发展,电子万年历已经成为日渐流行的日常计时工具。

本文研究的万年历系统拟用STC89C52单片机控制,以DS1302时钟芯片计时、DS18B20采集温度、1602液晶屏显示。系统主要由温度传感器电路,单片机控制电路,显示电路以及校正电路四个模块组成。本文阐述了系统的硬件工作原理,所应用的各个接口模块的功能以及其工作过程,论证了设计方案理论的可行性。系统程序采用C语言编写,经Keil软件进行调试后在Proteus软件中进行仿真,可以显示年、月、日、星期、时、分、秒和温度并具有校准功能和与即时时间同步的功能。

实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

关键词:万年历 单片机 仿真

I

常熟理工学院毕业设计(论文)

The Calendar of Design based on Single Chip

Abstract

Ancient rely on corona, Louke recording time. The electronic calendar has become the popular tool for the daily timing.as the development of technology.

In the calendar system , the STC89C52 is used to control, with the DS1302 clock chip timing, DS18B20 collecting temperature, 1602 LCD Displaying. The system is composed of four modules:the temperature sensor circuit, the MCU control circuit, the display circuit and the correction circuit. This paper describes the hardware works, the functions of each interface module and its working process, demonstrates design theory is Feasibility.. C language is used to program, after debugging in the Keil software, then simulating in the Proteus. The electronic calendar can display year, month, day, week, hours, minutes, seconds, temperature, and has calibration features and functionality with real time synchronization.

The results show that this calendar is easy to read, intuitive display, versatile, simple circuits, and many other advantages,The design meets the development trend of electronic instruments and meters, and has broad market prospects.

Keywords: Calendar ; MCU ; simulation

II

常熟理工学院毕业设计(论文)

目 录

第一章 绪论 ............................................................................................................................... 1

1.1课题研究的意义 ................................................................................................................... 1 1.2本课题主要的研究工作 ....................................................................................................... 1 1.2.1研究内容 ......................................................................................................................... 1 1.2.2论文章节安排 ................................................................................................................. 2 1.3本章小结 ............................................................................................................................... 2

第二章 单片机的概述............................................................................................................. 3

2.1单片机的定义和特点 ........................................................................................................... 3 2.1.1单片机的定义 ................................................................................................................. 3 2.1.2单片机的特点 ................................................................................................................. 3 2.2单片机的发展现状和趋势 ................................................................................................... 4 2.2.1单片机的发展现状 ......................................................................................................... 4 2.2.2单片机的发展趋势 ......................................................................................................... 5 2.3编程语言的选择 ................................................................................................................... 5 2.4本章小结 ............................................................................................................................... 6

第三章 设计要求和方案论证............................................................................................... 7

3.1设计要求 ............................................................................................................................... 7 3.2单片机芯片的选择方案和论证 ........................................................................................... 7 3.3显示模块选择方案和论证 ................................................................................................... 7 3.4时钟芯片的选择方案和论证 ............................................................................................... 8 3.5温度传感器的选择方案与论证 ........................................................................................... 8 3.6电路设计最终方案决定 ....................................................................................................... 9 3.7本章小结 ............................................................................................................................... 9

第四章 系统的硬件设计与实现 ........................................................................................ 10

4.1电路设计框图 ..................................................................................................................... 10 4.2系统硬件概述 ..................................................................................................................... 10

III

常熟理工学院毕业设计(论文)

4.3主要单元电路的设计 ......................................................................................................... 11 4.3.1 STC89C52单片机简介 ................................................................................................ 11 4.3.2单片机主控制模块的设计 ........................................................................................... 13 4.3.3时钟电路模块的设计 ................................................................................................... 15 4.3.4温度传感器电路设计 ................................................................................................... 16 4.3.5独立式键盘设计 ........................................................................................................... 19 4.3.6显示模块的设计 ........................................................................................................... 19 4.4本章小结 ............................................................................................................................. 21

第五章 系统的软件设计 ...................................................................................................... 22

5.1程序流程图 ......................................................................................................................... 22 5.1.1系统总流程图 ............................................................................................................... 22 5.1.2温度程序流程图 ........................................................................................................... 23 5.1.3时钟程序流程图 ........................................................................................................... 24 5.1.4液晶显示程序流程图…………………………………………………………………25 5.2程序的设计 ......................................................................................................................... 26 5.2.1 DS18B20测温程序 ...................................................................................................... 26 5.2.2读写DS1302程序 ........................................................................................................ 27 5.2.3液晶显示程序 ............................................................................................................... 29 5.3本章小结 ............................................................................................................................. 29

第六章 仿真与调试 ............................................................................................................... 30

6.1软件简介 ............................................................................................................................. 30 6.1.1 Keil软件简介 ............................................................................................................... 30 6.1.2 Proteus ISIS简介 .......................................................................................................... 30 6.2 Keil软件调试流程 ............................................................................................................. 31 6.3 Proteus软件运行流程 ........................................................................................................ 33 6.4 万年历的功能仿真 ............................................................................................................ 35 6.5 硬件调试结果 .................................................................................................................... 35

IV

常熟理工学院毕业设计(论文)

作方式包括等待,暂停,睡眠,空闲,节电等工作方式。而单片机的封装水平也大大提高,随着贴片工艺的出现,单片机也大量采用了各种合符贴片工艺的封装方式出现,以大量减少体积。在这种形势中,Microchip公司推出的8引脚的单片机特别引人注目。这是PIC12CXXX系列。它含有0.5~2K程序存储器,25~128字节数据存储器,6个I/O端口以及一个定时器,有的还含4道A/D ,完全可以满足一些低档系统的应用。扩大电源电压范围以及在较低电压下仍然能工作是今天单片机发展的目标之一。目前,一般单片机都可以在3.3~5.5V的条件下工作。而一些厂家,则可以生产出在2.2~6V的条件下工作的单片机。

3、工艺上的进步

现在的单片机基本上采用CMOS技术,但已经大多数采用了0.6um以上的光刻工艺,有个别的公司,如Motorola公司则已采用0.35um甚至是0.25um技术。这些技术的进步大大地提高了单片机的内部密度和可靠性。

2.2.2单片机的发展趋势

单片机在目前的发展形势下,表现出几大趋势:1、可靠性及应用越来越水平高,和互联网连接已是一种明显的走向;2、所集成的部件越来越多,NS(美国国家半导体)公司的单片机已把语音、图像部件也集成到单片机中,也就是说,单片机的意义只是在于单片集成电路,而不在于其功能了。如果从功能上讲它可以讲是万用机。原因是其内部已集成上各种应用电路;3、功耗越来越低和模拟电路结合越来越多。

随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。

2.3编程语言的选择

在1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

在众多的程序设计语言中,C语言简洁紧凑,语言表达能力强,其结构化的流程控制有助于编制结构良好的程序。C语言程序经编译后生成的目标程序代码效率高,几乎可以与汇编语言媲美。C语言既具备高级语言使用方便、接近自然语言和数学语言的特性,同时也具备对计算机硬件系统的良好操纵和控制能力。C语言可移植性好,一个C语言源程序可以不做改动,或者稍加改动,就可以从一种型号的计算机移转到另外一种型号的计算

5

常熟理工学院毕业设计(论文)

机上编译运行。因此,C语言被广泛应用于各类系统软件和应用软件的开发。

所以本系统以C语言进行软件设计,增加了程序的可读性和可移植性,便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁了。

2.4本章小结

本章主要介绍了单片机的定义和特点,重点描述了单片机发展现状和未来的发展趋势,最后简单地介绍了选择的编程语言。

6

常熟理工学院毕业设计(论文)

第三章 设计要求和方案论证

3.1 设计要求

1、 具备在液晶上显示年、月、日、星期、时、分、秒的功能; 2、 具备年、月、日、星期、时、分、秒校准功能; 3、 具有与即时时间同步的功能; 4、 具有显示温度的功能;

3.2 单片机芯片的选择方案和论证

方案一:

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

采用STC89C52芯片,STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。同样具有AT89S51的功能,且具有在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,因此选择采用STC89C52作为主控制系统核心。

3.3 显示模块选择方案和论证

方案一:

采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。 方案二:

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

7

常熟理工学院毕业设计(论文)

方案三:

采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。所以在此设计中采用1602液晶显示屏。

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

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。 方案二:

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

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

方案一:

使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。 方案二:

采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。因此本设计选用DS18B20温度传感器。

8

常熟理工学院毕业设计(论文)

3.6 电路设计最终方案决定

综上各方案所述,对此次作品的方案选定: 采用STC89C52作为主控制芯片,DS1302时钟芯片计时,DS18B20采集温度,LCD1602作为显示模块。

3.7本章小结

本章主要介绍了系统要实现的功能和万年历系统硬件平台的选择,比较了主控模块,时钟模块,显示模块,温度采集模块中不同器件的优劣,最后确定了电路设计的整体方案。这也是完成设计的先决条件。

9

常熟理工学院毕业设计(论文)

第四章 系统的硬件设计与实现

4.1 电路设计框图

根据上章确定的方案给出了系统整体的设计框图:

LCD液晶显示模块键盘模块主控制模块DS1302时钟模块图4.1系统结构框图

为使时钟走时与标准时间一致,校时电路是必不可少的,键盘模块用来校正液晶上显示的时间;温度传感器则用来检测当前的环境温度;STC89C52单片机通过输出各种电脉冲信号来驱动控制各部分正常工作;而系统的时间、温度等数据则最终通过液晶模块显示出来。

STC89C52 温度传感器

4.2 系统硬件概述

本电路是以STC89C52单片机为控制核心,该芯片具有在线编程功能,功耗低,能在3.3V的超低压下工作;时钟芯片采用DS1302,它是一款高性能、低功耗、自带RAM的实时时钟芯片,具有使用寿命长,精度高和功耗低等特点,同时具有掉电自动保存功能,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,其工作电压为2.5V~5.5V;温度检测模块由DS18B20构成,它采用独特的单线接口仅需一个端口引脚进行通讯, 具有测量精度高、测量范围广等优点,其测温范围在-55~+125℃,工作电压为3v~5.5v;显示部份使用1602液晶显示屏来实现,该显示屏具有低功耗、寿命长、可靠性高的特点,其工作电压为5v。

10

常熟理工学院毕业设计(论文)

4.3 主要单元电路的设计

4.3.1 STC89C52单片机简介

STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。引脚排列如图2.1所示。

图2.1 STC89C52引脚图

从引脚功能来看,可将引脚分为三部分: 1、电源及时钟引脚

VCC:接+5V电源;VSS:接地;XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接

11

常熟理工学院毕业设计(论文)

外部时钟脉冲信号。 2、控制引脚

RST/VPT:RST是复位信号输入端,VPT是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源VCC发生故障而突然下降到一定低电压或断电时,第2功能VPT将为片内RAM提供电源以保护片内RAM中的信息不丢失。

ALE/PROG:地址锁存允许信号输出端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就会周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固化程序时,作为编程脉冲输入端。

PSEN:程序存储允许输出端。是片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。

EA/VPP:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。对8031单片机,EA必须接低电平。在8751中,当对片内EPROM编程时,该端接21V的编程电压。 3、I/O口引脚

P0.0~P0.7:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

P1.0~P1.7:P1口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。

P2.0~P2.7:P2口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

12

常熟理工学院毕业设计(论文)

P3.0~P3.7:P3口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。P3口亦作为STC89C52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。 4.3.2 单片机主控制模块的设计

本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。它具有丰富的内部资源,较大的数据、程序存储区。一个典型的单片机最小系统一般由时钟电路、复位电路、电源指示灯和外部扩展接口等部分组成,本系统也不例外,当单片机具备了这些最基本的条件后,就可以正常工作了。

单片机的最小系统如图4.2所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。XTAL0接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。RESET为复位引脚,连接复位电路,它用于对单片机进行初始化。复位电路包括复位电容(C6)、复位电阻(R3)和复位开关(S4)。VSS为电源地,VCC为电源正。

VCCU3VCCC610uFS4SW-PBR310K1234567891011121314151617181920P1.0(T2)VCCP1.1(T2EX)P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RESETP0.7(RXD)P3.0EA/VPP(TXD)P3.1ALE/PROGP3.2(INT0)PSENP3.3(INT1)P2.7P3.4(T0)P2.6P3.5(T1)P2.5P3.6(WR)P2.4P3.7(RD)P2.3XTAL0P2.2XTAL1P2.1VSSP2.0STC89C5222uF4039383736353433323130292827262524232221C422uF21Y111.0592C5

图4.2 单片机最小系统

13

常熟理工学院毕业设计(论文)

单片机最小系统复位、晶振电路简介 1、复位电路的设计

复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。

(1)单片机常见的复位电路

通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位电路:上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的

在此设计中,采用的按键复位电路。按键复位电路如图4.3所示。

C8REST10uFVCCS1SW-PBR210K

图4.3 复位电路

(2)复位电路工作原理

上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作

2、晶振电路的设计

晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。

通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4.4中Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。

14

常熟理工学院毕业设计(论文)

图4.4 时钟振荡电路

XTAL1C130PF12

C230PFY112MHZXTAL2 4.3.3 时钟电路模块的设计

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。图4.5所示为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始终是输入端。

C2U1RSTI/OSLCKVCC1DS1302P112Header 2图4.5 DS1302的硬件接线图

15

P1.1P1.0GNDX2X1VCC2VCC32.768KHZ21P1.220Y1C120

常熟理工学院毕业设计(论文)

时钟芯片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(读)。

4.3.4温度传感器电路设计

数字温度传感器DS18B20是由Dalles半导体公司生产的,它具有耐磨耐碰,体积小,使用方便,封装形式多样(如图4.6),适用于各种狭小空间设备数字测温和控制领域。

16

常熟理工学院毕业设计(论文)

图4.6 DS18B20的两种封装

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、配置寄存器(如图4.7)。

17

常熟理工学院毕业设计(论文)

存储器和控制器温度灵敏元件位64电源检测和单线接口高速缓存存储器DS18B20的供电方式有两种:寄生电源供电方式和外部电源供电方式。本设计采用外部电源供电方式(如图4.8),DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。

GNDDS18B2012VCCP3.34K7图4.8 DS18B20引脚接线

引脚说明:GND为接地引脚;DQ为数据输入输出脚。用于单线操作,漏极开路;VCC接电源正;

18

3VCC

VDDDQROM低温触发器TL高温触发器TH配置寄存器8位CRC生成器图4.7 DS18B20的内部结构组成

U2常熟理工学院毕业设计(论文)

4.3.5独立式键盘设计

实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。在本系统中,我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。

由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I/O口线,键数目较多,可节省口线。本设计采用的是独立式键盘。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态, 在进行本次设计中,只涉及到了设置、上调、下调三个功能。因此采用独立式键盘。如下图所示:

图4.9按键的设计

设置SW-PBp1.5上调SW-PBp1.6下调SW-PBp1.7

4.3.6 显示模块的设计

本设计中由于要对时间、温度进行显示,所以选择液晶显示屏1602模块作为输出。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 管脚功能如表4-1所示:

19

常熟理工学院毕业设计(论文)

表4-1 LCD1602引脚功能 引脚 符号 1 2 3 4 5 6 7 8 9 10 11 12 13 14

VSS VDD V0 RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 功能说明 一般接地 接电源(+5V) 液晶显示器对比度调整端。 RS为寄存器选择。 R/W为读写信号线。 E(或EN)端为使能(enable)端,下降沿使能。 底4位三态、 双向数据总线 0位(最低位) 底4位三态、 双向数据总线 1位 底4位三态、 双向数据总线 2位 底4位三态、 双向数据总线 3位 高4位三态、 双向数据总线 4位 高4位三态、 双向数据总线 5位 高4位三态、 双向数据总线 6位 高4位三态、 双向数据总线 7位(最高位) LCD1602主要管脚介绍:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址;当RS为高电平R/W 为低电平时可以写入数据。E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

将L1602的RS端和P2.0,R/W端和P2.1, E 端和P2.2相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。图4.10为1602液晶显示屏与单片机的硬件连接图。

20

常熟理工学院毕业设计(论文)

1234567891011121314151617181920VCC10KU1P1.0(T2)VCCP1.1(T2EX)P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RESETP0.7(RXD)P3.0EA/VPP(TXD)P3.1ALE/PROGP3.2(INT0)PSENP3.3(INT1)P2.7P3.4(T0)P2.6P3.5(T1)P2.5P3.6(WR)P2.4P3.7(RD)P2.3XTAL0P2.2XTAL1P2.1VSSP2.0ST8C9C524039383736353433323130292827262524232221VCCJ112345678910111213141516VSSVDDV0RSRWEDB0DB1DB2DB3DB4DB5DB6DB7E1E2LCD1602VCC 图4.10 LCD液晶与单片机硬件连线图

4.4本章小结

本章主要介绍了系统硬件设计,其中对时钟芯片DS1302、1602液晶显示屏、DS18B20温度传感器和STC89C52最小系统的设计做了详细阐述。此外还介绍了各模块和单片机的连接方法、其特性及电路原理,最后确定系统的整体硬件设计方案。

21

常熟理工学院毕业设计(论文)

第五章 系统的软件设计

5.1程序流程图

5.1.1 系统总流程图

系统总流程图如图5.1所示。流程图分析:首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间、温度等数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。

开始系统初始化设置键有否按下?NY进入修改时间模式读时间N设置时间读温度设置完成?Y显示 图5.1系统总流程图

22

常熟理工学院毕业设计(论文)

5.1.2 温度程序流程图

温度读取流程图如图5.2所示。流程图分析:开始进入初始化DS18B20,就是通过主机拉低单线产生复位脉冲然后释放该线,如果有应答脉冲,即发起ROM命令当成功的执行操作命令后,就使用Convert T命令即开始温度转换,当转换完后,又初始化DS18B20是否有应答脉冲,若有,就发起Read Scratchpad(读取暂存器和CRC字节)命令,既同时读出第1,2个字节,即为温度的数据。

开始初始化DS18B20

No

应答脉冲Yes发起SkipRom命令读取第1,2字节即为温度数据发起Convert T命令延时1s等待温度转换完成发起Read Scratchpad命令初始化DS18B20No应答脉冲?Yes图5.2 温度显示流程图

23

常熟理工学院毕业设计(论文)

5.1.3 DS1302时钟程序流程图

时钟流程图如图5.3所示。流程图分析:DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的数据送入液晶屏显示。这时若有设置键按下时,进行时间修改,完成后将数据送入时钟芯片;若没有按键按下,则直接存入EPROM,送入液晶屏显示。

开始初始化开中断读时钟芯片送显示设置键是否有按下?NY是否修改当前时间?Y送时钟芯片N送EPROM

图5.3 时钟流程图

24

常熟理工学院毕业设计(论文)

5.1.4 LCD显示程序流程图

显示程序流程图如图5.4。流程图分析:首先对1602显示屏进行初始化(初始化大约持续10ms左右),然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。

开始对1602初始化 写入显示设置命令延时5ms检查忙信号NBF=0?YN获得显示RAM地址延时5ms写入相应的数据数据显示完毕?Y结束

图5.4 LCD显示程序流程图

25

常熟理工学院毕业设计(论文)

5.2程序的设计

5.2.1 DS18B20测温程序

DS18B20是一种单总线数字式温度传感器,它与单片机之间采用的是串行数据传送,所以在对DS18B20进行读写操作时必须按照它的时序进行。一般访问DS18B20时按如下步骤进行:初始化;ROM操作命令;存储器操作命令;执行/数据。部分源程序如下: ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i--) { DQ=1;

DS18_delay(1); DQ=0;

dat>>=1; //复合赋值运算,等效dat=dat>>1 DQ=1; if(DQ) dat|=0x80;

DS18_delay(4); }

return(dat); }

WriteOneChar(unsigned char dat) //有参函数,功能是\写\,而写的内容就是括号内的参数 { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; DS18_delay(5); DQ=1; dat>>=1; //复合赋值运算,等效dat=dat>>1(dat=dat右移一位后的值) } DS18_delay(4); }

unsigned int ReadTemperature(void) { Init_DS18B20(); //初始化,调用初始化函数 WriteOneChar(0xcc); //跳过读序列号的操作,调用写函数,写0xcc指令码 WriteOneChar(0x44); //启动温度转换,调用写函数,写0x44指令码 DS18_delay(125); //转换需要一点时间,延时 Init_DS18B20(); //初始化,调用初始化函数

26

常熟理工学院毕业设计(论文)

WriteOneChar(0xcc); //跳过读序列号的操作,调用写函数,写0xcc指令码 WriteOneChar(0xbe); //调用写函数,写0xbe指令码,读温度寄存器 tempL=ReadOneChar(); //读出温度的低位LSB tempH=ReadOneChar(); //读出温度的高位MSB tempa=((tempH*256)+tempL)*0.0625; //温度转换 DS18_delay(20);

return(tempa); //运算结果返回到函数 :ReadTemperature()

5.2.2 DS1302读写程序

DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器

}

的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图5.5所示。

图5.5 DS1302的控制字

控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图5.6、5.7所示。

图5.6 单字节读

图5.7 单字节写

在进行任何数据传输时,RST必须被置高电平,每个SCLK为上升沿时数据被输入,下降沿时数据被输出。先把RST置低,禁止数据传输,SCLK置低,清零时钟总线,RST再置高,允许数据传输。传送完成后,RST置低,禁止字节的传送。部分源程序如下:

27

常熟理工学院毕业设计(论文)

void write_byte(uchar dat) //写一个字节 { ACC=dat; RST=1; for(a=8;a>0;a--) { IO=ACC0; SCLK=0; SCLK=1; ACC=ACC>>1; } }

uchar read_byte() //读一个字节 { RST=1; for(a=8;a>0;a--) { ACC7=IO; SCLK=1; SCLK=0; ACC=ACC>>1; } return (ACC); }

void write_1302(uchar add,uchar dat) //向1302芯片写函数,指定写入地址,数据 { RST=0; SCLK=0; RST=1; write_byte(add); write_byte(dat); SCLK=1; RST=0; }

uchar read_1302(uchar add) //从1302读数据函数,指定读取数据来源地址 { uchar temp; RST=0; SCLK=0; RST=1; write_byte(add); temp=read_byte(); SCLK=1; RST=0; return(temp); }

28

常熟理工学院毕业设计(论文)

5.2.3液晶显示程序

1602通过D0~D7的8位数据端传输数据和指令,其模块内的控制器有11条控制指令。当液晶显示屏的接口电路与单片机系统I/O按照并行数据传输方式连接完成以后,即可以对STC89C52单片机进行编程。在液晶屏完成显示之前首先要对液晶进行初始化。源程序如下:

lcd_init() //***液晶初始化函数**** { write_1602com(0x38); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c); //开显示不显示光标 write_1602com(0x06); //整屏不移动,光标自动右移 write_1602com(0x01); //清显示 write_1602com(yh+1); //日历显示固定符号从第一行第1个位置之后开始显示 for(a=0;a<14;a++) { write_1602dat(tab1[a]); //向液晶屏写日历显示的固定符号部分 //delay(3); } write_1602com(er+2); //时间显示固定符号写入位置,从第2个位置后开始显示 for(a=0;a<8;a++) { write_1602dat(tab2[a]); //写显示时间固定符号,两个冒号 //delay(3); }

}

5.3本章小结

本章对基于单片机的万年历系统软件模块进行设计,先对该系统进行了整体流程的设计,给出了设计的流程图,随后介绍了各模块的子程序。对一些模块常用的函数进行了解释,这一切都构成了这个系统的软件基础。

29

常熟理工学院毕业设计(论文)

第六章 仿真与调试

6.1软件简介

6.1.1 Keil软件简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。这款软件提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的是,Keil C51软件编译后生成的汇编代码,就能展现出生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

Keil软件中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,可载入Proteus仿真软件中的MCU中,进行功能仿真。

Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。应用Keil进行软件仿真开发的主要步骤为:1.编写源程序并保存;2.建立工程并添加源文件;3.设置工程;4.编译/汇编、连接,产生目标文件;5.程序调试。 6.1.2 Proteus ISIS简介

Proteus ISIS是英国Labcenter Electronics公司开发的电路分析与实物仿真软件。它由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,它运行于Windows操作系统上,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。

该软件的特点是:

(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、I2 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

(3)目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12

30

常熟理工学院毕业设计(论文)

系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

(4)支持大量的存储器和外围芯片。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大 ,可仿真ARM、51、AVR、PIC。Proteus启动画面:

此外,ARES软件是一款高级的布线编辑软件,它采用了32位数据库的高性能PCB设计系统,以及高性能的自动布局和自动布线方法。集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。

6.2 Keil软件调试流程

首先选择菜单File-New?,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open?,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c。

然后选择菜单Project-New Project?,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2),工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。如图6.1

图6.1 为项目选择CPU器件

这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group ‘Source Group1’”,

31

常熟理工学院毕业设计(论文)

出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。

紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option for Target ‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如果要写片,还必须在Output选项卡中选中“Creat Hex Fi”(如图6.2);其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。

图6.2 生成HEX文件

成功编译/汇编、连接后,选择菜单Debug-Start/Stop Debug Session(或按Ctrl+F5键)进入程序调试状态(如图6.3),Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-Step Over)、全速执行等多种运行方式进行程序调试。

32

常熟理工学院毕业设计(论文)

图6.3仿真调试状态窗口

如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-Inline Assambly?),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints?等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。

Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点,应用此软件来编写程序有着巨大的优势,熟悉此软件也是调试整个万年历系统的基础。

6.3 Proteus软件运行流程

Proteus ISIS的工作界面是一种标准的Windows界面,如图所示。

包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。

运行Proteus程序后,进入软件的主界面(如图6.4)。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。 Proteus ISIS的工作界面:

33

常熟理工学院毕业设计(论文)

图6.4 Proteus ISIS的工作界面

按P在库中查找元器件:

图6.5 Pick Devices窗口

34

常熟理工学院毕业设计(论文)

将所需要的元器件放置好后,绘制成原理图如图6.6

图6.6 proteus仿真万年历的原理图

6.4 万年历的功能仿真

模拟调试:当电路搭建好之后,选中单片机STC89C52,左键点击STC89C52,在出现的对话框里点击Program File按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击“OK”按钮就可以模拟了。点击模拟调试按钮的运行按钮,进人调试状态。图6.7为运行按键:

图6.7运行按键

上电后后LCD显示:

图6.8 LCD显示

35

常熟理工学院毕业设计(论文)

调节秒钟:

调节分钟:

调节时钟:

调节星期:

图6.9 秒钟的调节

图6.10 分钟的调节

图6.11 时钟的调节

图6.12 星期的调节

36

常熟理工学院毕业设计(论文)

调节日期:

图6.13 日期的调节

调节月份:

图6.14 月份的调节

调节年份:

图6.15 年份的调节

按键功能自上而下依次为:设置键、上调键、下调键:

图6.16 按键的设置

37

常熟理工学院毕业设计(论文)

温度调节:

图6.17 温度传感器

6.5 硬件调试结果

电子万年历的电路系统比较复杂,对于焊接方面不可轻视,只要电路系统中出于一处的错误,就会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺破带有包皮的导线,则会对电路造成短路现象。

在本次电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:

(1)对万年历修改时间或日期时,有时LCD液晶显示屏被屏蔽掉,造成不亮现象。 解决:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。

(2)烧入程序后,LCD液晶显示屏不显示或者亮度不好。

解决:不显示时首先使用万用表对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏的现象。若无此问题查看烧写的程序是否正确无误,对程序进行认真修改。当显示亮度不好时一遍旋转10K欧的滑动变阻器,一遍观看LCD显示屏,直到看到合适的亮度为止。

经过多次的反复调试试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。如下为硬件实物图:

38

常熟理工学院毕业设计(论文)

图6.18 万年历硬件图

图6.19 万年历显示

6.6 本章小结

本节介绍了Proteus软件和keil软件,阐述了如何用Proteus结合Keil软件仿真出电子万年历功能的过程并给出了仿真系统的操作过程。最后简要的介绍了硬件调试中的问题和解决办法。

39

常熟理工学院毕业设计(论文)

第七章 总结与展望

至此,关于毕业设计的所有内容就介绍完了,进行这次毕业设计一切都是从零开始,从最简单查资料、了解各个元件的功能起步,再确定设计方案、画流程图、编写程序到最后进行仿真,这次课题设计可以说成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此万年历实现后具有读取方便、显示直观、功能多样、电路简洁、等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。最终较好的完成了设计,达到了预期的目的,完了最初的设想。

但是由于时间和个人能力的原因,整个系统看起来还是显得非常的简单,只实现了一些最基本的功能,还有许多不足和可以扩展的地方。例如实现公历和农历的转换、闹钟报时等,这些有待以后来弥补,还望各位老师予以指正和修改。

40

常熟理工学院毕业设计(论文)

参考文献

[1] 刘和平. 单片机原理与应用[M].北京:机械工业出版社,2002,201-209

[2] 刘守义.单片机应用技术[M]. 西安:西安电子科技大学出版社,2002,98-107 [3] 刘勇. 数字电路[M]. 北京:电子工业出版社, 2004,111-118

[4] 康光华.电子技术基础—模拟部分 [M].(第五版)高等教育出版社.2005,247-261 [5] 谭浩强. C程序设计 [M].(第三版)北京:清华大学出版社,2005,256-278

[6] 周润景,张丽娜,刘印群. PROTEUS入门实用教程[M].北京:机械工业出版社,2007,314-325 [7] 戴佳,戴卫恒. 51单片机C语言应用程序设计实例精讲[M].北京:电子工业出版社,2006,231-246 [8] 徐爱钧,彭秀华. Keil Cx51 V7.0 单片机高级语言编程与uVision2应用实践 [M].(第二版)北京:电子工业出版社,2008,156-171

[9] 肖炎根,舒望.基于实时钟芯片的电子万年历设计[J].电子技术,2007,卷号(36):91-94 [10] 王怀平,王仁波,胡开明.Proteus仿真设计基于单片机AT89C51的电子万年历[J].科技广场,2008,卷号(10):197-198

[11] 鲁刚强. 基于液晶显示器的单片机系统设计[J].科技资讯,2008,卷号(35):22-23 [12] 余威明. MCU语音型电子万年历的开发[J]. 浙江工贸职业技术学院学报,2004,卷号(4):20-25 [13] 邱关源. 电路 [M].(第四版)北京: 高等教育出版社, 2006, 241-268.

[14] 陈凯. 液晶显示万年历、时间、星期及温度[D].湖南:湖南理工学院,2009.

[15] 张海兵, 李 敏. Protel电路设计实例与分析[M]. 北京:人民邮电出版社, 2005,119-205 [16] 黄劼, 徐晓秋. 单片机原理及接口技术[M]. 北京:国防工业出版社,2008,102-112 [17] 刘迎春. MCS-51单片机原理及应用教程 [M]. 北京:清华大学出版社,2005,145-157

[18] 张齐, 朱宁西.单片机应用系统设计技术:基于C51的Proteus仿真[M].(第二版) 北京:电子工业出版社,2009,245-264

[19] 来清民.传感器与单片机接口及实例[M].北京:北京航空航天大学出版社.2008,134-141 [20] 谢宜仁. 单片机硬件接口电路及实例解析[M]. 北京: 电子工业出版社, 2009, 210-219

[21] 付浩伟,向凤红,程加堂.基于DS18B20传感器的温度数据采集系统的设计[J]. 昆明理工大学信息与自动化学院,2007,卷好(6):131-134

[22] Alexandru Valeanu. Interfacing 8051 MCUs with I2C Serial EEPROMs. [D]. Microchip Technology Inc,2008.

41

常熟理工学院毕业设计(论文)

附录一:系统原理图

42

常熟理工学院毕业设计(论文)

附录二:系统PCB板

43

常熟理工学院毕业设计(论文)

附录三:系统程序

主程序:

#include\#define uint unsigned int #define uchar unsigned char

uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; #define yh 0x80 #define er 0x80+0x40 //液晶屏的与C51之间的引脚连接定义 sbit rs=P2^0; sbit en=P2^2;

sbit rw=P2^1; //如果硬件上rw接地,就不用写这句和后面的rw=0了 sbit led=P2^6; //LCD背光开关

//DS1302时钟芯片与C51之间的引脚连接定义 sbit IO=P1^1; sbit SCLK=P1^0; sbit RST=P1^2; sbit ACC0=ACC^0; sbit ACC7=ACC^7;

//校时按键与C51的引脚连接定义

sbit key1=P1^5; //设置键 sbit key2=P1^6; //加键 sbit key3=P1^7; //减键

sbit buzzer=P1^3; //蜂鸣器,通过三极管9012驱动,端口低电平响

/**************************************************************/

uchar code tab1[]={\ - - \ //年显示的固定字符 uchar code tab2[]={\ : : \ //时间显示的固定字符

//延时函数,后面经常调用

void delay(uint xms) //延时函数,有参函数 { uint x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); }

/********液晶写入指令函数与写入数据函数,以后可调用**************/

write_1602com(uchar com) //****液晶写入指令函数**** { rs=0; //数据/指令选择置为指令

44

本文来源:https://www.bwwdw.com/article/qvfa.html

Top