数码管与译码器

news2024/11/19 18:27:53

目录

数码管

显示的基本原理

LED数码管的显示方式

静态显示方式

动态显示方式

具体案例

数码管静态显示

电路图

keil文件

数码管动态显示

电路图

keil文件

74LS138译码器

简介

译码表

译码器案例

电路图

keil文件

74HC595译码器

前言

举例解释

简单案例

电路图

keil文件

进阶案例

电路图

keil文件

数码管

LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成的8字型器件

注意:8个LED构成了数码管,数码管的连接方式有共阴极和共阳极连接。

显示的基本原理

LED数码管的显示方式

静态显示方式

特点

  • 公共端直接接地或接电源
  • 每个数码管的段选线与一组IO接口线相连
  • 每个数码管一直在显示

动态显示方式

特点

  • 所有的数码管的段选线与一组IO接口线并联在一起
  • 每个数码管的公共端由一根IO线控制
  • 显示为逐个显示(利用人眼的视觉暂留原理,数码管切换的速度够快就好像多个数码管一起显示)

注意:段码线决定晶体管显示的是什么,位码线决定是哪个晶体管要显示;若想要四个数码管均显示不同的数字那么就需要以很小的时间内不断地切换四个数码管的显示(人眼的视觉暂留)

具体案例

数码管静态显示

需求:共阴极的方式实现0——9的不断循环。

电路图

keil文件
#include "reg51.h"
unsigned char s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void delay(unsigned int n)
{
	unsigned int i=0,j=0;
	for(i=0;i<n;i++){
		for(j=0;j<120;j++);
	}
}
void seg()
{
	int i=0;
	for(i=0;i<10;i++)
	{
		P2=s[i];
		delay(500);
	}
}
void main()
{
	while(1)
	{
		seg();
	}
}

数码管动态显示

需求:在数码管上显示hello这个字符串。

电路图

注意:英文字母为段码线,数字为位码线;

keil文件
#include "reg51.h"
unsigned char str[]={0x76,0x79,0x38,0x38,0x3F};
unsigned char wei[]={0x01,0x02,0x04,0x08,0x10};
void delay(unsigned int n){
	unsigned int i=0,j=0;
	for(i=0;i<n;i++){
		for(j=0;j<120;j++);
	}
}
void seg(){
	int i=0;
	for(i=0;i<5;i++){
		P3=~wei[i];
		P2=str[i];
		delay(5);
	}
}
void main()
{
	while(1)
	{
		seg();
	}
}

74LS138译码器

简介

前言:该译码器可以仅通过3个针脚来决定右面对应针脚的信号(其中一个为0剩下的全是1),进而对数码管的位选断进行选择。

理解:左边的针脚为数字输入端,右边的8个端口为数字输出端;上下两端分别为电源和接地;左下脚3个针脚为使能端(需要把G1接上高电平、G2A和G2B接上低电平)

译码表

  • 000——Y0
  • 001——Y1
  • 010——Y2
  • 011——Y3
  • 100——Y4
  • 101——Y5
  • 110——Y6
  • 111——Y7

注意:译码表输入端三个字母的排序为CBA 

译码器案例

需求:在特定位置显示特定数字。

电路图

keil文件

#include "reg51.h"
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
#1——9对应的段码
unsigned char s[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void show(unsigned char location,unsigned char number){
	switch(location)
	{
		case 1:P3_0=0;P3_1=0;P3_2=0;break;
		case 2:P3_0=1;P3_1=0;P3_2=0;break;
		case 3:P3_0=0;P3_1=1;P3_2=0;break;
		case 4:P3_0=1;P3_1=1;P3_2=0;break;
		case 5:P3_0=0;P3_1=0;P3_2=1;break;
		case 6:P3_0=1;P3_1=0;P3_2=1;break;
		case 7:P3_0=0;P3_1=1;P3_2=1;break;
		case 8:P3_0=1;P3_1=1;P3_2=1;break;
	}
	P2=s[number];
}
void main()
{
	while(1){
		#展示第三列的数字为8
		show(3,8);
	}
}

74HC595译码器

前言

含义:74HC595是串行输入并行输出的移位寄存器,可用三根线输入串行数据,8根线输出并行数据,多片级联后可输出16位、24位、32位等,常用于IO口扩展。

注意:左边为移位寄存器,右边为输出缓存寄存器。 

工作模式:首先SER(DS)串行数据要给其对应的移位寄存器输入,之后串行数据就会进入到移位寄存器(当SERCLK/SH_CP串行时钟每来一个上升沿,那么SER的串行数据就会向下进入一位)然后数据都走到了移位寄存器,那么就会根据RCK/ST_CP寄存器时钟的上升沿信号把移位寄存器内部的数据一位一位的搬到输出缓存中,因此就达到了串行输入并行输出的目的。

注意:QH撇是接另外一个74HC595的SER端,使其达到扩充移位寄存器的目的。

举例解释

需求:QA-QH输出00000101

解释:SER串行数据口写入1,控制时钟SERCLK来一个上升沿,那么1就会被移到移位寄存器的第一个块中,然后SERCLK上升沿清零回到默认低电平状态,然后继续向SER写数据0,SERCLK又来高电平,那么这个1就会移到移位寄存器的第二块,0就会被移到移位寄存器的第一块中,SERCLK又回到低电平,如此循环往复直到移位寄存器被填满,此时数据移位完成,RCLK来个高电平将移位寄存器中的数各个搬到输出缓存中,之后RCLK恢复到低电平。

简单案例

需求:通过74HC595用三条线在LED数码管中显示6

电路图

注意:MR杠和OE杠为功能脚,若MR杠接低电平,那么右边的Q0——Q7撇全输出低电平;若OE杠接高电平,那么Q0——Q7这个管脚就会被禁用。所以正常来说10管脚MR杠接高电平;13管脚OE杠接低电平。

keil文件

#include "reg51.h"
sbit SER=P2^1;
sbit SCK=P2^0;
sbit RCK=P2^3;
//74HC595
void WriteByte(unsigned char Byte){
	unsigned char i;
	for(i=0;i<8;i++){
		SER=Byte&(0x80>>i);
		SCK=1;
		SCK=0;
	}
	RCK=1;
	RCK=0;
}
void main()
{
    SCK=0;
    RCK=0;
	while(1)
	{
		WriteByte(0x7D);
	}
}

进阶案例

需求:要求用3根线来实现控制多位数码管显示hello。

电路图

keil文件

#include "reg51.h"
unsigned char str[]={0x76,0x79,0x38,0x38,0x3F};
unsigned char wei[]={0x01,0x02,0x04,0x08,0x10};
sbit SER=P2^1;
sbit SCK=P2^0;
sbit RCK=P2^3;
void delay(unsigned int n){
	unsigned int i=0,j=0;
	for(i=0;i<n;i++){
		for(j=0;j<120;j++);
	}
}
void writeByte(unsigned char wei,unsigned char duan){
	unsigned char i,j;
	//位选
	unsigned char weidi=~wei;
	for(i=0;i<8;i++){
		SER=weidi&(0x80>>i);
		SCK=1;
		SCK=0;
	}
	//段选
	for(j=0;j<8;j++){
		SER=duan&(0x80>>j);
		SCK=1;
		SCK=0;
	}
	RCK=1;
	RCK=0;
}
void hello(){
	int i=0;
	for(i=0;i<5;i++){
		writeByte(wei[i],str[i]);
		delay(5);
	}
}
void main()
{
    SCK=0;
    RCK=0;
	while(1)
	{
		hello();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1570538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手写防抖节流、手写深拷贝、事件总线

一、防抖 手写防抖--基本实现&#xff08;面试&#xff09; 手写防抖并且绑定this和event 添加取消功能 添加立即执行状态&#xff0c;默认不立即执行 underscore库介绍&#xff0c;lodash更轻量级 二、节流 用underscore库&#xff0c;调用throttle函数 手写基础版节流-&#…

《价值》-张磊-高瓴资本-4(上)-价值投资需要研究驱动,而非拍脑袋

第四章 价值投资方法与哲学&#xff08;上&#xff09; 在我的书架上&#xff0c;有一套书最为醒目&#xff0c;我总会在不经意间打开翻看&#xff0c;那就是由本杰明 格雷厄姆&#xff08;Benjamin Graham &#xff09;与戴维 多德&#xff08;David Dodd &#xff09;在 19…

【HTML】制作一个简单的三角形动态图形

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段HTML和CSS代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建两个文本文档&#xff0c;其中HTML的文件名改为[index.html]&#xff0c;CSS的文件名…

实用技巧:如何取消app的截屏禁用

因为我想要在小鹅通App做笔记,但是被小鹅通App禁用截屏了,这真是一个很糟糕的使用体验,虽然可能是为了保护商家权益…… 方法1 可以让商家设置课程可以截屏 方法2 手机root,安装Xposed框架,利用Xposed框架上面的插件我们可以对手机进行高度定制化,而安装Xposed框架的…

微信小程序 电影院售票选座票务系统5w7l6

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

4.5 day4 FreeRTOS

1.总结二进制信号量和计数型信号量的区别&#xff0c;以及他们的使用场景。 二进制信号量的数值只有0和1&#xff0c;用于共享资源的访问 计数型信号量的值一般是大于或者等于2&#xff0c;用于生产者和消费者模型 2.使用技术型信号量完成生产者和消费者模型实验。 3.总结Free…

基于单片机的炉温自动控制系统设计

**单片机设计介绍&#xff0c;基于单片机的炉温自动控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的炉温自动控制系统设计是一个综合性的项目&#xff0c;它结合了单片机技术、温度传感技术、控制算法以…

Redis从入门到精通(五)Redis实战(二)商户查询缓存

↑↑↑请在文章头部下载测试项目原代码↑↑↑ 文章目录 前言4.2 商户查询缓存4.2.1 缓存介绍4.2.2 查询商户信息的传统做法4.2.2.1 接口文档4.2.2.2 代码实现4.2.2.3 功能测试 4.2.3 查询商户信息添加Redis缓存4.2.3.1 逻辑分析4.2.3.2 代码实现4.2.3.3 功能测试 4.2.3 数据一致…

case语句

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 CASE 语句的执行方式与 IF...THEN...ELSIF 语句的执行方式类似&#xff0c;但是它是通过一个表达式的值来决定执行哪个分支 CASE 选择器表达式 WHEN 条件 1 THEN 语句序列 …

【00】【solidity最新教程】-简介

Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C&#xff0c;Python 和 Javascript 语言的影响&#xff0c;设计的目的是能在以太坊虚拟机&#xff08;EVM&#xff09;上运行。 Solidity 是静态类型语言&#xff0c;支持继承、库和复杂的用…

h5 笔记2

何谓cookiecookie是记录在浏览器里的变量&#xff0c;用来存放特定的信息&#xff0c;必须利用script程序或CGI程序来写入或读取。例如&#xff0c;有些网站为了让用户不必每次都重新输入账号&#xff0c;会利用cookie来记录账号&#xff0c;下次进入网页时就会自动弹出账号&am…

STM32CubeIDE基础学习-通用定时器中断实验

STM32CubeIDE基础学习-通用定时器中断实验 文章目录 STM32CubeIDE基础学习-通用定时器中断实验前言第1章 工程配置1.1 工程外设配置部分1.2 生成工程代码部分 第2章 代码编写第3章 实验现象总结 前言 生活中很多应用都有用到定时器功能、计时功能等。 定时器中断可以大大降低…

C语言基础(一)

C语言基础&#xff08;一&#xff09; 程序程序的设计步骤计算机中数据表示非数值数据数值转换&#xff08;二、八、十六&#xff09;进制转十进制十进制转换&#xff08;二、八、十六&#xff09;进制二进制和八、十六进制转换 基本数据类型关键字&#xff08;32个&#xff09…

【复习linux相关命令】

查看命令位置&#xff0c;查找命令 which命令 查看命令的位置 [rootVM-12-15-opencloudos ~]# which cd /usr/bin/cd [rootVM-12-15-opencloudos ~]# which java /usr/local/java/jdk1.8.0_261/bin/java [rootVM-12-15-opencloudos ~]# which pwd /usr/bin/pwdfind查找文件 …

【html威廉希尔体育体育羽毛球页面带注册】学生网页设计作业源码APP是不是真的?

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓球 | 网球 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a;结构CSS&#xff1a;样式 在操作方面…

Python人工智能应用----文本情感分析

1.问题引入 接着前两节课的内容&#xff0c;今天我们要构建一个人工智能系统。 它的目的是像人类一样&#xff0c;区分评价的情感是正面还是负面的。 接下来&#xff0c;我们要对提取的文本进行感情色彩的分析&#xff0c;这个就是文本情感分析&#xff0c;我们要使用机器学习…

Cisco路由器配置IPv6 Manual隧道

Cisco路由器配置IPv6 Manual隧道 IPv6与IPv4共存的方式 IPv6与IPv4共存方式大致有三种&#xff1a; 双栈&#xff1a;要求网络中所有设备均同时支持IPv4和IPv6转换&#xff1a;转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道&#xff1a;假定两个IPv6节点要使用IPv6…

6:算法基础--6.1:线性结构 ,6.2:查找算法

转上一节&#xff1a; http://t.csdnimg.cn/ql5Cdhttp://t.csdnimg.cn/ql5Cd 课程内容提要&#xff1a; 6&#xff1a;知识点考点详解 6.1&#xff1a;线性结构 通常分析时间复杂度的方法是从算法中选取-种对于所研究的问题来说是基本运算的操作&#xff0c;以 该操作重…

从多模态生物图数据中学习Gene的编码-MuSeGNN

由于数据的异质性&#xff0c;在不同的生物医学背景下发现具有相似功能的基因对基因表示学习提出了重大挑战。在本研究中&#xff0c;作者通过引入一种称为多模态相似性学习图神经网络的新模型来解决这个问题&#xff0c;该模型结合了多模态机器学习和深度图神经网络&#xff0…

2012年认证杯SPSSPRO杯数学建模C题(第二阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现&#xff1a; 从 1984 年的美国洛杉矶奥运会开始&#xff0c;奥运会就不在成为一个“非卖品”&#xff0c;它在向观众诠释更高更快更强的体育精神的同时&#xff0c;也在攫取着巨大的商业价值&#…