毕业设计基于液晶显示的智能万年历的设计.docx
《毕业设计基于液晶显示的智能万年历的设计.docx》由会员分享,可在线阅读,更多相关《毕业设计基于液晶显示的智能万年历的设计.docx(53页珍藏版)》请在冰豆网上搜索。
毕业设计基于液晶显示的智能万年历的设计
毕业设计
课题名称:
基于液晶显示的智能万年历的设计
设计时间:
2011年09月—2011年12月
系部:
电子信息工程系
总目录
第一部分任务书
第二部分开题报告
第三部分毕业设计正文
第一部分
任
务
书
扬州工业职业技术学院
毕业设计任务书
系部
电子系
指导老师
唐菲
职称
助教
学生姓名
蒋冬冬
班级
0901应用电子
学号
0905120121
设计题目
基于液晶显示的智能万年历的设计
设计
内容
目标
和
要求
一、设计内容目标:
本毕业设计用单片机AT89C51、时钟芯片DS1302、温度芯片DS18B20、液晶LCD1602、蜂鸣器、按键、晶振电路和复位电路构成智能万年历。
通过本设计旨在让学生将单片机的软硬件知识和社会实践应用相结合,设计出有一定实用性的单片机应用系统。
培养学生学会独立分析问题,运用所学知识解决实际问题的能力,培养学生包含专业能力、方法能力和社会能力在内的综合职业能力。
二、设计要求:
1)收集、整理与毕业设计有关领域的信息资料;
2)完成本毕业设计方案和结构框图的设计;
3)完成本毕业设计电路原理图设计;
4)完成本毕业设计程序流程图和C语言程序设计;
5)完成软件和硬件系统的调试,达到技术要求;
6)形成符合学校规定的毕业设计书面文档;
教研室
审核
系部
审核
第二部分
开
题
报
告
扬州工业职业技术学院电子信息工程系12届
毕业设计(论文)开题报告书(表1)
学生姓名
蒋冬冬
专业
应用电子技术
班级
0901应用电子
学号
0905120121
题目
基于液晶显示的智能万年历的设计
指导教师
唐菲
职称
助教
学位
学士
题目类别
□工程设计□基础研究□√应用研究□其它
【课题的内容与要求】
本次毕业设计是以AT89C51为主控芯片,用C语言编程使单片机实现万年历的液晶显示,以达到能显示出时间、星期、温度的效果。
这种控制电路结构简单,可靠性高,应用性强;软件程序适应范围广。
【前言】
目前,电子领域正朝着集成化,微型化的方向飞速发展。
微电子技术的快速更新和工业测量的大量需求。
给人类生活带来了根本性的改变,尤其是单片机技术的应用产品已经走进了千家万户。
电子万年历的出现给人们的生活带来的诸多方便。
其具有一些突出优点:
体积小、重量轻、耗电少、电源单一、功能强、价格低、运行速度快、抗干扰能力强、可靠性高,所以在交通灯、广告、工业控制、仪器仪表、密码锁等产品中都可以看到单片机的身影。
【方案的比较与评价】
因为单片机是个体积小、重量轻、功能强大、使用方便而且可靠性高的系统,所以把单片机作为本设计硬件电路的主体,即以AT89C51芯片为核心,设计并安装电路,实现显示时间日期温度的功能。
方案一:
用EDA技术及VHDL语言控制来实现显示及测温度,且显示也可用数码管,但是数码管屏幕有限不是很方便的显示很多的数据及文字等。
对于VHDL语言也不够了解,故不采用此方案。
方案二:
用C语言编程来控制单片机让它在液晶上显示数据及文字。
由于单片机结构简单、控制功能强、可靠性高、体积小、价格低等优点,以及液晶屏幕可以完整的同时显示数据及文字等内容,综合上述方案的选择和比较,选择方案二。
【预期的效果及指标】
1、保存产品设计过程中相关资料
2、完善各部分原理图
3、实现时、分、秒、年、月、日、星期、温度的显示以及调整的功能
4、在设计过程中的编写的程序以及调试的记录
5、实现仿真效果
【进度安排】
2011年9月10日-2011年9月30日选题、调研、收集资料
2011年9月30日-2011年10月16日论证、开题
2011年10月17日-2011年12月10日设计(写作初稿)
2011年12月11日-2011年12月30日修改、定稿、打印
【参考文献】
[1]苏平.单片机的原理与接口技术[M].北京:
电子工业出版社,2006:
1-113.
[2]纪宗南.单片机外围器件使用手册[M].北京:
北京航空航天大学出版社,622-655.
[3]尹勇.单片机开发环境μVision2的开发指南[M].北京:
北京航空航天大学出版社,2004:
173-199.
[4]张斌武.单片机系统Proteus设计与仿真[M].北京:
电子工业出版社,2005:
52-89.
【指导教师意见】(有针对性地说明选题意义及工作安排是否恰当等)
□同意提交开题论证□修改后提交□不同意提交(请说明理由)
指导教师签章:
年月日
【系部意见】
□同意指导教师意见□不同意指导教师意见(请说明理由)□其它(请说明)
系(部)主任签章:
年月日
第三部分
毕
业
设
计
正
文
基于液晶显示的智能万年历的设计
蒋冬冬
0901应用电子
[摘要]本设计以数字集成电路技术为基础,单片机技术为核心。
软件设计采用模块化结构、C语言编程。
系统通过LCD1602显示数据,可以显示年、月、日、时、分、秒、星期、温度。
硬件由主控器、时钟电路、温度检测电路、显示电路、按键电路、蜂鸣器6个模块组成。
主控模块用AT89C51、时钟电路用时钟芯片DS1302、显示模块用LCD1602、温度检测采用DS18B20温度传感器、按键电路用普通按键接上拉电阻完成。
[关键词]单片机AT89C51DS1302DS18B20液晶显示
LCD-baseddesignofintelligentcalendar
JiangdongDong
0901AppliedElectronics
Abstract:
Thedesignofdigitalintegratedcircuittechnology,chiptechnologyasthecore.Modularstructureofsoftwaredesign,Cprogramminglanguage.SystemthroughtheLCD1602displaydata,youcandisplayyear,month,day,hour,minute,second,week,temperature.Hardwarebythemaster,theclockcircuit,thetemperaturedetectioncircuit,displaycircuit,keycircuit,buzzer6modules.ControlmodulewiththeAT89C51,clockcircuitwithaclockchipDS1302,displaymodulewiththeLCD1602,thetemperaturedetectedbytemperaturesensorDS18B20,keycircuitwithpull-upresistorconnectedtoanordinarybuttontocomplete.
Keywords:
MCUAT89C51DS1302DS18B20LCDdisplay
第一章前言
1.1本课题研究的背景以及现实意义
随着微电子技术和超大规模集成电路技术的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,单片微型计算机体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域得到了广泛的应用。
电子万年历是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用。
但通过我们对各种电子钟表、历的不断观察总结发现目前市场的钟、历都存在一些不足之处,比如:
时钟不精确、产品成本太高、无环境温度显示等,这都给人们的使用带来了某些不便。
为此设计了一种功能全面、计时准确、成本低廉的基于51单片机的万年历。
1.2本课题对于专业知识的综合应用情况
由于学习的知识深度的限制以及实际情况的考虑,对于时间系统的电路设计采用了以Protel99se软件进行了电路原理图设计。
电路上参考了扬州工业职业设计的单片机开发板进行设计。
在设计中力求以最简单的电路来可靠完成时间系统的功能。
在设计中严格按照工艺要求进行元器件的布局以及布线等设计,力求使得所设计的产品符合工艺化以及工程化的要求。
在设计中综合应用了大学期间所学习的《模拟电子产品的安装与测试》、《数字电子产品的安装与测试》以及《电子产品的安装与调试》等多门专业课程。
本课题的选题难度适中,能够对应用电子技术专业学习的专业课程有较为全面的应用与掌握,同时作为一个综合的应用,也与自己的专业能力符合。
第二章智能万年历的工作概述以及原理分析
2.1智能万年历的工作概述
本设计是以AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
温度检测电路由DS18B20提供,当温度高于35度时会报警。
显示模块由LCD1602提供,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号。
按键电路由普通的按键和上拉电阻组成。
图2-1智能万年历的系统原理框图
2.2各单元电路模块介绍
2.2.1单片机最小系统模块
利用单片机本身的资源外加时钟电路、复位电路及电源电路可以构成单片机的最小系统。
在最小系统的基础上连接需要的控制接口电路以及向程序存储器中下载相应的控制程序才能正常工作。
如下图2-2
图2-2单片机最小系统模块
2.2.21602液晶显示模块
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低消耗应用系统中得到越来越广泛的应用。
LCD1602液晶模块的容量为2行16个字,是一种5*7点阵图形来显示字符的液晶显示器,LCD1602模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码,如A的代码是010000001B。
其工作电压是4.5V-5.5V,工作电流是2.0mA,模块最佳工作电压是5V。
液晶电路如下图2-3
图2-3液晶显示模块
2.2.3DS18B20温度传感器模快
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
图2-4温度传感器DS18B20的外形图
DS18B20的主要特性如下:
适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电。
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内,芯片的测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
在正常工作的时候,可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
芯片具有较高的转换速度,在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快最重要的是,测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力当电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
其结构如下图2-5
图2-5DS18B20温度传感器模块
2.2.4DS1302时间检测模块
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:
复位(RST)、I/O数据线、串行时钟(SCLK)。
时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。
DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。
引脚功能图如图2-7
图2-6时钟芯片外形图2-7引脚功能图
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进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK始终是输入端。
其原理图如下图2-8
图2-8DS1302时间检测模块
2.2.5蜂鸣器模块
在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
本设计中用于报警,当温度高于35度时,发出声音。
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O口是无法直接驱动的,一般用三极管来驱动它。
如图2-10
图2-9蜂鸣器外形
图2-10蜂鸣器模块
2.2.6按键控制模块
每一个按键的电路是独立的,占用一条数据线,上拉电阻保证了按键断开时,I/O口线有确定的高电平。
当其中任意一键按下时,它所对应的数据线的电平就变成低电平,若无键闭合,则所有数据线都是高电平。
这种键盘电路配置灵活,占用I/O口多,适合少量按键的情况,按下S2未设置时间,按下S3为加时间,按下S4为减时间,按下S5为退出设置。
如图2-11
图2-11按键模块
2.3应用Protel绘制系统总原理图
2.3.1Protel简介
Protel99SE是澳大利亚ProtelTechnology公司推出的一个全32位的电路板设计软件。
该软件功能强大,人机界面友好,易学易用,使用该软件设计者可以容易设计电路原理图、画元件图、设计电路板图、画元件封装图和电路仿真,是夜内人士首选的电路板设计工具。
使用电脑设计电路原理图和电路板图是把电子技术从理论运用到实际的第一步。
只有会设计电路原理图和电路板图才能进行电子产品的研发与开发。
本软件就是从理论走向实际,掌握电子产品开发的基本技术。
绘制电路原理图的主要步骤有:
进入Protel99SE环境;使用菜单File/New建立新设计数据库文件;使用菜单File/New在打开窗口选择SchematicDocument图标,建立新原理图文件;将原理图打开;设置画图环境;添加元件库;将所需元件从元件库中取出来,放置在图纸上,并且调整好位置;使用连线工具将元件连起来,设置元件属性,对元件进行编号;进行电气规格检查(ERC);建立网络表,为制作电路板图做准备。
绘制完成的电路原理图,除了保证电路原理图的正确性以外,同时要注意原理图绘制中的工艺要求。
原理图的绘制首先注意的就是原理图的标题栏的设置,在标题栏中一定注意按照工程的规则,对电路的各个属性进行详细的标注。
在实际的工作岗位中,不同的公司对于标题栏的填写都具有一定的要求。
整体原理图的绘制要求布局均匀,电路按照功能模块进行分布,符合信号流向等一系列的工程规则。
在电路图中,要综合使用网络标号、总线、总线入口等对象力求原理图实现结构化走线。
在原理图中可以使用文本等对电路进行一定的阐述,增强电路的可读性以及可理解性。
2.3.2万年历电路总原理图
单片机采用AT89C51芯片,通过该芯片连接各模块电路,从而形成完整的万年历系统,总原理图如下图2-12
图2-12万年历电路总原理图
第三章应用KEIL编程以及Proteus仿真
3.1KEIL软件的介绍
KEILC51是美国KEILSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用.KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
.通过一个集成开发环境(vision)将这些部分组合在一起。
运行KEIL软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果你使用C语言编程,那么KEIL几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
3.2Proteus软件的介绍
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,在编译方面,它也支持IAR、keil和MPLAB等多种编译。
3.3KEIL的模块化编程
在使用KEIL的时候,我们习惯上在一个C的文件中把自己要写的东西按照自己思路的顺序进行顺序书写。
这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的。
但是当程序很长的时候,比如你要用
到LCD显示数据,就有几个LCD相关的函数,然后你想在LCD上显示温度,那么就要有DS18B20相关的操作,这又有几个相关的函数,如果你还想加上去DS1302的时间显示功能,那么又要多很多函数。
这样的话一个程序下来几百行是很正常的事情,对于自己写的程序可能在自己的脑海中比较清晰,不会太乱,但是当把自己写的程序交给别人来看的时候,别人往往会看的云里雾里,经常会看着看着就不知道你写的是什么了。
于是,我们就想到了用模块化编程的方法,把一个大项目分割成若干个小项目,然后每一个小项目写一个.C文件,最后在一个主函数中把这些小程序组合在一起。
这样写的好处是可读性比较强,以及可移植性比较好,可以方便以后的编程。
3.4万年历系统的软件程序调试
1.单击项目窗口中Target1前面“+”号展开目录。
在SourceGroup1目录上单击鼠标右键,选中弹出菜单项AddfilestoGroup“SourceGroup1”。
最后在弹出的对话框中按文件类型找到要添加的源程序文件(例如text1.asm),点击add将源程序文件添加到目录。
如图3-1所示。
图3-1
添加源程序后效果图
2.在添加源程序到项目后,在项目工作界面点击Project菜单,在下拉菜单中选中Translate,将编译当前文件;选中Buildtarget,将编译当前文件并生成应用;选中Rebuildalltargetfiles,将重新编译所有文件并生成应用。
若无错误,如图3-2所示。
图3-2编译后输出效果图
3.通过如图3-2所示的对话框,选择刚才编译生成的.HEX文件。
如图3-3所示。
图3-3参数设置图
3.5液晶显示程序及仿真
3.5.11602液晶显示程序
#include
#include
#include
sbitLcdRs=P2^0;//定义端口
sbitLcdRw=P2^1;
sbitLcdEn=P2^2;
sfrDBPort=0x80;
unsignedcharLCD_Wait(void)
{
LcdRs=0;
LcdRw=1;_nop_();
LcdEn=1;_nop_();
LcdEn=0;
returnDBPort;
}
voidLCD_Write(bitstyle,unsignedcharinput)
{
LcdEn=0;
LcdRs=style;
LcdRw=0;_nop_();
DBPort=input;_nop_();
LcdEn=1;_nop_();
LcdEn=0;_nop_();
LCD_Wait();
}
voidLCD_SetDisplay(unsignedcharDisplayMode)
{
LCD_Write(LCD_COMMAND,0x08|DisplayMode);
}
voidLCD_SetInput(unsignedcharInputMode)
{
LCD_Write(LCD_COMMAND,0x04|InputMode);
}
voidLCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_