标题: 单片机多功能电子钟参考练习 [打印本页]

作者: SAKURA6    时间: 2018-7-6 17:40
标题: 单片机多功能电子钟参考练习
这是我练习的多功能电子时钟,我们要实现的功能有:走时、 校时、闹钟、温度、遥控这么几个。要想实现这几个功能,其中走时所需要的就是时钟芯片, 即 DS1302;时间需要显示给人看,就需要显示器件,我们用到了点阵、数码管、独立 LED、 液晶;再来看校时,校时需要输入器件,本例中我们可以用板载按键和遥控器,它们各自的 驱动代码不同,但是实现的功能是一样的,都是校时;还有闹钟设置,在校时的输入器件的 支持下,闹钟也就不需要额外的硬件输入了,只需要用程序代码让蜂鸣器响就行了。
  1.     ET1 = 0;       //禁止 T1 中断     IT1 = 1;       //设置 INT1 为负边沿触发     EX1 = 1;       //使能 INT1 中断 } /* 获取当前高电平的持续时间 */ uint16 GetHighTime() {     TH1 = 0;  //清零 T1 计数初值     TL1 = 0;     TR1 = 1;  //启动 T1 计数     while (IR_INPUT)  //红外输入引脚为 1 时循环检测等待,变为 0 时则结束本循环     {         if (TH1 >= 0x40)         {             //当 T1 计数值大于 0x4000,即高电平持续时间超过约 18ms 时,             break;   //强制退出循环,是为了避免信号异常时,程序假死在这里。         }     }     TR1 = 0;  //停止 T1 计数

  2.     return (TH1*256 + TL1);  //T1 计数值合成为 16bit 整型数,并返回该数 } /* 获取当前低电平的持续时间 */ uint16 GetLowTime() {     TH1 = 0;  //清零 T1 计数初值     TL1 = 0;     TR1 = 1;  //启动 T1 计数     while (!IR_INPUT)  //红外输入引脚为 0 时循环检测等待,变为 1 时则结束本循环     {         if (TH1 >= 0x40)         {             //当 T1 计数值大于 0x4000,即低电平持续时间超过约 18ms 时,             break;   //强制退出循环,是为了避免信号异常时,程序假死在这里。         }     }     TR1 = 0;  //停止 T1 计数

  3.     return (TH1*256 + TL1);  //T1 计数值合成为 16bit 整型数,并返回该数 } /* INT1 中断服务函数,执行红外接收及解码 */ void EXINT1_ISR() interrupt 2 {     uint8 i, j;     uint8 byt;     uint16 time;
复制代码


5.png (111.36 KB, 下载次数: 45)

头文件

头文件

source.rar

20.85 KB, 下载次数: 5, 下载积分: 黑币 -5






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1