今天学的是数码管和锁存器的使用。用锁存器的目的,是为了减小IO口的使用,本来至少得用15根IO口的,用了锁存器后,只需要用10根IO口,若是继续增加数码管,IO口的增加也是一根根增加了。
锁存器的作用,是把当然IO口的状态保存下来,具体由锁存器的LE脚控制,当LE脚为高电平时,锁存器的输出和输入一样,若LE脚为低电平时,则把LE脚电平改变前的输入脚的状态保存下来作为输出,此时不管输入怎么变,它的输出也不会变了。这样,就做到了单片机的1组输出脚,可以控制多个设备的目的。
原理图请见上图,在图中,可以看到导线很少,这是因为要连接的导线很多,如果直接用导线连接的话,会导致整个设计图乱成一片,根本看不清楚,所以,这里使用标号来连接,即线的标号名字一样的,会自动连接在一起,如D0会自动和所有名字叫D0的线连起来,这要整个界面就看起来清爽了很多。
在这里再说个小技巧,为导线设计属性时,在Proteus里面,有一个挺方便的工具,叫“属性设置工具”,在工具菜单中间,可以用来批量给导线设置属性,比如给导线取标号是D0到D7,可以这样设置:
在字符串那里,填写NET=D#,表示标号的类型是D#这样的类型,而#会自动从下面的计数值开始,每次增加1.设置好以后,只要在要设置的线上面点击一下,就会自动把标号设置为D0,D1…。至于字符串中可以使用的属性,可以看右边的帮助,如给元件设置的话,可以是REF,VALUE,DEVICE,PINSWAP可以使用。
数码管的连续显示,原理是先在第一个数码管显示一个数字,然后在很快的时候里设置第二个,第三个数码管的数字。由于切换的时间非常的短,这样利用了人眼的视频暂留原理,看起来就是完整的显示了。这个其实和以前的电视机原理差不多。不过在Proteus上,由于显示及计算等原因,并不能看到完全显示的效果.(经高手指导,我知道自己搞错了,Proteus是完全可以完美的显示的,修改了一下代码就好了,主要是延时要小,并且要把数码管在显示后关闭)
关键字:Proteus 51单片机 数码管
引用地址:
用Proteus学习51单片机之数码管
推荐阅读最新更新时间:2024-03-16 15:28
逻辑运算与51单片机的位操作指令
一个单片机逻辑电路题目,要求编一程序实现下面逻辑电路的逻缉功能。 逻辑图: 悬赏分:20 | 解决时间:2011-1-2 22:53 ;------------------------------------------------------------ 最佳答案: 先把逻辑图写成如下的表达式:(用“P1.6\” 代表“P1.6 的非”,其它的也雷同) P3.0 = ((P1.0 * P1.1)\ * (P1.4 + P1.5)\) + P1.6\)\ 再反复应用摩根定理化简: P3.0 = ((P1.0 * P1.1)\ * (P1.4 + P1.5)\)\ * P1.6 P3.0 = ((P1.0 * P1
[单片机]
51单片机实验2:led灯闪烁
开发板led模块电路图如下: 在keil中,sbit的声明要放在全局变量的位置,若放在函数中,会报错。 延时函数的变量使用unsigned char,而不是int,因为char所占空间为1字节,为int所占空间为4字节,因此使用char可以节约内存。但是unsigned char仅能表示0~255,所以延时函数中的参数最大为255,若要更大,则使用int。 #include reg52.h #include intrins.h #define uc unsigned char sbit led1=P2^0; void delay(uc n) { uc i,j; for(i=1;i =n;i++) fo
[单片机]
在51单片机编程中,编译出现Target not created情况
1.像往常一样新建工程选择的是51型号系列的单片机,插入的头文件是reg51,但是在编译的时候出现了以下问题 代码中的P2不能被定义,且出现Target not created 2.在了解之后,可以将单片机型号改为AT89C52,也就是52型号的,相应的插入的头文件也就是reg52 这样编译结果就不会出错了 3.出现上述问题的主要原因是头文件的不同会导致其中有些引脚的表示方式不同,导致编译器不能识别
[单片机]
【51单片机】 蜂鸣器发声程序
蜂鸣器分为有源和无源,这个源是震荡源。 有源的直接给高电平就可以响(也有低电平驱动)。 无源的还需要通过给一个持续到震荡源才能作用。 51单片机开发板上的蜂鸣器通常是无源的。以下是蜂鸣器发声程序。 #include reg51.h sbit beep = P1^5; //定义P1_5为蜂鸣器端口 void delay(unsigned int i) //延时程序 { while(i--); } void main() //主程序 { while(1) //while无限循环 { beep = ~beep; //蜂鸣器程序取反 delay(100); } } 注意:如果程
[单片机]
51单片机定时器程序超简单实现数码管24小时时钟显示
用74hc573实现数码管24小时时钟显示,对于74hc573芯片如果不了解可以看看文件里面的手册,不多说先上代码 /*以下程序是根据74hc573芯片的锁存器 **原理来写的 **若有不懂的地方可以看看文件夹的芯片 **手册或者百度*/ #include reg52.h typedef unsigned char u8; typedef unsigned int u16; //串口定义没什么好说的 sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; u8 code mabiao ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
[单片机]
基于AT89C51单片机设计的简易智能机器人
引言 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。 1 设计思想与总体方案 1.1 简易智能机器人的设计思想 本机器人能在任意区域内沿引导线行走,自动绕障,在有光源引导的条件下能沿光源行走。同时,能检测埋在地下的金属片,发出声光指示信息,并能实时存储、显示检测到的断点数目以及各断点至起跑线间的距离,
[单片机]
MSP430 F249单片机 Proteus仿真 IAR工程设置 实例和开发环境
1 开发环境与流水灯实验 使用的是IAR 7.10 新建工程的细节看这里: https://blog.csdn.net/x1131230123/article/details/106956182 需要在debug模式下设置, 编译后hex文件在proNameDebugExe下 proteus设置时钟: 代码: #include MSP430x24x.h #define uchar unsigned char #define uint unsigned int void delayms( uint t ) { uint i; while ( t-- ) for ( i = 1330; i
[单片机]
TI 54xx DSP与51单片机的接口技术
1 硬件设计 1.1 时序匹配 HPI8总共有18根信号线。其中数据线8根(HD0~HD7),其余10根都是控制线,如表1所列 ①HAS:在数据线和地址复用的MCU中,与ALE信号连接,在下降沿锁存HBIL、HCNTL0/1、HR/W,因数这些信号通常与地址线连接。如果MCU的数据线和地址线没有复用,则应该接高电平。 ②HDS1、HDS2:数据传输的时序控制。时序见图1,即下降沿传输开始,上升沿传输结束。另外如果不使用HAS(即接高电平),也可以配合HCS对HBIL、HCNTL0/1、HR/W进行锁存。 ③HCNTL0/:选择HPI内部寄
[单片机]