51单片机编程基础(C语言):电子时钟(LED1602作为显示)

题目要求:

审题时这个题是用数码管来显示的,数码管显示时钟我完成了一个,只是要求跟他不一样,所以这次想用LCD1602来显示,所以我先用LCD1602完成,再用数码管完成(其实也只要在我之前的项目基础上改一下就OK了)。

其实从第一个要求就看出来了,数码管无法显示:,只能显示.这次我用LCD显示,把所以得.改为:

1、显示“时.分”进行显示,例如“12.18”,其中.每秒闪烁一次。

2、能够校正时间的时和分,按键分为5个功能键

(1)设定键:在计时模式时,按下此键时停止计时,进入设置状态,并切换到分钟的设置状态,再按一次切换到小时的设置状态,每按下一次完成时.分设置的切换,用点亮时.分个位的数码管小数点表示分或秒处于设置状态。在闹钟时间设定状态时,按下此键同样进入设置状态,完成分、秒设置的切换。

(2)递增键:在设置状态时,按一次递增键,被设置的分钟数字或时钟数字增1,持续按下数字自动增1。

(3)递减键:在设置状态时,按一次递减键,被设置的分钟数字或时钟数字减1,持续按下数字自动增1。

(4)计时键:在设置状态或闹钟时间设定状态时,按下此键则单片机切换到计时的显示模式,按照新的时.分设置值进行计时。如果已经在计时状态则此键无效。

(5)闹钟键:在计时模式时,按下此键则单片机切换到闹钟时间设定状态的显示模式。等待“设定键”、“递增键”、“递减键”来设定分钟和秒钟。

3、当计时到闹钟设定时间,用发光二极管闪烁,十秒钟后结束闪烁,正常计时

总代码:

main.c     剩下的都是模块化编程好的,在我的模块化编程大全里面,

调试视频在我视频里

#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
#include "MatrixKey"
#include "Timer0.h"

unsigned char hour=23;  //小时位
unsigned char min=57;  //分钟位  
unsigned char miao=0;   //秒位
unsigned char keyNumber;     //接收矩阵键盘的返回值
unsigned char Mode=0;       // :显示标志位
unsigned char Start=0;       // 0为开始计时,1暂停计时
unsigned char min_hour_set; //当S1按下时,切换到计时小时和分钟设置位
unsigned char clock_hour;//闹钟的小时位
unsigned char clock_min;  //闹钟的分钟位 
unsigned char clock_miao;   //闹钟的秒位
unsigned char clock_counttime=0; //界面显示标记位,0为显示时钟模式,1为显示clock模式
unsigned char clock_min_clock_hour_set; //在闹钟模式显示下,切换到闹钟小时和分钟设置位   //按键不可能同时是两个值。
unsigned char flag=0;  //处于计时界面下,flag=0,处于clock界面下,flag=1,
                       //flag=0时,此时按下S1就是时钟模式设置键,flag=1,此时就是clock模式设置键
unsigned char who=0;   //由于加加,减减键是对min,hour起作用,即使进入闹钟模式,按下s1,按加加键无法改变闹钟的设置
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值