找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机3位秒表设计

[复制链接]
跳转到指定楼层
楼主
ID:208723 发表于 2017-6-7 10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>
unsigned char  ledcode []={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//数码管码                       
unsigned int sec,ms10;
unsigned int mode=0;

unsigned char i;
unsigned char tab[4];
unsigned char wei[4]={0xfe,0xfd,0xfb,0xf7,};

sbit dula=P2^6;
sbit weila=P2^7;
sbit P23=P2^3;//
sbit P37=P3^7;//按键

void delay(unsigned int z)//延时
{
  unsigned int a,b;
   for(a=z;a>0;a--)
     for(b=120;b>0;b--);
}

void TIM0_INT(void) interrupt 1//定时器0中断 10MS
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
       
        ms10=ms10+1;
if(ms10>100)//1s
  {
   sec=sec+1;
                ms10=0;
                       
                 if((sec%10)==0)// 每10MS
                        {
    P23=0;
                                delay(50);
                                P23=1;
   }
        }  
}

void keyscan()
{
        if(P37==0)
        {
                delay(10);
                if(P37==0)
         {
                       
    if(mode==0)
                                {
                                        TR0=1;//启动
                                }
                                if(mode==1)
                                {
                                        TR1=0;//停止
                                }
                         if(mode==2)//清零
                                {           
                                        sec=0;
                                        ms10=0;
                         }
                                        mode++;
                                 if(mode>=3)//第4次按回0
                                        mode=0;
                   while(P37==0);
  }
        }
}

void zhuanhuan()//先转换好对应的段码
{

tab[0]=ledcode[sec/10%10];
tab[1]=ledcode[sec%10]|0X80;
tab[2]=ledcode[ms10/10%10];       
tab[3]=ledcode[ms10%10];
       
}


void  showseg()
{
                for(i=0;i<4;i++)//4位数码管动态显示程序
                {
                                P0=tab[i];
                                dula=1;
                                dula=0;
                                P0=wei[i];
                                weila=1;
                                weila=0;
                                delay(5);
                }
}

void  main()// 主程序
{
                TMOD=0x01;//工作模式设置
         TH0=(65536-10000)/256;//10MS定时
        TL0=(65536-10000)%256;
                ET0=1;
                EA=1;
while(1)        //循环
{
                keyscan();//按键检测
                zhuanhuan();//转换好对应的段码
                showseg();//扫描数码管
               
        }
}
                                                               

3位秒表_3.zip

88.93 KB, 下载次数: 13, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:208723 发表于 2017-6-7 11:06 | 只看该作者
过审了吗
回复

使用道具 举报

板凳
ID:261012 发表于 2017-12-13 11:20 | 只看该作者
楼主 你的PCB图呢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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