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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5867|回復(fù): 2
收起左側(cè)

[原創(chuàng)]請(qǐng)教數(shù)字時(shí)鐘程序問(wèn)題

[復(fù)制鏈接]
ID:23017 發(fā)表于 2010-4-11 19:21 | 顯示全部樓層 |閱讀模式

#include <at89x51.h>

unsigned char flag,min,sec,led0,led1,led2,led3;
unsigned int times; 
bit key1;
unsigned char dispcode[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,};   //0~9 字位碼,0xFF為"滅".
unsigned char act[4]={0x01,0x02,0x03,0x04};  //數(shù)碼管位選。
void display();  
void flashdisp(int n);

void delay(unsigned int count);
// ***主程序***//
void main(void)
{
  TMOD=0x01;  //定時(shí)方式1
  IT0=0;     //電平觸發(fā)方式,低電平有效。
  min=0;    //初始化min,sec ,和標(biāo)志位。
  sec=0;
  times=0;
  key1=0;
  flag=0;
  ET0=1;    
  EX0=1;

    
  EA=1;   
  TH0=0xFF;  
  TL0=0xB0;
  TR0=1;
    while(1)
 {
  
    display();
    while(flag==1)
    {
   P1=act[0];
      display();
   delay(100); 
      P2=0xFF;
      delay(100);
    }
    while(flag==2)
    {
   P1=act[1];
      display();
   delay(100); 
      P2=0xFF;
      delay(100);
    }
    while(flag==3)
    {
   P1=act[2];
      display();
   delay(100); 
      P2=0xFF;
      delay(100);
    }
    while(flag==4)
    {
   P1=act[3];
      display();
   delay(100); 
      P2=0xFF;
      delay(100);
    }


 }

}
// ***定時(shí)中斷服務(wù)子程序***//
void timer0(void) interrupt 1   
  {
      TH0=0xFF;
    TL0=0xB0;
 times++;
 
  if(times>=10000)
    {
    times=0;
    sec++;

    if(sec>=60) {sec=0;min++;}
    if(min>=60) {min=0;}
    }
  }

   // ***外部中斷0處理子程序***//
  void extern_int1(void) interrupt 0
  {
   EA=0;

   delay(5);
   if(P3^7==0)
    {
      key1=!key1;    //停止計(jì)時(shí);
   if(key1==0){TR0=1;}
   if(key1==1){TR0=0;}

  }
 if((P3^6==0)&&key1==1)
 {
 
    flag++;
 if(flag>4){flag=0;}
  }
 if(P3^5==0&&key1)
 {

     switch(flag)
     {
    case 1:min=sec+1;break;
    case 2:min=sec+10;break;
    case 3:min=min+1;break;
    case 4:min=min+10;break;
    default:break;
   }
 }

 EA=1;
 }


//顯示//
 void display()
  {
  led0=min/10;
  led1=min%10;
  led2=sec/10;
  led3=sec%10;
  P1=act[0];
  P2=dispcode[led3];
  delay(10);     //延遲10ms。
  P1=act[1];
  P2=dispcode[led2];
  delay(10);     //延遲10ms。
  P1=act[2];
  P2=dispcode[led1];
  delay(10);     //延遲10ms。
  P1=act[3];
  P2=dispcode[led0];
  delay(10);     //延遲10ms。
  }
 

  // ***延時(shí)子程序***//
  void delay( unsigned int count)
  {
  int j;
  while(count--!=0)
   {
  for(j=0;j<121;j++)
  {;}
   }
  }

這是本人的程序,三個(gè)按鍵實(shí)現(xiàn)調(diào)時(shí)開(kāi)關(guān),選位,加一,分別接p3.7,3.6,3.5.同時(shí)三個(gè)鍵通過(guò)兩個(gè)與門(mén)接到外部中斷p3.2上,由外部中斷判斷按鍵是否按下,再讀p3.73.63.5判斷那個(gè)鍵按下,用Proteus仿真,能計(jì)時(shí)顯示,調(diào)時(shí)功能不能實(shí)現(xiàn),請(qǐng)高手指教!!!!
回復(fù)

使用道具 舉報(bào)

ID:21975 發(fā)表于 2010-4-11 21:54 | 顯示全部樓層

額,貌似你的有點(diǎn)復(fù)雜!我有個(gè)簡(jiǎn)單點(diǎn)的給你吧!用的是595控制的

void out595();
void xieru(uchar num);
void timer_init();
void data_change(uchar num);
void time_change();
void display();
void key_scan();

sbit K1=P1^4;
sbit K2=P1^5;
sbit K3=P1^6;
sbit K4=P1^7;

uchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uchar code table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar temp,temp2,hour,minute,second,gew,shiw;
//uchar code table2[3];

sbit SDA=P2^0;
sbit SCLK=P2^1;
sbit SLCK=P2^2;

void out595();
void xieru(uchar num);

void xieru(uchar num)
{
 uchar i;
 for(i=0;i<=7;i++)
 {
  if((num&0x80)==0x80)
   SDA=1;
  else
   SDA=0;
  num<<=1;
  SCLK=0;
  SCLK=1;  
 }
}
void out595()
{
 SLCK=0;
 SLCK=1;
}

void delay(uint z)        //延時(shí)子程序
{
 uint i,j;
 for(i=z;i>0;i--)
  for(j=110;j>0;j--);
}

void timer_init()
{
 TMOD=0X11;
 TH1=0X4C;
 TL1=0X00;
 EA=1;
 ET1=1;
 TR1=1;
 temp=0;temp2=0;
 hour=0;minute=0;second=0;
 gew=0;shiw=0;
}
void data_change(uchar num)
{
 shiw=num/10;
 gew=num%10;  
}

void time_change()
{
 if(temp==20)
 {
  temp=0;
  second++;
  if(second==60)
  {
   second=0;
   minute++;
   if(minute==60)
   {
    minute=0;
    hour++;
    if(hour==24)
    {
     hour=0;
    }
   }
  }
 }
}

void display()
{
 data_change(second);
 xieru(TAB[gew]);
 xieru(table[7]);
 out595();
 xieru(TAB[shiw]);
 xieru(table[6]);
 out595();
 data_change(minute);
 xieru(TAB[gew]);
 xieru(table[4]);
 out595();
 xieru(TAB[shiw]);
 xieru(table[3]);
 out595();
 data_change(hour);
 xieru(TAB[gew]);
 xieru(table[1]);
 out595();
 xieru(TAB[shiw]);
 xieru(table[0]);
 out595();
}

void key_scan()
{
 if(K1==0)
 {
  delay(5);
  {
   if(K1==0)
   {
    while(!K1);
    second++;
    if(second==60)
    {
     second=0;
    }
   }
  } 
 }
 if(K2==0)
 {
  delay(5);
  {
   while(!K2);
   minute++;
   if(minute==60)
   {
    minute=0;
   }  
  }
 }
 if(K3==0)
 {
  delay(5);
  if(K3==0)
  {
   while(!K3);
   hour++;
   if(hour==24)
   {
    hour=0;
   }
  }
 }
}

void t1() interrupt 3
{
 TH1=0X4C;
 TL1=0X00;
 temp++;
 time_change();
}

main()函數(shù)沒(méi)寫(xiě),你就自己把它加上吧,應(yīng)該沒(méi)問(wèn)題吧?

回復(fù)

使用道具 舉報(bào)

ID:23017 發(fā)表于 2010-4-15 17:16 | 顯示全部樓層

先謝了,回去研究研究

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三区精彩视频 | 中文字幕在线观看成人 | 高清欧美性猛交 | 国产成人精品免费视频大全最热 | 风间由美一区二区三区在线观看 | 久久久久国产精品www | 国产精品视频免费观看 | 毛片网站在线观看 | 夜夜夜久久久 | 午夜性色a√在线视频观看9 | 国产精品久久久久久久免费观看 | 亚洲在线一区二区 | 免费福利视频一区二区三区 | 国产精品日韩在线观看一区二区 | 中文字幕一区二区三区四区五区 | 91精品国产一区二区三区 | 久久婷婷麻豆国产91天堂 | 国产中文字幕网 | 九九九国产 | 午夜视频精品 | 亚洲精品第一 | 美女视频一区二区三区 | 在线色网 | 久久的色 | 成人超碰在线 | 久久av一区二区 | 一区二区国产精品 | 91精品国产综合久久精品 | 成人激情视频在线播放 | 欧美一区二区 | 成人精品在线观看 | 久久久久成人精品免费播放动漫 | 久久久免费观看视频 | 久久a久久| 日本xx视频免费观看 | 国产精品美女久久久久aⅴ国产馆 | 久久精品国产亚洲a | 91国在线高清视频 | 青青久在线视频 | 黄视频免费观看 | 超碰成人免费 |