找回密码
 立即注册

QQ登录

只需一步,快速开始

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

简单的时钟程序

[复制链接]
跳转到指定楼层
楼主
ID:467326 发表于 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();
        }
}


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

使用道具 举报

沙发
ID:1 发表于 2019-1-13 15:34 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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