立即注冊(cè) 登錄
返回首頁(yè)

uid:75461的個(gè)人空間

日志

計(jì)時(shí)

已有 1184 次閱讀2015-3-30 08:16 |個(gè)人分類:51

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint  unsigned int

sbit    dis_bit1=P2^7;//定義數(shù)碼管控制口
sbit    dis_bit2=P2^6;//定義數(shù)碼管控制口
sbit    dis_bit3=P2^4;//定義數(shù)碼管控制口
sbit    dis_bit4=P2^3;//定義數(shù)碼管控制口
sbit    dis_bit5=P2^1;//定義數(shù)碼管控制口
sbit    dis_bit6=P2^0;//定義數(shù)碼管控制口
sbit    led1_bit=P2^2;//定時(shí)LED的控制口
sbit    led2_bit=P2^5;//定時(shí)LED的控制口
#define smg_data    P0//定義數(shù)碼管數(shù)據(jù)口


void  delay_50us(uint t);
void  display1(uchar dis_data);
void  display2(uchar dis_data);
void  display3(uchar dis_data);
void  display4(uchar dis_data);
void  display5(uchar dis_data);
void  display6(uchar dis_data);
void  init_t0();//定時(shí)器0初始化函數(shù)
void  dis_led();//LED處理函數(shù)
//共陽(yáng)數(shù)碼管斷碼表
const unsigned char tabl1[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
                               // 0  1    2    3    4    5
                               0x82,0xf8,0x80,0x90,0x88,0x83,
                              //6   7     8    9    A   B
                                    0xc6,0xa1,0x86,0x8e,0xb6};
                              //    C     D   E     F    三
 
uchar t0_crycle;
uchar hour_count,minute_count,second_count,msecond_count;
uchar flag1;
//主程序
void main()
{
    P3=0x00;
    init_t0();
    TR0=1;//
    while(1)
    {
     display1(hour_count/10);
     display2(hour_count%10);
     display3(minute_count/10); 
     display4(minute_count%10);
     display5(second_count/10);
     display6(second_count%10); 
     dis_led();
    }
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0_crycle++;
if(t0_crycle==2)// 0.1秒
{
 t0_crycle=0;
 msecond_count++;
      if(msecond_count==10)//1秒
      { 
              msecond_count=0;
        second_count++;
        if(second_count==60)
        {
          second_count=0;
          minute_count++;
          if(minute_count==60)
          {
            minute_count=0;
            hour_count++;
            if(hour_count==24)
            {
              hour_count=0; 
            }
          }
        }
      }    
}
}
//********************************************************************************************
void init_t0()
{
    TMOD=0x01;//設(shè)定定時(shí)器工作方式1,定時(shí)器定時(shí)50毫秒
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//開(kāi)總中斷
ET0=1;//允許定時(shí)器0中斷
t0_crycle=0;//定時(shí)器中斷次數(shù)計(jì)數(shù)單元
}
//**************************************************
void  dis_led()
     if(msecond_count<5)
     {
         led1_bit=1;
         led2_bit=1;
     }
     else
     {
         led1_bit=0;
         led2_bit=0;
     }
}
//***************************************************************
void display6(uchar dis_data)
{  
   smg_data=tabl1[dis_data];//送顯示斷碼
   dis_bit6=0;//鎖存數(shù)據(jù)
   delay_50us(40);
   dis_bit6=1;
}
//***************************************************************
void display5(uchar dis_data)
{  
   smg_data=tabl1[dis_data];//送顯示斷碼
   dis_bit5=0;//鎖存數(shù)據(jù)
   delay_50us(40);
   dis_bit5=1;
}
//***************************************************************
void display4(uchar dis_data)
{  
   smg_data=tabl1[dis_data];//送顯示斷碼
   dis_bit4=0;//鎖存數(shù)據(jù)
   delay_50us(40);
   dis_bit4=1;
}//***************************************************************
void display3(uchar dis_data)
{  
   smg_data=tabl1[dis_data];//送顯示斷碼
   dis_bit3=0;//鎖存數(shù)據(jù)
   delay_50us(40);
   dis_bit3=1;
}
//***************************************************************
void display1(uchar dis_data)
{  
   smg_data=tabl1[dis_data];//送顯示斷碼
   dis_bit1=0;//鎖存數(shù)據(jù)
   delay_50us(40);
   dis_bit1=1;
}
//***************************************************************
void display2(uchar dis_data)
{  
   smg_data=tabl1[dis_data];//送顯示斷碼
   dis_bit2=0;//鎖存數(shù)據(jù)
   delay_50us(40);
   dis_bit2=1;
}
//**************************************************************************************************
//函數(shù)名稱:void delay_50US(unsigned int t)
//功能: 延時(shí)50*t(us)
void delay_50us(uint t)
{
  unsigned char j; 
  for(;t>0;t--) 
  {
    for(j=19;j>0;j--);
  }
}


路過(guò)

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部