学习笔记 从零开始学单片机(2) 全八段数码管显示

2023-11-01 14:40

本文主要是介绍学习笔记 从零开始学单片机(2) 全八段数码管显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发板上有八个八段数码管,现在把它点亮它。数码管显示有动态和静态两种,本质上没有什么区别,由于单片机接口有限,不可能一对一,所以依次让每一个数码管点亮,那么从视觉角度上看就是一起亮起来。但是动态显示时,亮度较低。

 

下面的图是一个八段数码管的原理图,有共阴极和共阳极两种解法,这里是共阴极接法。a,b,c,d,e,f,g,dp分别对应八个数码管。

 

数码管

为了让八个数码管连起来,该开发板使用了两个八进制三态非反转透明锁存器,74HC573。

它的特性是:

×输出能直接接到 CMOSNMOS TTL 接口上

×操作电压范围:2.0V~6.0V

×低输入电流:1.0uA

×CMOS 器件的高噪声抵抗特性

 

 

锁存器

 

D0~D7:输入

Q0~Q7:输出

LE:输入使能

OE:输出时能

 

输出

输出使能

锁存性能

D

Q

L

H

H

H

L

H

L

L

L

L

X

不变

H

X

X

Z

 

X:随即

Z:高阻抗

 

下面是电路原理图,所有数码管的引脚,同时接入DUAN这个锁存器的输出端,锁存器WEI的输出端为8个数码管的片选。

锁存器DUAN的输入使能接到51的P2.6引脚,锁存器WEI的输入使能接到P2.7上,同时它俩的输出使能接地(可能是为了方便点)

 

 

 

原理图

 

原理图很简单,接下来写一个程序,依次点亮数码管,并延时一段时间

 


#include <reg52.h>

unsigned char code_table[]=
{
 0x3f,0x06,0x5b,0x4f,
 0x66,0x6d,0x7d,0x07,
 0x7f,0x6f,0x77,0x7c,
 0x39,0x5e,0x79,0x71,0
};
sbit Led8En  =  P2^6; //数码管,锁存器使能信号,高电平有效   ,数码管输出P0
sbit Led8CS  =  P2^7;  //数码管片选,锁存器使能信号,电平有效,低电平选中

/****************************************************************/
 delay 循环延时
 times unsigned int 延时次数,100*x
/****************************************************************/
void delay(unsigned int times);

/****************************************************************/
 dlight 点亮数码管
 i   unsigned char 片选数码管,点亮第i个灯
 number  unsigned char 显示参数,高电平有效
 duration unsigned int 循环延时次数,100*duration
/****************************************************************/
void dlight(unsigned char i, unsigned char number, unsigned int duration);


void main()
{
 unsigned char i=1;
 while(1)
 {
  for(i=1; i<=8; i++)
  {
   dlight( i, i, 1 );
  }
 }
}


void dlight(unsigned char i, unsigned char number, unsigned int duration)
{
 if(i>8 || number>16)
  return;

 Led8CS = 1;
 P0=~(1<<(i-1));
 Led8CS = 0;

 Led8En = 1;
 P0=code_table[number]; //. a b c d e f g, 高电平亮
 Led8En = 0;

 delay(duration);

}

void delay(unsigned int times)
{
 unsigned int i,j;
 for (i=0; i<times; i++)
  for (j=0; j<10; j++)
   ;
}

 

最后在数码管上显示87654321 

这篇关于学习笔记 从零开始学单片机(2) 全八段数码管显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323700

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06