久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

7219芯片驅動LED的電子時鐘

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年09月14日   【字體:
/***************時鐘采用定時中斷方式,50MS一次******完整可用,硬件實驗通過**********************/

#include <REG51.H>            
#include <stdio.h>       
#include <intrins.h>
/***********************************************************************/
#define uchar unsigned char
#define uint unsigned int
//common part 
#define  HIGH     1
#define  LOW      0
#define  TRUE      1
#define  FALSE      0
#define  ZERO      0 
#define  MSB       0x80
#define  LSB       0x01
//max7219 part
#define REG_NO_OP 0x00 // 定義空操作
#define DIG_1 0x01 // 定義數碼管1 
#define DIG_2 0x02 // 定義數碼管2 
#define DIG_3 0x03 // 定義數碼管3 
#define DIG_4 0x04 // 定義數碼管4 
#define DIG_5 0x05 // 定義數碼管5 
#define DIG_6 0x06 // 定義數碼管6 
#define DIG_7 0x07 // 定義數碼管7 
#define DIG_8 0x08 // 定義數碼管8 
#define  DECODE_MODE   0x09 
#define  INTENSITY     0x0A 
#define  SCAN_LIMIT    0x0B 
#define  SHUT_DOWN     0x0C 
#define  DISPLAY_TEST  0x0F 
uchar  deda,sec,min,hour,week=1; 
/***********************************************************************/
//change this part at different board
sbit LOAD=P2^7; //MAX7219    Load-Data Input:    rising edge  pin 12 
sbit DIN=P2^5; //MAX7219    Serial-Data Input:   rising edge  pin 1
sbit CLK=P2^6; //MAX7219 
sbit  TT=P1^4;
sbit  QQ=P3^6;
sbit  RR=P3^7;

//function define
/***********************************************************************/
void Write_Max7219_byte(unsigned char temp);//write max7219 a byte
void Write_Max7219(unsigned char address,unsigned char dat);//write max7219 command and data
void Init_Max7219(void);//Initize max7219

//test program display from 1~8
/***********************************************************************/
/***********************************************************************/
void Write_Max7219_byte(unsigned char temp)
{
 unsigned char i;
 for (i=0;i<8;i++)     
  { 
   CLK=LOW;
     DIN=(bit)(temp&MSB);      
     temp<<=1; 
     CLK=HIGH;
   }
}
/***********************************************************************/
void Write_Max7219(unsigned char address,unsigned char dat)
{ 
 LOAD=LOW;
   Write_Max7219_byte(address); 
   Write_Max7219_byte(dat);
  LOAD=HIGH;                 
}
/***********************************************************************/
void Init_Max7219(void)      
{ 
 Write_Max7219(SHUT_DOWN, 0x01);   //Normal Operation XXXXXXX1 Shutdown Mode   XXXXXXXX0
 Write_Max7219(DISPLAY_TEST, 0x00);   //Normal Operation XXXXXXX0 Display Test Mode 
 Write_Max7219(DECODE_MODE, 0xff);   //Decode Mode Select D7~D0 1 B decode 0 No decode 
 Write_Max7219(SCAN_LIMIT, 0x07);   //SCAN LIMIT 0~7 0xX0~0xX7
 Write_Max7219(INTENSITY, 0x04); 
 Write_Max7219(DIG_4,0x02); Write_Max7219(DIG_3,0x01);
 Write_Max7219(DIG_6,0x07);  Write_Max7219(DIG_5,0x05);
 Write_Max7219(DIG_7,0x01);
}
     
/*****************************************************/
void init(void)     
{      
TMOD=0x01;    
TH0=-(50000/256);   
TL0=-(50000%256);  
ET0=1;     
TR0=1;     
EA=1; 
TT=0;
QQ=0;
RR=0;
Init_Max7219();    
}      
/******************************************/
void time0(void) interrupt 1   
{      
TH0=-(50000/256);   
TL0=-(50000%256);  
deda++;     
}            
/***************************************/
void conv(void)   
{      
if(deda>=20){deda=0;sec++;Write_Max7219(DIG_8,sec%10); Write_Max7219(DIG_7,sec/10); }
if(sec>=60){sec=0;min++;   Write_Max7219(DIG_6,min%10);  Write_Max7219(DIG_5,min/10);}  
if(min>=60){min=0;hour++; Write_Max7219(DIG_4,hour%10); Write_Max7219(DIG_3,hour/10);} 
if(hour>=24){hour=0;week++; Write_Max7219(DIG_2,week%10);} 
if(week>7){week=1;} 
if(hour==3) TT=1;  
}      
/*****************************************/
void delay(uint k)   
{     
uint data i,j;   
for(i=0;i<k;i++){  
for(j=0;j<121;j++)  
{;}}     
}     
/**********************************************/
uchar scan_key(void) 
{     
uchar temp;
P3=0x3f;   
temp=P3;    
if(temp!=0x3f)  
   {delay(20);  
    temp=P3;   
   if(temp!=0x3f) return temp;
    }     
return 0x3f;
}
/********************************************/
void main(void)   
{uchar key_flag;  
 init();    
 while(1)   
 {     
 conv(); 
 key_flag=scan_key();   
 switch(key_flag)  
    {     
    case 0x3b:if(++min>59)min=0; delay(300); Write_Max7219(DIG_6,min%10);  Write_Max7219(DIG_5,min/10);break;
    case 0x37:if(++hour>23)hour=0; delay(300);Write_Max7219(DIG_4,hour%10); Write_Max7219(DIG_3,hour/10);break  ;      
    case 0x2f:if(++week>7)week=1 ; delay(300); Write_Max7219(DIG_2,week%10);break;
    default:  break; 
    }     
 }     
}      
關閉窗口

相關文章

主站蜘蛛池模板: 国产成人精品久久久 | 国产欧美在线 | 久久偷人 | 国产91丝袜在线熟 | 欧美国产精品一区二区三区 | 日韩成人免费视频 | av免费网址| 欧美久久久网站 | 日本精品久久久一区二区三区 | h在线免费观看 | 日韩不卡视频在线 | 99色播| 色婷婷综合成人av | 中文二区| 国产精品精品视频一区二区三区 | 久久综合久久综合久久综合 | 伊人网综合 | 欧美理伦片在线播放 | 国产精品一区二区三区久久 | 自拍偷拍亚洲一区 | 欧美一级大片免费观看 | 干干干操操操 | 337p日本欧洲亚洲大胆 | 亚洲高清在线播放 | 亚洲精品久久久久久久久久吃药 | 第一福利社区1024 | 欧洲视频一区二区 | 亚洲视频一区在线观看 | 亚洲第一成人av | 欧美在线一区二区视频 | 欧美白人做受xxxx视频 | 欧美精品在线一区 | 亚洲深夜福利 | 国产精品高清在线 | 久久久久九九九女人毛片 | 国产露脸国语对白在线 | 手机在线观看 | 中文字幕欧美一区二区 | 亚洲激情第一页 | 中文字幕第十一页 | 国产视频精品在线 |