找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4705|回复: 0
收起左侧

利用51单片机设计一个简单的秒表

[复制链接]
ID:575841 发表于 2019-7-1 17:51 | 显示全部楼层 |阅读模式
源程序:
#include<reg51.h>//导入包含文件
#define uchar unsigned char//无符号数据的宏定义
#define uint unsigned int
uchar code number[]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//共阳极数码管“0~9”等字符的编码
uchar code table[]={0x07,0x0B,0x0D,0x0E};//不带小数点数码管位选编码
uchar code table2[]={0x80,0x40,0x20,0x10};//带小数点
//延时子程序
void delay(uint i)                  //1毫秒的循环        
{
uint j;
for(i; i > 0; i--)              //一次for循环大约10微秒
  for(j = 110; j > 0; j--);   //110~120次循环大约1毫秒      
}
//数码管显示函数
void display_CA(uchar num,uchar tab)
{
   
    P2=table2[tab];//通过p2口选择显示的位
    P0=~number[num];];//通过p0口显示出数字
  
}
void keyscan(uint *A,uint *C)//调用按键扫描函数
{
    uchar key;
    P1=0xff;
    key=P1;
    key=~key;//对端口值取反
    switch(key)
    {
        case 1: *A=0;*C=0;break;//p1.0按下时,对变量A和A的增量c为零
        case 2: *C=!*C;break;//p1.1按下,使增量c为零
        default:break;
    }
   
}
void main()
{
    uint B=0,A=0,A1,C;
    int jj;//定义变量jj。在后面的for循环中作计数用
    while(1)//while循环语句,1表示始终为真,一直循环
    {      
        C=1;
        for(B=0;B<=3600;B++)
        {   
            A1=A/60*100+A%60;//把秒转换成分
            for(jj=0;jj<41;jj++)
            {                 
                delay(7);//延时,使得从视觉上看到灯的亮灭
                display_CA(A1/1000,3);      delay(4); //在数码管上显示结果,将计算结果a的个十百千位取出,分别显示在四位的数码管上   
                display_CA(A1/100%10,2);    delay(4);         
                display_CA(A1/10%10,1);     delay(4);                  
                display_CA(A1%10,0);        delay(4);
                display_CA(10,2);           delay(4);                                                            
            }、
            if((P1&0xff)!=0xff)//判断p1是否按下,调用按键扫描函数
            {
                delay(1);//延时消抖
                if((P1&0xff)!=0xff)
                {
                    keyscan(&A,&C);
                }
            }
            A=A+C;         
        }   
    }
}
电路图见附件


TIM图片20190701174646.png
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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