#include<reg52.h>
sbit key1=P3^1;
sbit key2=P3^0;
sbit key3=P3^2;
sbit key4=P3^3;
sbit a=P2^2;        //位选声明
sbit b=P2^3;
sbit c=P2^4;
void delay(int);
void zhongduan();
void display(int,int,int,int,int,int);
void keyscan();    //独立按键
char num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char num2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带点数据
int shu1,shu2,shu3,shu4;//
int ge,shi,fen1,fen2,hour1,hour2;
int main(){
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
//TH1=(65536-45872)/256;
//TL1=(65536-45872)%256;
EA=1;
ET0=1;
//ET1=1;
TR0=1;
//TR1=1;
while(1) {                                        //显示
display(ge,shi,fen1,fen2,hour1,hour2);
keyscan();
}
return 0;
}
void delay(int x){//timer
int i,j;
for(i=x;x>0;x--)
for(j=110;j>0;j--);
}
void zhongduan()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
shu2++;
if(shu2==20){   //1s
shu2=0;
shu1++;
if(shu1==60){
shu3++;
shu1=0;
}
shi=shu1/10;
ge=shu1%10;
if(shu3==60){
shu4++;
shu3=0;
}
fen1=shu3%10;
fen2=shu3/10;
if(shu4==24){
shu4=0;
}
hour1=shu4%10;
hour2=shu4/10;
}//第一个if
}//函数void display(int ge,int shi,int fen1,int fen2,int hour1,int hour2){
P0=num[ge];                   //段选 秒个位
a=0;                          //位选
b=0;
c=0;
delay(1);P0=num[shi];                  //段选 秒十位
a=1;                          //位选
b=0;
c=0;
delay(1);P0=num2[fen1];                //段选 分个位
a=0;                          //位选
b=1;c=0;
delay(1);P0=num[fen2];                  //段选 分十位
a=1;                          //位选
b=1;
c=0;
delay(1);P0=num2[hour1];                //段选 时个位
a=0;                          //位选
b=0;
c=1;
delay(1);P0=num[hour2];                  //段选 时十位
a=1;                          //位选
b=0;
c=1;
delay(1);
}//fd=16*16^1+13*16^0=256+13=269=>11111101
void keyscan(){
if(key1==0){
delay(5);
if(key1==0){
shu4++;
if(shu4==24)
shu4=0;
while(!key1);//等待按键释放}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
shu3++;
if(shu4>=24)
shu3=0;
while(!key2);//
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
shu1+=10;
if(shu1>=60)
shu1=0;
while(!key3);
}
}if(key4==0)
{
delay(5);
if(key4==0)
{
while(!key4)
TR0=~TR0;
}
}//return 0;
}

51单片机实现电子时钟代码相关推荐

  1. 基于51单片机的电子时钟设计

    基于51单片机的电子时钟设计 0 功能介绍 1.从DS1302中读取时间显示 2.一共4个按键,按键1按下进入修改时间模式,再按下切换修改的时间变量,这个时候第2和3个按键就是修改时间变量的按键,修改 ...

  2. 基于51单片机LCD1602电子时钟实物制作

    之前写了51单片机的LCD1602的程序,现在画了电路图,焊接了电路板,做出了基于51单片机LCD1602电子时钟的实物. 注意事项: 焊接过程中,注意提前布局电路. 对应好端口(避免接线错误),我由 ...

  3. 【036】基于51单片机的电子时钟与秒表Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的电子时钟与秒表proteus仿真设计一份: (2).基于51单片机的电子时钟与秒表proteus仿真设计keli源代码一份: (3).基于51单片机的电子时 ...

  4. c51单片机时钟c语言程序设计,基于51单片机的电子时钟设计..doc

    -- I -- - - I -- 设计题目: 基于 51 单片机的电子时钟设计 摘要 单片机,是集 CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器.自 20 世纪 70 年代问 ...

  5. 毕业设计 - 基于51单片机的电子时钟设计与实现

    文章目录 单片机电子时钟程序设计 实现效果 最后 单片机电子时钟程序设计 共用体除非必要,否则学长不推荐使用,枚举的用法比较简单,在本书19章的项目实践中有很好的示例,这节课我们先来练习一下结构体的使 ...

  6. 51单片机--数字电子时钟(单片机基础应用)

    前言 整理代码的时候发现之前写的一个单片机(STC89C51)代码,主要是利用3个中断源(计时中断,外部中断),蜂鸣器,8个LED灯,独立按键(矩阵按键)以及8片阴极数码管完成一个数字电子时钟,并且具 ...

  7. 基于51单片机的电子时钟万年历带农历温度proteus仿真

    硬件设计 本设计由数据显示模块.温度采集模块.时间处理模块和调整设置模块四个模块组成.系统以AT89S52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年.月.日.时.分.秒进 ...

  8. 基于51单片机的电子时钟万年历温度仿真数码管显示

    硬件设计 仿真图1: A. 由数码管作为显示器,三个按键可以设置时间. 仿真图2: A 由数码管作为显示器,可通过开关设置年月日星期等时间: 程序设计1 #include <reg51.h> ...

  9. 51单片机定时器电子时钟 LCD1602显示时间日期带闹钟功能

    首先直接附上我的文件(懒得在csdn二次编辑了),里面说明文档,和电路图,protues仿真程序,keil程序.https://pan.baidu.com/s/1TC4AxBZJZ8d1Cv-X_dt ...

  10. 【51单片机】电子时钟带秒表

    设计任务 (1)采用24小时计时制 (2)采用LED数码管显示时.分.秒 (3)可通过按键进行数字时钟和秒表的切换 (4)数字秒表具有毫秒显示和暂停和开始计时功能 (5)具有简便的时间调校功能 源代码 ...

最新文章

  1. 使用属性position:fixed的时候如何才能让div居中
  2. 扩增子分析解读4去嵌合体,非细菌序列,生成代表性序列和OTU表
  3. Spring源代码解析(收藏)
  4. JavaScript入门几个概念
  5. vue的父子组件属性绑定传值
  6. Struts2 框架
  7. 光立方体c语言程序,444光立方程序怎么写 光立方原理图、源代码及制作教程
  8. 【数据库--db4o 介绍】
  9. 配置Firefox火狐浏览器burpsuite https抓包
  10. Zabbix配置腾讯云短信报警
  11. android js 回调函数,Javascript回调函数传递给Android
  12. 固态硬盘和m.2固态硬盘有什么区别?
  13. 常见排序算法原理及java实现
  14. idea误操作reset head导致未提交的代码丢失(修改记录清空了)
  15. 猿创征文|后端开发工程师提升开发效率神器推荐
  16. HyperLynx(二十二)DDR(五)DDRx总线时序模型设计
  17. Centos配置CA(证书颁发机构)
  18. 游戏设计艺术 第2版 第30章 读书笔记
  19. Java中随机数的产生方法
  20. arm-linux-gnueabihf 交叉编译ffmpeg

热门文章

  1. 全球及中国分布式光纤传感(DFOS)行业动态及十四五前景预测报告2022-2027
  2. appscan 历史版本下载
  3. 微信撤回软件安卓版_微信无限时间撤回软件
  4. 中职生c语言搜题软件,适合法考学生用的搜题软件,这几款帮你搞定!
  5. Excel2016保存文件闪退(在安装了Visio后)
  6. 代码检查、走查与评审
  7. TCP 的 keeplive保活机制
  8. 人脸识别Demo解析C#
  9. 订票系统java源码_航空订票系统java源码
  10. 什么软件画er图方便_图形图表设计器(Diagram Designer中文版)