简单做的基于51单片机的数码管时钟

发布者:千变万化最新更新时间:2019-12-11 来源: 51hei关键字:51单片机  数码管  时钟 手机看文章 扫描二维码
随时随地手机看文章

看看抽屉的材料,就想做做东西玩玩。本来想做99码表的,结果按键开关不够,就改成了时钟。话不多说,直接上图。
最小系统

 



显示模块
 


最后效果
 

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
 

单片机源程序如下:

/*********************************************************************************

*实验名   :数码管动态显示

*实验效果        :8位数码管显示数字12345678

*注意   : 每位数码管显示之间延迟时间小于3ms可看见8位数码管同时点亮

*

*********************************************************************************/

#include

#define uchar unsigned char

#define uint unsigned int

        

uint k=0;

uint second=0;//秒

uint min =0;//分

uint hour=1;//时


sbit we1=P3^3; //位选

sbit we2=P3^1;

sbit we3=P3^2;

sbit we4=P3^0;

sbit L0=P2^0;


uchar code sz[17]={0x3f , 0x06 , 0x5b ,0x4f , 0x66 , 0x6d ,0x7d ,

                   0x07 , 0x7f , 0x6f ,0x77 , 0x7c , 0x39 , 

                   0x5e , 0x79 , 0x71 , 0x00};         //0-9&A-F&“不显示”  字型码


void delay(uint xms)                  //xms等于几就延迟几毫秒

{

    uint i,j;

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

            for(j=112;j>0;j--);

}


void Init_timer0(void)

{

  TMOD |= 0X01;                      //工作方式1 内部寄存器控制的定时功能

        TH0=0X3c;                         //高八位的初值

        TL0=0Xb0;                         //第八位初值

        EA=1;                            //开启整体中断允许

        ET0=1;                           //开启定时器0中断允许

        TR0=1;                                                         //开始计数

}


void Timer0_isr(void)interrupt 1

{

  TH0=0x3c;

        TL0=0xb0;

        k++;

}


void main()

{

        Init_timer0();

    while(1)

        {

                if(k==20)  //20次1秒

                {

                second++;

                k=0;

                if(second==60)

                {

                  second =0;

                        min++;

                        if(min==60)

                        {

                           min=0;

                                 hour++;

                                if(hour==13)

                                {

                                  hour=1;

                                }

                        }

                }

                

                }

                P1=sz[min%10];   //分显示

                we4 =0;

                delay(5);

                we4=1;

                        

                P1=sz[min/10];   

                we3=0;

                delay(5);

                we3=1;

                

                P1=sz[hour%10];   //时显示

                we2=0;

                delay(5);

                we2=1;

                

                P1=sz[hour/10];   

                we1=0;

                delay(5);

                we1=1;

                

                /*P1=sz[0];  //显示0

                we1=0;

                delay(10);

                we1=1;

                

                P1=sz[1];   //显示1

                we2=0;

                delay(10);

                we2=1;

                

                P1=sz[2];   //显示2

                we3=0;

                delay(10);

                we3=1;

                

                P1=sz[3];   //显示3

                we4=0;

                delay(10);

                we4=1;*/

        }

}

…………………



关键字:51单片机  数码管  时钟 引用地址:简单做的基于51单片机的数码管时钟

上一篇:MFRC522电路原理图与单片机测试程序
下一篇:GP2Y0E02B测距模块89c52单片机串口程序

推荐阅读最新更新时间:2024-11-20 13:01

同步源:功率测量中的时钟
很多人为了守时的需要都会佩戴手表,但是除了时常电波对时的电波表之外,其他的表在跑了或长或短的时间之后,都会出现一定的偏差,这是为什么呢?机械表的不难理解,本身内部就存在不小的误差,无论怎么精工细作都难以完全消除。电子石英表看起来似乎不应该出现误差,其实不然。在石英钟表中,使用32.768kHz的晶振产生振荡信号,经过15分频得到1Hz信号,每个周期驱动秒钟走一下。晶振频率的精度和稳定性决定了手表走时的精确度。晶振最为重要的一个参数就是PPM,一个PPM等于百万分之一。普通的石英表使用的晶振精度为20个PPM,最名贵的瑞士手表使用的晶振精度可以高达5个PPM。 在功率测量中,同样需要一个时钟,PA6000功率分析仪使用的恒温晶振频率为
[测试测量]
同步源:功率测量中的<font color='red'>时钟</font>
【JZ2440笔记】系统时钟设置
一、前言 JZ2440开发板上的外部晶振是12MHz的,开发板一上电时S3C2440的系统时钟为12MHz,但是S3C2440最高系统时钟可以跑到400MHz,为了发挥CPU更高的性能,需要将外部晶振输入的12MHz时钟通过芯片内部的锁相环电路进行倍频,然后获得400MHz的系统时钟,使得CPU指令执行速度变快,同时也相应提升HCLK和PCLK总线的速度。 二、实验目标 将S3C2440的FCLK系统时钟从12MHz提升到400MHz,HCLK提升到100MHz、PCLK提升到50MHz。运行LED闪烁程序。 三、S3C2440的时钟体系 1、时钟体系 时钟模块框图如下: S3C2440A 中的时钟控制逻辑可以产生
[单片机]
【JZ2440笔记】系统<font color='red'>时钟</font>设置
80C51单片机模拟I2C总线的主机程序分享
I2C总线协议程序 在使用的过程中一定要注意时序、时间的问题。 i2c.c /* I2C.c 标准80C51单片机模拟I2C总线的主机程序 All rights reserved. */ #include “I2C.h” //定义延时变量,用于宏I2C_Delay() unsigned char data I2C_Delay_t; /* 宏定义:I2C_Delay() 功能:延时,模拟I2C总线专用 */ #define I2C_Delay() { I2C_Delay_t = (I2C_DELAY_VALUE); while ( --I2C_Delay_t != 0 ); } /* 函数:I2C_Init() 功能:I2C
[单片机]
80C<font color='red'>51单片机</font>模拟I2C总线的主机程序分享
51单片机应用之无线通讯模块NRF24L01+
本教程关于NRF24L01+的内容十分详细,对于大家的学习和调试及其有帮助 内含详细教程: 单片机源程序如下: 接下来我们写发送程序: //********************************** // NRF24L01+模块发射程序 // 用8个LED调试 // Txz001 2012.05.16 //********************************** #include reg52.h typedef unsigned char uchar; //将无符号字节类型重定义为uchar typedef unsigned int uint; //将无符号整数类型重定义为Uint
[单片机]
<font color='red'>51单片机</font>应用之无线通讯模块NRF24L01+
51单片机对LED点阵屏的设计
LED点阵屏发光亮度强,指示效果好,可以制作运动的发光图文,更容易吸引人的注意力,信息量大,随时更新,有着非常好的广告和告示效果。笔者此处就LED点阵屏动态扫描显示作一个简单的介绍。 1. LED点阵屏显示原理概述 图1-1为一种8x8的LED点阵单色行共阳模块的内部等效电路图,对于红光LED其工作正向电压约为1.8v,其持续工作的正向电流一般10ma左右,峰值电流可以更大。如下图,当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮,当某一行线为低电平时,无论列线如何,对应的这一行的点全部为暗。LED点阵屏显示就是通过一定的频率进行逐行扫描,数据端不断输入数据显示,只要扫描频率足够高,由于人眼的视觉残留效应,就可以看到
[单片机]
<font color='red'>51单片机</font>对LED点阵屏的设计
半导体厂商现身CMET2008 凸显医疗潜力
  随着技术的进步,医疗超声系统正向高集成度,高性能,低功耗,多功能,便携化发展,对模拟前端的接收电路也提出了更高的要求。如何根据系统对模拟前端的要求,从系统层面对相关的参数进行优化,集成VCA和ADC,降低VCA的参考输入噪声,集成CW 切换矩阵功能,提供高性能的采样时钟,从而很好的满足系统需求,TI的技术专家将在CMET2008上就“医疗超声系统的优化与实现”进行精彩论述。   另外在CMET2008上,来自TI、ADI公司的技术专家还将就“便携医疗电子设计”等热点议题与业界进行交流。   三大FPGA厂商齐聚CMET2008,共同呈现医疗电子设计秘笈   医疗电子系统正变得越来越复杂,工程师在设计这些系统的时候也面临的
[焦点新闻]
51单片机定时/计数器的功能实现
8051单片机内部有两个16位的定时/计数器:T0和T1 定时器用途:延时和脉宽测量 读取方式:软件读取和中断 公式: T(初值)=2^N-定时时间/机器周期时间 机器周期时间=12/fosc N:代表几位定时器,有13 16 8位定时器 定时时间:希望设定时间,例如希望设定时间是65.535,初值就是0 fosc:晶振频率,一般用的多的晶振频率是12 四种工作方式,在TMOD中设置: M1 M0=0X00,方式0,13位计数器 M1 M0=0X01,方式1,16位计数器,用的最多 M1 M0=0X10,方式2,8位计数器 M1 M0=0X11,方式3,8位计数器 例如: 如果我们希望定时0.2ms,定时单位用的u
[单片机]
<font color='red'>51单片机</font>定时/计数器的功能实现
STM32学习之RCC时钟配置
STM32 有多个时钟源,分别是 HSI:上电默认启动,因精度不高所以先不采用,以后如果需要再使用 HSE:外部高速时钟,系统时钟一般采用它,经过PLL倍频作为系统同时钟 LSE:外部低速时钟,一般专门用于RTC,等到RTC模块时再使用 LSI:内部低速时钟,精度不高,一般用于IWDGCLK 时钟系统框图如下: STM32 中各个模块都有自己的时钟,当使用相应的模块时首先记得把此模块时钟开启 本次学习使用标准固件库3.3.0 好了,看明白上图咱就开始吧: void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus;
[单片机]
STM32学习之RCC<font color='red'>时钟</font>配置
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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