1、毕设多功能电子表指导教师: 徐书雨班级: 电子 S10-2学生: 侯炎旭 周鑫学号: 21 号 28 号日期: 2012 年 2 月 24 日目录第一章 元器件 .2第一节 电阻 .2第二节 电容 .3第三节 三极管 .4第二章 最小系统 6第三章 自我设计 7第一节 1602 液晶的应用 7第二节 时钟芯片 DS1302 的应用 .9第三节 DS18B20 温度传感器的应用 10第四节 超声波模块的应用 .11第五节 语音模块应用 .12参考文献 .13第一章 元器件第一节 电阻1.定 义 色 环 电 阻 , 是 在 电 阻 封 装 上 ( 即 电 阻 表 面 ) 涂 上 一 定 颜 色 的
2、 色 环 ,来 代 表 这 个 电 阻 的 阻 值 。色 环 电 阻识别方法黑 , 棕 , 红 , 橙 , 黄 , 绿 , 蓝 , 紫 , 灰 , 白 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 倒 数 第 二 环 , 表 示 零 的 个 数 。2.电 阻 检 测 :A 将两表笔(不分正负)分别与电阻的两端引脚相接即可测出实际电阻值。为了提高测量精度,应根据被测电阻标称值的大小来选择量程。由于欧姆挡刻度的非线性关系,它的中间一段分度较为精细,因此应使指针指示值尽可能落到刻度的中段位置,即全刻度起始的20 80弧度范围内,以使测量更准确。根据电阻误差等级不同。读数与标称阻值之间分别
3、允许有5、10 或20的误差。如不相符,超出误差范围,则说明该电阻值变值了。B 注意:测试时,特别是在测几十 k 以上阻值的电阻时,手不要触及表笔和电阻的导电部分;被检测的电阻从电路中焊下来,至少要焊开一个头,以免电路中的其他元件对测试产生影响,造成测量误差;色环电阻的阻值虽然能以色环标志来确定,但在使用时最好还是用万用表测试一下其实际阻值。 第二节 电容电容(或电容量, Capacitance)指的是在给定电位差下的电荷储藏量;记为C,国际单位是法拉(F) 。一般来说,电荷在电场中会受力而移动,当导体之间有了介质,则阻碍了电荷移动而使得电荷累积在导体上;造成电荷的累积储存,最常见的例子就是两
4、片平行金属板。也是电容器的俗称。电容种类:云母电容符 号 : ( CY) 电 容 量 : 10p-0.1 额 定 电 压 : 100V-7kV 主 要 特 点 : 价 格 较 高 , 但 精 度 、 温 度 特 性 、 耐 热 性 、 寿 命 等 均 较 好 应 用 : 高 频 振 荡 , 脉 冲 等 对 可 靠 性 和 稳 定 性 较 高 的 电 子 装 置 。玻璃釉电容玻 璃 釉 电 容 符 号 : ( CI) 电 容 量 : 10p-0.1 额 定 电 压 : 63-400V 主 要 特 点 : 稳 定 性 较 好 , 损 耗 小 , 耐 高 温 ( 200 度 ) 应 用 : 脉 冲
5、、 耦 合 、 旁 路 等 电 路电 解 电 容 器铝 电 解 电 容符 号 : (CD) 电 容 量 : 0.47-10000 额 定 电 压 : 6.3-450V 主 要 特 点 : 体 积 小 , 容 量 大 , 损 耗 大 , 漏 电 大 , 有 极 性 , 安 装 时 要 注 意 应 用 : 电 源 滤 波 , 低 频 耦 合 , 去 耦 , 旁 路 等第三节 三极管半导体三极管半导体三极管又称“晶体三极管”或“晶体管”。在半导体锗或硅的单晶上制备两个能相互影响的PN 结,组成一个 PNP(或 NPN)结构。中间的 N 区(或 P 区)叫基区,两边的区域叫发射区和集电区,这三部分各有
6、一条电极引线,分别叫基极 B、发射极 E 和集电极 C,是能起放大、振荡或开关等作用的半导体电子器件。三 极 管 电 极 和 管 型 的 判 别 :目 测 法一 、 管 型 的 判 别 一 般 , 管 型 是 NPN 还 是 PNP 应 从 管 壳 上 标 注 的 型 号 来 辨 别 。 依 照 部分 标 准 , 三 极 管 型 号 的 第 二 位 ( 字 母 ) , A、 C 表 示 PNP 管 , B、 D 表 示 NPN 管( A、 B 表 示 锗 管 ( Ge), C、 D 表 示 硅 管 ( Si) ) , 例 如 : 3AX 为 PNP 型 低 频 小 功 率 管 ( Ge) 3B
7、X 为 NPN 型 低 频 小 功 率 管 ( Ge) 3CG 为 PNP 型 高 频 小 功 率 管 ( Si) 3DG 为 NPN 型 高 频 小 功 率 管 ( Si) 3AD 为 PNP 型 低 频 大 功 率 管 ( Ge) 3DD 为 NPN 型 低 频 大 功 率 管 ( Si) 3CA 为 PNP 型 高 频 大 功 率 管 ( Si) 3DA 为 NPN 型 高 频 大 功 率 三 级 管 ( Si) 此 外 有 国 际 流 行 的 9011 9018 系 列 高 频 小 功 率 管 , 除 9012 和 9015 为 PNP 管 外 , 其余 均 为 NPN 型 管 。 二
8、 、 管 极 的 判 别 常 用 中 小 功 率 三 极 管 有 金 属 圆 壳 和 塑 料 封 装 ( 半 柱 型 ) 等 外 型 。 用 万 用 表 电 阻 档 判 别三 极 管 内 部 有 两 个 PN 结 , 可 用 万 用 表 电 阻 档 分 辨 e、 b、 c 三 个 极 。 在 型 号 标 注 模 糊的 情 况 下 , 也 可 用 此 法 判 别 管 型 。 基 极 的 判 别 判 别 管 极 时 应 首 先 确 认 基 极 。 对 于 NPN 管 , 用 黑 表 笔 接 假 定 的 基 极 , 用 红 表 笔 分 别 接触 另 外 两 个 极 , 若 测 得 电 阻 都 小 ,
9、 约 为 几 百 欧 几 千 欧 ; 而 将 黑 、 红 两 表 笔 对 调 , 测 得电 阻 均 较 大 , 在 几 百 千 欧 以 上 , 此 时 假 定 极 就 是 基 极 。 PNP 管 , 情 况 正 相 反 , 测 量 时两 个 PN 结 都 正 偏 ( 电 阻 均 较 小 ) 的 情 况 下 , 红 表 笔 接 基 极 。 实 际 上 , 小 功 率 管 的 基 极 一 般 排 列 在 三 个 管 脚 的 中 间 , 可 用 上 述 方 法 , 分 别 将 黑 、 红 表笔 接 基 极 , 既 可 测 定 三 极 管 的 两 个 PN 结 是 否 完 好 ( 与 二 极 管 PN
10、 结 的 测 量 方 法 一 样 ) ,又 可 确 认 管 型 。 集 电 极 和 发 射 极 的 判 别 确 定 基 极 后 , 假 设 余 下 管 脚 之 一 为 集 电 极 c, 另 一 为 发 射 极 e, 用 手 指 分 别 捏 住 c 极与 b 极 ( 即 用 手 指 代 替 基 极 电 阻 Rb) 。 同 时 , 将 万 用 表 两 表 笔 分 别 与 c、 e 接 触 , 若被 测 管 为 NPN, 则 用 黑 表 笔 接 触 c 极 、 用 红 表 笔 接 e 极 ( PNP 管 相 反 ) , 观 察 指 针 偏转 角 度 ; 然 后 再 设 另 一 管 脚 为 c 极 ,
11、 重 复 以 上 过 程 , 比 较 两 次 测 量 指 针 的 偏 转 角 度 大的 一 次 表 明 IC 大 , 管 子 处 于 放 大 状 态 , 相 应 假 设 的 c、 e 极 正 确 。 1. 用指针式万用表检测 首 先 选 量 程 : R100 或 R1K 档 位 ; 然 后 , 测 量 PNP 型 半 导 体 三 极 管 的 发 射 极 和 集 电 极的 正 向 电 阻 值 , 红 表 笔 接 基 极 , 黑 表 笔 接 发 射 极 , 所 测 得 阻 值 为 发 射 极 正 向 电 阻 值 , 若将 黑 表 笔 接 集 电 极 ( 红 表 笔 不 动 ) , 所 测 得 阻
12、值 便 是 集 电 极 的 正 向 电 阻 值 , 正 向 电 阻 值愈 小 愈 好 。 再 次 , 测 量 PNP 型 半 导 体 三 极 管 的 发 射 极 和 集 电 极 的 反 向 电 阻 值 。 将 黑 表笔 接 基 极 , 红 表 笔 分 别 接 发 射 极 与 集 电 极 , 所 测 得 阻 值 分 别 为 发 射 极 和 集 电 极 的 反 向 电阻 , 反 向 电 阻 愈 小 愈 好 。 倘 若 测 试 结 果 偏 离 甚 远 , 就 可 以 认 为 管 子 是 坏 的 , 如 极 间 击 穿 ,则 正 、 反 向 电 阻 值 均 为 零 。 若 烧 断 , 则 均 为 无
13、穷 大 。 测 量 NPN 型 半 导 体 三 极 管 的 发 射极 和 集 电 极 的 正 向 电 阻 值 的 方 法 和 测 量 PNP 型 半 导 体 三 极 管 的 方 法 相 反 。 2. 用 数 字 式 万 用 表 检 测 利 用 数 字 万 用 表 不 仅 能 判 定 晶 体 管 的 电 极 、 测 量 管 子 的 共 发 射 极 电 流 放 大 系 数 HFE,还 可 以 鉴 别 硅 管 与 锗 管 。 由 于 数 字 万 用 表 电 阻 档 的 测 试 电 流 很 小 , 所 以 不 适 用 于 检 测 晶体 管 , 应 使 用 二 极 管 档 或 者 HFE 进 行 测 试
14、 。 将 数 字 万 用 表 拨 至 二 极 管 档 , 红 表 笔 固 定 任 接 某 个 引 脚 , 用 黑 表 笔 依 次 接 触 另 外 两 个 引脚 , 如 果 两 次 显 示 值 均 小 于 1V 或 都 显 示 溢 出 符 号 “OL”或 “1”, 若 是 PNP 型 三 极 管 , 则红 表 笔 所 接 的 引 脚 就 是 基 极 B。 如 果 在 两 次 测 试 中 , 一 次 显 示 值 小 于 1V, 另 外 一 次 显示 溢 出 符 号 “OL”或 “1”( 视 不 同 的 数 字 万 用 表 而 定 ) , 则 表 明 红 表 笔 接 的 引 脚 不 是 基 极B,
15、此 时 应 改 换 其 他 引 脚 重 新 测 量 , 直 到 找 出 基 极 为 止 。 用 红 表 笔 接 基 极 , 用 黑 表 笔 先 后 接 触 其 他 两 个 引 脚 , 如 果 显 示 屏 上 的 数 值 都 显 示 为0.6-0.8V, 则 被 测 管 属 于 硅 NPN 型 中 、 小 功 率 三 极 管 ; 如 果 显 示 屏 上 的 数 值 都 显 示 为0.4-0.6V, 则 被 测 管 属 于 硅 NPN 型 大 功 率 三 极 管 。 其 中 , 显 示 数 值 较 大 的 一 次 , 黑 表 笔所 接 的 电 极 为 发 射 极 。 在 上 述 测 量 过 程 中
16、 , 如 果 显 示 屏 上 的 数 值 都 显 示 都 小 于 0.4V,则 被 测 管 属 于 锗 三 极 管 。 HFE 是 三 极 管 的 直 流 电 流 放 大 倍 数 。 用 数 字 万 用 表 可 以 方 便 的 测 出 三 极 管 的 HFE, 将数 字 万 用 表 置 于 HFE 档 , 若 被 测 管 是 NPN 型 管 , 则 将 管 子 的 各 个 引 脚 插 入 NPN 插 孔相 应 的 插 座 中 , 此 时 屏 幕 上 就 会 显 示 出 被 测 管 的 HFE 值 。 三 极 管 性 能 的 简 易 测 量( 1) 用 万 用 表 电 阻 档 测 ICEO 和
17、基 极 开 路 , 万 用 表 黑 表 笔 接 NPN 管 的 集 电 极 c、 红 表 笔 接 发 射 极 e(PNP 管 相 反 ) , 此时 c、 e 间 电 阻 值 大 则 表 明 ICEO 小 , 电 阻 值 小 则 表 明 ICEO 大 。 用 手 指 代 替 基 极 电 阻 Rb, 用 上 法 测 c、 e 间 电 阻 , 若 阻 值 比 基 极 开 路 时 小 得 多 则 表 明 值 大 。 ( 2) 用 万 用 表 hFE 档 测 有 的 万 用 表 有 hFE 档 , 按 表 上 规 定 的 极 型 插 入 三 极 管 即 可 测 得 电 流 放 大 系 数 , 若 很 小
18、 或 为 零 , 表 明 三 极 管 己 损 坏 , 可 用 电 阻 档 分 别 测 两 个 PN 结 , 确 认 是 否 有 击 穿 或断 路 。第二章 最小系统最小系统元件清单:电路图:最先系统简要说明:1 引脚 9(RST)为复位引脚,高电平有效,上电自动复位,按键复位。2 引脚 18、19 外接晶振电路,位单片机提供 11.0592zH 的频率。3 因单片机 P0 口内部无上拉电阻(10k ) ,则外接。4 引脚 31 位内外程序存储器选择端,接高电平是选择内部存储器。5 D3 为电源指示灯。6 电容 C4、C5 虑除电源部分的高低频干扰。7 二极管 D1 为保护电路用,防止电源接反对
19、电路的损毁。第三章 自我设计第一节 1602 液晶的应用该部分为系统提供各模块的数据输出情况及模块与模块之间的控制情况,如图显示的依次为:年、月、日、星期、超声波检测的距离单位 cm、温度、时、分、秒,当调节时右后向前相应功能闪,待调节,其中温度和时间闪时为默认报警值。简 介字 符 型 液 晶 , 能 够 同 时 显 示 16x02 即 32 个 字 符 。 ( 16 列 2 行 ) 管 脚 功 能引 脚 说 明1602 字 符 型 LCD 通 常 有 14 条 引 脚 线 或 16 条 引 脚 线 的 LCD, 多 出 来 的 2 条 线 是 背 光电 源 线 VCC(15 脚 )和 地 线
20、 GND(16 脚 ), 其 控 制 原 理 与 14 脚 的 LCD 完 全 一 样 , 其 中 : 引脚 符号 功能说明1 VSS 一般接地2 VDD 接电源(+5V)3 V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度) 。4 RS RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择指令寄存器。5 R/W R/W 为读写信号线,高电平(1)时进行读操作,低电平(0) 时进行写操作。6 E E(或 EN)端为使能(enable) 端,下降沿使能。7 DB0 低 4 位三态、
21、双向数据总线 0 位(最低位)8 DB1 低 4 位三态、 双向数据总线 1 位9 DB2 低 4 位三态、 双向数据总线 2 位10 DB3 低 4 位三态、 双向数据总线 3 位11 DB4 高 4 位三态、 双向数据总线 4 位12 DB5 高 4 位三态、 双向数据总线 5 位13 DB6 高 4 位三态、 双向数据总线 6 位14 DB7 高 4 位三态、 双向数据总线 7 位(最高位) (也是 busy flag)15 BLA 背光电源正极16 BLK 背光 电源负极寄 存 器 选 择 控 制 表 RS R/W 操作说明0 0 写入指令寄存器(清除屏等)0 1 读 busy fla
22、g(DB7) ,以及读取位址计数器(DB0DB6)值1 0 写入数据寄存器(显示各字型等)1 1 从数据寄存器读取数据注 : 关 于 E=H 脉 冲 开 始 时 初 始 化 E 为 0, 然 后 置 E 为 1, 再 清 0. busy flag( DB7) : 在 此 位 为 1 时 , LCD 忙 , 将 无 法 再 处 理 其 他 的 指 令 要 求 。第二节 时钟芯片 DS1302 的应用该功能位系统提供实时间。简介:DS1302 是 DALLAS 公司推出的串行接口实时时钟芯片。它既提供实时时钟,又把关键的数据位存储于 RAM。芯片使用简单,外部连线少,在智能化仪表及自动控制领域具有
23、广泛用途。其主要特点是: 简单的三线串行 I/O 接口; 2.55.5V 的电压工作范围(在 2.5V 工作时耗电小于 300nA) ; 与 TTL 兼容(Vcc=5V)时; 实时时钟包括秒、分、小时、日、月、星期和年(闰年)等信息; 31*8 静态 RAM 可供用户使用; 可选的涓流充电方式; 工作电源和备份电源双引脚输入; 备份电源可由大容量电容来替代。引脚功能表及内部结构图DS1302 的引脚及内部结构如图 1 所示,引脚功能如表 1 所示。1302 应用电路第三节 DS18B20 温度传感器的应用该功能为系统提供当前温度值:概 述DS18B20 数 字 温 度 传 感 器 接 线 方
24、便 , 封 装 成 后 可 应 用 于 多 种 场 合 , 如 管 道 式 , 螺 纹 式 ,磁 铁 吸 附 式 , 不 锈 钢 封 装 式 , 型 号 多 种 多 样 , 有 LTM8877, LTM8874 等 等 。 主 要 根 据应 用 场 合 的 不 同 而 改 变 其 外 观 。 封 装 后 的 DS18B20 可 用 于 电 缆 沟 测 温 , 高 炉 水 循 环 测温 , 锅 炉 测 温 , 机 房 测 温 , 农 业 大 棚 测 温 , 洁 净 室 测 温 , 弹 药 库 测 温 等 各 种 非 极 限 温 度场 合 。 耐 磨 耐 碰 , 体 积 小 , 使 用 方 便 ,
25、 封 装 形 式 多 样 , 适 用 于 各 种 狭 小 空 间 设 备 数 字 测温 和 控 制 领 域 。 1: 技 术 性 能 描 述 、 独 特 的 单 线 接 口 方 式 , DS18B20 在 与 微 处 理 器 连 接 时 仅 需 要 一 条 口 线 即 可 实 现 微处 理 器 与 DS18B20 的 双 向 通 讯 。 、 测 温 范 围 55 +125 , 固 有 测 温 分 辨 率 0.5 。 、 支 持 多 点 组 网 功 能 , 多 个 DS18B20 可 以 并 联 在 唯 一 的 三 线 上 , 最 多 只 能 并 联 8个 , 实 现 多 点 测 温 , 如 果
26、 数 量 过 多 , 会 使 供 电 电 源 电 压 过 低 , 从 而 造 成 信 号 传 输 的 不 稳定 。 、 工 作 电 源 : 35V/DC 、 在 使 用 中 不 需 要 任 何 外 围 元 件 、 测 量 结 果 以 912 位 数 字 量 方 式 串 行 传 送 、 不 锈 钢 保 护 管 直 径 6 、 适 用 于 DN1525, DN40DN250 各 种 介 质 工 业 管 道 和 狭 小 空 间 设 备 测 温 、 标 准 安 装 螺 纹 M10X1, M12X1.5, G1/2”任 选 、 PVC 电 缆 直 接 出 线 或 德 式 球 型 接 线 盒 出 线 ,便
27、 于 与 其 它 电 器 设 备 连 接 。第四节 超声波模块的应用该功能为系统提供检测到的 400cm 范围内的距离值,为距离检测,报警提供数据。简介:第五节 语音模块应用当温度、距离、定时符合设定值时触发该模块,播放录音。简介:电路:参考文献【1】 刘松 曹金玲单片机技术应用【2】 熊伟林 模拟电子技术及应用【3】 杨志忠数字电子技术Dianzibiao.c 文件:/*超声波模块 语音模块 1302 18B20 应用(52 单片机)1602 液晶显示=说明: 按 P3.0 功能按键次数 显示状态 P3.1(按键) P3.2(按键)0 次 时分显示状态1 次 秒闪烁 调节增加 调节减小2 次
28、 时闪烁 调节增加 调节减小3 次 周闪烁 调节增加 调节减小4 次 日闪烁 调节增加 调节减小5 次 月闪烁 调节增加 调节减小6 次 年闪烁 调节增加 调节减小7 次 定时分闪烁 调节增加 调节减小8 次 定时时闪烁 调节增加 调节减小9 次 定时开关闪烁 调节置 1 开启 调节置0 关闭10 次 超声波报警值闪烁 调节增加 调节减小11 次 恢复时分显示状态日期:2012 年 3 月 8 日*/#include#include#define uchar unsigned char#define uint unsigned int#define RX P2_5 /ECHO#define T
29、X P2_4 /RTIGuint time=0,timer=0; /时间, 定时器uchar posit=0;unsigned long S=0;bit flag1 =0; /标记sbit lcdrs=P27; /1602 的 4 脚sbit lcde=P26; /1602 的 6 脚(5 脚直接接地)sbit ds =P23; /18B20 引脚sbit SCLK=P20; /1302 的 7 脚sbit DATA=P21; /1302 的 6 脚sbit RST =P22; /1302 的 5 脚uchar miao,fen,shi,ri,yue,zhou,nian,s1,s2,s3;uc
30、har read,a,flag,temperature;uchar normal,alerting; /超声波超界显示控制、uchar num,add,subtract; /调节选位、调节加、调节减uchar code table =“ 0-0 “;uint t0,i,temp;/*延时函数*/ void TempDelay (uchar us)while(us-);void delayum(uchar n)uchar i;for(i=0;i0;x-)for(y=110;y0;y-);/*超声波计算及显示*/void Conut(void)time=TH0*256+TL0;TH0=0;TL0=
31、0; S=(time*1.7)/100; /算出来是 CMs1=S/100;s2=S%100/10;s3=S%100%10;if(S=700) /超出测量范围显示“-” normal=1;elsenormal=0;if(S1); /先读出的是低位,return(value); /返回一个字节的数据void ds_write_byte(uchar dat) /对 18b20 写一个字节uchar i;bit onebit; /一定不要忘了,onebit 是一位for(i=1;i1;if(onebit) /写 1ds=0;_nop_(); _nop_(); /看时序图,至少延时 1us,才产生写“
32、时间隙“ ds=1; /写时间隙开始后的 15s 内允许数据线拉到高电平TempDelay(5); /所有写时间隙必须最少持续 60uselse /写 0ds=0;TempDelay(8); /主机要生成一个写 0 时间隙,必须把数据线拉到低电平并保持至少 60s ,这里 64usds=1;_nop_();_nop_();void ds18b20() /18b20ds_reset(); delay(1); /约 2msds_write_byte(0xcc);ds_write_byte(0x44);uint get_temperature() /计算温度float wendu;uchar a,b
33、;ds_reset();delay(1); /约 2msds_write_byte(0xcc);ds_write_byte(0xbe);a=ds_read_byte();b=ds_read_byte();temp=b;temp=1;/*从 1302 中读一个字节 */uchar read1302(void) uchar i,dat;delayum(2);for(i=0;i=1;if(DATA=1)dat|=0x80;SCLK=1;delayum(2);SCLK=0;delayum(2);return dat;/*对 1302 写命令和数据 */void writeset1302(uchar c
34、md,uchar dat) uchar i;RST=0;SCLK=0;RST=1;delayum(2);write1302(cmd);write1302(dat);for(i=0;i=1;delayum(2);for(i=0;i=1;SCLK=1;RST=0;/*对 1302 写命令读字节*/uchar readset1302(uchar cmd) uchar dat,i;RST=0;SCLK=0;RST=1;write1302(cmd);dat=read1302();for(i=0;i=1;delayum(2);for(i=0;i=1;if(DATA=1)dat|=0x80;SCLK=1;d
35、elayum(2);SCLK=0;delayum(2);SCLK=1;RST=0;return dat;/*-*/*1602 液晶部分*/* /*对 1602 写一个命令 */void write_com(uchar com) lcdrs=0;lcde=0;P0=com;delay(5);lcde=1;delay(5);lcde=0;/*对 1602 写一个数据 */void write_(uchar ) lcdrs=1;lcde=0;P0=;delay(5);lcde=1;delay(5);lcde=0;/*对 1602 写 年、月、日 */void write_nyr(uchar add,
36、uchar )uchar shi,ge;shi=/10;ge=%10;write_com(0x80+add);write_(0x30+shi);write_(0x30+ge);/*对 1602 写 周 */void write_z(uchar add,uchar )uchar ge;ge=;write_com(0x80+add);write_(0x30+ge);/*对 1602 写 时、分、秒 */void write_sfm(uchar add,uchar )uchar shi,ge;shi=/10;ge=%10;write_com(0x80+0x40+add);write_(0x30+sh
37、i);write_(0x30+ge);/*对 1602 写 温度*/void write_wen(uchar add,uint )uchar bai,shi1,ge;bai=/100;shi1=%100/10;ge=%10;write_com(0x80+0x40+add);write_(0x30+bai);write_(0x30+shi1);write_(.);write_(0x30+ge);write_(0xdf); /写温度的单位write_(C);if(bai=2delay(20);P1_0=1;temperature=0;if(bai=2delay(20);P1_0=1;if(bai=
38、2write_com(0x80+0x40+9);write_(:);write_com(0x80+0x40+12);write_(:);/*按键 */void key() P3_5=1; /功能选择 按键if(0=P3_5)delay(100);P3_5=1;if(0=P3_5)num+;if(num=4)num=0;P3_6=1;if(0=P3_6) /增加 按键delay(100);P3_6=1;if(0=P3_6)add=1;P3_7=1;if(0=P3_7) /减小 按键delay(100);P3_7=1;if(0=P3_7)while(0=P3_7);subtract=1;/*显示*
39、/void display()if(normal=0) /超声波超距与否显示控制write_com (0x80+13);write_(0x30+s1);write_(0x30+s2);write_(0x30+s3);elsewrite_com(0x80+13);write_(-);write_(-);write_(-);read=readset1302(0x81); /显示秒miao=(readif(num=1) /是否进行调节if(miao%2=1) /秒闪烁带调节write_sfm(13,miao);elsewrite_com(0x80+0x40+13);write_( );write_c
40、om(0x80+0x40+14);write_( );elsewrite_sfm(13,miao); read=readset1302(0x83); /显示分fen=(readif(num=2) /是否进行调节if(miao%2=1) /分闪烁带调节write_sfm(10,fen);elsewrite_com(0x80+0x40+10);write_( );write_com(0x80+0x40+11);write_( );if(add=1) /分+1uchar HL,H,L;HL=fen;HL+;H=HL/10;L=HL%10;writeset1302(0x8e,0x00); /根据写状态
41、寄存器命令字,写入不保护指令writeset1302(0x82,(H/10)4)*10+(readwrite_sfm(10,fen);add=0; /清零,不按键不在+1 if(subtract=1) /分-1uchar HL,H,L;HL=fen;HL-;H=HL/10;L=HL%10;writeset1302(0x8e,0x00); /根据写状态寄存器命令字,写入不保护指令writeset1302(0x82,4);writeset1302(0x8e,0x80); /写入保护指令read=readset1302(0x83); /调解时显示fen=(readwrite_sfm(10,fen);
42、subtract=0; /清零,不按键不在-1 elsewrite_sfm(10,fen);read=readset1302(0x85); /显示时shi=(readif(num=3) /是否进行调节if(miao%2=1) /秒闪烁带调节write_sfm(7,shi);elsewrite_com(0x80+0x40+7);write_( );write_com(0x80+0x40+8);write_( );elsewrite_sfm(7,shi);read=readset1302(0x87); /显示日ri=(readwrite_nyr(8,ri);read=readset1302(0x8
43、9); /显示月yue=(readwrite_nyr(5,yue);read=readset1302(0x8B); /显示周zhou=(readwrite_z(11,zhou); read=readset1302(0x8D); /显示年nian=(readwrite_nyr(2,nian);if(miao%10=0|miao%10=2|miao%10=4)ds18b20(); /12 位转换时间最大为 750msfor(a=10;a0;a-)get_temperature();write_wen(0,temp); /*主函数*/ void main()init();init_ds1302();
44、 /对 1302 初始化while(1)key();display();/ init_ds1302();while(!RX); /当 RX 为零时等待 TR0=1; /开启计数while(RX); /当 RX 为 1 计数并等待TR0=0; /关闭计数Conut(); /计算/*T1 中断用与超声波启动模块 */void zd3() interrupt 3 TH1=0xf8;TL1=0x30;timer+;if(timer=400)timer=0;TX=1; /800MS 启动一次模块_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _
45、nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_();TX=0; AT89X52.h 文件:/*-AT89X52.HHeader file for the low voltage Flash Atmel AT89C52 and AT89LV52.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.All rights reserved.-*/#ifndef _AT89X52_H_#define _AT89X52_H_/*-Byte Registers-*/sfr P0 = 0x80;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;