標(biāo)題: 帶時(shí)間調(diào)整lcd1602時(shí)鐘 [打印本頁(yè)]

作者: 有害朕的刁民    時(shí)間: 2017-12-25 22:58
標(biāo)題: 帶時(shí)間調(diào)整lcd1602時(shí)鐘
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//液晶屏LCD1602端口定義
sbit RS=P2^4;
sbit RW=P2^5;
sbit E=P2^6;
uchar dis[8];
uchar hour=12,min=30,sec=0;
uchar t1_counter=0;
bit kp=0;
//延時(shí)函數(shù)
void delayms(uchar ms)
{
   uchar i;
   while(ms--)
   for(i=0;i<123;i++);
}
//寫指令寄存器函數(shù)
void w_com(uchar com)
{
RS = 0;
RW = 0;
E = 1;
P0= com;
E = 0;
    delayms(1);
}
//寫數(shù)據(jù)寄存器函數(shù)
void w_dat(uchar dat)
{
RS = 1;
RW = 0;
E = 1;
P0= dat;
E = 0;
     delayms(1);
}
//液晶驅(qū)動(dòng)函數(shù)
void lcd_ini( void )
{
   delayms(10);
   w_com(0x38); //功能設(shè)置:8位口,2行,5*7點(diǎn)陣
   delayms(10);
   w_com(0x0c); //顯示設(shè)置:開(kāi)顯示,關(guān)光標(biāo),無(wú)閃爍
   delayms(10);
   w_com(0x06); //輸入模式:右移一格,地址加1
   delayms(10);
   w_com(0x01); //清顯示
   delayms(10);
   w_com(0x38); //功能設(shè)置:8位口,2行,5*7點(diǎn)陣
   delayms(10);
}
//按鍵功能函數(shù)
void s1_fun(void)
{
  ++hour;
  if(hour==24)hour=0;
   }
void s2_fun(void)
{
  --hour;
  if(hour==255)hour=23;
    }
void s3_fun(void)
{
  ++min;
  if(min==60)min=0;
   }
void s4_fun(void)
{
  --min;
  if(min==255)min=59;
   }
//按鍵掃描函數(shù)
void key_scan(void)
{
if((P3&0x0f)!=0x0f)
{
  delayms(10);
  if(((P3&0x0f)!=0x0f)&&(kp==0))
  {
  kp=1;
  if((P3&0x0f)==0x0e)s1_fun();
  if((P3&0x0f)==0x0d)s2_fun();
  if((P3&0x0f)==0x0b)s3_fun();
  if((P3&0x0f)==0x07)s4_fun();
  }
}
else kp=0;
}
void main(void)
{
  uchar i;
  TMOD|=0x10;
  TH1=15536/256; TL1=15536%256;
  TR1=1; EA=1; ET1=1; lcd_ini();
  while(1)
    {
  key_scan();
     dis[0]=hour/10+0x30;
     dis[1]=hour%10+0x30;
  dis[2]=':';
  dis[3]=min/10+0x30;
  dis[4]=min%10+0x30;
  dis[5]=':';
  dis[6]=sec/10+0x30;
  dis[7]=sec%10+0x30;//顯示數(shù)組各個(gè)元素賦值
   w_com(0x84);
   for(i=0;i<8;i++)
   w_dat(dis[i]);
   }
}

//T1中斷函數(shù)
void t1_int(void) interrupt 3
{
  TH1=15536/256; TL1=15536%256;
  if(++t1_counter==20)
  {
    t1_counter=0;
if(++sec==60)
{
   sec=0;
   if(++min==60)
   {
     min=0;
  if(++hour==24)hour=0;
   }
}
  }
}





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1