基于8051实现的电子时钟(Version1.0)

发布者:名字太长了吗最新更新时间:2021-08-05 来源: eefocus关键字:电子时钟 手机看文章 扫描二维码
随时随地手机看文章

本程序实现了基本的电子时钟功能, 初始时间为23:59:55.


#include <STC89C5xRC.H>

 

unsigned char code DIG_CODE[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9

 

int tcount = 0;//记录经过的2ms区间段个数

 

int hour = 23, minute = 59, second = 55;

 

void T0_INT() interrupt 1 //timer0中断, 每2ms触发一次

{

TR0 = 0;//关闭timer0

TH0 = 0xF8;

TL0 = 0x30;//65536 - 2000 = 63536 = F830H

if(tcount % 6 == 0)

{

//秒数个位

P2 = 0;//右数第一个数字亮

P0 = DIG_CODE[second % 10];

tcount ++;

}

else if(tcount % 6 == 1)

{

//秒数十位

P2 = 1 << 2;//右数第二个数字亮

P0 = DIG_CODE[second / 10];

tcount ++;

}

else if(tcount % 6 == 2)

{

//分钟个位

P2 = 2 << 2;

P0 = DIG_CODE[minute % 10];

tcount ++;

}

else if(tcount % 6 == 3)

{

//分钟十位

P2 = 3 << 2;

P0 = DIG_CODE[minute / 10];

tcount ++;

}

else if(tcount % 6 == 4)

{

//小时个位

P2 = 4 << 2;

P0 = DIG_CODE[hour % 10];

tcount ++;

}

else if(tcount % 6 == 5)

{

//小时十位

P2 = 5 << 2;

P0 = DIG_CODE[hour / 10];

tcount ++;

}

if(tcount == 500)//2ms * 500 = 1000ms = 1s -> 1s时间到

{

tcount = 0;

second ++;

if(second == 60)

{

second = 0;

minute ++;

if(minute == 60)

{

minute = 0;

hour ++;

if(hour == 24)

{

hour = 0;

}

}

}

}

TR0 = 1;//重新开启timer0

}

 

int main()

{

P2 = 111 << 2;

P0 = 0;//数码管全灭

TMOD = 0x01;

TH0 = 0xF8;

TL0 = 0x30;

IE = 0x82;

TR0 = 1;//开启timer0

while(1)

{

;

}

return 0;

}

关键字:电子时钟 引用地址:基于8051实现的电子时钟(Version1.0)

上一篇:基于8051实现的电子时钟(Version1.1)
下一篇:基于8051实现的双倒计时器(Version1.1)

推荐阅读最新更新时间:2024-10-25 13:02

基于8051实现的可启停/显示或隐藏时间电子时钟(Version1.2)
程序实现的功能: 1. 实验箱上电后, 不显示当前时间. 2. 向8051发送 Show.E 后, 显示当前时间. 3. 向8051发送 Hide.E 后, 隐藏当前时间. 4. 向8051发送 Start.E 后, 时钟开始计时. 5. 向8051发送 Stop.E 后, 时钟停止计时(若当前处于 Show 状态, 则显示停止计时前的时间). #include STC89C5xRC.H #include string.h unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
[单片机]
基于8051实现的电子时钟(Version1.0)
本程序实现了基本的电子时钟功能, 初始时间为23:59:55. #include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 int tcount = 0;//记录经过的2ms区间段个数 int hour = 23, minute = 59, second = 55; void T0_INT() interrupt 1 //timer0中断, 每2ms触发一次 { TR0 = 0;//关闭timer0 TH0 = 0xF
[单片机]
基于<font color='red'>8051</font>实现的<font color='red'>电子时钟</font>(Version1.0)
基于8051实现的电子时钟(Version1.1)
程序实现的功能: 1. 实验箱上电后, 不显示当前时间. 2. 向8051发送 Start.E 后, 电子时钟开始工作, 并显示当前时间(时 分 秒). 3. 向8051发送 Stop.E 后, 电子时钟暂停工作, 并隐藏当前时间. #include STC89C5xRC.H #include string.h unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 char buf ;//存放收到的数据 int tcount = 0;//记录经过的
[单片机]
51单片机带闹钟可调时间电子时钟程序设计
硬件部分 基于51单片机、 ds1302时钟芯片、 ds18b20温度芯片、 以及1602液晶显示的 实时时间 和 实时温度显示 。同时可通过按键 设置 年、月、日、时、分、星期。 并且可以设置闹钟 当闹钟时间到时 蜂鸣器持续发出 滴..声 同时led灯不停闪烁 且在一分钟内没有按指定停止按键 闹钟将自动停止 。。。 软件部分 如果网页上复制的代码不能编译可以从这里下载keil工程: http://www.51hei.com/f/dszdec.rar #include reg52.h #define uchar unsigne
[单片机]
51单片机带闹钟可调<font color='red'>时间</font>的<font color='red'>电子时钟</font>程序设计
可以调整时间电子时钟-C语言
使用stc89c52单片机,电路很简单,采用八位共阳数码管,p0口为数码管的段选,p2口为位选. 通过key1-key3来调整时间 重点: 1、函数的模块化 2、中断 #include reg52.h #define uchar unsigned char #define uint unsigned int sbit p2_0=P2^0; sbit p2_1=P2^1; sbit p2_2=P2^2; sbit p2_3=P2^3; sbit p2_4=P2^4; sbit p2_5=P2^5; sbit p2_6=P2^6; sbit p2_7=P2^7; sbit key0=P3^2; sbit key1=P3^3; sb
[单片机]
8051单片机的UART0串口初始
1、C8051f的UART0是异步、全双工串口。其波特率发生器规定由定时器1定时器提供。可配置为8位UART或9位UART(多机通讯第九位用于片选作用)。SYSCLK=24.5MHZ(我的板子采用内部晶振频率作为系统时钟) BAUDRATE=115200(波特率) 2、初值TH1 Tl1配置 由上述公式可计算初值:TH1 = 256-(SYSCLK/BAUDRATE/2)而程序内是TH1 = -(SYSCLK/BAUDRATE/2),这两种是相同的。第一种是以正数的二进制形式保存在计算机内。第二种是负数,取反加1求得补码保存在计算机中。结果是相同的。每当TL1中的值溢出后 TH1存储的重装载值装载到TL1中开始计数。
[单片机]
<font color='red'>8051</font>单片机的UART0串口<font color='red'>初始</font>化
C8051f300_UART0串口发送初始
1、C8051f的UART0是异步、全双工串口。其波特率发生器规定由定时器1 定时器提供。可配置为8位UART或9位UART(多机通讯第九位用于片选作用)。SYSCLK=24.5MHZ(我的板子采用内部晶振频率作为系统时钟) BAUDRATE=115200(波特率) 2、初值TH1 Tl1配置 由上述公式可计算初值: TH1 = 256-(SYSCLK/BAUDRATE/2)而程序内是TH1 = -(SYSCLK/BAUDRATE/2),这两种是相同的。第一种是以正数的二进制形式保存在计算机内。第二种是负数,取反加1求得补码保存在计算机中。结果是相同的。每当TL1中的值溢出后 TH1存储的重装载值装载到TL1中开始计数。
[单片机]
C<font color='red'>8051</font>f300_UART0串口发送<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