找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3585|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机+74HC573驱动数码管实现秒表系统程序仿真设计

[复制链接]
跳转到指定楼层
#
基于51单片机的秒表系统设计。包含KEIL工程文件和PROTEUS仿真文件


单片机源程序如下:
  1. #include<reg51.h>

  2. #define uchar unsigned char

  3. sbit dula=P2^6;
  4. sbit wela=P2^7;
  5. sbit beep=P2^3;

  6. sbit key0=P1^0;
  7. sbit key1=P1^1;
  8. sbit key2=P1^2;
  9. sbit key3=P1^3;
  10. sbit led=P1^6;

  11. unsigned char j,k,c5,c4,c3,c2,c1,c0,m,n=255,a,b,c,stop;
  12. unsigned char m1,m2,m3,m4,m5;
  13. unsigned char pp;
  14. unsigned char trigger=5;
  15. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  16.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  17. void delay(unsigned char i)
  18. {
  19.   for(j=i;j>0;j--)
  20.     for(k=125;k>0;k--);
  21. }

  22. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  23. {         
  24.          P0=table[a];
  25.    dula=1;
  26.    dula=0;
  27.    
  28.    P0=0xfe;
  29.    wela=1;
  30.    wela=0;
  31.    delay(5);
  32.        
  33.    P0=0;
  34.    dula=1;
  35.    dula=0;
  36.    
  37.    P0=0xfe;
  38.    wela=1;
  39.    wela=0;
  40.        
  41.          P0=table[b];
  42.    dula=1;
  43.    dula=0;
  44.    
  45.    P0=0xfd;
  46.    wela=1;
  47.    wela=0;
  48.    delay(5);
  49.        
  50.    P0=0;
  51.    dula=1;
  52.    dula=0;
  53.    
  54.    P0=0xfd;
  55.    wela=1;
  56.    wela=0;
  57.        
  58.          P0=table[c];
  59.    dula=1;
  60.    dula=0;
  61.    
  62.    P0=0xfb;
  63.    wela=1;
  64.    wela=0;
  65.    delay(5);
  66.        
  67.    P0=0;
  68.    dula=1;
  69.    dula=0;
  70.    
  71.    P0=0xfb;
  72.    wela=1;
  73.    wela=0;
  74.        
  75.    P0=table[d];
  76.    dula=1;
  77.    dula=0;
  78.    
  79.    P0=0xf7;
  80.    wela=1;
  81.    wela=0;
  82.    delay(5);
  83.        
  84.    P0=0;
  85.    dula=1;
  86.    dula=0;
  87.    
  88.    P0=0xf7;
  89.    wela=1;
  90.    wela=0;
  91.        
  92.          P0=table[e];
  93.    dula=1;
  94.    dula=0;
  95.    
  96.    P0=0xef;
  97.    wela=1;
  98.    wela=0;
  99.    delay(5);
  100.        
  101.    P0=0;
  102.    dula=1;
  103.    dula=0;
  104.    
  105.    P0=0xef;
  106.    wela=1;
  107.    wela=0;
  108.    
  109.    P0=table[f];
  110.    dula=1;
  111.    dula=0;
  112.    
  113.    P0=0xdf;
  114.    wela=1;
  115.    wela=0;
  116.    delay(5);
  117.          
  118.          P0=0;
  119.    dula=1;
  120.    dula=0;
  121.    
  122.    P0=0xdf;
  123.    wela=1;
  124.    wela=0;
  125. }

  126. void hurry()//秒声
  127. {
  128.         uchar i;
  129.         for(i=8;i>0;i--)
  130.           {       
  131.                 beep=1;
  132.                 delay(5);
  133.           beep=0;
  134.                 delay(5);
  135.           }
  136. }

  137. void baojin()//报警
  138. {
  139.         uchar i;
  140.         for(i=100;i>0;i--)
  141.           {       
  142.                 beep=1;
  143.                 delay(5);
  144.           beep=0;
  145.                 delay(5);
  146.           }
  147. }

  148. void main()
  149. {
  150.                 TMOD=0x01;                 //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
  151. //                TR0=1;                         //打开定时器       
  152.                 TH0=(65536-4608)/256;// 由于晶振为11.0592,故所记次数应为4608,计时器每隔5000微秒发起一次中断。
  153.                 TL0=(65536-4608)%256;//4608的来历,为5000*11.0592/12
  154.                 ET0=1;                         //开定时器0中断
  155.                 EA=1;                         //开总中断
  156.                 while(1)
  157.                 {
  158.                         //stop-go on
  159.                         if(key0==0)
  160.                         {
  161.                                 delay(5);
  162.                                 if(key0==0)
  163.                                 {
  164.                                         while(!key0);
  165.                                         TR0=~TR0;
  166.                                 }
  167.                         }
  168.                         //clear
  169.                         if(key1==0)
  170.                         {
  171.                                 if(key1==0)
  172.                                 {
  173.                                         while(!key1);
  174.                                         c5=0;c4=0;c3=0;
  175.                                         c2=0;c1=0;c0=0;
  176.                                         m1=0;m2=0;m3=0;m4=0;m5=0;
  177.                                         TR0=0;led=0;
  178.                                 }
  179.                         }
  180.                         //show
  181.                         display(c5,c4,c3,c2,c1,c0);
  182.                 }                       
  183. }
  184.                
  185. void TIME0()interrupt 1            
  186. {
  187.         uchar i;
  188.         TH0=(65535-4608)/256;            
  189.         TL0=(65535-4608)%256;            
  190.         i++;
  191.         if(i==20)
  192.         {                 
  193.                         m1++;                  
  194.                 if(m1==10)
  195.                 {
  196.                         m1=0;
  197.                         m2++;       
  198.                         hurry();                       
  199.                 }
  200.                 if(m2==60)
  201.                 {
  202.                         m2=0;
  203.                         m3++;               
  204.                 }
  205.                 if(m3==60)
  206.                 {
  207.                         m3=0;
  208.                         m4++;
  209.                 }
  210.                 if(m4==10)
  211.                 {
  212.                         baojin();
  213.                 }
  214.                 c0=m2%10;
  215.                 c1=m2/10;
  216.                 c2=m3%10;
  217.                 c3=m3/10;
  218.                 c4=m4%10;
  219.                 c5=m4/10;
  220.                 i=0;
  221.         }
  222. }
复制代码

所有资料51hei提供下载:
1_秒表系统√.rar (139.5 KB, 下载次数: 86)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表