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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機秒表計時器仿真

[復制鏈接]
跳轉到指定樓層
樓主
功能:計時器相當于秒表,有四個按鍵分別是開始,存儲,回顯和復位。
器件:at89c51、兩個74H573、排阻、數碼管、led、電阻等。

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


單片機源程序如下:
  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開始計數
  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)//復位程序
  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)//運行模式標志位
  123.                         {
  124.                                 TR0=1;//開始計數
  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//中斷服務函數
  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. }
復制代碼

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



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

使用道具 舉報

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

能正常使用嗎老鐵
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费在线观看网站 | 黄色一级大片在线免费看国产一 | 久久精品国产免费 | 91精品国产日韩91久久久久久 | 久草资源在线 | 香蕉视频一区二区三区 | 国产免费高清 | 久久久午夜 | 天堂成人网 | 国产精品久久免费 | 99精品免费视频 | 免费观看毛片 | 日韩欧美综合 | 欧美区日韩区 | 日韩1级片 | 亚洲视频精品 | 日本特级黄色片 | 久久精选视频 | av在线天堂 | 六月丁香激情 | 黄色小视频在线免费观看 | 国产无精乱码一区二区三区 | 超碰在线观看免费版 | 黄色免费网站视频 | 精品一二区| 国产一区二区三区视频 | 男女啪啪免费 | 成人a视频 | 激情高潮到大叫狂喷水 | 久久精品视 | 一区二区三区中文字幕 | 国模无码大尺度一区二区三区 | 中文字幕三级 | 求av网站 | 亚洲一区免费视频 | 日韩一区二区在线视频 | 亚洲成人天堂 | 五月天色综合 | 国产激情视频在线 | a级片在线免费观看 | 日韩欧美中文字幕在线观看 |