单片机可调数字钟闹钟整点报时功能

发布者:会哭的蓝精灵最新更新时间:2021-01-04 来源: 51hei关键字:单片机 手机看文章 扫描二维码
随时随地手机看文章

待选题目如下:

1、数字钟 要求:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。

单片机源程序如下:

#include              

#include

//****************************宏定义********************************

typedef unsigned char uchar;   

typedef unsigned int  uint;

//****************************位声明********************************

sbit key1=P1^0;               

sbit key2=P1^1;

sbit key3=P1^2;

sbit key4=P1^3;

sbit beep=P3^0;        

//************************数码管显示的数值**************************

uchar code table[]=        {

                                                0x3f,0x06,0x5b,0x4f,0x66,0x6d,

                                                0x7d,0x07,0x7f,0x6f,0x40,0x00

                                        };                       

//****************************函数声明******************************

void jia();   

void jian();

//********************数组定义,数组内含有8个数值******************

uchar table1[8],table2[8],table3[8],table4[8];

//**************************时间显示初始值**************************

uchar shi=12,fen=0,miao=0;  

//**************************定义全局变量****************************

uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;

uchar shi4,fen4,miao4;

uchar flag, flag1, wss, cnt, cnt1, alm1, alm2, alm3;

//    1秒   等时  位闪 次数 校时   闹1  闹2   闹3

uint flag2;

//   蜂鸣

//*********************延时函数,用于动态扫描数码管*****************

void delay(uchar i)                                    

{  

        uchar x,y;

           for(x=i;x>0;x--)

             for(y=120;y>0;y--);

}

//*******************************初始化函数*************************

void init()   

{  

        TMOD=0x01;         //工作方式1                                                                                

           TH0=0x3c;          //定时时间为:50ms        (65536-50000)/256

           TL0=0x0b0;         //(65536-50000)%256

        EA=1;              //开总中断

           ET0=1;             //打开定时器

           TR0=1;             //启动定时器

        beep=0;

}

//********************显示子函数,用于显示时间数值*****************

void display()  

{  

        uchar i,j;

           if(cnt!=10||wss==0)

    {

                table1[0]=miao%10;        //分离秒的个位与十位

               table1[1]=miao/10;

        }

        else

                 table1[0]=table1[1]=11;

        if(cnt!=11||wss==0)

        {

                table1[3]=fen%10;         //分离分的个位与十位

               table1[4]=fen/10;

        }

        else

                  table1[3]=table1[4]=11;

        if(cnt!=12||wss==0)

        {

                table1[6]=shi%10;         //分离时的个位与十位

               table1[7]=shi/10;

        }

        else

                table1[6]=table1[7]=11;

    table1[2]=table1[5]=10;

    j=0xfb;

    for(i=0;i<=7;i++)          //从秒到时的扫描

    {  

                P2=j;

        P0=table[table1[i]];  //显示数值

        delay(10);

        j=_cror_(j,1);        //循环右移

    }

}

//*******************显示子函数,用于显示定时1时间*****************

void display1()

{  

        uchar i,j;

           if(alm1==0)

    {

                if(cnt!=1||wss==0)

            {

                        table2[0]=miao1%10;        //以下含义同上

                   table2[1]=miao1/10;

                }

                   else

                      table2[0]=table2[1]=11;

                   if(cnt!=2||wss==0)

            {

                        table2[3]=fen1%10;

                   table2[4]=fen1/10;

                }

                   else

                     table2[3]=table2[4]=11;

                   if(cnt!=3||wss==0)

            {

                        table2[6]=shi1%10;

                   table2[7]=shi1/10;

                }

                   else

                     table2[6]=table2[7]=11;

        }

        else

                   table2[0]=table2[1]=table2[3]=table2[4]=table2[6]=table2[7]=10;

           table2[2]=table2[5]=10;

           j=0xfb;

           for(i=0;i<=7;i++)

           {  

                P2=j;

        P0=table[table2[i]];

                delay(10);

        j=_cror_(j,1);

           }

}

//********************显示子函数,用于显示定时2时间******************

void display2()

{  

        uchar i,j;

           if(alm2==0)

    {

                if(cnt!=4||wss==0)

            {

                        table3[0]=miao2%10;        //以下含义同上

                   table3[1]=miao2/10;

                   }

                   else

                      table3[0]=table3[1]=11;

                   if(cnt!=5||wss==0)

            {

                        table3[3]=fen2%10;

                   table3[4]=fen2/10;

                }

                else

                          table3[3]=table3[4]=11;

                if(cnt!=6||wss==0)

                {

                        table3[6]=shi2%10;

                   table3[7]=shi2/10;

                }

                else

                         table3[6]=table3[7]=11;

        }

        else

           table3[0]=table3[1]=table3[3]=table3[4]=table3[6]=table3[7]=10;

           table3[2]=table3[5]=10;

           j=0xfb;

           for(i=0;i<=7;i++)

    {         

                P2=j;

        P0=table[table3[i]];

                delay(10);

[1] [2] [3] [4]
关键字:单片机 引用地址:单片机可调数字钟闹钟整点报时功能

上一篇:51单片机使用DAC0832编程输出方波,锯齿波,三角波,正弦波
下一篇:基于51单片机的多功能时钟温度计 DS1302+LCD1602

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved