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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4961|回復: 3
打印 上一主題 下一主題
收起左側

利用51單片機做時鐘--對于初學者來說是一個很好的例子。

[復制鏈接]
跳轉到指定樓層
樓主

單片機做時鐘,實現功能:
1、定時器一秒定時;
2、小時、分、秒顯示 ;
3、按鍵設置時間,使用四個按鍵
步驟如下: 第一次按KEY-SET ,設置小時;第二次按KEY-SET ,設置分鐘;第二次按KEY-SET ,設置秒。
     在設置過程中,按UP循環加1;按down循環減1;按KEY-ENTER退出設置。
4、按鍵設置時間時相應的位閃爍:設置”小時“時,小時閃爍 12.20.30                 
                                                  設置”分鐘“時,分鐘閃爍  12.20.30        
                                                  設置”秒“時,秒閃爍  12.20.30   
這里閃爍我用紅色代替。   

我對51單片機的掌握還不是很熟練,有什么不懂和不足的地方還請大家多多指教。      
本來是想把proteus仿真圖上傳上來的,可是因為很少發帖 不知道怎么弄(請大俠指教啊),所以只有截圖了,大家可以自己去畫下這個圖,難度不大。
對于51我們大家也是要多看,多寫,多練,多調試,多動手才是硬道理。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:50574 發表于 2013-6-29 03:55 | 只看該作者
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key_set=P3^4;
sbit key_up=P3^5;
sbit key_down=P3^6;
sbit key_enter=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,
0x71,0x00};
uchar count,num,num1,hour,hour1,hour2,min,min1,min2,sec,sec1,sec2,shan;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}
void display(uchar hour,uchar min,uchar sec)
{
hour1=hour/10;
hour2=hour%10;
min1=min/10;
min2=min%10;
sec1=sec/10;
sec2=sec%10;
if(shan==1)
{
   if(count==1)
    {
     //TR0=0;
     hour1=16;
     hour2=16;
    }
    if(count==2)
    {
     //TR0=0;
     min1=16;
     min2=16;  
    }
    if(count==3)
    {
        //TR0=0;
        sec1=16;
     sec2=16;
    }
      if(key_enter==0)
      {
        count=0;
     shan=0;
     TR0=1;
      
      }

}
dula=1;
P0=table[hour1];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(1);
dula=1;
P0=table[hour2]|0x80;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(1);
dula=1;
P0=table[min1];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(1);
dula=1;
P0=table[min2]|0x80;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(1);
dula=1;
P0=table[sec1];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(1);
dula=1;
P0=table[sec2];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(1);
}
void keyscan()
{
if(key_set==0)   //key_set鍵的程序
{
  delayms(5);
  if(key_set==0)
  {

   count++;
     TR0=0;
   if(count==4)
         count=1;
      if(count<4)
      {
       TR1=1;
     
     shan=1;
      }
  while(!key_set)  
  display(hour,min,sec);
  }

}
if(key_up==0)
{
  delayms(5);
  if(key_up==0)
  {
   while(!key_up)
   display(hour,min,sec);
  
   if(count==1)
   {
    hour++;
    if(hour==24)
       hour=0;
   }
    if(count==2)
   {
    min++;
    if(min==60)
       min=0;
  
      }
    if(count==3)
   {
    sec++;
    if(sec==60)
       sec=0;
   }
        }
}

if(key_down==0)
{
  delayms(5);  
  if(key_down==0)
  {
    while(!key_down)
   display(hour,min,sec);
  
   if(count==1)
   {
    hour--;
    if(hour==255)
       hour=23;
   }
    if(count==2)
   {
    min--;
    if(min==255)
       min=59;
  
      }
    if(count==3)
   {
    sec--;
    if(sec==255)
       sec=59;
   }
        }
      }
   
   
if(key_enter==0)
{
  delayms(5);
  if(key_enter==0)
  {
      while(!key_enter)
   display(hour,min,sec);
   
   count=0;
      shan=0;
   TR0=1;
  /* TR1=0;
   TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;*/      
  }
}
}
void init()
{
TMOD=0x11;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=0;
}
void main()
{
init();
while(1)
{
  keyscan();
  display(hour,min,sec);
}
}

void T0_time() interrupt  1
{
  TH0=(65536-46080)/256;
  TL0=(65536-46080)%256;
num++;
if(num==20)
{
  num=0;
  sec++;
  if(sec==60)
  {
   sec=0;
   min++;
   if(min==60)
   {
    min=0;
    hour++;
    if(hour==24)
    hour=0;
   }
  }
}
}
void T1_time() interrupt 3  
{
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
num1++;
if(num1==10)
{      
  num1=0;
  shan=~shan;
}
}
回復

使用道具 舉報

板凳
ID:50813 發表于 2013-7-1 11:50 | 只看該作者
好,,,主意
回復

使用道具 舉報

地板
ID:66287 發表于 2018-8-1 08:58 | 只看該作者
樓主真高手也,這么多語句,沒一句有注釋,時間長了你自己都看不懂吧?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久婷婷二区次 | 国产视频福利 | 欧美一级黄色片免费观看 | 国产成人影院 | 男人天堂免费在线 | 久久精品国产清自在天天线 | 亚洲欧美中文日韩在线v日本 | 色资源在线观看 | 国产激情在线观看视频 | 久久久九九 | 久久久激情视频 | 久久91av| 一级黄色毛片免费 | 国产一区久久久 | 欧美电影在线观看网站 | 欧美成人一区二区三区 | 一区二区手机在线 | 一级毛片大全免费播放 | 一区二区欧美在线 | 国产亚洲精品久久久久久豆腐 | 精品国产第一区二区三区 | 日韩电影免费在线观看中文字幕 | 久久精品| 欧美久久一区二区三区 | 国产视频一区在线观看 | 国产一级片一区二区 | 日本黄色激情视频 | 人成在线视频 | 久久成人一区 | 操操操操操 | 亚洲天堂av在线 | 国产精品久久视频 | 日韩在线免费视频 | 欧美一级黄色免费看 | 亚洲字幕在线观看 | 午夜影院视频 | 国产在线播放一区二区三区 | 国产成人网 | 成人h片在线观看 | 久久久av | 久久久久久久一区 |