多功能电子万年历课程设计报告.docx

上传人:h**** 文档编号:26928464 上传时间:2022-07-20 格式:DOCX 页数:15 大小:17.88KB
返回 下载 相关 举报
多功能电子万年历课程设计报告.docx_第1页
第1页 / 共15页
多功能电子万年历课程设计报告.docx_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《多功能电子万年历课程设计报告.docx》由会员分享,可在线阅读,更多相关《多功能电子万年历课程设计报告.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、多功能电子万年历课程设计报告 重庆三峡学院 课程设计报告书题目:基于可调的电子万年历与温度显示 学院(系): 年级专业: 学号: 学生姓名: 指导教师: 教师职称: 完成日期年月日 目录 摘要 (3) 第一章引言 (4) 1.1 设计任务 (4) 1.2 设计目的 (4) 1.3 设计思路 (4) 1.3.1 方案论证 (4) 1.3.2 芯片的选择 (5) 1.3.3 显示模块选择方案和论证 (5) 1.3.4 时钟信号的选择方案和论证 (5) 1.3.5 最终方案 (6) 第二章硬件系统的设计 2.1原理图设计 (6) 2.2温度感应电路 (7) 2.3 复位电路部分 (7) 2.4液晶显

2、示电路 (7) 2.5时钟信号电路 (8) 2.6 AT89C52原理及说明 (8) 2.6.1引脚功能 (9) 第三章软件系统的设计. 3.1系统程序流程图 (9) 3.2系统具体程序代码 (10) 第四章系统调试 (23) 4.1 软件调试 (23) 4.2 硬件调试 (23) 第五章设计心得 (23) 元件清单表 (24) 致谢 (24) 参考文献 (24) 基于可调式电子万年历与温度显示的设计 重庆三峡学院应用技术学院 5人 摘要:本文介绍了一种基于单片机的可调的电子万年历和温度显示。该设计主要由五个模块组成:微处理器(单片机),温度传感器,控制调节按键,实时时钟模块及显示模块。温传感

3、器器主要由DS18B20来完成,它负责把采集到的温度传给单片机。实时时钟模块主要由DS1302构成,它负责产生始终数据送给单片机,微处理器芯片AT89C52来完成DS18B20,DS1302,按键传来的数据进行处理,并送与显示模块(LCD1602)进行显示。 该系统的电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。可以测量-55到+125的温度和显示年,月,日,星期,时,分,秒,并且可通过按键调节时间。 关键词单片机;万年历;温度;AT89C52;LCD1602,DS1302,DS18B20 第一章引言 1.1 设计任务 (1)根据具体题目要求,设计以单片机为控制核心的测量系统或控制

4、系统,完成对指定目标或对象的测量及控制。 (2)设计单片机与测量及控制对象的接口并进行硬件调试。 (3)针对要求测量或控制的对象完成程序的编制。 (4)硬件软件联调,完成题目所要求的功能。 (5)设计能支持时、分、秒的时钟,时钟要具有时间调整功能。 1.2 设计目的 (1)通过课程设计,使我们能够深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力。 (2)使用AT89C51芯片的串口功能,利用实时时钟芯片DS1302与液晶显示器LCD1602和DS18D20实现年、月、星期、日、时、分、秒、温度的显示。 (3)用keil软件进行编程与调试,

5、利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。 1.3 设计思路 1.3.1 方案论证 单片机芯片的选择方案和论证 方案一: 采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V 的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。 方案二: 采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超底压工作;同时也与MCS-51系列单

6、片机完全该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,所以选择采用AT89S52作为主控制系统。 1.2 显示模块选择方案和论证 方案一: 采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。 方案二: 采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太

7、浪费,且价格也相对较高,所以也不用此种作为显示。 方案三: 采用LCD液晶显示来实现万年历的显示,我采用的LCD1602芯片,它可以显示16*2个字符,完全可以用于电子万年历的时间和日期的显示内容,但是LCD1602部能显示汉字,对于日期的显示可以采用数字显示的方法。 1.3 时钟芯片的选择方案和论证 方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。 方案二: 采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、

8、年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。 1.4 温度显示的选择方案和论证 方案一: 直接采用的是DS18B20传感器来测试温度,这样既简单又方便,对于在短时间就可以掌握的温度传感器。 1.5最终确定芯片的选择方案和论证 综上各方案所述,对此次作品的方案选定: 采用AT89S52作为主控制系统; DS1302提供时钟;LCD1602液晶显示屏作为显示,DS18B20传感器作为温度测试。 1.3.2 芯片的选择 采用AT89C51芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(

9、PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O 口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式。 因此,我们选用AT89C51。 1.3.3 显示模块选择方案和论证 采用LCD液晶显示,显示较为清楚直观,时间和日期在液晶显示器LCD1602中分两行来显示。 1.3.4 时钟信号的选择方案和论证 直接采实时时钟DS1302芯片来给予电子万年历的初始信号,系统直接在DS1302中读取时间和日期,并且可以修改DS1302中的初始时间和日期。时钟和日期的修改通过三个按键设置,分别为模式按键、曾量按键、减量按键。 1.3.5

10、最终方案 综上方案所述,对于可调的电子万年历与温度显示方案选定为:AT89C51作为主控器,DS1302作为时钟信号,LCD1602作为显示器,DS18B20作为测温器。 图1 第二章硬件系统的设计 2.1原理图设计 此次单片机数字时钟的设计采用AT89C51为主控制芯片,并由实时时钟DS1302芯片提供时钟信号,LCD液晶显示器1602提供液晶显示,温度传感器DS18B20作为温度测试。 图2 2.2温度感应电路 图3 由图3所示温度感应电路是由一个DS18B20传感器作为主要器件,采用单总线传输数据与电阻R2来线与。 2.3 复位电路部分 单片机在启动运行时都需要复位,使CPU和系统中的其

11、他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位1。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图6是51系列单片机统常用的上电复位电路。 图4 复位电路 2.4液晶显示电路 图5 通过图五可以看出液晶显示芯片与单片机之间的数据传输是由液晶显示的D0D7口和 单片机的P2口来进行数据之间的传输。由于我们没有用到液晶显示器的背光所以就

12、没有对VSS与VEE提供工作电压,由于液晶显示芯片的数据不用被单片机所读取,所以这里我们就直接给予液晶显示器读端R给予低电平这样单片机就只能对晶显示器写入数据.液晶显示器 的RS端是控制是传送数据还是传送指令直接接在单片机的P3.0口。 2.5时钟信号电路 图6 根据图6可以看出我们采用的是DS1302实时时钟芯片,这个这个芯片完全可以提供我们所设计的电子万年历的日期与时间,在使用时需提供一个32.768MHZ的晶振来给予芯片的时钟信号,实时时钟芯片它采用的是I/O总线传输。 2.6 AT89C52原理及说明 AT89C52美国Intel公司生产的低电压,高性能CHMOS8位单片机,片内含4k

13、 bytes的可反复擦写的只读程序存储器(PEROM)和蔼可亲128 bytes的随机存取数据存储器(RAM),器件采用Intel公司的高密度、非易失性存储技术生产,片内置通用4位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机适合于许多较为复杂控制应用场合。 AT89C52脚图 2.6.1引脚功能 Vcc(40):电源电压 GND(20):接地 P0口(32-39):P0口是一个8位双向I/O接口,也即地址/数据总线复用口。作为输出口用时,每位吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器时,这组口线分时转换地址

14、(低8位)和数据总线复用。 P1口(1-8):P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”通过内部的上拉电阻把端口拉到高电平时,此时可作输入口。作为输入品使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 RST(9):复位信号输入端。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG(30):地址锁存有效信号输出端。当访问片外程序存储器或数据存储器时,ALE (地址锁存允许)输出脉冲用于锁存地址的低8位字节,一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉

15、冲信号,因此它可对外输出时钟或用于定时目的,要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 XTAL1(19):振荡器反相放大器的及内部时钟发生器的输入端。 XTAL1(18):振荡器反相放大器的输出端。通过XTAL1、XTAL2外接晶振后,即可构成自激振荡器,驱动内部时钟发生器向主机提供时钟信号。 第三章软件系统的设计 DS1302、液晶显示器LCD1602、温度传感器DS18B20、和定时器T0的初始化,还有时钟的时间设定与读取、液晶的显示与按键处理等。 3.1系统程序流程图 图8 为了实现时间和日期的显示功能,需要在DS1302中读取时间和日期,并送LCD1602中显示,这样

16、需要设计DS1302和LCD1602进行初始化程序、DS1302的时间日期的读取和修改程序、LCD1602的初始化和显示程序。另外时间和日期需要修改,则需要设计按键处理子程序。 系统主程序流程图如图所示。系统首先对LCD1602、DS1302和定时器T0初始化后,只是循环的调用按键处理子程序,检测是否需要调节时间。程序在定时器T0中断服务程序中,定时读取DS1302的时间和日期并送液晶显示。 3.2系统具体程序代码 可调的电子万年历与温度显示系统的具体程序代码如下: (1)函数声明及变量定义 为方便程序的编写,把部分常用的变量进行伪定义。 /* 函数声明,变量定义 */ #define uch

17、ar unsigned char /*宏定义,在下文出现uchar都表示无符号字符型*/ #define uint unsigned int /*宏定义,在下文出现uint都表示无符号整型*/ sbit rs=P30; /*根据系统的整体电路连接AT98C52的并行接口*/ sbit e=P31; sbit io=P37; sbit rst=P35; sbit sck=P36; sbit key1=P10; sbit key2=P11; sbit key3=P12; sbit DQ=P17; uchar str1 = - - Week: ; /* 定义一个数组名为str1的数组*/ uchar

18、 str2 = T : : . C; /*因为这些是固定不变得字符,所以可以将它以一个固定的字符形式 */ uchar table2=0123456789 ;/*定义一个数组,里面是显示的年月日温度等字符*/ uchar table1=6712345 ; /*显示星期的字符*/ uchar write_add7=0x8c,0x8a,0x88,0x86,0x84, 0x82,0x80; /*写地址*/ uchar read_add7=0x8d,0x8b,0x89,0x87,0x85, 0x83,0x81; /*读地址*/ uchar init17=12,5,10,26,15,46,35;/年周月

19、日时分秒 uchar init07; uchar num,sec,min,hour,dat,mon,year,week; uint temp; float f_temp; (2)main():主函数 在主函数中主要是完成液晶LCD1602、实时时钟芯片DS1302、温度传感器DS18B20和定 时器T0的初始化。然后一直检测调用按键处理子程序。 /* 主函数 */ void main() int_t(); /*调用定时器初始化子程序*/ init_lcd(); /*调用液晶显示初始化子程序*/ init_ds18b20(); /*调用温度传感器初始化子程序*/ / set_rtc(); /*调

20、用DS1602初始化子程序*/ while(1) keycan(); /*一直循环调用按键检测*/ (3)液晶显示程序部分 在本部分主要是液晶显示所需要的子程序、显示时间日期星期等。 void write_dat(uchar dat);写数据子程序; void write_com(uchar com);写命令子程序; void init_lcd();液晶初始化子程序; void pros(),液晶显示子程序; 具体程序代码如下: 1)void write_dat(uchar dat);写数据子程序; 该子程序功能为向LCD1602中写数据。写数据时,输入rs=H,R/W=L,D0D7=数据,e=高脉冲;输出:无。 /* 向LCD1602写数据 */ void write_dat(uchar dat) rs=1;delay(1); /*置为写入数据*/ e=1;delay(1); /*拉高使能端*/ P2=dat; /*送入数据*/ e=0;delay(1); /*完成高脉冲*/ rs=0; 2)void write_com(uchar com);写命令子程序; 该子程序功能为向LCD中写命令字。写指令时,输入:rs=L,R/W=L,D0D7=指令码,e=高脉冲,输出:无。 /* 向LCD1602写指令 */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁