1. 首页
  2. 资讯

51单片机数码管

AT89C51单片机让数码管轮流显示两位不同数的程序是什么?LED数码管是单片机应用系统中最常用的显示器件之一。在单片机系统中通常使用七段数码管。数码管的显示分为动态显示和

AT89C51单片机让数码管轮流显示两位不同数的程序是什么?

LED数码管是单片机应用系统中最常用的显示器件之一。在单片机系统中通常使用七段数码管。

数码管的显示分为动态显示和静态显示。所谓静态显示是指数码管显示对应的字符,直到下一次送出另一个字形码之前,显示的内容一直不会消失;动态扫描就是让各位数码管按照一定顺序轮流显示,只要扫描频率足够高,由于人眼的“视觉暂留”效应,就能连续稳定显示。

题主想要轮流显示两位不同的数,如果没有特别的要求可直接用循环和延时函数来模拟间隔时间,如果有确切的时间要求则必须要使用中断来做了。以下我会将举两个例子供题主参考。

1、两位数码管显示00到99的加1计数。

程序如下:

仿真效果如下:

{!-- PGC_VIDEO:{"thumb_height": 360, "thumb_url": "6db60008b61e7432705b", "vname": "", "vid": "e12c2607f5f5408faf198948307608b4", "thumb_width": 640, "src_thumb_uri": "6db60008b61e7432705b", "sp": "toutiao", "update_thumb_type": 1, "vposter": "http://p0.pstatp.com/origin/6db60008b61e7432705b", "video_size": {"high": {"duration": 15.8, "h": 480, "subjective_score": 0, "w": 852, "file_size": 331680}, "ultra": {"duration": 15.8, "h": 720, "subjective_score": 0, "w": 1278, "file_size": 540730}, "normal": {"duration": 15.8, "h": 360, "subjective_score": 0, "w": 640, "file_size": 247764}}, "duration": 15.8, "file_sign": "02a68d3221eb3fb1c115b79c8dd95654", "md5": "02a68d3221eb3fb1c115b79c8dd95654", "vu": "e12c2607f5f5408faf198948307608b4"} --}

2、四位数码管轮流显示两个不同的数。

程序如下:

效果如下:

{!-- PGC_VIDEO:{"thumb_height": 360, "thumb_url": "6db70009a030ef640c24", "vname": "", "vid": "2021f1ec60a343b4a60b5e724cc7eac7", "thumb_width": 640, "src_thumb_uri": "6db70009a030ef640c24", "sp": "toutiao", "update_thumb_type": 1, "vposter": "http://p0.pstatp.com/origin/6db70009a030ef640c24", "video_size": {"high": {"duration": 3.68, "h": 480, "subjective_score": 0, "w": 852, "file_size": 117708}, "ultra": {"duration": 3.68, "h": 720, "subjective_score": 0, "w": 1278, "file_size": 198873}, "normal": {"duration": 3.68, "h": 360, "subjective_score": 0, "w": 640, "file_size": 79100}}, "duration": 3.68, "file_sign": "95e7dce06a595adc149ea30ebf174d2e", "md5": "95e7dce06a595adc149ea30ebf174d2e", "vu": "2021f1ec60a343b4a60b5e724cc7eac7"} --}

以上是我的回答,不当之处,多多指教。

怎么样学好51单片机?

单片机的学习绝不仅仅是对一项知识的掌握。想要学好单片机,需要从硬件结构、内部资源、外设应用等几个方面多方位入手。而要想成为一名嵌入式工程师,就要对单片机的基础非常熟悉,并且掌握C语言当中各个功能的初始化、启动、停止各类函数的编写调试。那么想要掌握单片机需要从哪几个方面入手呢?

1. 数字I/O的应用

在大多数的单片机实验中,跑马灯实验正是数字I/O的典型应用,也是跑马灯的实验被安排第一个的原因。通过将单片机的I/O引脚位进行置位或清零来点亮或关闭LED灯,虽然简单,但是这就是数字电路中的逻辑功能。数学I/O应用的实验还有按键实验,当按下某键时,某LED灯被点亮。数字I/O实验教会我们单片机的编程思想,必须首先对单片机的相应寄存器进行配置,以初始化I/O引脚,这样才能使该引脚具备数字输入与输出功能。单片机的一个内置或外置功能的使用,就是对该功能相关的寄存器进行设置,初始化,而这便是单片机编程的特点。少则4、5个函数搞定,多则十几行程序,要有耐心,别怕麻烦,所有的单片机都是这样。

2. RS232串口通讯

单片机都有UART接口,这个简单、古老的通讯方式可以与我们PC机的RS232接口直接连接通讯,当然,因为它们两者电平逻辑不同,必须要使用一个RS232电平转换芯片才能与PC机连接,例如Max232芯片。

UART接口的使用是非常重要的,通过这个接口,我们可以使单片机与PC机之间交换信息,“接口”概念的学习也便由此引入。使用UART接口也会学习到目前最为简单与常用的通信协议等知识。对于无法在线调试的单片机,也可以通过PC机的串口调试软件来监视到单片机实验板的数据。

3. 定时器的使用

学会定时器的使用,就可以利用单片机来实现典型的时序逻辑电路。时序逻辑电路的应用是最强大、最广泛的。例如,在工业的控制中,我们让某个开关每隔1秒钟打开与关闭一次。这个方案可以通过普通的数字集成电路实现,也可以通过PLC来实现,也可以通过CPLD或FPGA来实现,但是只有单片机的实现是最简单,成本也是最经济的。定时器是单片机内部资源里最为重要的一个,更是逻辑与时间控制实现的基础。

4. 中断

在单片机软件设计架构中,一段程序循环执行是其一个特点,也是一个弊端。每个操作指令的执行都需要一定的执行时间,如果程序没有执行到该指令,则该指令的动作就不会触发,这样就会忽略许多快速发生的事件,例如方波频率检测的上升沿。针对在单片机程序正常运行时能够对外部事件立即做出响应而设计了中断功能。当中断功能执行时,单片机优先处理中断程序,当中断处理完成后,再回到单片机的正常程序执行中。中断的机理是比较容易理解的,但是什么时候打开中断,什么时候关闭、屏蔽中断,需要如何配置才能使能中断的某些功能,中断里要执行哪些程序,这些程序的要满足哪些要求就需要花些时间去理解与实践了。中断学会后,就可以编写复杂结构功能的程序,可以一边闪着小LED灯,一边扫描着按键,一边发送着数据,也可以干着多个事情……比如,中断功能可以使单片机吃着碗里的,看着锅里的。根据传说中的8020定律,如果掌握了上面提到的这四步,那么就说明已经学会单片机80%的内容了。

5. I2C,SPI通信

单片机系统毕竟资源有限,而利用I2C、SPI通讯接口进行扩展外设是最常用的方法,也是非常重要的方法。这两个通讯接口都是串行通讯接口,典型的基础实验就是I2C的EEPROM实验与SPI的SD卡读写实验。

6. 比较、捕获、PWM功能

比较,捕捉与PWM功能可以使单片机更加适合电机控制,信号检测,实现电机速度与步长的调节。PWM波现在又是LED调光的主要手段。这里已经初步接触了数字电路里的模拟电路部分。

7. AD模数采集

单片机目前基本都自带多通道A/D模数转换器,通过这些A/D转换器可以单片机获取模拟量,用于检测电压、电流等信号。学习时要分清模拟地与数字地,参考电压,采样时间,转换速率,转换误差等重要概念。这一步学会了数字电路控制模拟电路部分,而最简单的A/D模数转换器就是电压表实验。

8. 学习USB接口、TCP/IP协议、工业总线

目前主流的通讯协议为:

USB协——下位机与上位机高速通讯接口;

TCP/IP——万能的互联网使用的通讯协议;

工业总线——诸如Modbus,CANOpen等工业控制各个模块之间通讯的协议。这些都会应用在未来的项目里,集成入单片机里的固件,并且也是当前产品开发的一个发展方向。

欢迎关注头条号“玩转嵌入式”,获取更多电子设计知识。微信公众号:玩转嵌入式

51单片机定时器不够用怎么办?

确实如此,定时器是使用频率最高的资源。STC89C52单片机有3个定时器,分别是T0,T1和T2。一般够用,一个串口波特率发生,2个计时。其中T2有捕捉功能。由于定时器较少,一般用法都是在一个定时器中,设置不同的时间位,如1ms定时,在中断中进行计数,通过计数周期不同来产生不同的时间位,设置10ms定时时间位flag10ms,设置100ms定时时间位flag100ms,设置1s定时时间位flag1s。但这也有缺点,当计数周期为倍数关系时,软件就要额外处理,该怎么协调时间位的处理,如1s定时到,其实10ms和100ms的标志位都会置位。


确实定时器资源少,会影响使用,软件处理也会复杂,建议还是更换升级的单片机,如STC12系列,有2个定时器,2路PCA可以作为定时器,还有独立的波特率发生器,不占用定时器。

或者更高一级,STC15系列,有5个定时器,2路PCA,共有7个定时器,足够使用。这些定时器的应用基本一致,配置好寄存器,就可以工作了。而且中断等级分了四等,方便处理多中断任务。

附图一,89C52的内部结构。附图二,STC12的配置。附图三,STC15的配置。附图四,STC15中断结构。

51单片机能控制家电吗?

当然可以!

简单地说,单片机就是一个小计算机系统。为了说明清楚这个问题,得要从计算机说起。提到计算机,大家可能马上会想到“显示器、鼠标、键盘”,不过,这不是一个计算机的核心和关键,计算机的核心部分在一边的机箱里呢。打开机箱,可以看到,机箱里有主板、硬盘、光驱等。仔细观察主板,这上面有CPU、内存条、BIOS芯片,通常还有25针的打印机接口等,这些部件都是通过主板上的连线相互连接。

不论计算机复杂程度如何,它总是由运算器,控制器,存储器,输入/输出接口,总线这五个部分组成。通常运算器和控制器被做成一块芯片,也就是CPU(中央处理器)。在计算机主板上,内存条和BIOS芯片就是存储器,25针打印机接口就是输出/输出设备,而总线则被设计在主板上,即各部件相互连接的线路。

单片机是如何工作的?

单片机的工作过程就是一个不断“取指令-分析指令-执行指令”的过程。单片机的程序以一条一条指令的形式存放在程序存储器中,单片机开始工作后,就从程序存储器的特定位置开始取指令,然后由单片机内部的控制器对指令进行分析,根据指令要求,进行“取数、送数、算术运算、逻辑运算、跳转”等基本操作中的一种或几种,这些操作都在一个规定的周期中完成,执行完了以后,到下一个存储器单元中取指令,重复刚才的操作(当然,这些要执行的操作具体内容可能跟上一次不一样了),如此不断重复,直到断电为止。这里所说的“存储器特定位置”、“规定的周期”等与单片机的型号有关,下面以51系列单片机为例来说明。

在51系列单片机中有一个名为PC的寄存器(就是用来存数的一个容器),在单片机复位后,这个寄存器中的内容被置为0000H,单片机内部的控制器总是根据PC寄存器中的值去相应的程序存储器单元取指令,因此,开机后,将从0000H单元取第一条指令,分析执行,同时,PC值将作相应的调整,指向将要执行的下一条指令的位置,下一条指令的位置在哪里呢?对于51单片机来说,一条指令可能占用一个字节、二个字节或三个字节,如果第一条指令是单字节指令,取完第一条指令以后,PC的值就会变为0001H,因此,第一条指令执行完毕以后,将从0001H单元中取出第二条指令来执行,以此类推。如果程序是顺序执行的,PC的值将始终不断增加,如果程序中有跳转指令,该指令将影响PC中的值,使PC中的值指向将要执行的下一条指令所在地址单元。这种跳转既可能是正向的,例如由0000H跳转到0030H,也可能是反向的,即往回跳转,如由200H跳转到100H。正是由于指令可以影响到PC中的值,才使得程序可以实现“分支”、“循环”等各种功能。那么,执行一条指令的时间又是多少呢?对于51单片机来说,指令执行时间有三种可能,单周期、双周期和四周期,不管一条指令需要做多少工作,都必然在规定的时间内完成。

51单片机开发板有什么好的推荐?

51单片机是单片机学习入门的首选,经过三十年多的发展51单片机已经做得很成熟,成本低,操作方便,资料丰富。虽然多数公司都用32位或者更高级的芯片去做产品,但是不可否认,51单片机依然是最好的入门级单片机。

51单片机开发板种类繁多,价格便宜,板载资源丰富,但是这也导致了资源同质化比较严重,资料丰富性也良莠不齐。在这里不具体推荐开发板型号,只从几个方面具体讲解一下如何选择开发板。

1.选择外设资源丰富的开发板

利用开发板学习单片机的目的,就是因为板子上集成了常用的外设电路,省去了自己搭电路的麻烦,所以板子上的资源一定要丰富,单片机的各接口扩展出来,方便用杜邦线自己搭电路。

2.选择例程注释清晰的开发板

利用单片机开发板除了学习外设电路的设计思路外,更重要的是学习如何编程。开发板厂家会提供外设电路相关的例程,在买之前一定要询问清楚,例程的代码注释是不是清楚。清晰的例程注释可以大大提升学习效率,而且更能培养良好的编程习惯。

3.选择有技术支持的开发板

刚开始学习单片机时,会遇到很多不懂的问题,如果有人能稍微指点一下,学习起来事半功倍。所以售后/技术支持很重要,厂家一般会建立一个交流群,或者注册一个论坛,大家在群里或者论坛里发帖交流,售后/技术支持提供技术答疑。

以上就是提供的三条选择方法,供参考。

以上就是这个问题的回答,感谢留言、评论、转发。

更多精彩内容请关注本头条号:玩转嵌入式。感谢大家。

51单片机教程有哪些推荐?

其实网上有很多这样的教程,一般买单片机就会送一张光碟教程,这些都不算是免费的教程吧,虽然网友分享资源很多。教程很多,所以自己看着能学进去东西的才是最适合你的。不过网上号称十天就能学会单片机的教程就不用去看了,有点走马观花,对于初学者来说,基础打不牢。万丈高楼平地起,地基没打好,迟早有一天会倒的。说了这么多,还是推荐两部比较好并且完全免费的教程给大家,一部比较适合初学者,一部比较适合有基础的人群。

一、《我要自学网》出品的“51单片机视频教程”

http://www.51zxw.net/study.asp?vip=12311367

由专业工程师3人,博士生1人组成的四人教学团队对51单片机教学进行视频讲解。该团队致力于微控制器和处理器的在工业控制和网络通信方面的编程,具有丰富的实战经验。

为了增加本视频的影响力以及弥补现在网络上鱼龙混杂的单片机教程的缺陷,因此本视频从基于Proteus软件虚拟环境和基于我要自学网定制开发板两个方面进行讲解。每节视屏大约10~20分钟,随时随地学。

教程一共分为八章:总共是涵盖了数电模电、proteus软件、C语言、单片机、PCB画图等知识点。

第一章:51单片机视频教程介绍,第二章:学习51单片机准备知识,第三章:模拟电路,第四章:数字电路,第五章:Proteus软件的学习及数模电基本电路仿真,第六章:51单片机C语言漫谈,第七章:单片机内部资源编程,第八章:外部资源

二、金沙滩工作室出品的“手把手教你学单片机”教程

该教程的主要核心思想是:在实践中成长 。

该视频教程的主讲老师小宋老师:我们学习单片机,我认为,最重要的就是动手操作,动手实践,在实践中体会成长,在实践中体会快乐,那么进步就会非常快了。“实践,怎么实践,说起来轻松,可是我什么都不知道,起码该看明白书,知道单片机是什么我再去做”,估计这么想的同学不在少数,而且这样想的同学单片机水平一般都不高,呵呵。同学们有这个想法,是由于受到12年初等教育的教学模式的影响。因为初等教育,以记忆熏陶为主,不管是背诵还是计算,都是局限在课本上,几乎很少有与生活相关的实际内容。而实际技能呢,是通过不断反复试验得到的经验教训来提高自己能力的。就如同我们学开车一样,我们不懂汽车构造原理,我们不还是一样可以学会开车么,握好方向盘,脚踩离合油门刹车,不就可以开车了么。我们主动的是开车,开车的过程,我们也会慢慢的了解汽车构造,就如同我们学单片机的编程应用,以后也会慢慢了解单片机的原理一样。所以,我的观点是赶鸭子上架,直接上手做是最快捷的学习方法。

所以说此视频适合有单片机基础的学,学进去了搞懂了,你会发现你的提升会很大

以下是视频教程获取方式,直接进官网就能找到

零是起源写于20180728

本文来自投稿,不代表本站立场,如若转载,请注明出处。