收藏 分享(赏)

基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度).doc

上传人:精品资料 文档编号:10648847 上传时间:2019-12-14 格式:DOC 页数:46 大小:523.20KB
下载 相关 举报
基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度).doc_第1页
第1页 / 共46页
基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度).doc_第2页
第2页 / 共46页
基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度).doc_第3页
第3页 / 共46页
基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度).doc_第4页
第4页 / 共46页
基于stc51单片机的LCD1602显示时间_的电子万年历(显示当前温度).doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、武汉理工大学单片机原理与应用课程设计说明书11 课设所需软件简介1.1 Keil uVision4 的简要介绍2009 年 2 月 发 布 Keil Vision4, Keil Vision4 引 入 灵 活 的 窗 口 管 理 系统 , 使 开 发 人 员 能 够 使 用 多 台 监 视 器 , 并 提 供 了 视 觉 上 的 表 面 对 窗 口 位 置 的完 全 控 制 的 任 何 地 方 。 新 的 用 户 界 面 可 以 更 好 地 利 用 屏 幕 空 间 和 更 有 效 地 组织 多 个 窗 口 , 提 供 一 个 整 洁 , 高 效 的 环 境 来 开 发 应 用 程 序 。 新

2、版 本 支 持 更 多最 新 的 ARM 芯 片 , 还 添 加 了 一 些 其 他 新 功 能 。 2011 年 3 月 ARM 公 司 发 布 最 新 集 成 开 发 环 境 RealView MDK 开 发 工具 中 集 成 了 最 新 版 本 的 Keil uVision4, 其 编 译 器 、 调 试 工 具 实 现 与 ARM器 件 的 最 完 美 匹 配 。Keil C51 开 发 系 统 基 本 知 识 Keil C51 开 发 系 统 基 本 知 识 1. 系 统 概 述 Keil C51 软 件 提 供 丰 富 的 库 函 数 和 功 能 强 大 的 集 成 开 发 调 试

3、 工 具 , 全Windows 界 面 。 另 外 重 要 的 一 点 , 只 要 看 一 下 编 译 后 生 成 的 汇 编 代 码 , 就 能体 会 到 Keil C51 生 成 的 目 标 代 码 效 率 非 常 之 高 , 多 数 语 句 生 成 的 汇 编 代 码 很紧 凑 , 容 易 理 解 。 在 开 发 大 型 软 件 时 更 能 体 现 高 级 语 言 的 优 势 。 下 面 详 细 介绍 Keil C51 开 发 系 统 各 部 分 功 能 和 使 用 。 2. Keil C51 单 片 机 软 件 开 发 系 统 的 整 体 结 构 C51 工 具 包 的 整 体 结 构

4、 , uVision 与 Ishell 分 别 是 C51 for Windows 和for Dos 的 集 成 开 发 环 境 (IDE), 可 以 完 成 编 辑 、 编 译 、 连 接 、 调 试 、 仿 真 等整 个 开 发 流 程 。 开 发 人 员 可 用 IDE 本 身 或 其 它 编 辑 器 编 辑 C 或 汇 编 源 文 件 。然 后 分 别 由 C51 及 C51 编 译 器 编 译 生 成 目 标 文 件 (.OBJ)。 目 标 文 件 可 由武汉理工大学单片机原理与应用课程设计说明书2LIB51 创 建 生 成 库 文 件 , 也 可 以 与 库 文 件 一 起 经 L

5、51 连 接 定 位 生 成 绝 对 目标 文 件 (.ABS)。 ABS 文 件 由 OH51 转 换 成 标 准 的 Hex 文 件 , 以 供 调 试 器dScope51 或 tScope51 使 用 进 行 源 代 码 级 调 试 , 也 可 由 仿 真 器 使 用 直 接 对 目标 板 进 行 调 试 , 也 可 以 直 接 写 入 程 序 存 贮 器 如 EPROM 中 。 使 用 独 立 的 Keil 仿 真 器 时 , 注 意 事 项 :* 仿 真 器 标 配 11.0592MHz 的 晶 振 , 但 用 户 可 以 在 仿 真 器 上 的 晶 振 插 孔中 换 插 其 他 频

6、 率 的 晶 振 。 * 仿 真 器 上 的 复 位 按 钮 只 复 位 仿 真 芯 片 , 不 复 位 目 标 系 统 。 * 仿 真 芯 片 的 31 脚 ( /EA) 已 接 至 高 电 平 , 所 以 仿 真 时 只 能 使 用 片 内ROM, 不 能 使 用 片 外 ROM; 但 仿 真 器 外 引 插 针 中 的 31 脚 并 不 与 仿 真 芯 片的 31 脚 相 连 , 故 该 仿 真 器 仍 可 插 入 到 扩 展 有 外 部 ROM( 其 CPU 的 /EA 引脚 接 至 低 电 平 ) 的 目 标 系 统 中 使 用 。 优 点 :1.Keil C51 生 成 的 目 标

7、 代 码 效 率 非 常 之 高 , 多 数 语 句 生 成 的 汇 编 代 码 很 紧 凑 ,容 易 理 解 。 在 开 发 大 型 软 件 时 更 能 体 现 高 级 语 言 的 优 势 。 2.与 汇 编 相 比 , C 语 言 在 功 能 上 、 结 构 性 、 可 读 性 、 可 维 护 性 上 有 明 显 的 优势 , 因 而 易 学 易 用 。 用 过 汇 编 语 言 后 再 使 用 C 来 开 发 , 体 会 更 加 深 刻 。 Keil C51 软 件 提 供 丰 富 的 库 函 数 和 功 能 强 大 的 集 成 开 发 调 试 工 具 , 全Windows 界 面 。武汉

8、理工大学单片机原理与应用课程设计说明书3图 1.1 KEIL 操作界面1.2 STC-ISP 的简要介绍STC-ISP 是 一 款 单 片 机 下 载 编 程 烧 录 软 件 , 是 针 对 STC 系 列 单 片 机 而设 计 的 , 可 下 载 STC89 系 列 、 12C2052 系 列 和 12C5410 等 系 列 的 STC 单片 机 , 使 用 简 便 , 现 已 被 广 泛 使 用 。操 作 说 明 如 下 :武汉理工大学单片机原理与应用课程设计说明书4(1) 打 开 STC-ISP, 如 下 图 界 面 , 在 MCU Type 栏 目 下 选 中 单 片 机 , 如STC

9、89C52RC。 图 1.2 ISP 操作界面(2) 根 据 您 的 9 针 数 据 线 连 接 情 况 选 中 COM 端 口 , 波 特 率 一 般 保 持 默 认 ,如 果 遇 到 下 载 问 题 , 可 以 适 当 下 调 一 些 。武汉理工大学单片机原理与应用课程设计说明书5(3) 先 确 认 硬 件 连 接 正 确 , 点 击 “打 开 文 件 ”并 在 对 话 框 内 找 到 您 要 下 载 的HEX 文 件 。图 1.3 选 择 HEX 文 件(4)选 择 所 要 下 载 的 文 件 , 这 样 可 以 使 您 在 每 次 编 译 KEIL 时 HEX 代 码 能 自动 加 载

10、 到 STC-ISP, 点 击 “Download/下 载 ”。(5) 手 动 按 下 电 源 开 关 便 即 可 把 可 执 行 文 件 HEX 写 入 到 单 片 机 内 , 如 图 是正 在 写 入 程 序 截 图 。(6)程 序 写 入 完 毕 , 目 标 板 开 始 运 行 程 序 结 果 。武汉理工大学单片机原理与应用课程设计说明书62 方 案 分 析 与 确 定2.1 方 案 思 路 分 析由 题 目 要 求 , 根据设置的年份日的显示全年的年月公历、星期等信息。由于需要显示去年的日期以及星期等信息,普通的 LED 数码管显然已经不能胜任,为此,我们可以选择 LCD1602 液晶

11、显示器完成课设要求。目前所具备的设备只有一块以 STC89C52 为内核的单片机,PC 机。课设要求显示日期等信息,我们可以充分利用单片机上面集成的 DS1302时钟芯片。该芯片可以产生年份,月份,日期,星期,时,分,秒的数据,因此,完全可以完成实验的各项要求。基于以上分析,我们可以利用 DS1302 产生的各种时钟数据,由 CPU 完成对数据的读取,然后通过 CPU 将数据写至 LCD1602,以显示数据,达到可视化的效果。对于课程设计的拓展部分,我们可以利用单片机开发板上面集成的DS18B20 温度传感器来测试周围环境的温度,同样通过 LCD1602 来显示。此外可以通过测试按键是否闭合来

12、改变各种时间数据,已达到校准的目的。武汉理工大学单片机原理与应用课程设计说明书7图 2.1 整 体 设 计 框 架 图2.2 方 案 流 程 图根 据 以 上 分 析 , 以 及 使 用 各 种 芯 片 的 操 作 流 程 , 我 们 可 以 大 致 确 定 课 程设 计 的 软 件 设 计 方 案 方 案 , 其 大 致 流 程 如 下 :开始相关数字及字母数组设置相关引脚的特殊位定义完成与 DS18B20,LCD1602,DS1302 相关的子函数的编程完成与 DS18B20,LCD1602,DS1302 相关的初始化设置CPU 读取 DS18B20 ,DS1302 的温度和时间数据CPU

13、 将数据送至 LCD1602 显示检测是否有时间校准按键按下重新设置时间,并写至进 DS1302 的寄存器CPULCD1602DS1302DS18B20武汉理工大学单片机原理与应用课程设计说明书8武汉理工大学单片机原理与应用课程设计说明书9图 2.2 设计流程图3 单元芯片电路的设置及总体设计3.1 DS1302 芯片引脚功能DS1302 是 美 国 DALLAS 公 司 推 出 的 一 种 高 性 能 、 低 功 耗 、 带 RAM的 实 时 时 钟 电 路 , 它 可 以 对 年 、 月 、 日 、 周 日 、 时 、 分 、 秒 进 行 计 时 , 具 有闰 年 补 偿 功 能 , 工

14、作 电 压 为 2.5V 5.5V。 采 用 三 线 接 口 与 CPU 进 行 同 步通 信 , 并 可 采 用 突 发 方 式 一 次 传 送 多 个 字 节 的 时 钟 信 号 或 RAM 数 据 。DS1302 内 部 有 一 个 318 的 用 于 临 时 性 存 放 数 据 的 RAM 寄 存 器 。 DS1302是 DS1202 的 升 级 产 品 , 与 DS1202 兼 容 , 但 增 加 了 主 电 源 /后 备 电 源 双 电源 引 脚 , 同 时 提 供 了 对 后 备 电 源 进 行 涓 细 电 流 充 电 的 能 力 。DS1302 的 引 脚 排 列 ,其 中 V

15、cc1 为 后 备 电 源 , VCC2 为 主 电 源 。 在 主 电源 关 闭 的 情 况 下 , 也 能 保 持 时 钟 的 连 续 运 行 。 DS1302 由 Vcc1 或 Vcc2 两者 中 的 较 大 者 供 电 。 当 Vcc2 大 于 Vcc1+0.2V 时 , Vcc2 给 DS1302 供 电 。当 Vcc2 小 于 Vcc1 时 , DS1302 由 Vcc1 供 电 。 X1 和 X2 是 振 荡 源 , 外 接32.768kHz 晶 振 。 RST 是 复 位 /片 选 线 , 通 过 把 RST 输 入 驱 动 置 高 电 平 来 启武汉理工大学单片机原理与应用课

16、程设计说明书10动 所 有 的 数 据 传 送 。 RST 输 入 有 两 种 功 能 : 首 先 , RST 接 通 控 制 逻 辑 , 允许 地 址 /命 令 序 列 送 入 移 位 寄 存 器 ; 其 次 , RST 提 供 终 止 单 字 节 或 多 字 节 数据 的 传 送 手 段 。 当 RST 为 高 电 平 时 , 所 有 的 数 据 传 送 被 初 始 化 , 允 许 对DS1302 进 行 操 作 。 如 果 在 传 送 过 程 中 RST 置 为 低 电 平 , 则 会 终 止 此 次 数 据传 送 , I/O 引 脚 变 为 高 阻 态 。 上 电 运 行 时 , 在

17、Vcc2.0V 之 前 , RST 必 须 保持 低 电 平 。 只 有 在 SCLK 为 低 电 平 时 , 才 能 将 RST 置 为 高 电 平 。 I/O 为 串行 数 据 输 入 输 出 端 (双 向 ), 后 面 有 详 细 说 明 。 SCLK 为 时 钟 输 入 端 。 下 图为 DS1302 的 引 脚 功 能 图 :图 3.1 DS1302 引脚图管脚描述:X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚武汉理工大学单片机原理与应用课程设计说明书11此外,拓展中用到了 DS18B20

18、 温度传感器,其使用与 DS1302 比较类似,因此这里不再赘述。3.2 DS1302 的使用方法使用 DS1302 时,要对其引脚和寄存器进行特殊设置,以实现所需功能。引脚设置后面会提及,这里不做说明,主要讲一下程序的编写。DS1302 的的工作过程中包过读写一个字节数据等过程,下面做相应的解释。/*功 能:往 DS1302 写入数据*/void W1302(uchar ucAddr, uchar ucDa)武汉理工大学单片机原理与应用课程设计说明书12T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */RTInputB

19、yte(ucDa); /* 写 1Byte 数据*/T_CLK = 1;T_RST = 0;/* 功 能:读取 DS1302 某地址的数据*/uchar R1302(uchar ucAddr)uchar ucData;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */ucData = RTOutputByte(); /* 读 1Byte 数据 */武汉理工大学单片机原理与应用课程设计说明书13T_CLK = 1;T_RST = 0;return(ucData);/*功 能:设置初始时间*/void Set1302(uch

20、ar *pClock) uchar i;uchar ucAddr = 0x80; EA = 0;W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/for(i =7; i0; i-) W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock+;ucAddr +=2;W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/武汉理工大学单片机原理与应用课程设计说明书14EA = 1;/*功 能:读取 DS1302 当前时间*/void Get1302(uchar ucCurtime) uchar i;uchar u

21、cAddr = 0x81;EA = 0;for (i=0; i #include #define uint unsigned int#define uchar unsigned char#define nop() _nop_()sbit s1=P10;sbit s2=P11;sbit s3=P12;sbit s4=P13;sbit DQ =P13; /定义 DS18B20 通信端口sbit lcd_rs_port = P24; /*定义 LCD 控制端口*/sbit lcd_rw_port = P25;sbit lcd_en_port = P26;武汉理工大学单片机原理与应用课程设计说明书22

22、#define lcd_data_port P0sbit led_latch_port = P25; /*发光二极管寄存器 LE 引脚*/sbit sled_latch_port = P36; /*数码管寄存器 LE 引脚*/sbit T_CLK = P36; /*实时时钟时钟线引脚 */sbit T_IO = P34; /*实时时钟数据线引脚 */sbit T_RST = P35; /*实时时钟复位线引脚 */sbit ACC0 = ACC0;sbit ACC7 = ACC7;uchar code mun_to_char = “0123456789ABCDEF“; /*定义数字跟 ASCII

23、码的关系*/uchar data time_data_buff7=0x50,0x59,0x23,0x31,0x12,0x04,0x12;/*格式为: 秒 分 时 日 月 星期 年 */uchar data lcd1602_line1=“ 2000/00/00 000 “;uchar data lcd1602_line2=“ 00:00:00 00.0“;uchar code Weeks3=“SUN“,“MON“,“TUE“,“WED“,“THU“,“FRI“,“SAT“,“SUN“;/* 函 数 名:RTInputByte()功 能:实时时钟写入一字节说 明:往 DS1302 写入 1Byte

24、 数据 (内部函数)武汉理工大学单片机原理与应用课程设计说明书23入口参数:d 写入的数据 返 回 值:无 */void RTInputByte(uchar d) uchar i;ACC = d;for(i=8; i0; i-)T_IO = ACC0; /*相当于汇编中的 RRC */T_CLK = 1;T_CLK = 0;ACC = ACC 1; /* 函 数 名:RTOutputByte()功 能:实时时钟读取一字节说 明:从 DS1302 读取 1Byte 数据 (内部函数)入口参数:无 武汉理工大学单片机原理与应用课程设计说明书24返 回 值:ACC*/uchar RTOutputBy

25、te(void) uchar i;for(i=8; i0; i-)ACC = ACC 1; /*相当于汇编中的 RRC */ACC7 = T_IO;T_CLK = 1;T_CLK = 0; return(ACC); /* 函 数 名:W1302()功 能:往 DS1302 写入数据说 明:先写地址,后写命令/数据 (内部函数 )调 用:RTInputByte() , RTOutputByte()入口参数:ucAddr: DS1302 地址, ucData: 要写的数据武汉理工大学单片机原理与应用课程设计说明书25返 回 值:无*/void W1302(uchar ucAddr, uchar u

26、cDa)T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */RTInputByte(ucDa); /* 写 1Byte 数据*/T_CLK = 1;T_RST = 0; /*函 数 名:R1302()功 能:读取 DS1302 某地址的数据说 明:先写地址,后读命令/数据 (内部函数 )调 用:RTInputByte() , RTOutputByte()入口参数:ucAddr: DS1302 地址返 回 值:ucData :读取的数据*/武汉理工大学单片机原理与应用课程设计说明书26uchar R1302(uchar uc

27、Addr)uchar ucData;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr); /* 地址,命令 */ucData = RTOutputByte(); /* 读 1Byte 数据 */T_CLK = 1;T_RST = 0;return(ucData);/*函 数 名:Set1302()功 能:设置初始时间说 明:先写地址,后读命令/数据(寄存器多字节方式 )调 用:W1302()入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年7Byte (BCD 码)1B 1B 1B 1B 1B 1B 1B返 回 值

28、:无武汉理工大学单片机原理与应用课程设计说明书27*/void Set1302(uchar *pClock) uchar i;uchar ucAddr = 0x80; EA = 0;W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/for(i =7; i0; i-) W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */ pClock+;ucAddr +=2;W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/EA = 1;/*函 数 名:Get1302()功 能:读取 DS1302 当前时间说 明:武汉理工大学单片

29、机原理与应用课程设计说明书28调 用:R1302() 入口参数:ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年 7Byte (BCD 码) 1B 1B 1B 1B 1B 1B 1B返 回 值:无*/void Get1302(uchar ucCurtime) uchar i;uchar ucAddr = 0x81;EA = 0;for (i=0; i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ) dat|=0x80;delay(4);return(dat);/DS18B20 写一个字节void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = datdelay(5);DQ = 1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报