找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机实现10内秒表 仿真及程序

[复制链接]
跳转到指定楼层
楼主
用51单片机实现的10内秒表仿真原理图如下:

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar count=0;       
  5. uchar code tab[]={
  6. 0x3f,0x06,0x5b,0x4f,0x66,
  7. 0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管0123456789
  8. sbit key1=P3^6;
  9. sbit key2=P3^7;
  10. uchar sec,flag,temp,i;
  11. uchar state;
  12. void delay(uchar z)
  13. {
  14.         uchar x;
  15.         while(z--)
  16.                 for(x=120;x>0;x--);
  17. }
  18. void init()
  19. {
  20.         P0=0x3f;P2=0x3f;
  21.         flag=0;
  22.         state=1;
  23.         sec=0;
  24.         i=0;
  25.         TMOD=0x01;
  26.         TH0=(65536-50000)/256;
  27.         TL0=(65536-50000)%256;
  28.         PX0=1; //设置优先级为INT0
  29.         EA=1;
  30.         EX0=1;
  31. }
  32. void main()
  33. {
  34.         init();
  35.         while(1)
  36.         {
  37.                 if(state!=key2)
  38.                 {
  39.                         delay(10);
  40.                         state=key2;
  41.                         //while(key2==0);
  42.                         if(state==0)
  43.                           {
  44.                                   delay(10);
  45.                                 flag=(flag+1)%2;
  46.                                   switch(flag)
  47.                                 {
  48.                                         case 0:
  49.                                         EA=0;ET0=0;TR0=0;break;
  50.                                         case 1:
  51.                                         EA=1;ET0=1;TR0=1;break;
  52.                                 }
  53.                           }
  54.                 }
  55.         }
  56. }
  57. void timer0() interrupt 1
  58. {
  59.         TH0=(65536-50000)/256;
  60.         TL0=(65536-50000)%256;
  61.         if(++i==2)
  62.         {
  63.                 i=0;
  64.                 ++sec;
  65.                 P0=tab[sec/10];
  66.                 P2=tab[sec%10];
  67.                 if(sec==100)
  68.                         sec=0;
  69.         }
  70. }
  71. void exter0() interrupt 0
  72. {
  73.         P0=0x3f;P2=0x3f;i=0;sec=0;
  74. }
复制代码

10内秒表.zip

28.37 KB, 下载次数: 8, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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