欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機時鐘完整資料

[復制鏈接]
跳轉到指定樓層
樓主
ID:191786 發(fā)表于 2017-4-25 17:03 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機時鐘完整資料


時鐘計時器元件清單
  
序號
  
元器件名
元件序號與規(guī)格
單位
數(shù)量
  
1
  
電阻
R1   R19          1KΩ
2
  
2
  
R2              10KΩ
1
  
3
  
R3~R10           330Ω
8
  
4
  
R11~R18限流電阻       100Ω
8
  
5
  
電容
C1   C2         30pF
2
  
6
  
C3電解電容    10uF
1
  
7
  
三極管
P1~P9      9012
9
  
8
  
晶振
Y1         12MHz
1
  
9
  
按鍵
S1 ,K1~K4
5
  
10
  
蜂鳴器
B1
1
  
11
  
數(shù)碼管
四位一體共陰
2
  
12
  
單片機
STC89C52
1
  
13
  
排針
若干
1
  
14
  
插座
40
1



單片機源程序:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit K1=P1^0; //功能鍵
  5. sbit K2=P1^1; //加1鍵
  6. sbit K3=P1^2; //減1鍵
  7. sbit K4=P1^3; //備用
  8. sbit beep=P1^4;// 蜂鳴器輸出控制
  9. uchar t,m,f,s;
  10. uchar num;
  11. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  12. 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //0-F共陰極數(shù)碼管
  13. /*uchar code table0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//共陽極段碼
  14. 0x82,0xf8,0x80,0x90};*/
  15. uchar code tablewe[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //控制位選

  16. void delayms(uint z)  //延時z ms
  17. {
  18.         uint x,y;
  19.         for(x=z;x>0;x--)         for(y=110;y>0;y--);
  20. }

  21. void di()          //蜂鳴器響
  22. {         beep=0;        delayms(100);          beep=1;        }

  23. void display(uchar n,uchar c,uchar d) //分離變量
  24. {
  25.         uchar a,b;
  26.         a=n/10;        //十位
  27.         b=n%10;        //個位

  28.         P0=table[a];         P2=tablewe[c];        delayms(2);        //十位顯示
  29.         P0=table[b];         P2=tablewe[d];         delayms(2); //個位顯示
  30. }
  31. void init()
  32. {        t=0; m=0;         f=0;           s=0;
  33.         
  34.         TMOD=0X01; //定時器T0工作于方式1
  35.         TH0=(65536-50000)/256;        //晶振為12MHZ
  36.         TL0=(65536-50000)%256;         //定時時間為50ms
  37.         EA=1;         //開中斷
  38.         ET0=1;         //開T0中斷
  39.         TR0=1;         //啟動T0
  40.         }
  41. void key()                  //按鍵掃描
  42. {
  43.         if(K1==0)        //功能鍵
  44.         {         
  45.                 delayms(10); //延時消抖
  46.                 if(K1==0)         //再判
  47.                 {        di();         //調(diào)蜂鳴器響
  48.                         num++;         //功能鍵按下次數(shù)加1
  49.                         while(!K1);//等待功能鍵釋放
  50.                         if(num==1)TR0=0; //關閉T0,進入調(diào)時模式
  51.                         if(num==4)
  52.                         {
  53.                                 num=0;         TR0=1;        //啟動T0
  54.                         }
  55.                 }
  56.         }
  57.         if(K2==0)                 //加1鍵
  58.         {
  59.                 delayms(10);//延時消抖
  60.                 if(K2==0)
  61.                 {        di();    //調(diào)蜂鳴器響
  62.                         while(!K2);        //等待加1鍵釋放
  63.                         if(num==1){        m++; if(m==60)m=0;         display(m,6,7);        } //秒加1,顯示秒
  64.                         if(num==2){        f++; if(f==60)f=0;        display(f,3,4);        } //分加1,顯示分
  65.                         if(num==3){        s++; if(s==24)s=0;         display(s,0,1);        } //時加1,顯示時
  66.                 }
  67.         }
  68.         if(K3==0)         //加1鍵
  69.         {
  70.                 delayms(10);
  71.                 if(K3==0)
  72.                 {        di();  //調(diào)蜂鳴器響
  73.                         while(!K3);        //等待減1鍵釋放
  74.                         if(num==1){        m--;if(m==-1)m=59;display(m,6,7);} //秒減1,顯示秒
  75.                         if(num==2){        f--;if(f==-1)f=59;display(f,3,4);} //分減1,顯示分
  76.                         if(num==3){        s--;if(s==-1)s=23;display(s,0,1);} //時減1,顯示時
  77.                 }
  78.         }
  79. }

  80. void main()
  81. {        
  82.         init();//初始化        
  83.         while(1)
  84.         {        
  85.                 key();           //調(diào)鍵掃描                  
  86.                 P0=0x40;  //顯示-        
  87.                 P2=0xdb;
  88.         
  89.                 delayms(2);        //延時
  90.                 display(s,0,1);        //秒顯示
  91.                 display(f,3,4);        //分顯示
  92.                 display(m,6,7);        //時顯示
  93.         }
  94. }

  95. void T0_time() interrupt 1
  96. {
  97.         TH0=(65536-50000)/256; //重賦初值
  98.         TL0=(65536-50000)%256;
  99.         t++;                                   //中斷次數(shù)加1
  100.         if(t==20)                           //到1秒
  101.         {
  102.                 t=0;                           //計數(shù)清0
  103.                 m++;                           //秒加1
  104.                

  105. …………限于本文篇幅 余下代碼請從51電子黑下載附件…………
復制代碼

下載:
源程序.zip (21.97 KB, 下載次數(shù): 54)
原理圖和PCB及仿真.zip (89.88 KB, 下載次數(shù): 41)
時鐘計時器元件清單.doc (34 KB, 下載次數(shù): 29)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:586915 發(fā)表于 2021-12-1 13:04 | 只看該作者
用什么軟件仿真
回復

使用道具 舉報

無效樓層,該帖已經(jīng)被刪除
地板
ID:1046492 發(fā)表于 2022-10-2 21:34 來自觸屏版 | 只看該作者
lsx116 發(fā)表于 2021-12-1 13:04
用什么軟件仿真

protues
回復

使用道具 舉報

5#
ID:190577 發(fā)表于 2022-10-4 21:14 | 只看該作者

proteus仿真軟件
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表