单片机c语言按键调整时钟,51单片机C语言可调时钟.doc
51单片机C语言可调时钟
程序介绍:六位共阳数码管显示,时·分·秒均可用按键调节。短按时选位的时间按一次加一下,长按不放时时间按一定的频率增加!
本程序的是我参考别人的基础上移植、再加上自己的想法做出来的,程序的亮点就是完全用单片机定时中断写的,避免了用延时写程序时,调节时间时其它未选择的位的的闪烁,使用中断使CPU得到释放,另外还可以具有长安连续增加的功能!
程序的不足之处:不能实现这样的功能,既::系统有四个按键,功能分别是 调整,加,减,确定。在按下调整键时候,显示时的两位数码管以1 Hz 频率闪烁。如果再次按下调整键,则分开始闪烁,时恢复正常显示,依次循环,直到按下确定键,恢复正常的显示。在数码管闪烁的时候,按下加或者减键可以调整相应的显示内容;
如果有哪位高数路过看到,请不吝赐教782547273@
过客与10年10月12日
#include
#define uint unsigned int
#define uchar unsigned char
bit dao1S=0; //到1秒标志位
bit dao2MS=0;// 到2毫秒标志位
bit dao10MS;// 到10毫秒标志位
sbit dula=P2^6;// 定义段选
sbit wela=P2^7;//定义位选
#define LED P0 //定义数据口
sbit key1=P3^4; //定义按键
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
#define KEY_1 0x0e //定义各按键键值
#define KEY_2 0x0d
#define KEY_3 0x0b
#define KEY_4 0x07
#define KEY_NULL 0x0f
#define KEY_PRESS 0x80 //定义各按键状态
#define KEY_LONG 0x40
#define KEY_STATE_INIT 0 //定义按键状态
#define KEY_STATE_PRESS 1
#define KEY_STATE_LONG 2
#define KEY_STATE_UP 3
#define KEY_LONG_PERIOD 50 //定义长按键的TICK数,以及连发间隔的TICK数
#define KEY_CONTINUE_PERIOD 25
uchar tab[]={0,0,0,0,0,0};//时间缓冲区
uchar weitable[]={0x01,0x02,0x04,0x08,0x10,0x20};//显示位
uchar tab1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管编码0-9
void nint() //中断初始化
{ TMOD=0X01;
TH0=0XF8;
TL0=0XCC;
TR0=1;
ET0=1;
}
uchar KeyScan() //按键扫描函数
{
if(key1==0) return KEY_1;
if(key2==0) return KEY_2;
if(key3==0) return KEY_3;
if(key4==0) return KEY_4;
return KEY_NULL;
}
uchar GetKey()
{
uchar keyRetu=0,keyTemp=KEY_NULL; //返回的按键值,按键情况
static uchar s_keyState=KEY_STATE_INIT,keyTime=0,keyLast=KEY_NULL; //按键状态,按键按下的时间计数器,上次按键值
keyTemp=KeyScan();
switch (s_keyState)
{
case KEY_STATE_INIT:
if(keyTemp!=KEY_NULL) //检测到有按键,转到状态1,相当于是消抖过程
{
s_keyState=KEY_STATE_PRESS;
}
break;
case KEY_STATE_PRESS:
if(keyTemp!=KEY_NULL) //再次检测到有按键,转到状态2
{
s_keyState=KEY_STATE_LONG;
keyTime=0; //清零按键时间计数器
keyLast=keyTemp; //保存键值,以便在释放按键状态返回键值
单片机c语言按键调整时钟,51单片机C语言可调时钟.doc相关推荐
- c语言按键松手检测,51单片机按键检测的方法
本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导.本文章会陆续推出,隔几天一个章节.希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或加入QQ群14 ...
- c语言 按键切换显示屏,51单片机lcd1602按键切屏
大家好,我又来了,这次是基础切屏(我也只会这基础..),我用的是stc15w4k56s4的单片机,作用是,可以使用和51一样的操作. 切屏 切屏: 例如我想在两个屏幕之间切换:1.先把每个屏幕应该显示 ...
- C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-下)
系列文章目录 提示:本文章为系列文章,系列文章的所有文章的目录后期会时刻更新,喜欢的朋友请收藏好 <第一章 C语言极速学习开发--51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学 ...
- 单片机原理与实践学习记录之51单片机I/O口简单应用
单片机原理与实践学习记录 第二课(更新时间:2021.9.3) 51单片机I/O口简单应用 C51中常用的头文件 通常有reg51.h,reg52.h,math.h, ctype.h, stdio ...
- 《电子DIY》之《单片机实践项目》之(51单片机)proteus中带编码信号的电机的详细讲解及电路图绘制(motor encoder)
此课程主要讲解如何使用51单片机进行实战应用,分为多次课,每次课都会分别围绕一个课程设计或毕业设计(实践项目)展开.手把手叫你学51单片机."Proteus仿真","电子 ...
- 《电子DIY》之《单片机实践项目》之基于51单片机+光敏电阻的简易光照强度测量系统设计电路图绘制及讲解
<电子DIY>之<单片机实践项目>之基于51单片机+光敏电阻的简易光照强度测量系统设计电路图绘制及讲解 添加链接描述
- 基于51单片机的太阳能追光系统 基于51单片机的锂电池太阳能充电器
基于51单片机的太阳能追光系统 基于51单片机的锂电池太阳能充电器 基于51单片机的锂电池追光充电系统 具体功能:根据太阳光照方向改变光板朝向,利用太阳能给锂离子电池充电,实时显示上下左右四个方向不同 ...
- 单片机c语言按键调整时钟,关于单片机电子时钟按键部分(调时间的)如何设计...
给你一个示例参考 //实验平台:TX-1C开发板(板子上是有源蜂鸣器,程序按无源编写的,不影响正常使用) //K1键调整选择,K2键+,长按连+,K3键-,长按连-,K4键闹钟设置 //定时器初始化程 ...
- 51单片机8255扩展c语言,参阅:基于51单片机的实时时钟的设计与开发8255扩展io口1V0.1...
<基于51单片机的实时时钟的设计与开发(8255扩展io口) (1).doc>由会员分享,可免费在线阅读全文,更多与<基于51单片机的实时时钟的设计与开发(8255扩展io口) (1 ...
最新文章
- L2.五.input语句
- idea中新增package总是嵌套的解决方法
- 下列哪个不是目前python里的内置模块-不吹不擂,你想要的Python面试都在这里了【315+道题】...
- sql server监控
- 22Java之JDBCTemplate总结
- Git之创建远程分支和删除远程分支
- php转译html,使用php转义输出HTML到JavaScript
- 美团技术专家云鹏:写给工程师的十条精进原则!
- Java设计模式1:设计模式概论
- cuSPARSE库:(十一)cusparseCreateSolveAnalysisInfo()
- JAVA设计模式-委派模式(Delegate)
- UI设计师遇到瓶颈如何自我提升?
- Spring JMX之二:远程访问MBean(spring通过annotation暴露MBean)
- pthread 编程
- gif转换成jpg,这个方法很简单
- ListView中如何优化图片
- ChatGPT 爆火!谷歌、微软、百度纷纷下场?
- 江苏东方四通科技股份有限公司参观学习有感
- 路由器_内网端口映射
- Java的自学之旅10
热门文章
- 2021-2027全球与中国移动设备用IC载板市场现状及未来发展趋势
- 2023年认证杯数学建模网络挑战赛B题考订文本思路分析
- Omni Recover 1.3.5 Ios数据恢复工具 http://www.macxiazai.cn/downloads/omni-recover-1-3-5/
- [ARC99E]Independence——二分图染色+DP
- openstack入门及应用
- 中国矿业大学计算机应用研究生就业,矿大算什么水平的211?附中国矿业大学就业方向...
- 2023年QQ群托软件 假人自动聊天 下注机器人赶紧退了,都是假人
- 简易银行账户系统 java
- 标准化的用户养熟流程如何设计?
- “元宇宙”来了,勿忘风险与挑战