原创 51 lcd12864多功能电子钟 实验(二十四)

2008-5-12 12:05 4787 9 10 分类: MCU/ 嵌入式

pdf


这个实验利用lcd12864实现一个综合性的时钟系统,详情见附件


平台:FDR-1 51 开发板


主程序代码:


#include <reg52.h>
#include <intrins.h>
#include<string.h>
 bit clock="0";
  sbit ACC7=ACC^7;
   sbit ACC0=ACC^0;
bit flag="0";
unsigned char k="0";


bit i="1";
    void play_respond();


 void move();
unsigned char hour_sound,minute_sound;
 unsigned char print[7]={33,35,18,11,2,4,97};


unsigned char temp[2],Count;
void beeping(unsigned char frequence,unsigned char length);
void Delay_xMs(unsigned char x);
void getch();
  void showtime(unsigned char *print);
void change()                       ////修改时间
{  
      unsigned char i="0",temp[7],temp3[3],x,y;
     v_BurstR1302T(print);
  for(i=0;i<7;i++)
  {temp=print;}
  i="0";
  
     showtime(temp); 
  while(k!=15)
  {
    getch();
  if(flag==1&&k==13) {flag=0;i++;i=i%7;k=0;}
 
     
    if(flag==1&&k==9){flag=0;temp[6-i]++;}
    if(flag==1&&k==8){flag=0;temp[6-i]--; }
    if(flag==1&&k==11){flag=0;clock=1;}
             temp3[0]=time[temp[6-i]/10];
    temp3[1]=time[temp[6-i]%10];
     temp3[2]='\0';
    
     switch(i)
    {case 0:{x=0;y=1;break;}
    case 1:{ x="2",y=0;break;}           
       case 2: {x=0;y=3;break;}
    case 3:{x=0;y=5;break;}
    case 4: {x=2;y=1;break;}
    case 5: {x=2;y=3;break;}
    case 6: {x=2;y=5;break;}
   
    }
      showtime(temp) ; 
     }
     
      if(clock==0)v_BurstW1302T(temp);
       else 
       {hour_sound=temp[2];minute_sound=temp[1];play_respond();}
       k="0";flag=0;
            
}
  void move()
  {
   unsigned char i="0";
     while(1)
   { getch();
     if(flag==1&&k==13)
   break;
   i++;i=i%2;
   PutBMP2(0,0,6, 32,bmp6,i);delay(400);
   
     PutBMP2(3,0,6, 32,bmp7,i);delay(400);
   flag="0";k=0; LcmClearBMP();
  }
   }
void main( void )
{      unsigned char i;
        unsigned char  program =0;


  
         unsigned char(* bmp[8])[256]={  &bmp0,&bmp1,&bmp2,&bmp3,&bmp4,&bmp5,&bmp6,&bmp7};
         delay(100);
         LcmInit();
         LcmClearTXT();
         LcmClearBMP();
    PutBMP(bmp8);
   psb="0";
   rst="1";
     Time0_Init();
          LcmClearTXT();


   
     PutBMP(bmp8);
     delay(1000);
      v_BurstW1302T(print);
     LcmClearBMP();
    for(i=0;i<4;i++){PutBMP2(1+i*4,0,5, 32,bmp,1);}
    PutBMP2(0,0,5, 32,bmp[0],0);
    while(1)
    {   //////////////////////////
    /*背景程序 */


 



    reach_time();
         ///////////////////////
         i="i"%4;
        getch();
     if(flag==1)
     {    flag="0";
                if(k==12){ PutBMP2(i*4,0,5, 32,bmp,1);i++;}   
           if(k==15)      {PutBMP2(i*4,0,5, 32,bmp,1);i--;}
                      i="i"%4;PutBMP2(i*4,0,5, 32,bmp,0);
            if(k==13){program=1;k=0;}
      }


               if(program==1)
      {
        program="0";
     switch (i)
     {  unsigned int i="0";
        case 0: { LcmClearBMP();
               
        PutBMP2(i*4,0,5, 32,bmp[4],1);
        Play_Song();


       
        k=0; flag="0";  for(i=0;i<4;i++){PutBMP2(i*4,0,5, 32,bmp,1);  }
        break;
        
     
              }
        case 1: {
                LcmClearBMP(); 
           while(k!=13){for(i=0;i<16;i++){getch();if(k!=13){PutBMP2(i,0,5, 32,bmp1,i%2); getch();delay(1000);  LcmClearBMP();} else {flag=1;break;}if(flag==1)break;}}k=0; flag="0"; for(i=0;i<4;i++){PutBMP2(i*4,0,5, 32,bmp,1);  }break;
              }    
     case 2: {
                LcmClearBMP();
          move();
           change() ; 
                     
         flag=0;
         k=0;
         LcmClearTXT();
         for(i=0;i<4;i++){PutBMP2(i*4,0,5, 32,bmp,1);  } break;
          }
     case 3:  {
                       LcmClearBMP();
             while(1)
        { 
                                         i++;
        if(i==500){v_BurstR1302T(print);i=0;showtime(print);}
        getch();
        if(k==13)break;
        }
        flag=0;k=0;LcmClearTXT();for(i=0;i<4;i++){PutBMP2(i*4,0,5, 32,bmp,1);  } break;


         }


  }
   }


 }
}

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户175696 2008-11-17 17:35

福师大
相关推荐阅读
正点原子 2013-05-17 23:47
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十一章 战舰STM32开发板综合实验(标准例程终结篇)
   第六十一章 战舰STM32开发板综合实验        前面已经给大家讲了55个实例了,本章将设计一个综合实例,作为本指南的最后一个实验 ,该实验向大家展示了STM...
正点原子 2013-05-03 23:02
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第六十章 UCOSII实验3-消息队列、信号量集和软件定时器
   第六十章 UCOSII实验3-消息队列、信号量集和软件定时器   上一章,我们学习了UCOSII的信号量和邮箱的使用,本章,我们将学习消息队列、信号量集和软件定时器...
正点原子 2013-05-03 20:42
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十七章 ENC28J60网络实验
第五十七章 ENC28J60网络实验   本章,我们将向大家介绍ALIENTEK ENC28J60网络模块及其使用。本章,我们将使用ALIENTEK ENC28J60网络模块...
正点原子 2013-05-01 23:00
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十九章 UCOSII实验2-信号量和邮箱
第五十九章 UCOSII实验2-信号量和邮箱      上一章,我们学习了如何使用UCOSII,学习了UCOSII的任务调度,但是并没有用到任务间的同步与通信,本章我们将学习两个最基本的...
正点原子 2013-04-30 10:55
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十八章 UCOSII实验1-任务调度
  第五十八章 UCOSII实验1-任务调度      前面我们所有的例程都是跑的裸机程序(裸奔),从本章开始,我们将分3个章节向大家介绍UCOSII(实时多任务操作系...
正点原子 2013-04-26 23:16
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十七章 ENC28J60网络实验
 第五十七章 ENC28J60网络实验  本章,我们将向大家介绍ALIENTEK ENC28J60网络模块及其使用。本章,我们将使用ALIENTEK ENC28J60网络模块和uIP 1...
EE直播间
更多
我要评论
1
9
关闭 站长推荐上一条 /1 下一条