本实验主要是了解51单片机和数码管连接的硬件电路图以及软件编程操作。
目录:
硬件电路:
1.数码管锁存器模块:
74HC573的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
引脚功能和芯片真值表:
简单来说,当使能端OE'接低电平时,锁存器工作(故在电路设计时直接将使能端OE'与GND相连)。此时若锁存器锁存控制端LE为高,则数据输出端与数据输入端电平同步,当锁存控制端LE转为低电平,无论数据输入端电平高低,数据输出端的电平仍然保持与上次LE为高时的电平。
两个锁存器就是可以将一组八位I/O口当做十六位使用,解决了数码管对I/O口使用过多的问题。
两个锁存器一个控制每一位数码管的段码,即数码管所显示的数值;另一个控制八位数码管的显示位数。
2.八位共阴数码管:
一个锁存器Q0 ~ Q7连接整个八位数码管的WE1 ~ WE8,控制八位数码管显示的位数;
另一个锁存器Q0 ~ Q7连接整个八位数码管的两组A ~ F,控制每一位数码管显示的数值。
八位共阴数码管由两片四位共阴数码管组成
一位共阴数码管详细电路图
程序代码
1.数码管静态显示
原理分析:
数码管显示需要确定一位数码管显示的数值和八位数码管显示的位数。
其中要控制一位数码管中A-G和DP共8个led显示单元和8位数码管。
所以我们用两片锁存器将一组8位I/O口扩展为两组8位即16位,其中一片控制每一位数码管显示的数字,将其锁存控制端LE命为DULA(代码中定义为du),其中一片控制八位数码管显示的位数,将其锁存控制端LE命为WELA(代码中定义为we)。
由此我们便可以确定八位数码管显示哪几位并且显示什么数字了。
另外,在使每一位数码管显示数字时,我们需要给一组I/O口赋值。例如显示数字0,我们会使a,b,c,d,e,f灯点亮,因为是共阴数码管,所以点亮给高电平,即“du”锁存器锁存00111111,用十六进制表示为0x3f。以此类推,我么可以把数码管显示的数字以数组形式存储在单片机程序储存其中,数组下标即为对应的显示数字,方便使用。
数码管静态显示由锁存器输出端将I/O电平锁定输出。
代码实现:
八位数码管全部静态显示数字0
代码如下:
2.数码管动态显示
原理分析:
数码管动态显示是分时显示,main函数中代码在一个循环中执行,数码管由程序动态扫描显示。利用人眼的视觉暂留的特点,仿佛数码管是同时显示一样。
代码实现:
数码管动态显示数字12
代码如下:
3.代码运行效果图
关键字:51单片机 数码管显示 学习笔记
引用地址:
51单片机数码管显示学习笔记
推荐阅读最新更新时间:2024-11-02 15:07
STM32单片机学习笔记(9):定时器中断
项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。本项目利用CubMX创建一个32工程,用以实现定时器中断控制LED灯的状态转换的功能,并在Proteus中进行仿真验证。 硬件模块 STM32F103R4 LED 软件工具 CubMX Proteus KEIL 电路连接图 工作流程 首先,创建一个CubMX工程。这里选择的是STM32F103R4型号的单片机。下图是时钟树的设置,这个根据自己习惯设置就好,这里的时钟频率,也就是定时器时钟频率是8MHz. 介绍定时器发生中断时间的计算方法:
[单片机]
C51单片机串口工作的四种方式总结
方式0:同步移位寄存器输入输出方式 1. 利用移位寄存器实现串行/并行的转换(功能) 2. 波特率:fosc/12 3. RXD(P3.0)----用于串行数据的输入和输出 TXD(P3.1)----充当输出的移位时钟 4. 数据大小:8位 5. 方式0发送: ○ 串口接口移位寄存器(74HC164),主要用于扩展并行输出口 ○ 用单片机本身的3根线换取了8根线的作用 ○ 串行接口将8位数据从SBUF中取出 ○ TXD引脚上输出同步移位脉冲 ○ 以fosc/12的波特率从RXD端串行输出到移位寄存器 ○ 发完后TI置1,向CPU请求中断 6. 7. 8. 方式0接收: ○ 串口接口移位寄存器(74HC1
[单片机]
单片机实验----控制数码管的动态显示
本次实验任务如下: 一、动态显示与静态显示的比较 1.什么是动态显示 驱动电路可以使数码管正常显示数据,数码管的驱动方式有两种:动态显示驱动和静态显示驱动。 动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起。 另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。 当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。 2.什么是静态显示 静态显示驱动静态驱动也称直流驱动。 静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动。 3.优缺点对比 二、
[单片机]
基于51单片机的汽车防碰撞系统的设计
1.引言 随着汽车技术的不断进步,尤其是自动驾驶技术的发展,越来越多的距离检测设备将会不断面世。目前,运用于汽车测距主要有以下四种方式:毫米波雷达测距方式;摄像系统测距方式;激光测距方式;超声波测距方式。毫米波雷达存在电磁波相互干扰问题,摄像系统则造价高昂,均难以在汽车上普及。激光测距具有测量时间短、量程大、精度高等优点,适应汽车从低速前进到高速前进的测距需求,避免汽车高速行驶时因测距速度慢造成的测距失准现象。超声波测距原理简单,制作方便,成本比较低,但其只适用于较短距离低速测距,故将其应用于汽车倒车时测距。本文提出的将激光测距和超声波测距相结合的安全报警系统,旨在帮助驾驶员在汽车多种行驶状况、多方位探知并显示车辆与周围
[单片机]
用Proteus学习51单片机之串口
串口的理论知识我就不记了,网上多的是。51单片机的串口,有4种方式,分别为方式0,方式1,方式2,方式3.由于我的目的,使用串口主要是为了和电脑进行通信,所以主要使用方式1(事实上我也只学了方式1,其他方式等用到的时候再学吧)。 串口的方式1,其波特率与定时器T1相关,公式如下: 方式1波特率 = (2SMOD×32)/(T1溢出率) SMOD是一个寄存器,一般我们就取0了 T1的溢出率,即每秒T1计数满几次(相关知识可以看看前面笔记的记录) 正是因为如上的公式,所以设置TH1和TL1的初值,就能控制方式1的波特率了。不过一般波特率是固定的那么几种,像2400,4800和9600等,要用的时候查一下初值就成了。 由于用的是Prot
[单片机]
TMS320VC5402DSP与51单片机的接口设计技术
TMS320VC5402(VC5402)是德州仪器公司推出的具有较高性价比的定点数字信号处理器。VC5402增强外设由软件等待状态发生器、锁相环时钟发生器、6通道直接存储器访问(DMA)控制器、增强型8位并行主机接口(HPI)等组成。两个可编程的多通道缓冲串口(McBSP)能够全双工、快速地与其他同步串口进行数据交换,硬件连接简单,串口的工作模式和传送数据的格式可通过编程实现。DSP和单片机之间的通信一般利用双口RAM,通过串口或DSP的HPI接口实现。 利用双口RAM实现 CY7C026是CYPRESS公司生产的16k×16B高速双口静态RAM,存取速度小于25ns。他具有真正的双端口,可以同时进行数据存取,两个端口具有独立的
[应用]
MCS-51单片机P0端口的结构及工作原理
P0 端口 8 位中的一位结构图见下图: 图片1 由上图可见, P0 端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为 P0.X 引脚的图标,也就是说 P0.X 引脚可以是 P0.0 到 P0.7 的任何一位,即在 P0 口有 8 P0端口8位中的一位结构图见下图: XMLNAMESPACE PREFIX = O / XMLNAMESPACE PREFIX = V / 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何
[单片机]
STM8L051单片机,外部时钟初始化
STM8L051单片机,外部时钟初始化,程序如下 void SYSCLK_Init(void) { CLK_HSEConfig(CLK_HSE_ON);//打开外部时钟 CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//配置分频系数 CLK_SYSCLKSourceSwitchCmd(ENABLE); //外部时钟使能 CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);//选择外部时钟 while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE) //等待外部时钟初始化完成 { } } 大致步骤如
[单片机]