久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

DIY制作LED數(shù)碼管定時器

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年12月03日   【字體:

       從構(gòu)思到實體出來花了我一個月的課外時間,大家支持一下我的DIY精神吧。。。。由于只有一個數(shù)碼管,只能顯示0到15,所以這個定時器可以定時0到15分,0到15個小時,0到15天,0到15個星期,本來想在程序中加上定時0到15個月,但想想在實際情況中定時15個月都有一年多了,估計好少用到,就不寫了。這個定時器我加上了繼電器,所以可以控制220V交流電,且定時誤差在幾個毫秒內(nèi),還算精確吧。。。
先來幾張初期的原理圖:




        下面是單片機的源程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit ledg=P1^0;//秒閃爍(一秒鐘亮一秒鐘滅)
sbit ledb=P1^1;//分閃爍(一分鐘亮一分鐘滅)
sbit fmq=P3^3;// 蜂鳴器
sbit ledx=P3^4;// 定時星期指示燈
sbit ledt=P3^6;// 定時天指示燈
sbit ledf=P3^5;// 定時分鐘指示燈
sbit leds=P3^7;// 定時小時指示燈
sbit key1=P1^6;// 啟動|暫停
sbit key2=P1^5;// 調(diào)整定時分鐘
sbit key3=P1^4;// 調(diào)整定時小時
sbit key4=P1^3;// 調(diào)整定時天
sbit key5=P1^2;// 調(diào)整定時星期
sbit jdq=P1^7;  //繼電器
uint i,j,num,num1,num2,num3,num4,num5,num6;
uchar shi,temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,dsf,dss,dst,dsx;
uchar code shuju[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
                          0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delayms(uint xms)
{
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display(shi)
{
P2=shuju[shi];
}
void keyscan()
{
uchar i;
if(key1==0)
{   
delayms(10);
if(key1==0)
{
ledb=0; //把分閃爍指示燈調(diào)用來指示啟動|暫停
while(i==0&&P2!=0xC0)
{
   TR0=~TR0;// 啟動|暫停
 i++;
}
if(TR0==1)
{
       ledb=1;//把分閃爍指示燈調(diào)用來指示啟動|暫停
}
else
  {
     TR0=0;
   }
}
}
  if(key2==0&&TR0==0)
    {
   dss=0; // 定時小時清零
dst=0; // 定時天數(shù)清零
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; // 關(guān)閉定時小時指示燈
 ledt=1; // 關(guān)閉定時天指示燈
 ledx=1;// 關(guān)閉定時星期指示燈 
     ledf=0;// 打開定時分鐘指示燈
 ledg=1; // 關(guān)閉秒閃爍
 ledb=1; // 關(guān)閉分閃爍
 jdq=0;  //關(guān)閉繼電器
                         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)
 {
 case 1:
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)
 {
 case 1:
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)
{
 case 1:
  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)
{
  case 1:
  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)
{
    case 1:
       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)
 {
    case 1:
 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)
 {
    case 1:
 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;
          }
}
 
void main()
{
   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;
     }
}
}
void T0_time()interrupt 1
{
    num++;
}
   
全部全代碼下載:http://www.zg4o1577.cn/f/ledccr.rar
這是洞洞板繪圖軟件畫的電路圖:





 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 中文字幕一区在线观看视频 | 日韩欧美亚洲一区 | 日韩高清国产一区在线 | 成人综合在线视频 | 久久精彩视频 | 欧美综合网 | 亚洲国产精品日本 | 亚洲精品18 | 欧美日韩精选 | 国产高清一区二区三区 | 999久久久久久久 | 天天干天天操天天射 | 亚洲欧美一区二区在线观看 | 国产xxxx搡xxxxx搡麻豆 | 一级片网站视频 | 日本三级电影在线免费观看 | 人操人免费视频 | www.国产视频 | 精品无码久久久久久国产 | 黄视频网址 | 亚洲精品一二三区 | 日本中文在线视频 | 91热在线| 一区二区三区日韩 | 亚洲一区二区视频 | 成人免费观看男女羞羞视频 | 亚洲一二三区不卡 | 一区二区三区在线 | 久久亚洲一区 | 国产精品久久久久久久久大全 | 干一干操一操 | 欧美二区在线 | 精品视频久久久 | 日本久久精品 | 免费看国产一级特黄aaaa大片 | 亚洲欧美日韩一区 | 动漫www.被爆羞羞av44 | 成人av影院 | 久久av一区二区三区 | 成人福利电影 | 久久免费精品 |