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

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

stc電子表c51程序V2.0

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年01月14日   【字體:

   電路很簡單我就不畫了,是stc系列的單片機做的,顯示部分就是2個74hc573芯片連到P1口,然后用p3.0控制段選,按鍵的定義程序里有說明。很容易就能搭出來,下圖是效果圖,自己用萬用板焊的,技術不行。到處都是飛線呵呵,請大家多多指教

程序的c51語言完整版本的下載地址:http://www.zg4o1577.cn/f/biaoc4.rar
 

#include<stc90.h>
#define uchar unsigned char
#define uint unsigned int
uchar d0,ss,gs,sf,gf,sm,gm;
uchar e1,e2,e3,e4,e5,e6;
uchar s1,q1;
uchar shi,fen,miao;
// 8 4 2 1 8 4 2 1  
// h g f e d c b a
//效正 累加數98 跑1320秒 實際1316
//當前已走秒數 乘以 當前累加數 除以除以實際秒數 等于 累加數應得值
uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//0-9 點
uchar code wes[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0x7f};//1-8位
sbit dua=P3^0;
sbit laba=P3^1;
sbit a1=P3^2;//時間設置
sbit a2=P3^3;//鬧鐘設置
sbit a3=P3^4;//按鍵+
sbit a4=P3^5;//按鍵-
sbit a5=P3^7;//返回 啟動鬧鐘
void weiduan(uchar z,uchar x); //位段 函數
void chushi();    //初始化函數
void shijian();   //時間顯示函數
void shjianbata();//測試時間函數
void shezhi();    //時間設置函數
void naozhong();  //鬧鐘這是函數
void shu();       //時間最大值限制函數
void delay(uchar d1);//延時函數

//.....................................................................................
void main()
{ chushi(); //初始化時間
  TH0=(65535-40000)/256;//定時器裝初值
  TL0=(65535-40000)%256;
  ET0=1;//開定時器0中斷
  TR0=1;//啟動定時器0
  EA=1; //打開總中斷
  laba=1;
while(1)
{  
 shijian(); //調用時間顯示函數 顯示時間 
 if(a1==1){if(a2==1){if(a3==1){if(a4==1){ weiduan(1,10);delay(5);weiduan(3,10);delay(5);weiduan(5,10);delay(5); }}}}
 if(a1==0){delay(100);if(a1==0){shezhi();}}
 if(a2==0){delay(100);if(a2==0){naozhong();}}//調用鬧鐘設置函數
 if(a5==0){delay(100);{if(a5==0){while(1){if(q1==0){q1=1;break;}else{q1=0;break;}}while(a5==0);delay(100);}}}
 if(a2==0){delay(100);if(a2==0){naozhong();}    }
 if(q1==1){weiduan(6,0);delay(20);if(fen==e2){if(shi==e1){laba=0;}}if(fen!=e2){laba=1;}  }
 else{laba=1;}
 
  
}
}
//.....................................................................................
void naozhong()
{while(1)
{   ss=e1/10;
    gs=e1%10;  
    sf=e2/10;
    gf=e2%10;   
    sm=e3/10;
    gm=e3%10;
  delay(10);
 weiduan(0,ss);delay(10);
 weiduan(1,gs);delay(10);
 weiduan(2,sf);delay(10);     
 weiduan(3,gf);delay(10);
 weiduan(4,sm);delay(10);
 weiduan(5,gm);delay(10);

if(a1==0){delay(100);if(a1==0){while(a1==0);delay(20);break;}}
 
if(a2==0){delay(100);while(a2==0);delay(20);s1++;}
if(s1==3){s1=0;}
if(s1==1){weiduan(0,10);delay(5);weiduan(1,10);delay(5);
if(a3==0){delay(20);if(a3==0){e1++;}while(a3==0);delay(100);}
if(a4==0){delay(20);if(a4==0){e1--;}while(a4==0);delay(100);}
}
if(s1==2){weiduan(2,10);delay(5);weiduan(3,10);delay(5);
if(a3==0){delay(20);if(a3==0){e2++;}while(a3==0);delay(100);}
if(a4==0){delay(20);if(a4==0){e2--;}while(a4==0);delay(100);}
}
if(s1==0){weiduan(4,10);delay(5);weiduan(5,10);delay(5);
if(a3==0){delay(20);if(a3==0){e3++;}while(a3==0);delay(100);}
if(a4==0){delay(20);if(a4==0){e3--;}while(a4==0);delay(100);}
}

}


}
//.....................................................................................
void shezhi()//時間設置函數
{while(1)
{   
    ss=shi/10;
    gs=shi%10;  
    sf=fen/10;
    gf=fen%10;   
    sm=miao/10;
    gm=miao%10;
shijian();

if(a2==0){delay(100);if(a2==0){while(a2==0);delay(20);break;}}
if(a1==0){delay(100);while(a1==0);delay(20);s1++;}
if(s1==3){s1=0;}
if(s1==1){weiduan(0,10);delay(5);weiduan(1,10);delay(5);
if(a3==0){delay(20);if(a3==0){shi++;}while(a3==0);delay(100);}
if(a4==0){delay(20);if(a4==0){shi--;}while(a4==0);delay(100);}
}
if(s1==2){weiduan(2,10);delay(5);weiduan(3,10);delay(5);
if(a3==0){delay(20);if(a3==0){fen++;}while(a3==0);delay(100);}
if(a4==0){delay(20);if(a4==0){fen--;}while(a4==0);delay(100);}
}
if(s1==0){weiduan(4,10);delay(5);weiduan(5,10);delay(5);
if(a3==0){delay(20);if(a3==0){miao++;}while(a3==0);delay(100);}
if(a4==0){delay(20);if(a4==0){miao--;}while(a4==0);delay(100);}
}

}}
//.....................................................................................
void zhongduan() interrupt 1   //定時器中斷函數體
{  TH0=(65535-40400)/256;
   TL0=(65535-40400)%256;


  if(e3>=60)//判斷秒等于或超過60
  {e2++;   //分鐘加1
  e3=0;}   //秒數清零

  if(e2>=60) //判斷分鐘等于或超過60
  {e1++;   //小時加1
  e2=0;}   //分鐘數清零

  if(e1>=24) //判斷小時等于或大于24
  {e1=0;}   //小時數 清零
      d0++;//累加數
   shu(); //調用時間最大值限制函數

 

} 

//.....................................................................................
void delay(uchar d1)//延時函數
{uchar t0,t1;
for(t0=d1;t0>0;t0--)
for(t1=110;t1>0;t1--);

}

//.....................................................................................
void weiduan(uchar z,uchar x) //位段選擇函數
{  P1=num[x];
   dua=1;
   dua=0;
   P1=wes[z];
  
}

//.....................................................................................
void shijian()//動態掃描時間顯示函數 帶延時
{
 chushi();//調用時間初始化函數  
 delay(10);
 weiduan(0,ss);delay(10);
 weiduan(1,gs);delay(10);
 weiduan(2,sf);delay(10);     
 weiduan(3,gf);delay(10);
 weiduan(4,sm);delay(10);
 weiduan(5,gm);delay(10);
}

//.....................................................................................
void shu()   //時間最大限制函數體
{  if(d0>=98)  //判斷定時器進入 多少次
  {d0=0;    //清除累加數
  miao++;}   //秒數自+

  if(miao>=60)//判斷秒等于或超過60
  {fen++;   //分鐘加1
  miao=0;}   //秒數清零

  if(fen>=60) //判斷分鐘等于或超過60
  {shi++;   //小時加1
  fen=0;}   //分鐘數清零

  if(shi>=24) //判斷小時等于或大于24
  {shi=0;}   //小時數 清零
}
//.....................................................................................
void chushi() //時間初始化
{   ss=shi/10;
    gs=shi%10;  
    sf=fen/10;
    gf=fen%10;   
    sm=miao/10;
    gm=miao%10;
}
//.....................................................................................
關閉窗口

相關文章

主站蜘蛛池模板: 欧洲精品视频一区 | 欧美精品在欧美一区二区少妇 | 欧美一区二区三区四区在线 | 在线精品一区 | 蜜桃av人人夜夜澡人人爽 | 日韩欧美精品一区 | 日韩欧美在线免费观看视频 | 99精品一区二区 | 狼人伊人影院 | 久久免费视频网 | 国产精品小视频在线观看 | 午夜视频免费在线观看 | 中文字幕av色 | 欧美一区在线视频 | 亚洲久久 | 成人国产精品久久久 | 国产综合一区二区 | 一区二区三区观看视频 | 亚洲精品www | 天天搞天天操 | 久久国产精品久久久久久 | 国产精品久久午夜夜伦鲁鲁 | 精品久久99 | 一区二区三区福利视频 | 日日日色 | 久草视频观看 | 精品国产一区二区三区久久久蜜月 | 亚洲日本欧美日韩高观看 | 久草视频网站 | 久久丝袜| av一区在线| 一区在线观看 | 成人性生交大片免费看r链接 | 一本色道久久综合亚洲精品高清 | 国产欧美日韩在线播放 | 激情六月丁香 | 国产天天操 | 国产精品日韩在线 | 一区二区国产精品 | 精品综合久久 | 亚洲欧美在线观看 |