当前位置:文档之家› 基于51单片机的万年历

基于51单片机的万年历

基于51单片机的万年历
基于51单片机的万年历

中文摘要

本设计万年历以AT89C51为控制中心,与温度传感器DS18B20,时钟芯片DS1302综合应用为一体,不仅能够准确显示时间、日期,闹钟设置,环境温度测量及温度高低温报警等功能。

单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。单片机与数字万年历相结合,用于时间显示,温度测试等不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被检测数值的技术指标,从而能够大大提高产品的质量和数量。

关键词:单片机,温度传感器,C语言,液晶显示

ABSTRACT

This design USES AT89C51 as calendar control center, and the temperature sensor DS18B20, the clock DS1302 chip integrated application as a whole, and not only be able to accurately display the time, date, alarm, the environment temperature measurement and high temperature, low temperature alarm functions. SCM is a collection of CPU, RAM, ROM, I/O interface and interrupt system is one of the devices, only require additional power can be used for vibration and grain is the process of digital information and control. Single-chip microcomputer and digital calendar, combining for time to show, temperature testing has not only control convenient, simple and flexible configuration advantages, and which could increase the technical index of the tested value, which can greatly improve the quality of the products and quantity.

Key words:Single-chip microcomputer, Temperature Sensor,C language,Liquid crystal displ

目录

第一章前言 (4)

1.1系统开发背景及现状 (4)

1.2 系统开发的目的 (4)

第二章总体设计 (5)

2.1 本设计实现的功能和要求 (5)

2.2 设计的选择方案和论证 (5)

2.2.1单片机芯片的选择方案和论证 (5)

2.2.2显示模块选择方案和论证 (5)

2.2.3 时钟芯片的选择方案和论证 (6)

2.3.4 温度传感器的选择方案与论证 (6)

2.3总体设计框图 (6)

第三章硬件设计 (7)

3.1 主要元器件介绍 (7)

3.1.1 单片机简介 (7)

3.1.2 传感器DS18B20介绍 (8)

3.1.3 LCD1602液晶显示介绍 (9)

3.2 各模块设计 (10)

3.2.1 主控制电路 (10)

3.2.2 LCD1602显示模块设计 (11)

3.2.3 DS18B20温度传感器模块 (11)

3.2.4 键盘输入模块设计 (12)

3.2.5 蜂鸣器模块设计 (12)

3.2.6 DS1302时钟电路模块 (13)

第四章软件设计 (14)

第五章安装与调试 (16)

5.1 安装制作 (16)

5.2 硬件调试 (16)

5.2.1布线的原则与焊接 (16)

5.2.2 硬件调试与测试 (17)

5.3 软件调试 (17)

5.3.1 软件测试仪器 (17)

5.3.2 软件调试与测试 (17)

5.4 联调 (18)

5.5测试结果分析与结论 (19)

第六章总结 (20)

参考文献 (21)

附录A (22)

附录B (24)

致谢 (26)

第一章前言

1.1系统开发背景及现状

当今世界,知识更新的速度越来越快。特别是在电子技术领域,新的技术,新的产品层出不穷,日新月异,随着电子产品的发展,在这个快节奏的年代,时间就是效益,就是金钱,因此,时间对人们来说是越来越宝贵了。但在这种快节奏的生活中,人们常常忘记了时间,一旦遇到重要的事情都要事先做好合理的时间安排,所以一个能够进行报时以及有其他多种用途的万年历是对人们的生活工作是非常具有现实意义的。

人们对计时工具在性能和准确度方面的要求是越来越高,传统的时钟正在慢慢被淘汰,因为在很多方面普通时钟已不能满足人们在某些方面的需求了,特别是在准确度方面,而多功能数字钟它占了很大的优势,因为它采用数字电路来实现对时、分、秒的设计。不管在性能还是在款式样式上都发生了质的飞跃变化,电子闹钟,数字显示的计时装置,广泛用于个人家庭,公司,娱乐场所,码头,办公室等等公共场所,成为人们日常生活中必不可少的生活必需品。因为数字万年历从原理上讲是一种典型的数字电路,由于数字集成电路的不停发展和石英晶体振荡器的发展以及广泛应用,使得数字钟的精度远远超过传统的钟表,钟表的数字化给人们的生产生活带来了极大的便利而且大大地扩展了钟表原先的功能。因此,研究多功能数字钟及扩大其应用,有着非常现实的意义。

1.2 系统开发的目的

多功能数字万年历系统的最基本功能就是时间的显示,闹钟,温度的采集和报警,本设计的意义在于传统的时钟不能满足现代人们多元化快节奏的生活需求,此设计将单片机作为数字钟的核心控制器,可以通过DS1302数字时钟芯片进行秒,分,时来计时实现计时校时功能,将其时间数据经单片机输出,利用LCD1602显示器液晶显示出来。采用DS18B20对室内坏境进行温度测量报警,人性化的设计提醒忙碌人们要注意天气温度变化,冬天要保暖御寒,夏天防止高温中暑,通过键盘可以进行手动时间定时、校时闹铃设定,环境温度上下限设定报警等等。该系统较传统时钟不仅测量精确度高,工作稳定,而且功能可以扩展,使用起来方面,可以广泛用于人们日常生活中,所以具有较好的实用价值。

第二章总体设计

2.1 本设计实现的功能和要求

1、基于单片机的多功能万年历,采用LCM1602液晶显示,显示项目有:年月日、星期、时分秒、带有闹钟功能,带温度显示,高低温报警。

2、采用时钟芯片DS1302,走时非常精确。板载3V纽扣电池,断电重新上电无需重新设置时间,由3V提供时钟芯片继续计时。同时自动随时期更变星期。

3、采用DS18b20温度传感器,温度精确显示到0.1度。并且可以设置高低温度报警。

4、带闹钟功能,且闹钟时间可调,上电默认为:11:00:00,具有掉电闹钟时间保存功能,并可设置闹钟开关等功能。

5、四个键操作:设置时间、加减、闹钟切换等。蜂鸣按键提示音功能。

2.2设计的选择方案和论证

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

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

方案二: 采用AT8C52,片内ROM全都采用Flash ROM,能以3V的超底压工作,同时也与MCS-51系列单片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

本设计选择采用A T89C52作为主控制系统。

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

方案一:采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。

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

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

本设计采用了LED数码管作为显示。

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

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

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

本设计采用DS1302时钟芯片。

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

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

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

综上各方案所述,对此次作品的方案选定:采用AT89S52作为主控制系统,DS1302提供时钟,数字式温度传感器,LED数码管动态扫描作为显示。

2.3总体设计框图

本次设计的基于单片机控制的电子万年历,其具有年、月、日、星期、时、分、秒的显示等功能;具有高低温报警功能;可以设置闹铃的功能。如图2-1所示为硬件总体设计框图。其具体实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给单片机,再由主控制器传送给LCD显示信息。并且可以在键盘设置模块输入修改时间,设置闹铃等信息,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD模块上显示。

本设计总体框图如图2-1所示。

图2-1 硬件设计总体框图

第三章硬件设计

3.1 主要元器件介绍

3.1.1 单片机简介

单片机引脚图如图3-1所示。

图3-1 单片机引脚图

VCC:供电电压。

GND:接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外

部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口。

管脚备选功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA /VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

3.1.2 传感器DS18B20介绍

DS18B20“一线总线”数字化温度传感器是DALLAS最新单线数字温度传感器,同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为±2°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。

DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。继“一线总线”的早期产

品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

3.1.3 LCD1602液晶显示介绍

1、LCD1602显示器的结构:1602LCD的RAM地址映射及标准字库表,液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在,哪里显示字符。内部显示地址如图3-2所示。

图3-2 1602的内部显示地址

2、主要技术参数:

显示容量:16×2个字符,芯片工作电压:4.5—5.5V,工作电流:2.0mA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.95×4.35(W×H)mm。

3、引脚功能说明如表3-1,引脚图如图3-3所示。

图3-3 1602引脚图

表3-1 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明。

编号符号引脚说明编号符号引脚说明

1 VSS 电源地9 D

2 数据

2 VDD 电源正极10 D

3 数据

11 D4 数据

3 VL 液晶显示偏

12 D5 数据

4 RS 数据/命令选

5 R/W 读/写选择13 D

6 数据

6 E 使能信号14 D

7 数据

7 D0 数据15 BLA 背光源正极

8 D1 数据16 BLK 背光源负极

3.2 各模块设计

3.2.1 主控制电路

单片机最小化系统如图3-4所示。

图3-4 单片机最小化系统

单片机最小系统确保单片机的正常工作,主要由晶振电路和复位电路组成。任何复杂的单片机系统,都是在单片机最小系统这个基础上通过添加模块设计出来的。

1、单片机的引脚40要接电源端,采用+6V电源供电。

2、晶振电路

单片机的18、19引脚接外部晶振,晶振的频率决定了单片机系统的时钟频率。比如晶振的频率选择12MHZ,那么单片机工作的时钟频率就是12MHZ。单片机常用的晶振的频率是11.0592MHZ,12MHZ,通常一个单片机系统共用一个晶振,便于各部分保持同步。晶振上还要接两个起振电容,可在20~40pF间选取。本设计的晶振由1个12MHZ的晶振,2个33pF起振电容组成。

3、复位电路

单片机的引脚9是复位端。单片机系统在刚上电时,或者是发生故障,都要进行复位。

本设计采用的复位电路,是手动按键复位电路。例如频率为12MHZ,即每机器周期为1us,引脚9只需持续时间2us以上的高电平,就发生复位。

4、单片机的引脚31,决定是访问内部存储器还是外部存储器。由于现在单片机内部存储器的容量都足够大,基本都是从内部存储读取程序,即不需要扩展外部存储器,因此EA引脚应该应该接高电平。但是,如果将EA引脚悬空,会导致程序执行不正常。

3.2.2 LCD1602显示模块设计

LCD1602显示器工作原理

线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。

字符的显示:用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。原理图如图3-5所示。

图3-5 LCD1602显示器模块原理图

3.2.3 DS18B20温度传感器模块

温度采样在本系统采用了美国DALLAS公司生产的单总线式数字温度传感DS18B20,测温分辨率高达0.0625摄氏度,将结果转换成串行数字信号。由于采用单总线结构,节级了口线的资源,本系统只占用了p2.0口对温度经行采样。原理图如图3-6所示。

图3-6 DS1802温度传感模块原理图

3.2.4 键盘输入模块设计

本系统四个按键占用了四个I/O口,分别接在AT89S52单片机的P2口的P2.4,P2.5,P2.6 ,P3.4引脚上。采用独立式键盘接口,每个按键各接一根输入线,通过检测输入线的电平状态很容易判断哪个键被按下。根据多功能数字钟设置键,加一键,减一键,确定键,通过键盘可以随时手动设置日期、时间、闹钟、温度上限和下限数值报警功能。原理图如图3-7所示。

图3-7 键盘模块原理图

3.2.5 蜂鸣器模块设计

该系统采用一个普通的发光二极管和一个蜂鸣器组成来实现闹钟、当时间到达设定值,蜂鸣器响,蜂鸣器占用了1个I/O口P2.7,它的动作由P2.7控制,当温度超过设定温度上下限值时,二极管导通,二极管和蜂鸣器发出光声报警。原理图如图3-8所示。

图3-8 蜂鸣器发声电路

3.2.6 DS1302时钟电路模块

DS1302 是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时实钟/日历和字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒分时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步的方式进行通信,仅需用到三个口线1、RST 复位2、I/O数据线3、SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW。原理图如图3-9所示。

图3-9 时钟电路原理

第四章软件设计

1、系统流程图

本设计以单片机为控制中心,以温度传感器DS18B20,液晶显示LCD1602,时钟芯片DS1302组成外围电路,通过相关的编程,用手动按键进行复位和时间控制调整,共同完成日期、时间、温度报警和闹钟功能。软件流程图如图4-1所示。

图4-1 软件流程图

图4-1 软件流程图

2、时间日期时间显示控制流程图

DS1302的初始化,依次先在秒寄存器、分寄存器、时寄存器、日寄存器、月寄存器、周寄存器、年寄存器中写入世间的初始值,然后单片机再从秒寄存器、分寄存器、时寄存器、日寄存器、月寄存器、周寄存器、年寄存器中读出时间的读出时间的初始值,经由LCD1602显示出来。

当通过按键来调整时间时,就是在相应的寄存器中写入调整后的时间值,然后单片机再从相应的寄存器中读出调整后的时间值,经由LCD 1602显示调整后的时间。流程图如图4—2所示。

图4-2 日期时间设置流程图

3、温度闹钟设置报警

本模块通过按设定闹钟和高低温的值,通过程序控制和蜂鸣模块,共同实现闹钟和温度报警功能。流程图如图4-3所示。

图4-3 温度闹钟设置报警流程图

第五章安装与调试

5.1 安装制作

1.清理元器件,重点辩别认清电阻器阻值及相应代号,对电阻、电容、发光二极管、三极管、电源变压器等要用万用表一一检测。

2.安装时,电阻器、整流二极管采用卧式插装,并近贴电路板。瓷介电容器、电解电容器、三极管等采用立式插装,也要近贴电路板。发光二极管安装时可不讲极性,因为其供电电路为交流电源,其余有极性元件:如电解电容器、整流二极管、稳压二极管、三极管、集成电路等必须按正确的极性插装,否则电路不会正常工作。

3.焊完元器件后,在覆铜面剪掉多余元器件的引线,最好用斜口钳,可防止因剪线而使覆铜皮损坏。

4.焊接完后,请认真对照电路原理图、安装图检查电路板上有无漏焊、错焊、短路、断路等错误现象,确认无误后才能通电。

5.2 硬件调试

5.2.1布线的原则与焊接

画硬件原理图时应注意些原则:

1、按统一的要求选择图纸幅面、图框格式、电路图中的图形符号、文字符号。

2、应根据万年历的工作原理,将各元器件自左到右,自上而下地排成数列。

3、图面安排时,电源部分一般安排在左下方,输入端在左侧,输出端在右侧。

4、图中可动元件的工作状态,原则上应处于开端、不加电的工作位置。

5、将所有芯片的电源和引脚全部利用,不要悬空。

在实际画的过程中应考虑自己的制作水平,应防止制作出的PCB板有断线等情况的发生。

在画PCB时应注意先看元器件的实物,然后看软件是否有相对应的库元器件,如果没有就需要根据实物自己画出相应的元件,以免做好板后才发现元器件是无法插入相应的孔中。

焊接:

万年历的制作过程中焊接最容易出现问题,在焊接前,必须先对照元器件的PCB图和原理图,以免防止元器件的正负极接反或者把元器件搞错,在焊接时要注意虚焊。根据焊接的经验,在焊点锡是尖角的,一般都是焊实的;如果焊点处出现圆颗状。则容易出现虚焊,元器件的管脚没有焊实,出现接触不良的情况。检查是否虚焊可以在完成焊接以后,插上电源,看电路是否正常工作。如果不行,则可以用数字万用表进行检测。用数字万用表检测的时候,可以很方便的检测出电路的通断。也很容易检测是否虚焊。

5.2.2 硬件调试与测试

在制作出实物后,硬件并非按照理论上的情况成功进行。经过检测发现单片机的工作电压不能达到6V,导致LCD不能正常显示,经过稳压电路供电有问题,经过对焊接的修正和电容的更换,使单片机能获得6V的正常工作,LCD正常工作。

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

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

(1)LED数码管的断码错乱,原因出于没有认真看清a、b 、c等引脚信息。

解决:重新排列74LS47的输出端,相应接入LED数码管,即可解决出现在的断码或乱码。

( 2)对万年历修改时间或日期时,有时LED数码管被屏蔽掉,造成不亮现象。

解决:根据仪器的测试,发现电路的驱动能力不足,最后在DS1302时钟芯片的/CS、SCLK、RET端接入5.1K的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。

5.3 软件调试

5.3.1 软件测试仪器

5.3.2 软件调试与测试

软件调试方法与选用的软件结构和程序设计技术有关。如果采用模块设计技术,则逐个模块调好以后,再进行系统程序总调试。

对于模块结构程序,要对子程序逐个进行调试。调试子程序是,一定要符合入口条件和出口条件,调试手段可采用单步运行方式和断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检测程序执行结果是符合设计要求。通过检测可以发现程序中的死循环错误、机器

码错误和转移地址的错误,同时也可以发现用户系统中的硬件故障,软件算法和硬件设计错误,在调试过程中不断调整用户系统的软件和硬件,完成每个程序模块的调试。

每个程序模块通过后,可以联合各功能模块进行整体程序综合调试。在这一阶段如果发生故障,可以分析子程序在运行时是否破坏现场、缓冲单元是否发生冲突、零位的建立和清除在设计上是否失误、堆栈区域是否溢出或输入设备的状态是否正常等。若用户系统是在开发系统的监控程序下运行,还要考虑用户缓冲单元是否和监控程序的工作单元发生冲突。

单步运行只能验证程序正确与否,而不能确定定时精度、CPU的实时响应等问题,所以单步和断点调试后,还应进行连续调试。除了观察稳定性之外,还要观察用户系统的操作是否符合原始设计要求,以及安排的用户操作是够合理等,必要时还要做适当修正。

DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出)。

在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK 周期的下降沿输出数据字节。

DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。

电子成年历是多功能的数字型,可以看当前日期(阴、阳历),时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:

1、修改时间、日期时没有农历没有自动对应上。

解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题。

2、加入温度的程序后,进行修改时间、日期时相应的数码管位没有按要求闪动。

解决:由于DS18B20是串行通信数据,只用一个口线传输,在处理采集的模拟信号时需要一定的时间,当把万年历的程序相接入时,会对延时有很大的影响。所以在调用温度子程序时,先关闭定时器1中断允许,在温度子程序反回时再打开定时器1中断允许,最终解决了此问题。

5.4 联调

联调是指让用户系统的软件在其硬件上实际运行,进行软、硬件联合调试,从中发现硬件故障或软、硬件设计错误。这是对用户系统检验的重要一关。

联调主要解决以下问题:

1、软、硬件能否按预定要求配合工作,如果不能,那么问题出在哪里?如何解决?

2、系统运行中是否有潜在的设计是难以预料的错误,如硬件延时过长造成工作时序不符合要求、布线不合理造成有信号串扰等。

3、系统的动态性能指标(包括精度、速度参数)是否满足设计要求。

系统联调时,首先采用单步、断点、连续运行方式调试与硬件相关的各程序段既可以检验这些用户程序段的正确性,又可以在各功能独立的情况下,检验软、硬件的配合情况。然后,将软、硬件按系统工作要求进行综合运行,采用全速断点、连续运行方式进行总调试,以解决在系统总体运行的情况下软、硬件的协调与提高系统动态性能。在具体操作中,用户系统在开发系统环境下,先借用仿真器的CPU、存储器等资源进行工作。若发现问题,按上述软、硬件调试方法准确定位错误,分析错误原因,找出解决办法。用户系统调试完后,将用户程序固化到用户系统的程序存储器中,再借用仿真器CPU使用户系统运行。若无问题,则用户系统插上单片机即可正确工作(注意,不要忘记用户系统时钟、复位电路的调试)。

5.5测试结果分析与结论

1、测试结果分析:

(1) 在测试中遇到发光二极管、LCD液晶显示屏为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊虚焊,或者元件损坏。

(2) LCD液晶显示屏显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。

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

第六章总结

制作这次毕业设计一切都是从零开始,从最简单的画流程图起步。一步一个脚印地走过来。如果说我们以前学的都是一些理论知识和分散的知识,那么在这次毕业设计中则是系统的把大学里所学的连贯的灵活运用起来。从最简单的电阻电容的识别和个电阻阻值的选择,以及各种电子元器件的识别、使用及其检测,到电烙铁的正确使用以及焊接的要求及注意点、PCB板的布局及其制作了解,都有了更详细和更专业的学习和实践。

这次的毕业设计对我来说无疑是一次较好的动手锻炼机会,因此从一开始就抱着一种较认真的态度,无论是从了解电子万年历背景、意义、及其实现原理,还是后来的焊接对我来说都是一种提高。

在硬件部分的设计中。我在方案选择上花了很大的功夫,比如说:在万年历的显示上到底是用LED数码显示还是用LCD液晶显示,我做了很详细的比较,选出最适合的。这样在硬件设计时有关LCD液晶显示的给、原理都有详细的介绍。经过查阅资料和版块设计我不仅把大学所学的都回忆了一遍并且灵活得把他们串起来运用。在硬件还有焊接的问题,其要注意不能虚焊、漏焊、短焊。在软件部分和调试部分,中间也遇到过一些问题,但通过同学的帮助和老师的指导终于完成了设计。

这次的制作使我明白做任何一件事都需要互相帮助和学习,任何事只有自己动手了才会学得更多和理解的更透彻。在现代高速发展的今天,仅仅用一些理论知识来武装大脑是不够的,我们还需要用实际动手操作能力来装扮我们的双手,只有这样我们才能全面发展自己,成为社会需要的人才。

相关主题
文本预览
相关文档 最新文档