现在的位置: 首页 > 综合 > 正文

51单片机1602液晶程序main.c

2013年10月04日 ⁄ 综合 ⁄ 共 2255字 ⁄ 字号 评论关闭

////// 液晶秒表程序
 /// ///4*4矩阵键盘          第五版  2009.07。23。22:11
#include<reg52.h>
#include<my.h>
unsigned char code xin[]={"my heart is here"};
unsigned int count;

void main()
{   
        unsigned int i;
      
  count=0;
  year=2009;
  month=7;
  day=24;
  hour=9;
  min=15;
  second=30;
  init();
  init_int();/////////////////////////////////////////定时器中断初始化
  for(i=0;i<16;i++) /////////////////////////////////必须要写,不知道为什么
   {
      Write_Comn(0X18);
      delay(400);
   }
   showheart();
      while(1)
 
  {        
     KEY4X4_scan();////////////////////////////////////////////键盘扫描
   switch(keyvalue)
  {
   case 0x1E:   number=1;
                init();
       shownumber();
                   break;
   case 0x1D:number=2;
    shownumber();
   
           break;
   case 0x1B:number=3; 
        shownumber();
                 break;
   case 0x17:number=4;
        shownumber();
                    break;
   case 0x2E:number=5;
        shownumber();
         break;
   case 0x2D:number=6;
         shownumber();
        break;
   case 0x2B:number=7; 
           shownumber();
                    break;
   case 0x27:number=8; 
          shownumber();
          break;
   case 0x3E:number=9; 
                      
         shownumber();
           break;
   case 0x3D:number=10; numberflag=0;shownumber();break;
   case 0x3B:number=11; numberflag=0;shownumber();break;
   case 0x37:number=12; numberflag=0;shownumber();break;

   case 0x4E:number=13; numberflag=0;shownumber();
                        break;
   case 0x4D:number=14; numberflag=1;
                      showtime();
          break;
   case 0x4B:number=15; numberflag=0;
                             showheart();
                init();
             break;
   case 0x47:        number=16;
                      init();
                      numberflag=0;
                      mysecond();
            init();
         break;
   default:
  
      Write_Comn(0x80+16);
     // for(i=0;i<16;i++)
      //Write_Data(xin[i]);
         break;
   }

    
  }
}
void time_int() interrupt 1   /////////////////////////用于日历的定时器中断
{   
    TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
      count++;
  if(count==20)
  {
    second++;
    if(second==60)
     { min++;second=0;}
   if(min==60)
     { hour++;min=0;}
      if(hour==24)
         {day++;hour=0;}
      if(day==31)
        {month++;day=1;}
      if(month==12)
        {year++;month=1;}
        count=0;
  } 
  if(numberflag==1)
  showtime();
}

抱歉!评论已关闭.