目录
相信经过了流水灯的实现,大家已经弄清楚了Keil和Proteus是如何联动使用的,并且对51单片机也有了一定的认识,在这一章里,我带大家利用51单片机玩下数码管,看最终你们能不能把自己的学号显示出来。
LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成的器件。常见的LED数码管为“8”字型的,共计8段。每一段对应一个发光二极管。

数码管有共阳极和共阴极两种。共阴极: 数码管的发光二极管的阴极连在一起,通常公共阴极接地。当阳极为高电平时,发光二极管点亮。共阳极: 数码管的发光二极管的阳极连在一起,公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。

现在我们先来讲一下数码管静态显示,其实数码管的本质就是8个LED组成的一个“8”字形加一个点(dp),如果我们想要显示0,那么就是把上图(c)中的a、b、c、d、e、f六段数码管点亮,让g、dp熄灭,最后就显示数字0了。
在开始之前,大家先要弄懂2进制、10进制、16进制的转换关系,因为单片机只认识二进制,而我们习惯于使用10进制。那么为何我要提到16进制呢,这是因为1位16进制恰好能够表示4位二进制,为了程序的简单,我们一般使用16进制来写代码。比如3FH是什么意思呢,首先末尾的H表示16进制的标志,还有同学记得我们上一章讲到的HEX吗?我上一章说HEX就是16进制的意思,H就是HEX的首字母。所以我们知道了3F是个16进制数,考虑到大家刚入门,我教大家如何使用计算器转换成2进制。



我们可以看到3F对应的二进制是00111111,我看到这串数字我就知道这在共阴极的情况下显示的是0,为什么呢,我来给大家分析。
首先共阴极的情况下,1就是灯亮,0就是灯灭。00111111正好对应8段LED灯。由于右边是低位,所以a=1、b=1、c=1、d=1、e=1、f=1、g=0、dp=0。对应我们上面数码管图,显示的就是数字0。这其实就是数码管显示数字的原理。大家也可以想一下如果是共阳极的情况呢?

现在直接实践环节,我们一起来显示个数字0,大家也可以根据上面的码表自己选择数字或字母。就不再演示建工程了,直接写代码,有忘记怎么建工程的同学回到第一章看看。
首先还是从硬件开始,打开Proteus,设计原理图。


大家可以根据我的硬件图进行搭建,为什么需要排阻呢,因为P0端口内部没有上拉电阻,如何将P0端口作为I/O口时,它会处于悬空状态,无法输出高电平,所以我们要给他加一个上拉电阻,以此给负载提供电流。我在这里故意使用P0这个特殊的端口,就是为了让大家知道这个知识点,后续很多实际工程中,很多人使用了P0端口却没有加排阻,导致调试不出结果。(包括我本人也被这个点坑过),所以在这里告诉大家。
软件设计我们使用Keil写代码,生成HEX文件即可,代码比较简单,大家对照着图片敲一下,当作练习。这个代码的意思就是让P0口输出00111111,用16进制表示就是0x3f,其中0x表示16进制,3f就是00111111,这个在上面讲过了,就不多赘述。

编译结果如下,0错误0警告。

注:如果找不到HEX文件,可能是魔术棒那里没有打勾。
最后我们把HEX文件烧录到Proteus里的51单片机中,进行运行验证。

可以看到,数码管已经显示数字0,证明我们的静态显示工程成功了!大家也可以上面的码表修改一下数字,多练几遍。
如果有两位的数码管,每个数码管要显示不同的字符,那么电路该怎么搭建呢?对于多位数码管,经常使用动态扫描的方法来显示。
无论在任何时刻只有一个LED数码管处于显示状态,利用人的视觉暂留效应,依次显示每个不同的数码管。某一时刻,只有一位LED数码管被选通显示,其余位则是熄灭的,但人眼看到的是若干位稳定的同时显示的字符。
硬件连接图如下,大家可以在Proteus中搭建出来。


这个硬件连接也不是很难,数码管左边A、B、C、D、E、F、G、DP就是控制段选的,右边1、2、3、4、5、6、7、8是控制8个数码管到底哪一个亮(一次只能亮一个数码管)。
下面是我们的软件设计部分,大家利用Keil新建工程,把下面代码复制到main.c。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay (uint i)
{
uint m,n;
for(m=i;m>0;m--)
for(n=200;n>0;n--);
}
void main()
{
uint j;
while(1)
{
for(j=1;j<9;j++)
{
switch(j)
{
case 1: P2=0xfe;P1=duan[3]; break;
case 2: P2=0xfd;P1=duan[1]; break;
case 3: P2=0xfb;P1=duan[9]; break;
case 4: P2=0xf7;P1=duan[4]; break;
case 5: P2=0xef;P1=duan[0]; break;
case 6: P2=0xdf;P1=duan[3]; break;
case 7: P2=0xbf;P1=duan[0]; break;
case 8: P2=0x7f;P1=duan[6]; break;
}
delay(1);
}
}
}


编译成功,且顺利生成了HEX文件,接下来我们只需把文件放到51单片机中就可以运行验证就可以了。

这个时候,学号就显示出来了,其实这8个数字是一个接一个的亮,反复循环的,由于速度很快加上人眼的视觉残留,让我们感觉像是8个数码管一起在亮,大家也可以修改我的代码,看看能不能把自己的学号显示出来。提示一下大家,只需要修改switch语句里面的数字即可。
对于数码管显示的学习到这里就结束了,其实回过头来看,数码管的显示本质还是LED,只是比较复杂的LED结构,需要考虑的因素多了一些罢了,这就需要大家多训练,在实践中感悟总结了。学到这一章,相信大家对于51单片机有了自己的理解和认识,入门51单片机的诀窍就是对I/O高低电平的理解,把这个理解清楚了,就基本入门了51单片机。
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa