您现在的位置: 主页 > MCU > 单片机应用 > 51单片机学习笔记:可对时电子钟 -
本文所属标签:
为本文创立个标签吧:

51单片机学习笔记:可对时电子钟 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-11 

[导读]本篇是对上一篇的改进,昨天学习了第4章中的独立键盘的使用独立键盘拥有自己独有的IO口,所以比较简单,我上一篇写的电子钟程序只能烧程序对时,不能手动按键对时,这肯定是最差劲的做法,所以学习了按键之后,就立马动手改

本篇是对上一篇的改进,昨天学习了第4章中的独立键盘的使用

本文引用地址: http://www.21ic.com/app/mcu/201809/781791.htm

独立键盘拥有自己独有的IO口,所以比较简单,我上一篇写的电子钟程序只能烧程序对时,

不能手动按键对时,这肯定是最差劲的做法,所以学习了按键之后,就立马动手改进我的电子钟了

同时改进了数码管小数点的显示,消除了叠影

使用芯片STC89C52RC, 2个锁存器

6个带小数点共阴极数码管显示一个24时制时钟

没有时钟芯片,所以掉电后时间会复位

原理图为TX-1C开发板

==============================

最终显示的<时.分.秒>是 16.31.37 形式

使用3个按键, S2 S3 S5

其中S2和S3是加减数值,S5是切换对时状态,

C代码收藏代码

#include

#include"MY51.H"

voidshow();

int8shi=22;//初识时间22:45:00按S5键进入对时模式

int8fen=45;

int8miao=0;

uint8timeFlag=0;//0计时模式,1校对时钟,2校对分钟,3校对秒钟

voidmain()

{

startT0(1000);//开始定时器

while(1)

{

show();//送入数码管显示

if(keyS5==keyDown)//按下S5键

{

delayms(5);//消抖处理

if(keyS5==keyDown)

{

while(1)

{

show();

if(keyS5==keyUp)//放开按钮

{

delayms(5);//消抖处理

if(keyS5==keyUp)

{

break;

}

}

}

timeFlag=(++timeFlag)%4;//按S5键进行状态切换

while(timeFlag)

{

if(timeFlag==1)

{

led=0xff;

led7=0;//进入对时钟模式,且打开7号指示灯

}

elseif(timeFlag==2)

{

led=0xff;

led5=0;//进入校对分钟模式,且打开5号指示灯

}

elseif(timeFlag==3)

{

led=0xff;

led3=0;//进入校对秒钟模式,且打开3号指示灯

}

show();//刷新数码管

if(keyS2==keyDown)//S2和S3用于调整数值,加减运算

{

delayms(5);//消抖处理

if(keyS2==keyDown)

{

if(timeFlag==1)

{

shi--;

if(shi<0)

{

shi=23;

}

}

elseif(timeFlag==2)

{



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 51单片机学习笔记:可对时电子钟 -
 

"51单片机学习笔记:可对时电子钟 -"的相关文章

网站地图

围观()