标题: 简单的时钟程序 [打印本页]

作者: LIUYUANAS    时间: 2019-1-13 12:25
标题: 简单的时钟程序
#include<STC15W.h>

/************************通信接口配置*************************************************/

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit LSA=P1^1;
sbit LSB=P1^2;
sbit LSC=P1^3;

u8 code smgduan[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
                                        0x80,0x90};//显示0~F的值   共阳0-9

u16 s,shi=0,fen=0,miao=0;
u8 mb[8];


void Timer0Init()
{
        TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
        TH0=0xFC;        //给定时器赋初值,定时1ms
        TL0=0X18;       
        TR0=1;//打开定时器                       
}
void yanshi(u16 i)
{
        while(i--);       
}
void DigDisplay()
{
        u8 i;
        for(i=0;i<8;i++)
        {
                switch(i)         //位选,选择点亮的数码管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;//显示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;//显示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;//显示第2位
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;//显示第3位
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;//显示第4位
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;//显示第5位
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;//显示第6位
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;//显示第7位
                                                                               
                }
                P2=smgduan[mb[i]];//发送段码
                yanshi(1); //间隔一段时间扫描       
                P2=0xff;//消隐
        }
}
/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
******v*************************************************************************/
void main()
{       
        Timer0Init();
        while(1)
        {   
                if(TF0==1)
                {
                        TF0=0;
                        TH0=0XFC;        //给定时器赋初值,定时1ms
                        TL0=0X18;
                        s++;
                }
                if(s==1000)                 //到达1s时间
                {       
                        s=0;
                        miao++;
               
                               
                }
                mb[0]=miao%10;          
            mb[1]=miao/10;
            mb[2]=16;          
            mb[3]=fen%10;
            mb[4]=fen/10;          
            mb[5]=16;
            mb[6]=shi%10;          
            mb[7]=shi/10;
            if(miao==60)fen++,miao=0;
            if(fen==60)shi++,fen=0;
            if(shi==24)shi=0;          
                DigDisplay();
        }
}



作者: admin    时间: 2019-1-13 15:34
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1