基于STC12C2052单片机的LED点阵电子钟的制作

一、设计目的

日常生活中,我们都看到数码管做的电子钟,但LED点阵钟并不多见。虽然点阵时钟有其自身的缺点,如硬件利用率不足,价格昂贵,但是点阵时钟的字体可以很容易地改变,通过改变单片机中的程序可以随意改变显示的字体。亲切的字体往往给人耳目一新的感觉,不像普通LED数码管的字体那样呆板。这可能是LED点阵时钟最重要的特点。

二、方案

1.LED点阵电子钟的结构和功能;

1)24小时计时。

2)4位时间显示,使用4个3mm 88 led点阵。

3)采用目前流行的DS1302实时时钟芯片生成时钟,精度高,断电后可持续一个月。

4)采用STC12C2052单片机,便于硬件扩展。24MHz晶振,工作频率高,无闪烁显示数字!

5)变压器供电,方便放置时钟。变压器的供电电压为9V,由PCB主板上的7805稳压,输出稳定的5V电压,损耗较小。

6)电子按钮时间调整。

7)双面PCB设计,电路紧凑。

8)有红色和绿色led可供选择(注意:只有单色屏幕)。

9)点阵屏以插接方式插在PCB上(可选),默认点阵屏焊接在主板上。

10)每个单元电路都有滤波电路,整个电路工作稳定。

2.LED点阵电子钟的主要部件

3mm 8 8LED点阵,STC12C2052单片机,DS1302实时时钟芯片,LM7805稳压芯片,24MHz晶振,一个9V变压器,四个调节按钮开关,其他电阻,电容,二极管,三极管等。

3.LED点阵电子钟主要元件的性能比较

1)关于DS1302时钟芯片:

该时钟采用DS1302实时时钟芯片,其程序设计和时间精度,可以不能和单片机直接产生的时钟相比。DS1302是美国DALLAS公司推出的高性能、低功耗、带RAM的实时时钟芯片。可以计时年、月、日、周日、时、分、秒,并具有闰年补偿功能。其工作电压宽达2.5 ~ 5.5 V,三线接口用于与CPU同步通信,一次可以突发方式传输多个字节的时钟信号或RAM数据。DS1302有一个31 8 RAM寄存器用于临时数据存储。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源的双电源引脚,还提供了用涓流给后备电源充电的能力。

2)备用电源:

备用电源B1可以使用电池或超级电容(10万uF以上)。虽然DS1302在切断主电源后耗电量很小,但是如果要让时钟长时间正常,最好还是选择小的充电电池。可以用旧电脑主板上的3.6V充电电池。如果断电时间短(几小时或几天),可以换成普通的漏电少的电解电容。100uF可以保证1小时的正常行走时间。

三、设计

1.电子电路:

双面PCB设计,电路紧凑

2.编程:

主程序

#include "STC12C2052AD。h "

extern void Read _ Time(unsigned char ucCurtime[]);

extern void Set _ Time(unsigned char * PSE CDA);

extern void Set_Charge(无效);

sbit HC 138 a=p3^2;

sbit HC 138 b=p3^3;

sbit HC 138 c=p3^4;

sbit HC 138 en=p3^5;

sbit hc595ser=p1^6;

sbit hc595rclk=p1^5;

sbit hc595srclk=p1^4;

sbit key1=p1^7;

sbit key2=p3^7;

//sbit KEY1=

//sbit KEY2=

无符号字符MSecond

无符号字符秒、分、小时;

无符号字符c1、c2、c3、c4、C5;

无符号字符时间[8];

无符号字符密钥状态;

无符号char key 1 on;

无符号字符key 2 on;

无符号字符代码ZF[]=

{

0x00,0x06,0x09,0x09,0x09,0x09,0x09,0x06,

0x00,0x02,0x06,0x02,0x02,0x02,0x02,0x07,

0x00,0x06,0x09,0x01,0x02,0x04,0x08,0x0f,

0x00,0x06,0x09,0x01,0x06,0x01,0x09,0x06,

0x00,0x02,0x06,0x0a,0x0a,0x0f,0x02,0x02,

0x00,0x0f,0x08,0x0e,0x09,0x01,0x09,0x06,

0x00,0x06,0x09,0x08,0x0e,0x09,0x09,0x06,

0x00,0x0f,0x01,0x01,0x02,0x04,0x04,0x04,

0x00,0x06,0x09,0x09,0x06,0x09,0x09,0x06,

0x00,0x06,0x09,0x09,0x07,0x01,0x09,0x06,

0x00,0x00,0x06,0x06,0x00,0x06,0x06,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

无效延迟(无符号整数时间)

{

无符号int I;

for(I=0;我《时间;I);

}

无效写入595(无符号字符dd)

{

无符号字符我;

for(I=0;我《8;我)

{

HC 595 ser=DD0x 01

DD=DD/2;

HC 595 Sr clk=1;

HC 595 Sr clk=0;

}

}

无效总管(无效)

{

无符号字符我;

无符号字符z1、z2、z3;

EA=1;//允许中央处理器中断

ET0=1;//定时器0中断打开

TMOD=0x 01;//设定时器0为方式一

TH0=0xB7

TL0=0xFF//设定时值为20 000微秒(20毫秒)

TR0=1;//开始定时

//EA=0;

P1M0=0

P1 m1=0;

set _ Charge();

for(I=0;我《8;我)时间[I]=1;

设置时间(时间);

关键状态=0;

钥匙1开=0;

键2开=0;

读取时间(时间);

//秒=0;

//分钟=25;

//小时=22;

秒=时间[0];

分钟=时间[1];

小时=时间[2];

c1=分钟;

c2=分钟/16;

c3=10

c4=小时;

c5=小时/16;

while(1)

{

//C1=分钟;

//C2=分钟/10;//http://www.5imcu.net/

//C4=小时;

//C5=小时/10;

if (KEY1==0)

{

if(key 1 on==0)key 1 on=1;

else if (Key1On==1)

{

钥匙1开=2;

关键状态;

如果(关键状态2)

{

关键状态=0;

读取时间(时间);

时间[1]=分钟;

时间[2]=小时;

设置时间(时间);

}

}

}

else键1开=0;

if (KEY2==0)

{

if(key 2 on==0)key 2 on=1;

else if (Key2On==1)

{

Key2On=2

if (KeyState==1)

{

分钟;

如果(分钟》9)分钟=分钟6;

如果(分钟》0x59)分钟=0;

}

else if (KeyState==2)

{

小时;

if(Hour》9)Hour=Hour 6;

if(Hour "0x 23)Hour=0;

}

}

}

else键2开=0;

if (KeyState==0)

{

读取时间(时间);

如果(第二!=Time[0])

{

c3=10

毫秒秒=0;

}

秒=时间[0];

分钟=时间[1];

小时=时间[2];

c4=小时;

c5=小时/16;

c1=分钟;

c2=分钟/16;

}

其他

{

c4=小时;

c5=小时/16;

c1=分钟;

c2=分钟/16;

}

for(I=0;我《8;我)

{

HC 138 en=1;

HC 595 ser=0;

HC 595 rclk=0;

HC 595 Sr clk=0;

//写595(0x ff);

//写595(0x 35);//http://www.5imcu.net/

z1=0xff

z2=0xff

z3=0xff

if (KeyState!=2)

{

z3=z3-(ZF[8 * c1i]《1》;

z3=z3-(ZF[8*c2 i]六》;

z2=z2-(ZF[8 * c2i]》2);

}

z2=z2-(ZF[8 * C3一世]《二》;

if (KeyState!=1)

{

z2=z2-(ZF六》;

Z1=Z1-(ZF[8 * C4 I]》2);

Z1=Z1-(ZF[8 * C5 I]《3》);

}

写595(Z1);

写595(z2);

写595(z3);

HC 595 rclk=1;

HC 595 rclk=0;

HC 595 ser=0;

HC 595 Sr clk=0;

HC138A=i0x01

HC138B=i0x02

HC138C=i0x04

HC 138 en=0;

延迟(300);

}

}

}

无效时间0中断(无效)使用一中断一

{

TH0=0xB7//20毫秒断点(1)

TL0=0xFF//设定时值

m秒=m秒1;

if(毫秒秒==15)

{

c3=11

}

}

四、安装调试

发光二极管点阵电子时钟的调节方法:

在时钟的电路板上,有四个调节按钮开关,分别是1、S2、S3、 S4,其调节方法为:

K1:小时增加;

K2:分钟增加;

K3:秒清零;

K4:切换秒显示。

五、实验试验

1、点阵时钟正面图

2、初次使用时,通电后,时钟默认是不运行的,要进行初始化设置,方法是:按K4按钮,切换秒显示,此时显示80秒;再按K3进行秒清零,时钟开始运行,秒开始累加。

六、实验总结

该系统的工作过程是利用STC12C2052单片机读时钟芯片DS1302,并通过四块3毫米88LED点阵达到显示时间的目的。

通过这次设计,使我加深了对单片机原理的理解与应用,巩固了课本上所学的知识,真正实现了学以致用的目的。