//数码管数据P0口,数码管控制P2口
#include
#include
#includePACe.h》
#include
#include
#definecodePROGMEM
#defineucharunsignedchar
#defineuintunsignedint
codeconstucharLED_7[16]={0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0xff};//commonof+
codeconstucharposition[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
ucharTIme[4];//时间计数
volaTIleuchardisp_buff[8];//显示缓冲区
volaTIleucharTIme_count=0;
volatileucharpoint_on=0;
volatileucharposit=0;
volatileuchartime_10ms_ok=0;
voidtime_to_dispbuff(void);
voidtime1_init(void);
voidtime0_init(void);
voiddisplay(void);
intmain(void)
{
PORTA=0xff;
DDRA=0xff;
PORTC=0xff;
DDRC=0xff;
time[0]=00;//1/10sec
time[1]=30;//sec
time[2]=59;//minute
time[3]=23;//hour
time_to_dispbuff();
time1_init();
sei();
while(1)
{
if(time_10ms_ok)
{
time_10ms_ok=0;
if(++time[0]》=100)
{
time[0]=0;
point_on=~point_on;
if(++time[1]》=60)
{
time[1]=0;
if(++time[2]》=60)
{
time[2]=0;
if(++time[3]》=24)
{
time[3]=0;
}
}
}
}
time_to_dispbuff();
}
}
}
voidtime0_init(void)
{
TCCR0=0x05;
TCNT0=0xea;
TIFR|=0x02;
TIMSK|=0x02;
}
voidtime1_init(void)
{
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1=0xa99a;
//TCNT1H=0xa9;
//TCNT1L=0x9a;
TIFR|=0x80;
TIMSK|=0x80;
}
SIGNAL(SIG_OVERFLOW1)
{
TCNT1=0xa99a;
display();
if(++time_count》=5)
{
time_10ms_ok=1;
time_count=0;
}
}
voiddisplay(void)
{
PORTC=0xff;
PORTA=pgm_read_byte(&led_7[disp_buff[posit]]);
if(point_on&&((posit==2)||(posit==4)||(posit==6)))PORTA&=0x7f;
PORTC=pgm_read_byte(&position[posit]);
if(++posit》=8)posit=0;
}
voidtime_to_dispbuff(void)
{
uchari,j=0;
for(i=0;i《=3;i++)
{
disp_buff[j++]=time[i]%10;
disp_buff[j++]=time[i]/10;
}
}
上一篇:如何利用AVR单片机实现AT24C256的数据高速稳定的读取
下一篇:AVR单片机对数码管的控制设计
推荐阅读最新更新时间:2024-11-08 11:59
设计资源 培训 开发板 精华推荐
- OM40003: LPCXpresso54018开发板
- LTC1728ES5-3.3 使用与 DC/DC 反馈分压器相连的 VCCA 的电源监视器的典型应用
- 苹果妙控2代键盘改机械键盘(Cover Nosix)
- LT1076CT7 基本正降压转换器的典型应用
- LTC1174 正负 (-3.3V) 降压转换器的典型应用电路
- 使用 Analog Devices 的 LT1085CM-3.6 的参考设计
- STM32 Nucleo pack LoRa™HF频段传感器和网关
- LTC2908CDDB-A1、3.3V、2.5V、1.8V、1.2V四路电源监视器的典型应用电路
- 2相双极步进电机驱动IC —— TB6600HG
- MC10XS4200 双路 24V 高边开关典型应用电路