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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機時鐘完整資料

[復制鏈接]
跳轉到指定樓層
樓主
51單片機時鐘完整資料


時鐘計時器元件清單
  
序號
  
元器件名
元件序號與規格
單位
數量
  
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
  
數碼管
四位一體共陰
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共陰極數碼管
  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();         //調蜂鳴器響
  48.                         num++;         //功能鍵按下次數加1
  49.                         while(!K1);//等待功能鍵釋放
  50.                         if(num==1)TR0=0; //關閉T0,進入調時模式
  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();    //調蜂鳴器響
  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();  //調蜂鳴器響
  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();           //調鍵掃描                  
  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++;                                   //中斷次數加1
  100.         if(t==20)                           //到1秒
  101.         {
  102.                 t=0;                           //計數清0
  103.                 m++;                           //秒加1
  104.                

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

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



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

使用道具 舉報

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

使用道具 舉報

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

protues
回復

使用道具 舉報

5#
ID:190577 發表于 2022-10-4 21:14 | 只看該作者
lsx116 發表于 2021-12-1 13:04
用什么軟件仿真

proteus仿真軟件
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲激情一级片 | аⅴ资源新版在线天堂 | 亚洲欧美久久 | 精品久久av| 美女国产 | 草草视频在线观看 | 久久久免费 | 亚洲一区 | 久久精品国产一区 | 97精品视频在线 | 国产精品99久久久久久大便 | 亚洲精品一区二区三区丝袜 | 青草久久免费视频 | 99精品国产一区二区三区 | 91精品国产综合久久久久 | 亚洲理论在线观看电影 | 日本久久www成人免 成人久久久久 | 在线日韩视频 | 国产成人免费视频网站视频社区 | 韩国av网站在线观看 | 成人在线观看中文字幕 | 国内精品视频 | 日干夜干 | 久久国产综合 | 亚洲免费人成在线视频观看 | 色婷婷综合久久久中字幕精品久久 | 欧美精品一区二区三区在线播放 | www.黄色网 | 一区二区三区四区在线 | 中文字幕1区2区 | 国产福利二区 | 国产精品欧美日韩 | 天天夜干| 亚洲精品二区 | 伊人啪啪网 | 国产日韩一区二区三免费高清 | 中文字幕高清av | 国产日产精品一区二区三区四区 | 欧美日韩久久 | 一二区视频 | 国产欧美精品一区二区 |