DIY制作LED数码管定时器.docx
- 文档编号:27322045
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:7
- 大小:732.35KB
DIY制作LED数码管定时器.docx
《DIY制作LED数码管定时器.docx》由会员分享,可在线阅读,更多相关《DIY制作LED数码管定时器.docx(7页珍藏版)》请在冰豆网上搜索。
DIY制作LED数码管定时器
从构思到实体出来花了我一个月的课外时间,大家支持一下我的DIY精神吧。
。
。
。
由于只有一个数码管,只能显示0到15,所以这个定时器可以定时0到15分,0到15个小时,0到15天,0到15个星期,本来想在程序中加上定时0到15个月,但想想在实际情况中定时15个月都有一年多了,估计好少用到,就不写了。
这个定时器我加上了继电器,所以可以控制220V交流电,且定时误差在几个毫秒内,还算精确吧。
。
。
先来几张初期的原理图:
ﻫ
ﻫﻫ下面是单片机的源程序:
ﻫ#include
sbitfmq=P3^3;// 蜂鸣器
sbitledx=P3^4;//定时星期指示灯ﻫsbitledt=P3^6;// 定时天指示灯
sbitledf=P3^5;//定时分钟指示灯
sbitleds=P3^7;// 定时小时指示灯
sbitkey1=P1^6;//启动|暂停ﻫsbitkey2=P1^5;//调整定时分钟
sbit key3=P1^4;//调整定时小时ﻫsbitkey4=P1^3;//调整定时天
sbit key5=P1^2;//调整定时星期ﻫsbitjdq=P1^7;//继电器
uinti,j,num,num1,num2,num3,num4,num5,num6;
ucharshi,temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,dsf,dss,dst,dsx;ﻫucharcodeshuju[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};ﻫvoid delayms(uintxms)ﻫ{ﻫfor(i=xms;i>0;i--)ﻫfor(j=110;j>0;j--);
}ﻫvoid display(shi)ﻫ{ﻫP2=shuju[shi];
}ﻫvoidkeyscan()
{
uchar i;
if(key1==0)ﻫ{
delayms(10);ﻫif(key1==0)ﻫ{
ledb=0;//把分闪烁指示灯调用来指示启动|暂停ﻫwhile(i==0&&P2!
=0xC0)
{ﻫTR0=~TR0;// 启动|暂停
i++;
}ﻫif(TR0==1)
{ﻫledb=1;//把分闪烁指示灯调用来指示启动|暂停ﻫ}
elseﻫ{ﻫTR0=0;
}
}ﻫ}
if(key2==0&&TR0==0)
{ﻫdss=0; //定时小时清零
dst=0;// 定时天数清零
dsx=0;//定时星期清零ﻫtemp1=1;//进入switch-caseﻫdelayms(10);
}ﻫif(key3==0&&TR0==0)
{ﻫdsf=0;
dst=0;ﻫdsx=0;
temp2=1;ﻫdelayms(10);ﻫ}ﻫif(key4==0&&TR0==0)
{ﻫdsf=0;
dss=0;
dsx=0;ﻫtemp3=1;ﻫdelayms(10);ﻫ}
if(key5==0&&TR0==0)
{ﻫdsf=0;ﻫdss=0;
dst=0;ﻫtemp4=1;ﻫdelayms(10);ﻫ}ﻫswitch(temp1)
{
case 1:
ﻫif(key2==0)
{
leds=1;// 关闭定时小时指示灯
ledt=1;//关闭定时天指示灯ﻫledx=1;//关闭定时星期指示灯
ledf=0;//打开定时分钟指示灯ﻫledg=1;// 关闭秒闪烁
ledb=1;//关闭分闪烁
jdq=0;//关闭继电器
dsf++;//分钟加加
shi=dsf;// 把分送去显示
if(dsf==16)ﻫ{
shi=0;ﻫdsf=0;
}
while(!
key2);ﻫtemp1=2;
temp5=1;ﻫnum2=dsf;ﻫtemp6=2;
temp7=2;
temp8=2;ﻫ}
break;ﻫ}
switch (temp2)
{
case1:
ﻫif(key3==0)
{
ledf=1;ﻫledt=1;ﻫledx=1;
leds=0;
jdq=0;
ledg=1;ﻫledb=1;
dss++;ﻫshi=dss;
if(dss==16)
{
shi=0;ﻫdss=0;ﻫ}
while(!
key3);ﻫtemp2=2;
temp6=1;
num4=dss;
temp5=2;ﻫtemp7=2;
temp8=2;ﻫ}ﻫbreak;ﻫ}
switch(temp3)ﻫ{ﻫcase1:
ﻫif(key4==0)
{
ledf=1;
leds=1;ﻫledx=1;ﻫledt=0;ﻫjdq=0;
ledg=1;
ledb=1;ﻫdst++;ﻫshi=dst;ﻫif(dst==16)
{ﻫshi=0;ﻫdst=0;ﻫ}
while(!
key4);
temp3=2;
temp7=1;
num5=dst;ﻫtemp5=2;
temp6=2;
temp8=2;ﻫ}
break;
}ﻫswitch(temp4)
{ﻫcase1:
ﻫif(key5==0)
{
ledf=1;
leds=1;
ledt=1;ﻫledx=0;
jdq=0;
ledg=1;ﻫledb=1;ﻫdsx++;ﻫshi=dsx;
if(dsx==16)ﻫ{ﻫshi=0;
dsx=0;ﻫ}ﻫwhile(!
key5);
temp4=2;ﻫtemp8=1;
num6=dsx;
temp5=2;
temp6=2;ﻫtemp7=2;ﻫ}
break;
}
switch(temp5)ﻫ{ﻫcase1:
ﻫif(num==3686)
{
num=0;
ledg=~ledg;
num1++;
}
if(num1==60)
{
num1=0;
num2--;
shi=num2;ﻫif(num2==0)ﻫ{
jdq=1;
TR0=0;
}
}ﻫbreak;
}ﻫswitch(temp6)ﻫ{ﻫcase1:
ﻫif(num==3686)
{
num=0;
ledg=~ledg;ﻫnum1++;ﻫ}ﻫﻫif(num1==60)
{
num1=0;ﻫledb=~ledb;
num3++;
if(num3==60)ﻫ{ﻫnum3=0;
num4--;ﻫshi=num4;ﻫ}
if(num4==0)ﻫ{ﻫjdq=1;
TR0=0;
}ﻫ}
break;
}
switch (temp7)
{
case1:
if(num==3686)ﻫ{
num=0;ﻫledg=~ledg;
num1++;
}ﻫﻫif(num1==60)ﻫ{ﻫnum1=0;
ledb=~ledb;ﻫnum3++;
if(num3==1440)ﻫ{ﻫnum3=0;ﻫnum5--;
shi=num5;ﻫ}ﻫif(num5==0)ﻫ{
jdq=1;ﻫTR0=0;ﻫ}ﻫ}ﻫbreak;
}
switch (temp8)ﻫ{ﻫcase1:
ﻫif(num==3686)ﻫ{ﻫnum=0;ﻫledg=~ledg;ﻫnum1++;
}
if(num1==60)ﻫ{ﻫnum1=0;ﻫledb=~ledb;
num3++;
if(num3==10080)ﻫ{ﻫnum3=0;
num6--;
shi=num6;ﻫ}ﻫif(num6==0)ﻫ{
jdq=1;ﻫTR0=0;ﻫ}ﻫ}
break;
}
}
ﻫvoidmain()
{ﻫTMOD=0x02;ﻫTH0=6;ﻫTL0=6;
EA=1;ﻫET0=1;ﻫjdq=0;ﻫwhile
(1)
{ﻫkeyscan();ﻫdisplay(shi);ﻫwhile(jdq==1&&P2==0xC0)ﻫ{
fmq=0;
ledg=1;ﻫledb=1;ﻫ}ﻫ}ﻫ}ﻫvoidT0_time()interrupt1
{
num++;ﻫ}ﻫ
全部全代码下载:
http:
//www.51he/f/ledccr.rarﻫ这是洞洞板绘图软件画的电路图:
ﻫﻫ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DIY 制作 LED 数码管 定时器