前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原创|电子时钟教程之一(数码显示按键次数)

原创|电子时钟教程之一(数码显示按键次数)

作者头像
单片机技术宅
发布2020-03-17 10:14:21
9440
发布2020-03-17 10:14:21
举报
文章被收录于专栏:初学单片机初学单片机
由于工作的原因,之前说的做个电子时钟的教程,一直没开始。板子打样回来都好几天了,今天才忙得出来给大家写第一个我们的教程。从文章题目就能看出,今天我们主要讲的是数码管的简单显示,这里我们顺带测试按键,所以今天我们要完成的任务就是在我们的DIY电子时钟电路板上完成数码管显示按键次数,并在按键按下有按键音提示。说来简单,还是那句话,会者不难,难者不会,如果你不是初学者,那到此你就算完事了,你需要做的是把本文分享给你身边的初学者们来学习,或者关注我们微信公众号:单片机技术宅,或加Q群:300384358,有问题大家一起解答,小代我也会和大家交流学习。

回到正题,我们学习单片机,写单片机程序,首先要看看我们做实验的板子的原理图,这是最基本的,我们要知道了单片机的接口的使用情况,电路的驱动方式,所使用的的芯片,这样我才能去开始写程序。

一、电路原理分析

如上图所示就是我们整个板子的原理图了,今天我们只分析数码管和按键相关的部分,其他部分会在后续的教程中详细说明。上图中左上角的U1为主控STC15W408as,28引脚的DIP封装。右上角的LED1就是4位一体的共阴数码管,带时间秒显示点,紧接着下面的四个三极管Q6-Q9你和电阻R17-R20组成了共阴数码管的驱动电路。在此三极管是作为开关使用,用它来控制数码的阴极的选通与关短;下面点的S1-S3为三个按键,在今天,我们用着三个按键来控制数码管上显示的字符的变化;在按键的左边有个U9和撒你管Q1组成的是蜂鸣器驱动电路。电路介绍完了,接下来看单片机接口使用情况。我们数码管的8个段选接单片机P2口,四个位选通过三极管驱动电路,分别接P3.1/P3.2/P3.3/P3.6,三个按键分别接单片机的P1.2/P1.3P1.4。蜂鸣器做发声元件,实现按键音提示,接的P3.7。电路部分全部介绍完了,接下来就是编程部分了。

二、程序原理分析

首先我们来说数码显示的原理。现在我们的显示电路采用的是动态显示的驱动方式,这样,在每个时刻,其实只有一位数码管是被选通点亮的,因为我们人眼的视觉暂留和LED发光管的余晖,当数码管再快速的选通点亮后,我们人眼看到的就是全部都是点亮的了。具体原理网上有一堆资料,我们不做过多说明。数码管显示首先得有个段选码,有些地方叫字形码,也就是说我要显示个“1”,那对应的单片机需要给数码管一个什么样的数据。具体怎么算请问百度,也可以关注我们我微信公众号或者Q群,里面有快捷的小工具,1秒钟帮你算完,直接复制来用。有了段码后,就需要我们控制位选码了,比如我要在第三位上显示一个“1”,那就需要在段选码上(本电路中的P2口)送“1”对应的段选码,然后关闭第一、二、四位位选,开通第三位位选。这就完了,但是大家不要忘记了,我们单片机可厉害了,运行完你写的的两句话只要几微秒,对于微秒级别的时间,人眼是识别不出来的,也就说,单片机数执行了我们现实“1”的指令,但是我们人眼看不出来,因为太快了,怎么办呢,它快了,那就让它等等我们人眼吧,好的,这就简单了啊,执行完显示“1”的指令后,等待一会,让我们眼睛看到。这样是等待程序的来由了。

接下来,我们再说按键,从按键原理图中看出,一边接到单片机IO口,一边接电源地,也就说当按键按下后,单片机的IO口就接到电源地上,地上的电压是多少?0V啊,没按按键时,IO口上电平是默认的5V啊,也就说只要我们识别电平就可以知道按键按下没有。这就是程序的原理,具体怎么来写呢?慢慢说,单片机属于数字器件,它只知道高低电平,不知道电压具体是5V还是3.7V的,电压大于它的高电平的阀值,它就认为是高电平;反之它就认为是低电平。程序里我们就让单片机去识别是高电平还是低电平就可知道按键按下没有。

最后说说蜂鸣器,我们用的是有源蜂鸣器,如图所示,只要在接口上给高电平,蜂鸣器就发声,给低电平,蜂鸣器就关闭。

这样一来,全部程序都分析完了,接下来说程序设计的步骤。首先新建工程(这都要说,我也是醉了),完了包含头文件,这里我们包含了两个头文件,一个是官方的STC15.h,另外一个是我们自己写的延时函数头文件delay.h。这两个文件都需要我们手动复制到你的工程文件夹下去,不然编译时会提示找不到文件。完了新建一个C代码文件,我们所有的代码都在这个文件里编写。

完整的代码小代会附在文后,大家有需要的可以复制来用。现在是我们教程的开始,到后面的教程的例程我们就不提供源代码了,可以提供图片或者是PDF版的,大家想要,只有自己敲进去,这样做的目的其实是为了大家更好的学习,你自己敲进去的代码,就算照着我的写,编译都会有错误(之前文章里说到的依葫芦画瓢阶段)。

今天我们这个教程我们会录制成视频,免费提供给大家,本教程的目的就是给初学者也能自己设计并做出高逼格的单片机设计来,需要看的请关注微信公众号。

最后放两张测试照片

以上图片上显示的数字就是通过右边的S1,S2,S3来调节得到的,按键按下的同时还会有“嘀”的按键音提示。最后大家猜猜为什么放张白纸在上面?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单片机技术宅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档