基于Proteus多功能电子万年历的设计与实现本科Word文件下载.docx
- 文档编号:467359
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:34
- 大小:764.55KB
基于Proteus多功能电子万年历的设计与实现本科Word文件下载.docx
《基于Proteus多功能电子万年历的设计与实现本科Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Proteus多功能电子万年历的设计与实现本科Word文件下载.docx(34页珍藏版)》请在冰点文库上搜索。
随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。
单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。
在国内:
单片机的学习呈上升趋势,但很多人学习是无头绪,不知道从何入手,行业发展迅速,国内生产技术不断提升。
国内企业为了获得更大的投资收益,在生产规模和产品质量上不断提升,开发单片机呈必然趋势。
我国生产的多功能电子万年历有很多,总体上来说是研究多功能电子万年历为主,商家生产的电子万年历更从质量、价格、实用上考虑不断改变电子万年历的设计,使其更有市场。
在科技发达的今天,智能化必将是以后的发展趋势,所以开发活和学习单片机是社会发展的必然需求。
在国外:
最具有代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
前两次革命是摆和摆轮游丝的发明,以及石英晶体振荡器的应用,第三次革命就是单片机数码计时技术的应用,使得从原来传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期,星期,温度以及农历等显示功能,它更符合消费者的生活需求。
因此,电子万年历的出现带来了钟表计时业界跨越性的进步。
当前,电子万年历技术已经进入了优化人-家庭-环境的整体关系的阶段,它向着超微型、超高效以及集成电路的微型化方向发展,并为电子万年历上的集中控制提供了基础。
目前,市场上出售的万年历品种很多,其中大部分是基于单片机技术设计的电子系统。
当今,数字万年历主要还是用于计时、自动报时、定时、日期查询以及自动控制等方面。
由于单片机技术以及数字集成电路技术的发展和采用了先进的石英技术,使得如今的数字万年历系统具有体积小、耗电省、计时准确、性能稳定、维护方便、走时准确、携带方便等优点,此外,现在市场上已有现成的数字万年历集成电路芯片出售,而且价格便宜、使用也很方便。
2开发平台
本节主要介绍开发平台,兼容单片机C语言软件开发系统KeiluVision3软件和单片机仿真软件Proteus。
2.1Keil
uVision3介绍
图2.1
KeiluVision3软件
KeiluVision3是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
Keil
uVision3工具包为for
Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
相比起其他单片机的开发软件,Keil
uVision3生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
编译后能生成.hex文件,能直接为ISIS
7
Professional仿真软件所使用。
2.2单片机仿真软件Proteus
图2.2Proteus单片机仿真软件
在Proteus是英国Labcenter公司开发的电路及点偏激系统设计与仿真软件。
它可以实现数字电路,模拟电路及为控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能。
它能对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了再没有目标原型是就可以对系统进行调试测试与验证。
Proteus提供了30多个元件库和7000余个元器件。
元件涉及电阻、电容、二极管、三极管、变压器、放大器、各种激励源等等。
SIS7Professional能完成原理图设计的仿真平台,用于电路原理图的设计以及交互式仿真。
通过KeiluVision3编译生成的.hex文件能直接用于Proteus所设计的电路图上。
3硬件设计
微机处理系统中硬件的选择直接影响系统的功能及稳定性。
选择功能适合,少发生偶合的硬件设备,是整个系统设计的关键部分,所以本次设计选择AT89S51进行实验。
3.1AT89S51引脚及功能
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
AT89S51采用的是40只引脚的双列直插式封装,如图3.1所示。
图3.1AT89S51引脚图
(1)电源及晶振引脚
Vcc(第40脚):
+5V电源引脚;
Vss(第20脚):
接地引脚;
XTAL1、XTAL2(第19、18脚):
外接晶振的两个引脚。
(2)控制引脚
RST/Vpd(第9脚):
复位/备用电源引脚;
ALE/PROG(第30脚):
地址锁存使能输出/编程脉冲输入;
PSEN(第29脚):
输出访问片外程序存储器读选通信号;
EA/Vpp(第31脚):
外部ROM允许访问/编程电源输入。
(3)并行I/O口引脚
并行I/O口共有32只引脚,其中:
P0.0~P0.7(第39~32脚)统称为P0口;
P1.0~P1.7(第1-8脚)统称为P1口;
P2.0~P2.7(第21~28脚)统称为P2口;
P3.0~P3.7(第10~17脚)统称为P3口,作为一般I/O口使用。
3.2AT89S51的内部结构
其内部结构包含了作为微型计算机所必需的基本功能部件,如CPU、RAM、ROM、定时/计数器和可编程并行I/O口、可编程串行口等。
这些功能部件通常都挂靠在单片机内部总线上,通过内部总线传送数据信息和控制信息。
其内部基本结构如图3.2所示。
图3.2硬件系统组成结构框图
1.中央处理器(CPU):
整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2.数据存储器(RAM):
片内有128个8位用户8个据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据、运算的中间结果或用户定义的字型表,
3.程序存储器(ROM):
共有4096个8位掩膜ROM,用于存放用户程序、原始数据或表格。
4.中断系统:
具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并与2级的优先级别选择。
5.定时器/计数器:
片内有2个16位的可编程定时器/计数器,以实现定时或计数产生中断,用于控制程序转向。
6.串行口:
内置1个全双工的串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信接发器,也可以当同步移位器使用。
7.并行输入/输出(I/O)口:
共有4组8位并行I/O口(P0、P1、P2、P3),每个口都由1个锁存器和1个驱动器组成。
并行I/O口主要是用于实现与外部设备中数据的并行输入/输出,有些I/O口还具有其他功能。
8.特殊功能寄存器:
共有21个,用于对片内的各功能的部件进行管理、控制、监视。
实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
3.2.1电路设计框图
本系统的电路系统框图如图2.1.3所示。
AT89S51单片机对DS18B20写入控制字并读取相应的数据,继而控制LCM1602作出对应的显示。
图3.3电路设计框图
3.2.2主要单元电路设计
(1)AT89S51单片机主控制模块的设计
AT89S51是一个低功耗,高性能CMOS8位单片机,其具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128Bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
AT89S51单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
(2)P0口
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
(3)P1口
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
(4)P2口
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
(5)P3口
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
3.2.3单片机中断
典型的8051单片机有5个中断源,可分为两个优先级,实现中断服务嵌套。
用户可以用关中断指令来屏蔽中断请求,也可以用开中断指令是CPU接受中断申请。
每一个中断源在软件中都可以独立开关,级别可由用户自行设置。
下表2.1.1为中断控制标志列表。
表3.1中断控制标志列表
中断源
工作标志
向量地址
外部中断0
IE0
0311
计时器0
TF0
0BH
外部中断1
IE1
13H
计时器1
TF1
1BH
串行端口传送
T1
23H
串行端口接收
R1
3.3LCD液晶显示器
本系统选择的LCD是AMPIRE128×
64的汉字图形型液晶显示模块,可显示汉字及图形。
单片机P1口作为数据输出口,RS,R\W,E分别通过10K的上拉电阻连接到单片机的P0.0,P0.1,P0.2。
VDD接5V电源,VSS接地。
VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
E(或EN)端为使能(enable)端,下降沿使能。
DB0-DB7为双向数据总线,同时最高位DB7也是忙信号检测位。
BLA、BLK分别为显示器背光灯的正、负极。
液晶显示器接口图和管脚表如下所示。
图3.4LCD液晶显示器
表3.2LCD接口说明表
管脚号
管教
电平
引脚说明
1
CS1
H/L
片选择信号,低电平时选择前64列
2
CS2
H/L
片选择信号,低电平时选择后64列
3
GND
0V
逻辑电源地
4
VCC
5.0V
逻辑电源正
5
V0
LCD驱动电压
6
RS
数据\指令选择
7
R/W
读\写选择:
高电平:
读数据;
低电平:
写数据
8
E
读写使能,高电平有效,下降沿锁定数据
9
DB0
数据输入输出引脚
10
DB1
11
DB2
12
DB3
13
DB4
14
DB5
15
DB6
16
DB7
17
RST
L
复位信号,低电平有效
18
VOUT
-10V
背光源负极
3.4按键系统
基于多功能万年历设置日历、时间、闹钟等功能,我们决定使用button元件作为控制按钮。
Button元件在市场上到处可见,其功能单一,少偶合,反应速度快等特点。
本系统使用3个button元件分别作为设置位选、上调、下调等功能。
3个按键与一个3位与门电路相连,作为整个按键控制功能系统,以触发AT89S51中断为方式使用设置功能。
其电路图如图3.4.1所示:
图3.4.1按键系统
(1)Button1:
位选功能,设置位选位,可通过其对年、月、日、时、分、秒进行控制;
(2)Button2:
上调功能,对当前所处状态位进行上调;
(3)Button3:
下调功能,对当前所处状态位进行下调。
4程序设计
单片机的微机控制系统设计,除了元件选择、系统硬件电路设计外,最主要的工作就是如何根据每个模块的实际需求设计出应用程序。
应用程序的可靠性、高效性、稳定性直接影响系统的实现与应用。
因此,程序设计在微机控制系统设计中占据着重要地位。
在单片机的系统设计的过程中,主要分为数据处理、系统过程控制两大部分。
在多功能智能万年历系统中,数据获取与数据分类占较大的比例。
其中时间的计算与获取是整个系统的核心所在,另外数据显示、声音处理、过程控制也是整个系统的重点。
为了更好地完成各个部分的内容,更方便地进行调程序修改和调试排错,我们把系统分为定时器模块、外部中断响应模块、主函数模块这几大部分进行设计,并分别进行设计、编程和调试,最后通过主程序将各程序模块连接起来。
这样有利于程序修改和调试,增强了程序的可移植性。
4.1定时器模块
在本多功能万年历系统中,使用定时器来精确计算每一秒的时间长。
首先是对定时器的选择和初始化:
选择定时器0,方式1。
TMOD=0x01;
装载T0的初值,通过计算且与温度传感器公用,决定以20次溢出作为1秒的时间,故装填
TH0=0x3c;
TR0=0xb0;
然后启动定时器,打开总中断开关
EA=1;
ET0=1;
初始化完成后便进入中断函数的设计。
每一秒所产生的中断要完成年、月、日、时、分、秒的计算,并为其他功能设定标志位等,如声音,温度显示,流程图如图4.1。
图4.1计时器中断响应程序流程图
4.2外部中断响应模块
本系统使用0号中断,在中断中响应设置时间、日历和闹钟的功能。
首先在主函数中打开0号中断开关,响应模式,总中断开关
IT0=1;
EX0=1;
另外使用button1作为设置位选位,button2作为上调,button3作为下调,其功能流程图如图4.2所示。
否
是
图4.2外部中断响应流程图
4.3主函数模块
主函数模块主要承担显示日历、时间、星期、农历等信息。
因为我们所设的设置位选位为七次一循环,所以在平常状态下,系统显示相关信息,当进入设置状态下,主函数流程如下。
图4.3主函数流程图
4.4判断闰年每月天数
闰年的二月有29天,否则则为28天,下图是判断闰年的每个月的天数。
图4.4判断闰年每月天数
非闰年每个月天数流程图与之类似,这里就不再作具体说明。
4.5时间调整
1.根据当前的所处状态,来调整时间:
满60秒,分加1;
满60分,时加1;
满24时,日加1;
满30日,月加1;
满12月,年加1。
图4.5时间调整图
2.时间调整程序流程,先按控制键进入调整状态程序,再根据进入的状态进行调整年月日时分秒,具体流程如下图所示:
图4.6时间调整程序秒流程图
图4.7时间调整程序分流程图
5系统仿真与调试
仿真部分采用仿真软件Proteus和兼容单片机C语言软件开发系统KeiluVision3软件来进行仿真和调试。
5.1系统仿真
5.1.1系统原理电路图绘制
(1)新建文件:
打开PROTEUS,点击FILE,在弹出的下拉菜单中选择NEWDESIGN,即进入原理图绘制界面。
(2)元器件选取:
按设计要求,在对象选择窗口中点P,弹出PICKDEVICES对话框,在KEYWORDS中填写要选择的元器件,然后在右边对话框中选中要选的元器件,则元器件列在对象选择的窗口中。
(3)放置元器件、电源和地、连线,得到系统电路图,最后进行电气检测。
图5.1总体电路硬件原理图
5.1.2Keil工程的建立
1.源文件的建立
使用菜单“File->
New”或者点击工具栏的新建文件按钮,即可在打开的文本编缉窗口中输入源程序,保存该文件,注意必须加上扩展名。
2.建立工程文件
点击“Project->
NewProject…”菜单,出现一个对话框,在编缉框中输入文件名,点击“保存”按钮。
在Project->
Optionfortarget出现第二个对话框选择目标CPU(本次设计选择Atmel公司的AT89C52芯片)。
此时,在工程窗口的文件页中出现了“Target1”,点击“SourceGroup1”右键,选中其中的“AddfiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找源文件(注意,该对话框下面的“文件类型”默认为Csourcefile(*.c),也就是以C为扩展名的文件),双击该文件,将文件加入项目。
双击文件名,即打开该源程序。
工程建立好以后,对工程进行进一步的设置,以满足要求。
首先点击左边Project窗口的Target1,然后使用菜单“Project->
Optionfortarget‘target1’”设置对话框中的Target页面,Xtal后面的数值是晶振频率值,本次设计设置为12MHz;
MemoryModel用于设置RAM使用情况选择Small;
Compact是可以使用一页外部扩展RAM,而Larget则是可以使用全部外部的扩展RAM。
CodeModel用于设置ROM空间的使用选择none。
设置对话框中的OutPut页面中Creat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Proteus 多功能 电子 万年历 设计 实现 本科