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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8891|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)秒表計時器仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:93714 發(fā)表于 2018-9-10 17:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
功能:計時器相當(dāng)于秒表,有四個按鍵分別是開始,存儲,回顯和復(fù)位。
器件:at89c51、兩個74H573、排阻、數(shù)碼管、led、電阻等。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. typedef unsigned char u8;
  3. typedef unsigned int  u16;
  4. #define duan P0
  5. #define wei P2
  6. /*******端口定義*******/
  7. sbit deng=P1^0;
  8. sbit seg_sel=P1^4;
  9. sbit bit_sel=P1^5;
  10. sbit start=P3^2;
  11. sbit store=P3^3;
  12. sbit diskey=P3^4;
  13. sbit reset=P3^5;
  14. /*******變量定義*******/
  15. u16 tem_ms;
  16. u8 temp_buf[5][3];
  17. u8 arr_pt;
  18. u8 run_flag;//為1開始計數(shù)
  19. u8 n_ten_ms,n_sec,n_min;
  20. u8 code seg_table[]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};        //段選
  21. u8 code bit_table[]={0x01,0x02,0x04,0x08,
  22.                                          0x10,0x20,0x40,0x80         //位選         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xbf}
  23.                     };
  24. void delay(u16 num)
  25. {
  26.    u16 x,y;
  27.    for(x=num;x>0;x--)
  28.      for(y=110;y>0;y--);        
  29. }
  30. void display_led(u8 which_bit,u8 which_number)
  31. {
  32.         bit_sel=1;
  33.         wei=bit_table[which_bit];
  34.         bit_sel=0;
  35.         seg_sel=1;
  36.         duan=seg_table[which_number];
  37.         seg_sel=0;
  38. }
  39.         void display(u8 which_bit,u8 which_number)
  40. {
  41.         u8 x,y;
  42.         x=which_number/10;//分離十位
  43.     y=which_number%10;//分離個位
  44.         display_led(5,16);
  45.     delay(2);
  46.     display_led(2,16);
  47.     delay(2);
  48.         if(which_bit==1)
  49.         {
  50.                 display_led(6,y);
  51.         delay(2);
  52.                 display_led(7,x);
  53.         delay(2);
  54.                
  55.         }
  56.    if(which_bit==2)
  57.         {
  58.                 display_led(4,y);
  59.         delay(2);
  60.                 display_led(3,x);
  61.         delay(2);
  62.                
  63.         }
  64.    if(which_bit==3)
  65.         {
  66.                 display_led(1,y);
  67.         delay(2);
  68.                 display_led(0,x);
  69.         delay(2);
  70.                
  71.         }
  72. }
  73. void reflash(void)
  74. {
  75.     display(1,n_ten_ms);
  76.         display(2,n_sec);
  77.         display(3,n_min);
  78. }
  79. int main(void)
  80. {
  81.         TMOD=0x01;
  82.         TH0=(65535-10000)/256;
  83.     TL0=(65535-10000)%256;
  84.         EA=1;
  85.     ET0=1;//開放定時器0的溢出中斷
  86.         //TR0=1;
  87.         while(1)
  88.         {
  89.                 if(start==0)//開始程序
  90.                 {
  91.                     deng=0;
  92.                         delay(5);
  93.                         if(start==0)
  94.                         {
  95.                                 run_flag=~run_flag;
  96.                         }while(!start);
  97.                 }
  98.                 if(reset==0)//復(fù)位程序
  99.                 {
  100.                     deng=1;
  101.                         delay(5);
  102.                         if(reset==0)
  103.                         {
  104.                                 n_ten_ms = 0;
  105.                                 n_sec = 0;
  106.                                 n_min = 0;
  107.                         }while(!reset);
  108.                        
  109.                 }
  110.                 if(store==0)//存儲程序
  111.                 {
  112.                         delay(5);
  113.                         if(store==0)
  114.                         {
  115.                                 if((arr_pt>=0)&&(arr_pt<5))
  116.                                         temp_buf[arr_pt][0]=n_ten_ms;
  117.                         temp_buf[arr_pt][1]=n_sec;
  118.                                         temp_buf[arr_pt][2]=n_min;
  119.                                 arr_pt++;
  120.                         }while(!store);       
  121.                 }
  122.                         if(run_flag)//運行模式標(biāo)志位
  123.                         {
  124.                                 TR0=1;//開始計數(shù)
  125.                         }
  126.                        
  127.                         else if(!run_flag)
  128.                         {
  129.                                 TR0=0;
  130.                                 if(diskey==0)//回顯程序
  131.                                 {
  132.                                         delay(5);
  133.                                         if(diskey==0)
  134.                                         {
  135.                                                 arr_pt--;
  136.                                                 n_ten_ms= temp_buf[arr_pt][0];
  137.                                 n_sec= temp_buf[arr_pt][1];
  138.                                                 n_min= temp_buf[arr_pt][2];
  139.                                         }while(!diskey);
  140.                                 }
  141.                         }
  142.                 reflash();       
  143.         }

  144. }
  145. void t0_server(void) interrupt 1//中斷服務(wù)函數(shù)
  146. {
  147.         TH0=(65535-10000)/256;
  148.     TL0=(65535-10000)%256;
  149.         n_ten_ms++;
  150.         if(n_ten_ms>=80)
  151.                 {
  152.                         n_ten_ms=0;
  153.             n_sec++;
  154.                         if(n_sec>=60)
  155.                         {
  156.                                 n_sec=0;
  157.                                 n_min++;
  158.                                 if(n_min>=60)
  159.                                         n_min=0;
  160.                         }

  161.                 }
  162. }
復(fù)制代碼

所有資料51hei提供下載:
計時器.rar (75.4 KB, 下載次數(shù): 192)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:449183 發(fā)表于 2018-12-28 12:47 | 只看該作者
很不錯
回復(fù)

使用道具 舉報

板凳
ID:47652 發(fā)表于 2019-1-24 16:21 | 只看該作者
有時間做一個
回復(fù)

使用道具 舉報

地板
ID:861512 發(fā)表于 2020-12-17 16:26 | 只看該作者

能正常使用嗎老鐵
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线日韩视频 | 久久69精品久久久久久久电影好 | 热久久久久 | 亚洲高清成人在线 | 欧美黑人一级爽快片淫片高清 | 亚洲视频在线观看免费 | 久久久av | 久久99国产精品 | 午夜免费福利片 | 成人在线观看免费视频 | 美女网站视频免费黄 | 中文字幕日韩在线 | 999久久久免费精品国产 | 国产美女高潮 | 亚洲欧美精品 | 中文一区二区视频 | 亚洲国产精品久久久久久 | 欧美日韩国产在线观看 | 午夜电影福利 | 欧美一级艳情片免费观看 | 中文在线a在线 | 九九热在线视频 | www网站在线观看 | 精品一区二区av | 99精品国产一区二区青青牛奶 | 中文字幕欧美一区二区 | 久久久久久久国产 | 久久精品国产亚洲一区二区 | 国精品一区二区 | 亚洲国产精品一区 | 成人免费视频在线观看 | 日韩精品一区二区三区 | 天天色天天射天天干 | 又黑又粗又长的欧美一区 | 91国内在线观看 | 国产精品免费一区二区三区四区 | 日韩精品无码一区二区三区 | 一区二区影视 | 97视频人人澡人人爽 | 国产在线一区观看 | 精品一区二区不卡 |