开启辅助访问 切换到窄版

打印 上一主题 下一主题

来和菜鸟一起用单片机编程显示数字

[复制链接]
作者:劫_Zed 
版块:
程序员交流 招聘&找工作 发布时间:2018-11-7 20:18:44
7480
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上一篇我们演示了用单片机做一个跑马灯的简单程序和电路,也是来到头条发的第一篇文,一再强调如果路过的大神觉得我们发的东西对你太简单了的话不要嘲笑,大神都是从菜鸟走过来的,数学家一开始都是要学加减乘除的,但还是被喷了,说这么小儿科的东西就不要发来丢人了。
其实吧,我们总不能一上来第一篇文就讲一套复杂的智能家居的软硬件系统吧,我们将从单片机的简单应用,基本操作开始讲起,后面逐步演示一些稍微高级一点的应用,以后还会讲一下我们天天都在用的手机,平板电脑等的电路,我们的目标读者人群也是刚开始学习电子,或者是其他专业的但是对电子又感点兴趣的童鞋,路过的大神自行绕道吧。
另外吧其实生活中你身边的很多大神,他会在你做的不好时批评你嘲笑你,却不会帮助你提高,帮助你做得更好,然而我一个菜鸟却愿意和你站在一起,从简单入门的开始做起,慢慢一起提高,哈哈。
我们的文章都会以简单有趣的实际应用为例子,绝对不会大篇幅的像教科书里那样谈芯片的内部结构,汇编指令集什么的,看了半天一团晕。
好了废话有点多了,进入今天的正题,用单片机控制数码管的显示数字。
首先数码管有什么用呢,比如电梯里显示楼层,数字钟表上显示时间,以及其他生活中很多需要用数字计量并显示的地方。



数码管其实就是8个发光二极管,按ABCDFFGH的顺序摆成一个8字型,假如我们要显示数字7,我们就把ABC三段点亮,假如要显示数字1,就把BC段点亮,H段是要显示小数点时才用的,就是第一张图中的DP段。
然后数码管又分共阴极和共阳极的,共阴极的就是就是八个二极管的负极全部接在一起,正极独立控制,共阳极的就是正极全部接在一起,负极独立控制。

比如对于共阳极的,将公共端接电源,abcdefgh通过电阻分别接到单片机的 P0口的1脚到8脚,假如要点亮abc三段,我们就对abc送低电平,hgfedcba=11111000,就显示了数字7。我们演示的是一个没有小数点的管子,所以H没接。

我们把要显示数字0-9时hgfedcba对应的电平列一个表,可以叫它显示码,括号中是对应的16进制的写法,11000000=0XC0。

有了上面的的基本电路和显示原理,我们编程让数码管循环显示0-9,其实还可以显示大写字母,道理都是一样哒。
----------------------------------------------------------------------------------------------------------------------------------
#include
#define uint unsigned int
void delayms(uint xms) //这里定义一个延时函数,xms等于多少就延时多少毫秒
{ uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--)
;
}
void main()
{
while(1)
{
P0=0Xc0; //送0的显示码
delayms(500) ; //延时500毫秒
P0=0Xf9; //送1的显示码
delayms(500) ;
P0=0xa4;
delayms(500) ;
P0=0Xb0;
delayms(500) ;
P0=0X99;
delayms(500) ;
P0=0X92;
delayms(500) ;
P0=0X82;
delayms(500) ;
P0=0Xf8;
delayms(500) ;
P0=0X80;
delayms(500) ;
P0=0X90;
delayms(500) ;
}
}
---------------------------------------------------------------------------------------------------------------------------------

好了将上面的程序运行,下面就是实际的效果,是不很简单又有趣呢,觉得有趣就关注我吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表