
基于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点阵达到显示时间的目的。
通过这次设计,使我加深了对单片机原理的理解与应用,巩固了课本上所学的知识,真正实现了学以致用的目的。









