7219芯片驱动LED的电子时钟

发布者:ShiningSmile最新更新时间:2016-11-18 来源: eefocus关键字:7219芯片  驱动LED  电子时钟 手机看文章 扫描二维码
随时随地手机看文章

/***************时钟采用定时中断方式,50MS一次******完整可用,硬件实验通过**********************/
#include             
#include        
#include 
/***********************************************************************/
#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;ifor(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; 
    }     
 }     
}      

关键字:7219芯片  驱动LED  电子时钟 引用地址:7219芯片驱动LED的电子时钟

上一篇:可以改密码的单片机电子密码锁
下一篇:51单片机的几种精确延时

推荐阅读最新更新时间:2024-03-16 15:21

一种无电解电容高亮度LED驱动电源设计
   LED 电源 的挑战   LED作为新型的电光源,在制作大型发光立体字和发光标识中有着明显的优势,其控制电压低,成本低,可靠性高。虽然LED产品在国内外市场有着愈演愈烈的发展趋势,但是LED照明毕竟是新兴的产业,目前还没有广泛的普及,因此LED驱动电源不可避免的在各方面存在着挑战:首先,由于LED的正向电压会随着 电流和温度而变化,其“色点”也会随着电流和温度而漂移,为了保证LED的正常工作,就要求其驱动器无论在输入条件和正向电压如何变化的情况下都要限制电 流。其次,如果需要LED调光,通常采用的是脉宽调制调光技术,典型的PWM频率是1~3kHz.最后,LED驱动电路的功率处理能力必须充足,且功能强 固,可以承受多种故障条
[电源管理]
一种无电解电容高亮度<font color='red'>LED</font><font color='red'>驱动</font>电源设计
LED驱动不同市场需求的设计差异
LED照明 虽然后势看好,产业界也在LED芯片领域投入不少心力,但就电路设计而言,它仍然是驱动LED光源的重要角色,即便芯片与封装作得再好,电路设计不佳也是徒劳,概括来看,LED照明的电路设计仍不脱体积、成本几个基本的重点,但PFC也是重要的参考指标之一。 从整体的LED照明系统来观察,LED芯片与封装领域占了整体成本相当高的比重,不过,电路设计虽然比重不高,但毕竟是诉求节能省碳的关系,如何在功耗上能降低其功耗就成了系统业者必须思考的课题,但另一方面,LED照明也面临到成本、使用寿命与体积等诸多设计要求,在同时面临诸多要求的情况下,系统业者也将压力转嫁给半导体业者,也让半导体业者在解决方案的提供上也面临了些挑战。安森美半导体运算
[电源管理]
如何执行离线式LED驱动电路设计
作为一种新型的节能、环保的绿色光源产品,LED拥有广阔的市场前景。市场现阶段已经出现上千款LED驱动IC.其中我们遇到比较多的是单芯片线路结构(图1a)。   根据IC的数据表可知,这类IC为工作于PWM方式的高效LED驱动控制电路,借助于外部电路,能适应从8V到450V 的宽输入电压范围。通过外部的电阻(或电容)可设定固定频率控制外部功率MOS管,以恒流的方式可靠地驱动LED串。LED的电流可以通过选择恰当的限流电阻来设定。同时提供线性调光功能,支持低频可变占空比的数字脉冲(PWM)调光功能。      根据应用场合和按照不同的标准,其驱动方案可以分为三种。   按照PWM调节方式,可以分成恒定频率和恒定关断时间两类(图
[模拟电子]
如何执行离线式<font color='red'>LED</font><font color='red'>驱动</font>电路设计
美高森美推出用于线性照明灯具的超快速启动LED驱动
致力于提供帮助功率管理、安全、可靠与高性能半导体技术产品的领先供应商美高森美公司(Microsemi Corporation,纽约纳斯达克交易所代号:MSCC)推出一款针对全球各地住宅、商业和工业照明灯具而优化的新型可调光LED驱动器模块。此款新推出的30W LXMG221W-0700030-D0™ LED驱动器能实现150毫秒(ms)或更快的启动时间,高度效仿典型白炽灯的“点亮”性能,这对于不可接受灯具启动延时的家庭和商业应用是非常重要的。美高森美新的固态LED驱动器符合能源之星(ENERGY STAR-compliant)要求,提供过压和过流保护,以及自动过热关断,有助于实现安全可靠的运作。 根据行业分析机构Strategi
[电源管理]
涨知识:LED驱动电源类别及性能
   LED 驱动电源 把电源供应转换为特定的电压电流以驱动 LED 发光的电压转换器,通常情况下:LED 驱动电源 的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。下面就随电源管理小编一起来了解一下相关内容吧。    什么是 LED 驱动电源 ?    LED 驱动电源 把电源供应转换为特定的电压电流以驱动 LED 发光的电压转换器,通常情况下:LED 驱动电源 的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。   而LED驱动电源的输出则大多数为可随LED正向压降值变化而改变电压的恒定电流源。LED电源核心元件包括开关控制器、电感
[电源管理]
LED 驱动控制专用电路 TM1628 AVR 测试程序源代码
#include avr/io.h #include util/delay.h #define TM1628_DIO_PORTNAME B #define TM1628_DIO_BIT 5 #define TM1628_CLK_PORTNAME B #define TM1628_CLK_BIT 7 #define TM1628_STB_PORTNAME B #define TM1628_STB_BIT 4 #ifndef _CONCAT_ #define _CONCAT_ #define CONCAT(a, b) a ## b #define CONCAT_DDR(portn
[单片机]
12W可控硅调光LED驱动解决方案
卓一电子提供了一套12W可控硅调光LED驱动解决方案,这套方案性能高度稳定可靠,方案产品在模拟恶劣环境下经过很长时间老化,具有短路、电流温度补偿功能,可在-20~+60℃下工作。适用LED天花灯等。 产品特点: 1、性能高度稳定可靠,产品在模拟恶劣环境下长时间老化; 2、产品品种规格齐全; 3、具有短路、电流温度补偿功能,可在-20~+60℃下工作; 4、设计采用稳定PWM控制芯片技术,减少光衰,调光效果明显; 5、转换效率高达85%,高功率因数,低发热,稳定可靠,优质元器件确保电源寿命更长,更安全可靠; 6、兼容可控硅调光器,实现0~100%调光,调节均匀,渐变效果明显; 产品概述 所列参数均为常规机型参数范围,特殊参
[电源管理]
12W可控硅调光<font color='red'>LED</font><font color='red'>驱动</font>解决方案
符合“能源之星”标准的离线型LED驱动器参考设计
      随着高亮度发光二极管(HB-LED)在光输出、能效及成本方面的全面改善,同时结合小巧、低压工作及环保等众多优势,LED照明(也称固态照明(SSL))正在掀起一场照明革命。而在节能环保的趋势下,LED照明自然也成为众多规范机构所瞄准的目标。如美国能源部“能源之星”项目的1.1版固态照明标准自2009年2月开始生效,中国的中国标准化研究院也在牵头携手相关机构,准备在2010年发布中国版本的LED照明能效标准。       就“能源之星”的新版固态照明标准而言,这标准的一项重要特点是要求多种住宅照明产品的功率因数最低要达到0.7,其中的一些典型产品有便携式台灯、橱柜灯及户外走廊灯等。这类LED照明应用的功率一般在1到12
[电源管理]
符合“能源之星”标准的离线型<font color='red'>LED</font><font color='red'>驱动</font>器参考设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved