单片机万年历课程设计报告

上传人:aa****6 文档编号:29986240 上传时间:2018-01-26 格式:DOC 页数:23 大小:122KB
返回 下载 相关 举报
单片机万年历课程设计报告_第1页
第1页 / 共23页
单片机万年历课程设计报告_第2页
第2页 / 共23页
单片机万年历课程设计报告_第3页
第3页 / 共23页
单片机万年历课程设计报告_第4页
第4页 / 共23页
单片机万年历课程设计报告_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《单片机万年历课程设计报告》由会员分享,可在线阅读,更多相关《单片机万年历课程设计报告(23页珍藏版)》请在金锄头文库上搜索。

1、单片机万年历设计报告班级:xxx姓名:xxx学号:xxx指导老师:xxx时间:xxx摘要:本文介绍了单片机的一些比较基础的,比较常用的一些资源的应用,同时也对单片机所涉及的一些简单硬件有一定的介绍,基于单片机的原理设计电路,在了解硬件的基础上完成程序设计,使自己掌握对一个系统的初步规划和设计,提高自己分析问题的能力。一、设计内容及要求利用 AT89C51 单片机芯片实现电子钟系统设计,其硬件原理框图如图 1 所示,其中显示采用液晶 LCD1602,温度测量采用 DS18B20。AT89C51按键控制液晶显示器硬件原理框图各部分功能实现:(1) 单片机发送的信号通过程序控制最终在液晶显示器上显示

2、出来。(2) 单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。(3) 为使时钟走时与标准时间一致,校时电路是必不可少的,按键用来校正液晶显示器上显示的时间。(4) 单片机通过控制闹铃电路来完成 准点报时的功能。系统的主要工作和流程此电子钟系统的设计,为实现其多方面的功能,需要收集芯片元件的资料和芯片的数据手册,理解芯片的工作原理,时钟芯片,温度芯片, LCD1602 芯片的显示原理。设计中最为关键的是对整个系统设计原理的理解。系统的主要工作是进行整个电子钟系统的程序设计,主要是对时间算法,LCD 显示设计,温度读取的程序设计。由于电子万年设计的功能较多,所编写的代码量较大,编程中更是用到

3、了大量的算法,所以此次的软件设计使用 C 语言编程而没有使用汇编语言。软件的设计主要将程序分为主程序和各个子程序模块。系统工作的流程为:在完成了程序的设计调试之后,便可将编译生产的文件下载到 AT89C51 单片机芯片运行,再不断进行调试改进。 二、系统工作原理设计的电路主要由主控模块、液晶显示模块、温度模块、按键模块和闹钟模块共 5 个模块组成。本设计采用语言程序设计,使单片机控制液晶显示器时、分、秒,当秒计数计满 60 时就向分进位,分计数器计满 60 后向时计数器进位,小时计数器按“23闹铃电路翻 0”规律计数。时、分、秒的计数结果经过数据处理可直接送显示器显示。当计时发生误差的时候可以

4、用校时电路进行校正。设计采用的是时、分、秒显示,单片机对数据进行处理同时在液晶显示器上显示。主控模块:本系统主控模块采用的单片机 AT89C51,外接 12MHz 晶振。AT89C51 具有 40 个引脚,1288 位内部 RAM ,32 可编程 I/O 线 ,两个 16位定时器/计数器,5 个中断源。可编程串行通道,低功耗的闲置和掉电模式 , 片内振荡器和时钟电路也是其主要特性。液晶显示模块:LCD1602 采用标准的 16 脚接口,其中: 第 1 脚:GND 为地电源 第 2 脚:VCC 接 5V 正电源 第 3 脚:V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比最高

5、,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度 第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RSRW 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 RW 为高电平时可读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据.第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:DB0DB7 为 8 位双向数据线。第 1516 脚:空脚。温度模块:DS18B20 温度传感器是美国 DALLAS 半导体

6、公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。 其引脚功能描述见表 1。表 1DS18B20 详细引脚功能描述序号 名称 引脚功能描述1 GND 地信号2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3 VDD 可选择的 VDD 引脚。当工作于寄生电源时,此引脚必须接地。闹钟模块:闹铃模块为单片机开发箱的蜂鸣器,当闹钟时间到后,蜂鸣器发声,直到过了闹钟时间后停止。按键模块:本设计总共用了 5 个独立按键,其中一个是设置键,两个是调整项增加、减少的

7、键,一个是闹钟设置键,一个是显示模式设置键。三、系统的软件设计软件的总体设计系统是由 AT89C51 单片机控制,系统分为主函数部分和各模块子函数部分 2 个部分。系统主函数部分主要是调用各个模块的子函数。本系统的时间是通过软件进行设置,使用定时器使电子钟运行,并将值送入主控芯片,通过液晶显示器 LCD1602 来显示,时间、日期的修改通过按键来控制的。所以要对定时器、液晶显示器进行初始化。而其他模块的初始化在各模块函数中初始化。各模块的子函数包括 LCD1602 显示模块、DS18B20 测温模块、时钟模块、按键扫描模块。闹钟设置模块包含在时钟模块和按键扫描模块中。主程序通过调用其他函数来实

8、现系统的总体功能,其工作流程如下:(1) 系统启动后,进行定时器和 LCD 显示初始化。(2) LCD1602 显示日期、时间、温度。(3) 可以通过按键进行显示模式设置,调整日期、时间、还可以进行万年历查询。图 3-1 主程序流程图液晶显示模块于本系统是采用 LCD1602 显示的,系统的软件设计通过 P0 口输出数据,数据命令选择端 P2.6,读写选择端是 P2.5,使能信号选择端为 P2.7。程序主要进行 LCD1602 的初始化设定,及根据时序图编写 LCD1602 的写指令、写字符函数。此外还需编写显示字符串函数等。测温模块温度检测相关函数包括:DS18B20 的初始化函数, DS1

9、8B20 的温度读取函数等。由于 DS18B20 是单总线的时序工作方式,其每次工作前需要初始化。首先由总开始定时器及中断定时器初始化执行时钟闹铃设定程序是否设定参数执行显示程序N Y线拉低 480-960us,而后释放总线 60-120us,此后会有 DS18B20 自己拉地 60-240us,然后释放总线。这样就完成了 DS18B20 的初始化过程。如果在有DS18B20 自动拉低部分,读取总线其没被拉低,则表示 DS18B20 不存在。函数编写上由于只对一条总线进行编程,所以十分简单。总线拉低时向 DQ 送 0,总线释放向 DQ 送 1 即可。延时时间通过延时函数调整。温度读取函数的程序

10、流程为首先初始化 DS18B20,然后通过 DS18B20 写字节函数写命令字 CC(跳过 ROM 匹配),再写命令字 44(温度转换)。然后再初始化 DS18B20,写命令字 CC,写命令字 BE(读暂存),通过 DS18B20 字节读取函数读取暂存的前 2 字节(0,1 字节为温度字节)存入 a 与 b 两个变量中,a 为温度值低位,b 为温度值高位。 DS18B20 工作过程:sbit DQ = P33; / 定义 DQ 引脚为 P3.3/* 延时函数 * 功能:在 11.059MHz 的晶振条件下调用本函数需要 24s ,然后每次计数需 16s */void DS18_delay(in

11、t useconds) int s;for (s=0; si; temp write_bit(temp); DS18_delay(5);/* 位读取函数 * 功能:从单总线上读取一位信号,所需延时时间为 15s,因此无法调用前面定义* 的 DS18_delay()函数,而采用一个 for()循环来实现延时。* */unsigned char read_bit(void) unsigned char i;DQ = 0; /将 DQ 拉低开始读时间隙DQ = 1; / then return highfor (i=0; i0xf0)t=(-1)*t;return t4;/temp_f = (int

12、)temp_c)* 9)/5 + 32;/ 输出华氏温度值时钟函数时钟函数包括年、月、日、时、分、秒、星期的计算方法。时间控制程序主要是定时器 0 计时中断程序每隔 17ms 中断一次当作一个计数,每中断一次则计数加 1,当计数 60 次时,则表示 1 秒到了,秒变量加 1,同理再判断是否 1 分钟到了,再判断是否 1 小时到了,再判断是否 1 天到了,再判断是否 1 月到了,再判断是否 1 年到了,若计数到了则相关变量清除 0。月份算法:先给出一般年份的每月天数。如果是闰年,第二个月天数不为 28 天,而是 29 天。星期算法:算出当前时间距 2000 年 1 月 1 日(星期六)的天数,通

13、过公式 week=(6+sum%7)%7 计算当前显示日期是星期几。闰年的判断规则为,如果该年份是 4 或 100 的整数倍或者是 400 的整数倍,则为闰年;否则为非闰年。当电子钟运行的时间与所设定的时间相同时,蜂鸣器响,直到过了设置时间后不响。按键扫描函数本系统的时间、日期设置、闹钟设置、万年历判断是通过 5 个按键进行设置,分别为 KEY_1、KEY_2、KEY_3、KEY_4、KEY_5 按键。系统启动后按 KEY_1 进入设置程序,对当前项进行设置,调整顺序依次为:年、月、日、时、分、秒。设置时时钟停止运行,按 KEY_1 对各个设置项进行切换,第 7 项为设置完成,时钟开始运行。K

14、EY_1 键为功能键,KEY_2 键为加 1,KEY_3 为减一,KEY_4 为显示模式设置按键,KEY_5 为闹钟设置按键。 四、仿真1、仿真:打开软件,输入所编写的源程序并对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,知道编译正确后运行,确保没有错误以后对正确的源程序进行保存,保存时给其命名,以便将来载入程序时容易找到。2、打开 PROTEUS 软件,并出画单片机电子万年历具体运行电路图。3、检查所画电路运行图,确保没有错误以后,在 PROTEUS 下对原理图进行加载KEIL 下的源程序。4、加载完成后,单击电路图框下的开始按钮,进行仿真,观察液晶显示器显示情况。调节开关进行

15、时间的调节,调节石英晶体震荡器的频率参数,从而使秒的间隔达到标准。然后检查电路其它问题,并对其的各参数进行调整,使之正确。五、PCB 图六、程序#include#includeDS18B20_3.H#define uint unsigned int#define uchar unsigned charuchar a,b,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp,miao1,shi1=12,fen1=1,miao1=0,clock=0 ;/flag 用于读取头文件中的温度值,和显示温度值#define yh 0x80 /LCD 第一行的初始位置,因为 LCD1602 字符地址首位 D7 恒定为1(=80)#define er 0x80+0x40 /LCD 第二行初始位置(因为第二行第一个字符位置地址是 0x40)/液晶屏的与 C51 之间的引脚连接定义(显示数据线接 C51 的 P0 口)sbit rs=P20;sbit

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

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号