原创 LCD1602、DS1302、DS18B20、LED多功能电子日历(最终版)

2009-6-13 11:32 8065 7 22 分类: MCU/ 嵌入式

 


电子日历工程文件(包括源代码、keil文件、protues仿真等)https://static.assets-stash.eet-china.com/album/old-resources/2009/6/13/98492303-9e8d-4064-aaff-11f6f70f375c.rar


电子日历实验报告(含原理图、程序分析、效果图等)https://static.assets-stash.eet-china.com/album/old-resources/2009/6/13/cc28411a-0dfd-4738-a09c-92890cc7bb93.rar


原理图如下:


点击看大图


以下为该电子日历的main函数:


Calendar.c程序文件:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


/******使用LCD1602DS1302时钟芯片、DS18B20温度传感器完成该日历*******/


#include<reg52.h>


//以下的顺序不能任意放


#define uint unsigned int //宏定义


#define uchar unsigned char


#include"LM016L.h"    


#include"DS1302.h"


#include"DS18B20.h"


#include"KeyScan.h"


#include"MODE.h"


#include"OPEN.h"


////////以下为几个标志位///////////


// flag,select,alarm,temperaturelimit 


/*分别为模式标志位、功能选择标志位、闹钟、温度正负标志位以及温度上限值 (整型)


  其中alarm有三种状态:0为禁止进入,1为允许进入,2为正在闹钟模式下  */


void open();               //上电显示 


void KeyScan();       //键盘扫描


void SetTime_Mode();  //调时


void SetRing_Mode();  //闹钟设置


void SetTemp_Mode();  //温度上限设置模式


/******************************日历主函数************************************/


void main()


{    


       init();         //初始化LCD


       Set_RTC(l_tmpdate1);//初始化时钟芯片   


       open();        //上电显示函数


       write_com(0x01);   //清屏


       while(1)


   {      


              time_date();  //时间处理


           KeyScan();       //键盘扫描


       if(ring_time[1]==l_tmpdate[1]&&ring_time[2]==l_tmpdate[2]&&flag==0&&alarm!=0)//判断是否到闹钟设置的时间,是的话执行相应动作


              {    


                  uchar i;


                     alarm=2;  //正在闹钟响应模式下


                  if(ring_time[0]==l_tmpdate[0])//相等的那一时刻清屏,循环清屏会导致闪烁


                      write_com(0x01);


                     led=0;                                //小灯闪烁


                     delay(100);                         


                     led=1;


                     write_com(0x80+0x01); //写入“Time To Get Up


                     for(i=0;i<14;i++)


                     {


                        write_date(ringtable);  


                     }


                     if(l_tmpdate[0]==0x59) //自动退出闹钟模式时清屏


                      write_com(0x01);


                     continue;       //跳出本次的While循环


               }                 


              if(flag==0)     //正常显示模式下


              {


                 tempchange();  //温度转换命令   


              display(l_tmpdisplay,8);//显示时间


                 Temp_Display();      //显示温度


               deal();        //温度处理


              }


              if(flag==1)     //功能选择模式下


          {      


                     uchar i;


                     write_com(0x80+0x4);           //选择菜单


                     for(i=0;menu[select]!='\0';i++)


                     {


                            write_date(menu[select]); 


                     }


                    


                     if(select==0)     //调试模式


                     {


                         SetTime_Mode();         


                     }


                     if(select==1)        //闹钟设置


                     {


                            SetRing_Mode();


                     }


                     if(select==2)  //设置温度上限


                     {


                            SetTemp_Mode();  


                     }


              }


       }                


}


/***************END***********END******************************/    


 

PARTNER CONTENT

文章评论16条评论)

登录后参与讨论

用户1083801 2011-1-17 16:40

谢谢

用户235074 2010-8-19 17:29

protues仿真中BUS要改网络A的标号!不让就会出错!

用户235074 2010-8-19 17:27

年份日月好像更改不了!这是一个缺陷

用户235074 2010-8-19 17:16

我也试了,显示不了!

用户259978 2010-4-8 23:20

楼主,确保是可行的吗?最终版??

用户1228096 2010-1-30 09:42

留个脚印

daheng 2009-12-1 20:17

看看

用户1367325 2009-11-10 21:43

只有温度显示正常,日历/时钟不走,时间是:7:7:7, 日历是:207T-7T-7T,初始化的字符没有显示.我是在实验板上试的.

用户395791 2009-7-2 09:44

你的protues最好用6.9版的

用户550735 2009-6-29 23:53

十分感谢!!! 不够我遇到一个问题,在用protues打开仿真图时出现下面的问题:没有在‘DS182X.DLL’发现‘createactivemodel’函数??? 这是为什么呢?????
相关推荐阅读
用户395791 2011-02-21 10:10
单片机实现贪吃蛇游戏
本文章原创于 www.yafeilinux.com  作者:雨?烟?, 转载请注明出处。最近忙完英语考试了,感觉轻松许多。手痒的很,想写点程序,在玩弄手机时看见自己的手机游戏里连个贪吃蛇都没有呢…为什...
用户395791 2011-02-13 16:20
Qt 的未来
2011年的春节刚过,当我们还不愿意从过年的懒散生活中清醒过来时,一则无法设想的新闻将我们惊醒!   一、事件突发: 1.北京时间2月11日下午消息,诺基亚与微软刚刚宣布,双方计划建立广泛的战略伙伴关...
用户395791 2010-07-17 13:37
Qt串口通信专题教程
本文章原创于www.yafeilinux.com 转载请注明出处。Qt串口通信专题教程前言去年我使用Qt编写串口通信程序时,将自己的学习过程写成了教程(Qt编写串口通信程序全程图文讲解),但是由于时间...
用户395791 2010-06-16 22:32
Led非典型应用——感测外部光线
本文章原创于 www.yafeilinux.com  作者:Jay , 转载请注明出处。基本上初学者学习任何一款单片机都会写同样的一个程序——Led流水灯。就像初学C、C++、Qt之类的语言时都要写“...
用户395791 2010-05-27 18:47
Qt Creator系列教程
Qt Creator系列教程        为了使更多的Qt初学者能尽快入门Qt,也为了Qt及Qt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语...
用户395791 2010-03-26 17:51
二十七、Qt数据库(七)QSqlRelationalTableModel(原创)
声明:本文原创于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。讲完QSqlTableModel了,我们这次讲这个类的扩展类QSqlRel...
EE直播间
更多
我要评论
16
7
关闭 站长推荐上一条 /3 下一条