基于LCD1602和DS1302的时间显示程序_第1页
基于LCD1602和DS1302的时间显示程序_第2页
基于LCD1602和DS1302的时间显示程序_第3页
基于LCD1602和DS1302的时间显示程序_第4页
基于LCD1602和DS1302的时间显示程序_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*= 使用 1602 液晶显示 51 时钟 +温度显示 007/06/29 = 声明: 1. 1602 驱动程序照搬 明皓 的,非常好用 2. 动程序是参考网友修改而来 6*2)模拟口线接线方式 连接线图 : | | | | | | | 1K 电阻到 线图 | | | | 8 7 6 5 | | | | | 1 2 3 4 | | | | . 脚接 +5V 2, 3. 脚 32768振 4. 脚接地 5. 脚接 . 脚接 . 接 . 脚接后备电源,可以接老计算机主板上的 池,也可以通过二级管隔离接一个大容量电解电容 电压在 上即可维持 按键说明: 1. 共三个键,低电平有效 2. 时按:初始化 3. 口按键:选择要调整的项目 4. 口按键:增加; 口按键:减少 注 :用 12M 晶振 源 代码: =定义与申明=*/ #* 1602 引脚定义引脚 #2_0 / 数据 /命令选择信号 #2_1 / 读 /写选择信号 #2_2 / 使能信号 /* 间显示定义部分 _10; /串行时钟输入 _; /串行数据端口 _12; /复位端口 /* 18度显示定义部分 Q=; /18 ; ; #0 /显示数据端口 #,, 温度负号显示标志 *函数申明 / 显示屏幕第一行 / 显示屏幕第二行 ; / 1 时的下一级选择 et( / 根据选择调整相应项目 /* 输入 1( /* 输出 1( / 向 入一个字节 1302( / 从 出一个字节 ); / 设置时间 /* 1602动 * /写数据 /写指令 /读状态 /始化 , , /按指定位置显示一个字符 , , /按指定位置显示一串字符 /5时 /400时 ( /显示自定义字符 /别等于 000度读数分辨率分别对应 / : 07 年 07 月 04 日 星期 3 12 点 00 分 00 秒 / 12:00:00 C / 07/07/04 =0 / 秒 分钟 小时 日 月 星期 年 =;/星期显示 /= 主函数 = /* 函 数 名: 功 能:主函数 说 明: 入口参数:无 返 回 值:无 */ ; /启动等待,等 入工作状态 ; /始化 ; /延时片刻 (可不要 ) ; /显示自定义字符 (65535256;/取定时初值 65535256; ; /开中断 ; ; /打开充电二级管 一个二级管串联一个 2K 电阻 /写保护,禁止写操作 /调整 18分辨率 000) (1_5)=0) / 初始化 同时按下 ; / 适当延 时 ,消除抖动 (1_5)=0) / 显示初始值 0) / 设置和选择项目键 ; / 适当延时 ,消除抖动 1_6=0);if() ; / 7 个可调节项目循环调节 1_6=0); : ; ; ; : /调节年 ;/设置年闪烁标志位 ; ; ; : /调节月 ;/设置月闪烁标志位 ; ; ; : /调节日 ;/设置日闪烁标志位 ; ; ; : /调节星期 ;/设置星期闪烁标志位 ; ; ; : /调节小时 ;/设置小时闪烁标志位 ; ; ; : /调节分钟 ;/设置分钟闪烁标志位 ; ; ; : /调节秒 ;/设置秒钟闪烁标志位 ; ; ; /= 定时中断 = /* 函 数 名: 功 能:时间工作时 ,冒号闪烁 说 明: 断入口 ,方式 1 入口参数:无 返 回 值:无 */ t0( 65535256; /取 50时初值 65535256; ; if() ; /计时到 ,从先开始 /= 项目设置 = /* 函 数 名: 功 能:项目设置加减控制 说 明: +和 - 入口参数:无 返 回 值:无 */ / 1 时的下一级选择 0) /按下 ,则数值增加 (+) ; /适当延时 ,消除抖动 1_5=0) ); /根据选择调整相应项目 if(7) 1_5=0); 0) /按下 ,则数值减少 (-) ; /适当延时 ,消除抖动 1_4=0) ); /根据选择调整相应项目 if(7) 1_4=0); /* 函 数 名: 功 能:项目设置 说 明: 时 ,数值加 ; 时 ,数值减 入口参数: 回 值:无 */ /根据选择调整相应项目并写入 et( ,奇数指令是读 /最大值与最小值限定 if(7) 0; /秒 if(6) 9; /分钟 if(5) 3; /小时 if(3) 1; /日 if(2) 2; /月 if(1) 9; /年 if(4) 7; /星期 /先从 1302中读出数据 ,把数据转换成十进制进行加减设置 ;后从先转换回来写入1302 中 1302()/16*10+)%16;/从 1302 中读出 1 字节 ,再转换成十进制 0) ; , 则减 if(,则赋最小值 (循环 ) if( *相当于汇编中的 ; 0; 1; /* 函 数 名: 功 能:实时时钟读取一字 节 说 明:从 取 1据 (内部函数 ) 入口参数:无 返 回 值: 计: 期: 2007 改: 日 期: */ i; i=8; i0; 1; /*相当于汇编中的 ; 1; 0; /返回读取值 /* 函 数 名: 功 能:往 入数据 说 明:先写地址,后写命令 /数据 (内部函数 ) 调 用: , 入口参数: 址 , 要写的数据 返 回 值:无 */ 1302( 0; 0; 1; /* 地址,命令 */ /* 写 1据 */ 1; 0; /* 函 数 名: 功 能:读取 地址的数据 说 明:先写地址,后读命令 /数据 (内部函数 ) 调 用: , 入口参数: 址 返 回 值: 读取的数据 */ 1302( 0; 0; 1; /* 地址,命令 */ ; /* 读 1据 */ 1; 0; /* 函 数 名: 功 能:设置初始时间 说 明:先写地址,后读命令 /数据 (寄存器多字节方式 ) 调 用: 入口参数: 设置时钟数据地 址 格式为 : 秒 分 时 日 月 星期 年 7 )1B 1B 1B 1B 1B 1B 1B 返 回 值:无 */ i; 0 /* 控制命令 ,写操作 ?*/ i =7; i0; /* 秒 分 时 日 月 星期 年 */ ; =2; /* 控制命令 ,写保护 ?*/ /= 温度显示控制部分 = /* 函 数 名: 功 能: 时 说 明: 序延时 入口参数: 返 回 值:无 */ /* 18动 * /延时 ; /* 函 数 名: 功 能: 位 说 明: 用时先要复位 入口参数:无 返 回 值: */ /复位 0; /拉低总线 9); / 保持 480Q = 1; / 释放总线 ); / 等待回复 (25); / 等待结束信号 / 返回 0:正常 1:不存在 /* 函 数 名: 功 能:从 1线上读取一个字节 说 明:读总线上的数据有严格的时序 入口参数: 返 回 值: */ i; 0; i=8;i0; =1; 0; 1; ); Q)0); /* 函 数 名: 功 能:向 1线上写一个字节 说 明:写总线上的数据有严格的时序 入口参数: 返 回 值:无 */ i; i=8; i0; 0; / ); / 1; ; ); /* 函 数 名: 功 能:读取和显示温度 说 明: 入口参数: xx,返 回 值:无 */ xx, i,x; ; c2; x; ; / 位 / OM / 转换温度 ; / OM / 读取寄存器 =; / 读出温度低 8 位 =; / 读出温度高 8 位 / 零下温度判断 ; /温度零下标志 0:零上, 1:零下 &0=0 ; / 零下标志位置 1 =; / 低 8 位取反 =; / 高 8 位取反 +1; / 低 8 位加 1 =(55) +; / 如果低 8 位大于 255,向高 8 位进 1 x=(&0256+)*i=0;i8;i+) cti=0; i=0; x/10) cti=x%10; x=x/10; i+; cti=x; if(1) yy,+0 / 显示温度十位数 ,yy,+0 / 显示温度个位数 , / 显示小数点 ,yy,+0 / 显示温度小数位 ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论