题目要求:
用四个数码管完成时钟形式显示。
如显示1 2. 0 0
然后一个按键控制暂停并闪烁,另一个按键控制分钟加1
要求:当第一个按键不按下时,第二个按键无法完成加1动作。
仿真图,如下:

按键K1控制暂停闪烁,开始,K2加1
这里需要说明一下,因为没有教到时钟,时钟部分,将在下一个微博实现,其实很简单,用时钟中断即可完成,那样的时钟比较准确。

写代码之前,要仔细看仿真的接口问题,这样才能写好代码,代码如下:

#include <reg51.h>
/*  按下key1 暂停并闪烁,再按一下 继续,  key2按下加1,但是key2必须在key1按下后操作*/
unsigned char c[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; // 0-9sbit key1=P1^0;
sbit key2=P1^1;int hour;   //  小时
int min;    //  分钟void delay()
{int i,j;for(i=1;i<10;i++){for(j=1;j<100;j++);}
}void display()
{P2=0X7F;P0=c[hour/10];delay();P2=0XBF;P0=c[hour%10]&0X7F; //  第二个数码管显示时,需要有点,要注意delay();P2=0XDF;P0=c[min/10];delay();P2=0XEF;P0=c[min%10];delay();P2=0XFF;
}void delay_2()
{int i,j;for(i=1;i<2;i++){for(j=1;j<10;j++){display();}}
}void delay_3()
{int i,j;for(i=1;i<20;i++){for(j=1;j<200;j++);}
}void delay_4()
{int i,j;for(i=1;i<100;i++){for(j=1;j<100;j++);}
}void display_2()
{for(hour=0;hour<24;hour++){for(min=0;min<60;min++){display();if(0 == key1){delay_3(); // 消抖if(0 == key1){while(1){display();delay_4();if(0 == key1){delay_3();//消抖if(0 == key1){break; // 再按key1退出闪烁}}if(0 == key2){delay_3();//消抖if(0 == key2){min++;// 分钟加1if(60 == min){min=0;}}   }   }}   }delay_2();}}
}
void main()
{while(1){display_2();            }
}

结果如下:

实验结果,不要截图,希望大家下载运行实现

51单片机完成时钟形式显示相关推荐

  1. 51单片机DS1302时钟LCD1602显示(可以按键设置时钟)

    DS1302实时时钟具有能计算2100年之前的秒.分.时.日.日期.星期.月.年的能力,还有闰年调整的能力. 图1:DS1302引脚示意图 其中: X1.X2:32.768KHz晶振接入引脚. GND ...

  2. 51单片机控制数字时钟的显示及修改

    数字时钟的显示及修改 实验目的 掌握定时器的使用.按键检测及数码管的动态显示. 实验内容 1.绘制如下proteus仿真图 2.利用定时器的定时功能,用6位数码管实现时.分.秒的显示及更新: 3.三个 ...

  3. 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟

    今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...

  4. 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接: 51单片机七段数码管显示时钟加按键控制-③-74HC595版 51单片机七段数码管显示时钟加按键控制-②-74HC595版 文章目录 一.实验内容: 二.实验分析: 三.仿真图: 四.源代 ...

  5. 基于51单片机的时钟系统

     这一次带来的项目是课程设计级别的基于51单片机的时钟系统,本次的项目共有两种,一种是基础功能时钟,上电后自动从00-00-00开始计时,另一种加上了调时功能,上电后自动从00-00-00开始,当需要 ...

  6. 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器

    目录 项目:基于51单片机ds1302时钟.ds18b20的恒温器 功能说明: 运行流程: 效果展示: 供电方式: 用途: 提高: 附: ​                              ...

  7. 4. 51 测量空气的温度和湿度(51单片机 + DHT11温湿度 + LCD1602显示)

    51单片机 + DHT11温湿度 + LCD1602显示 DHT11温湿度相关介绍 DHT11产品概述 测量范围 接口说明 电源引脚 串行接口 (单线双向) 相关时序及代码 用代码实现上述时序图(起始 ...

  8. 单片机 c语言百位加上小数点,51单片机水温控制LCD显示加VB上位机温度曲线绘制...

    现功能,1L水由1KW电炉加热,要求水温在一定范围内人工设定,并能随着环境温度改变自动调节,以维持设定的温度不变. 矩阵键盘输入设定温度,LCD1602显示温度值,VB上位机绘制温度曲线 /***** ...

  9. 51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真

    51单片机 DHT11+LCD12864温湿度显示 + Proteus仿真 采用的接线方式是IIC接口,在Proteus里面仿真太慢了,不知道是电脑古老问题还是怎么,看图像就知道了,有多卡,感觉电脑运 ...

最新文章

  1. sql 字符串比较大小_SQL 数据分析2:简单查询
  2. openshift安装部署_OpenShift 4 HOL (1) - 多种方法部署容器化应用
  3. PCL:PCL与MFC 冲突总结
  4. python入门html_python-html入门
  5. Google AppEngine:任务队列API
  6. 荣耀6plus+android5.1,荣耀66Plus EMUI3.0开发版5.5.1版本发布说明
  7. 基于实时计算(Flink)与高斯模型构建实时异常检测系统
  8. oracle创建自身连接,oracle菜鸟学习之 自连接查询实验
  9. 页面切换主题风格,利用本地缓存
  10. 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法
  11. fzu 2037 Maximum Value Problem
  12. rijndael 加密算法
  13. 信奥中的数学:进位制
  14. 基本概念:线与逻辑、锁存器、缓冲器、建立时间
  15. python3 numpy教程_Python Numpy 教程
  16. 关于最短剩余时间优先算法-进程调度模拟【C++】
  17. 电路交换、报文交换、分组交换、异步传输模式等通信交换技术的区别
  18. 轻快PDF阅读器绿色版免费下载
  19. OSChina 周日乱弹 —— 进入读图时代
  20. NetSuite Account Register报表详解

热门文章

  1. Vue实现动态路由导航
  2. Win10 DirectX 8.1 安装与启用
  3. Mysql 5.7 免安装版windows安装完整教程
  4. 华为鸿蒙与小米新系统,华为鸿蒙系统硬刚谷歌!小米也发布新系统:却选择和谷歌系统互补...
  5. docker执行权限问题Got permission denied while trying to connect to the Docker daemon socket
  6. 【docker】三、Permission denied与sudo命令
  7. 用python做时间序列预测八:Granger causality test(格兰杰因果检验)
  8. SpringCloud-25-Gateway:动态路由、过滤器使用
  9. Design contains shelved or modified (but not repoured) polygons. The result of DRC is not correct.
  10. R语言进行Box-Cox变换