单片机入门之数码管定时闹钟(1)-今日聚焦
在之前的文章中我们学习了多位数码管时钟,既然有了时间,那我们为何不将他变为一个可以定时的闹钟呢,这样不就更加的方便我们了吗。这一章我们将开始对数码管定时闹钟的学习。
(资料图片仅供参考)
一、功能概述
既然我们已经可以实现多位数码管显示时间,那么我们在这个时间的基础上加上一个蜂鸣器,用按键的方式来调整我们所需要定时的时间,当时间到时进入外部中断来控制蜂鸣器,而按键同样也是外部中断的方法。外部中断的触发方法有电平触发和边沿触发两种方式,这两种方式都可以我们人为的去设定它。
二、显示原理
使用AT89C51单片机来对数码管进行时间的显示,外加蜂鸣器起到闹钟的作用。这一章节我们先了解按键外部中断的原理以及如何对按键控制时间的增减。
外部中断分为两个部分,中断初始化部分和外部中断服务函数。初始化部分是对中断进行设定,确定所选用的中断是哪一个,以及触发中断的条件,还有中断的优先级顺序。
//中断初始化void Interrupt_eint(){EX0 = 1; //开启外部中断0IT0 = 1; //设置外部中断0触发模式:下降沿触发EX1 = 1; //开启外部中断1IT1 = 1; //设置外部中断1触发模式EA = 1; //开启总中断PX0 = 1; //将外部中断的优先级提高}//外部0中断服务函数void int0() interrupt 0{uchar j = 0;for(j = 0;j<=3;++j) {DisplayNum(j);delay_ms(1000); }}
我们以代码的方式进行中断的解读,之后的学习我们也可以利用这两段代码来进行运用外部中断。
三、电路连接
这里我们选用P3.0、P3.1、P3.2作为我们三个按键控制的引脚
定义代码如下:
voidkey(){while(key2==0){input();break;}if(key1==0){delayms(200);if(key1==0)//{while(!key1){TR0=0;display(time[0]/10,time[0]%10,time[1]/10,time[1]%10,time[2]/10,time[2]%10);}TR0=1;}{TR0=!TR0;while(!key1)display(time[0]/10,time[0]%10,time[1]/10,time[1]%10,time[2]/10,time[2]%10);}//else if(TR0==0)TR0=1;}else if(key1==1){mode++;if(mode==2)mode=0;}}if(key3==0){delayms(200);if(key3==0){if(mode==0{time[0]=0;time[1]=0;time[2]=0;num=0;while(!key3)display(time[0]/10,time[0]%10,time[1]/10,time[1]%10,time[2]/10,time[2]%10);}else if(mode==1){time_clk[0]=0;time_clk[1]=0;time_clk[2]=0;while(!key3)display(time_clk[0]/10,time_clk[0]%10,time_clk[1]/10,time_clk[1]%10,time_clk[2]/10,time_clk[2]%10);}}else if(key3==1){buffer=1;/*P1=1;*/} } }
当我们在使用按键的时候还需要对按键进行扫描,按键扫描的目的是为了让设备知道我们的按键是按下了还是松开,避免产生错误。
按键扫描代码:
uchar keyscan()//矩阵键盘扫描函数{keyvalue=99;P3=0xfe;temp=P3; temp=temp&0xf0;//判断是否还等于0xf0while(temp!=0xf0){delayms(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xee:{keyvalue=0;keydown=1;break;}case 0xde:{keyvalue=1;keydown=1;break;}case 0xbe:{keyvalue=2;keydown=1;break;}case 0x7e:{keyvalue=3;keydown=1;break;}}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfd;temp=P3; temp=temp&0xf0;//判断是否还等于0xf0while(temp!=0xf0){delayms(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xed:{keyvalue=4;keydown=1;break;}case 0xdd:{keyvalue=5;keydown=1;break;}case 0xbd:{keyvalue=6;keydown=1;break;}case 0x7d:{keyvalue=7;keydown=1;break;}}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfb;temp=P3; temp=temp&0xf0;//判断是否还等于0xf0while(temp!=0xf0){delayms(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xeb:{keyvalue=8;keydown=1;break;}case 0xdb:{keyvalue=9;keydown=1;break;}case 0xbb:{keyvalue=10;keydown=1;break;}case 0x7b:{keyvalue=11;keydown=1;break;}}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xf7;temp=P3; temp=temp&0xf0;//判断是否还等于0xf0while(temp!=0xf0){delayms(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xe7:{keyvalue=12;keydown=1;break;}case 0xd7:{keyvalue=13;keydown=1;break;}case 0xb7:{keyvalue=14;keydown=1;break;}case 0x77:{keyvalue=15;keydown=1;break;}}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}return keyvalue;}
同时中断中也需要对我们每一下按键的按下进行一定的描述,当按键被触发情况发生的时候,程序应该干嘛。
代码如下:
void T0_time() interrupt 1//中断函数{TH0=(65536-45872)/256;TL0=(65536-45872)%256;num++;if(num==20)//循环20次为一秒{num=0;time[2]++;//秒加一if(time[2]==60)//秒到60进位{time[2]=0;//秒清零分钟加一time[1]++;if(time[1]==60)//分钟到60进位{time[1]=0;//分钟清零小时加一time[0]++; soundTime();//整点报时if(time[0]==24)//小时满24清零time[0]=0;}}if((time[0]==time_clk[0])&&(time[1]==time_clk[1])&&(time[2]==time_clk[2])){buffer=0;/*P1=0;*/}}}
蜂鸣器也是在中断中实现的,当到达我们所设定的时间后,对它的电平进行改变就可以实现发声了。
代码如下:
voidsoundTime(){buffer=0;delayms(10);buffer=1;}
四、总结
本章我们先对按键以及外部中断进行学习,外部中断的两种触发方式,以及对中断服务程序的学习,这样对于将来设计我们的数码管闹钟的时候能提供更加广阔的思路,不在局限于用一个循环或者一个主函数去完成一个设计,毕竟一个设计都是分为一步一步去完成的,每个模块相互结合也能让我们的设计更加的富有逻辑。
标签:
抢先读
- win11网络连接不见了怎么办?win11网络图标消失怎么办?
- 辞职后个人档案怎么处理 个人档案丢失如何补办?|全球今热点
- 银行对负债率要求是多少?如何正确查询征信? 每日视点
- 世界即时:狮子座的行动能力非常强大 不太愿意委屈自己?
- 提前还款是缩短年限还是减少月供?提前还款的好处有哪些?
- 白羊座本身就是那种特别直接的人 说话也直接?
- 机构投资者都在买哪些基金?靠基金投资能让你发家致富吗?
- 射手座眼界很广 知道的东西也非常的多?
- 观热点:好丽友双标事件的影响 现在还能买到好丽友吗?
- 当前关注:水狗经歌词完整版是什么?短视频博主都用什么拍摄?
- 【天天新要闻】台式电脑组装有教程吗需要做好哪些准备?组装机七大禁忌分别是?
- 最资讯丨负债类型有几种?提高个人征信这几个办法?
- 2000年世界杯举行时间是什么时候?2022世界杯说西语的国家有哪些? _环球今亮点
- 社保贷款申请条件是什么?社保卡网贷能贷多少?
- 只要是有双子座在的地方 完全都不会冷场?-今日观点
- 摩羯行动能力非常的强 做事情往往非常的认真?-通讯
- 世界热讯:电脑机箱风扇肯定要装吗?电脑机箱里的风扇怎么拆下来呀?
- 负债类型有几种?如何正确查询征信?_天天新视野
- 外卖小哥,偷你“坐骑”的抓住了……
- 双鱼座就是那种想法特别多的人 头脑特别的灵活?
- 单片机入门之数码管定时闹钟(1)-今日聚焦
- 硬盘系统对拷最快的方法有哪些?硬盘系统对拷全部步骤是什么?-天天最资讯
- 天天简讯:橡皮树有毒吗?橡皮树的汁液有毒吗?
- 北向资金大额卖出怎么办?股票减持对市场有什么影响?_全球快报
- 股票涨8个点意味着什么?10元股票涨到30赚了多少?-环球快看
- 环球快资讯丨流转税包括哪些?增值税的三种计算方法是什么?
- 头条:汽车怠速过高的危害是什么?汽车发动机怠速高好还是低好?
- 天秤座的情商一直以来都是非常高 总是笑眯眯的?
- 绝地求生1728×1080分辨率设置方法是什么? 绝地求生显示fps的教程是什么?
- 天秤男比较的单纯 不喜欢把事情搞复杂化? 焦点快报
- 世界观速讯丨好丽友双标事件的影响 好丽友配料双标是谣言吗?
- 热讯:苹果a15处理器相当于什么显卡?iphone6最高可升级到哪个系统版本?
- 6月27日东北地区乙醇市场成交稳定
- 如何使用CHATGPT中文版?chatgpt能不能在华为鸿蒙手机里安装?|世界速讯
- 焦点快报!如何理财投资?个人如何投理财?理财投资方向有哪些?
- 6月27日国内部分乙醇厂家报价下调
- 电脑安全管家软件哪个好一点?电脑安全管家排行榜前十名有哪些?
- 字幕大师怎么用?手机设置字幕有什么作用?
- 摩羯座也是把账算得非常清楚 不是那种喜欢计较的人?
- 微动态丨北京大学任明辉:政府在鼓励药物创新上起着十分重要的作用
- 二级建造师挂靠注意事项有哪些?二级建造师报考条件是什么?|天天简讯
- 银行结息怎么查?手机银行怎么查定期利息?|天天资讯
- 什么是国计划? 国计划的特征有什么? 天天观天下
- 东北石油大学算好大学吗?中国石油大学女生就业前景如何?
- 两丈等于多少米 两丈高相当于几层楼?
- a15芯片是几纳米工艺?苹果a15和a16处理器区别? 天天时快讯
- 基金当天涨跌看估值还是净值?基金估值高于净值的原因?
- 快消息!农村医保卡怎么激活?农村医保卡怎么查询余额?
- 花呗自动还款怎么设置?花呗自动还款可以申请退回吗? 焦点速递
- steam搬砖选品有哪些步骤?csgo大行动箱子怎么获得?
- CSGO搬砖的时候有哪些老玩家的经验?csgo2023值得去屯的印花有哪些?
- steam搬砖项目怎么选品?CSGO怎么加别人主机?
- steam游戏选品有哪些技巧?csgo涨价潜力大的刀有哪些?
- 世界热文:六寸照片的尺寸是多少?6寸照片相当于多大实物?
- 全球观焦点:鱼胶怎样泡发最好 鱼胶怎样泡发营养最全面?
- 当前热文:主力拉升前的洗盘手法有哪些?筹码集中度多少容易拉升?
- 购房需要注意哪些事项?售楼部交了2万定金可以退吗?
- 年轻人如何理财有几种方法?理财的三个建议是什么?-观察
- 怎么在CSGO中享受搬砖?csgo什么贴纸以后能升值
- 天天速看:非机动车指的是哪些车?电动车是非机动车吗?
- 白羊座在生活中并不是喜欢交流的人 总是冷漠?
- 环球观点:文件都有哪些后缀_文件都有哪些格式
- 只懂得吃吃喝喝的凡人女子怎么能入他们的法眼呢?
- 岷县市场:党参整体交易走缓 成交价格略显疲软 全球播资讯
- 债券基金当天买入是当天的净值吗?五大资产是哪五大资产?
- 微速讯:基金返投是什么意思?基金红利再投资的好处是什么?
- 含锌高的食物有哪些?锌缺乏症的主要表现有什么?
- 经营性贷款为什么打给第三方?经营性贷款买房后果严重吗?
- s*st股票什么意思?股票st了之后一般能跌多久?_全球球精选
- 盗墓笔记一共多少集 盗墓笔记小说正确顺序?
- 支付宝花呗怎么开通?支付宝花呗利息怎么算?
- 每日信息:6月27日国内钴市行情汇总
- 私募期货基金是什么?成立期货私募基金的条件有哪些?
- 双重边际效应是什么意思?边际效用要如何计算?
- 户口迁移证怎么办理?户口迁移需要什么手续和证件?|环球聚看点
- 全球微动态丨金砖国家是什么概念 金砖国家是什么性质的组织?
- win10应用商店下载很慢怎么办?win10系统运行速度慢怎么解决?
- 世界短讯!房屋不限购是什么意思?70年产权到期后土地使用权的处理方法看这里
- 基金短线操作的技巧有哪些?基金超短线挣钱的诀窍有哪些?
- 【环球聚看点】股票几点收盘?股市交易时间是几点到几点?
- 白羊座就是那种特别喜欢运动的人 随时随地都运动? 环球要闻
- 海正药业(600267)6月27日主力资金净卖出227.29万元 新视野
- 岷县市场:当归整体购销迟缓 成交价格稳中显弱
- 天天热资讯!巨蟹座在恋爱的时候只想给对方最好的而傻傻付出?
- 每日时讯!众泰t600一键启动没反应怎么办?众泰t600一键升窗怎么激活?
- 天天热点评!鱼胶怎样泡发最好 鱼胶如何做最好吃?
- 迭代思维的特征包含哪些? 迭代思维的运用体现出了什么?-全球今亮点
- 温柔的谎言吴春怡扮演的角色是哪个?温柔的谎言安然的扮演者叫什么?
- 买房贷款需要什么条件?买房贷款不下来首付能退房吗?
- 音爆的危害?音爆是什么原因产生的?|当前视点
- 国债期货的交易有什么用?远期利率与利率期货有什么不同? 环球焦点
- 仙佑膏药与知名企业合作,共同推动行业发展
- ChatGPT访问量今年以来环比增速明显下滑 6月或为负数
- 花呗余额宝消费红包怎么使用?花呗余额宝消费红包要还吗?_当前焦点
- 【独家焦点】处女男的性格真的有洁癖 容不得半点凡夫俗子?
- 股权代持协议指的是什么?签股权代持协议有风险吗?
- 抽筋是什么原因?抽筋怎么解决?_环球聚看点
- 工资卡和房贷卡有必要分开么?工资卡和还房贷卡不是一家银行怎么办?|今日观点
- 北京大学任明辉:政府在鼓励药物创新上起着十分重要的作用 世界新动态
- 仙佑膏药与知名企业合作,共同推动行业发展