⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 freescale单片机电子时钟
💻 C
字号:
#include "TIME.h"
#include "LCD.h"
#include "KB.h"  

void delay(void)
{
  unsigned char i;
  for(i=0;i<=110;i++);
}

void conver(void)
{
   time1[0]=time[0]/10+0x30;
   time1[1]=time[0]%10+0x30;
   time1[2]=time[1]/10+0x30;
   time1[3]=time[1]%10+0x30;
   time1[4]='.';
   
   time1[5]=time[2]/10+0x30;
   time1[6]=time[2]%10+0x30;
   time1[7]='.';
   
   time1[8]=time[3]/10+0x30;
   time1[9]=time[3]%10+0x30;
   
   time1[10]=time[4]/10+0x30;
   time1[11]=time[4]%10+0x30;
   time1[12]=':';
   
   time1[13]=time[5]/10+0x30;
   time1[14]=time[5]%10+0x30;
   time1[15]=':';
   
   time1[16]=time[6]/10+0x30;
   time1[17]=time[6]%10+0x30;
}
void alarmtime(unsigned char n)//蜂鸣器响
{
  unsigned char i,k;
  for(i=0;i<n;i++)
  {
    PTD=1;
    for(k=0;k<150;k++)
    delay();
    PTD=0;
    for(k=0;k<150;k++)
    delay();
  }
}    


void Timer1init(void)
 {
     //允许溢出中断、不启动计数、分频因子=64
     T1SC=0b01100110;
     //计数寄存器初值=0x0000
     T1CNTH=0x00; T1CNTL=0x00;           
     //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
     T1MODH=0x96; T1MODL=0x00;
     //允许定时器1计数寄存器计数
     T1SC&=~(1<<TSTOPBit);
 }
 void InitTime(void)
 {
   time[0]=20;
   time[1]=8;
   time[2]=6;
   time[3]=18;
   time[4]=23;
   time[5]=59;
   time[6]=54;
 }
 void SetTime(void)
 {
   //unsigned char i;
   //unsigned char value=0;
   unsigned char a[11]="input date:";
   unsigned char b[11]="input time:";
   //unsigned char c[15]="error!put again";
   unsigned char y[2];
   //unsigned char b[]="input month:";
   //unsigned char b[]="input month:";
   //unsigned char a[]="input year:";
   //unsigned char b[]="input month:";
   //unsigned char c[]="input day:";
   //unsigned char d[]="input hour:";
   //unsigned char e[]="input minute:";
   //unsigned char f[]="input second:"; 
   begin:
   lcdshow1((unsigned char *)a,11);
   
   LcdCtrl&=~(1<<LcdRS);    //RS、R/W=00,写指令
   LcdCtrl&=~(1<<LcdRW);    
   Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
     
   time[0]=y[0]*10+y[1];
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time[1]=y[0]*10+y[1];
   
   lcdshow2('.');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>1)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time[2]=y[0]*10+y[1];
   
   lcdshow2('.');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>3)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time[3]=y[0]*10+y[1];
   
   lcdshow1((unsigned char *)b,11);
   LcdCtrl&=~(1<<LcdRS);    //RS、R/W=00,写指令
   LcdCtrl&=~(1<<LcdRW);    
   Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>2)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time[4]=y[0]*10+y[1];
   
   lcdshow2(':');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>6)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time[5]=y[0]*10+y[1];
   
   lcdshow2(':');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>9)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time[6]=y[0]*10+y[1];
   
   conver();
   lcdshow((unsigned char *)time1);
}
   
void SetAlarmClock(void)
{
   //unsigned char i;
  
   unsigned char y[2];
   unsigned char a[]="alarm date:";
   unsigned char b[]="alarm time:";
   //unsigned char b[]="input month:";
   //unsigned char b[]="input month:";
   //unsigned char a[]="input year:";
   //unsigned char b[]="input month:";
   //unsigned char c[]="input day:";
   //unsigned char d[]="input hour:";
   //unsigned char e[]="input minute:";
   //unsigned char f[]="input second:"; 
   begin:
   lcdshow1((unsigned char *)a,11);
   
   LcdCtrl&=~(1<<LcdRS);    //RS、R/W=00,写指令
   LcdCtrl&=~(1<<LcdRW);    
   Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
     
   time2[0]=y[0]*10+y[1];
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time2[1]=y[0]*10+y[1];
   
   lcdshow2('.');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>1)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time2[2]=y[0]*10+y[1];
   
   lcdshow2('.');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>3)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time2[3]=y[0]*10+y[1];
   
   lcdshow1((unsigned char *)b,11);
   LcdCtrl&=~(1<<LcdRS);    //RS、R/W=00,写指令
   LcdCtrl&=~(1<<LcdRW);    
   Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>2)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time2[4]=y[0]*10+y[1];
   
   lcdshow2(':');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>6)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   
   time2[5]=y[0]*10+y[1];
   
   lcdshow2(':');
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[0]= KB_valve-0x30;
   if(y[0]>6)
   {
     //lcdshow1((unsigned char *)c,15);
     goto begin;
   }
   lcdshow2(KB_valve);
   
   while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
   while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
   KB_valve=KB_Def(KB_valve);  //键值转化为定义值
   y[1]= KB_valve-0x30;
   lcdshow2(KB_valve);
   time2[6]=y[0]*10+y[1];
   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -