单片机第一季:零基础4——数码管

news2024/11/24 17:55:27

1,第七章:静态数码管和动态数码管

工作原理:
(1)亮灭原理(其实就是内部的照明LED);
(2)显示数字(甚至文字)原理:利用内部的LED的亮和灭让外部的组成数字的笔画显示或者不显示,人看到的就是不同的数字。

共阳极和共阴极数码管:
(1)驱动方法的差异。必须清楚一个数码管内部的8颗LED是独立驱动的。如果8颗LED的正极接在一起接到VCC上(负极分别接到单片机的不同引脚),这种接法就叫共阳极。反之如果8颗LED负极接在一起然后接到GND(正极就分别接到单片机的不同引脚)就叫共阴极。两种接法都可以驱动数码管显示,但是用来显示的单片机程序不同(共阳极时单片机0是亮,共阴极时单片机的1是亮)。
(2)驱动电流需求差异。数码管(其实就是LED)如果按照共阳极接法则单片机可以直接驱动显示,如果按照共阴极接法则单片机不能直接驱动,因为单片机的IO口提供的电流大小不够驱动数码管内部的LED显示,需要外部电路来提供一个大电流驱动的芯片来解决(上个课程中的74HC573就是起的这个作用)。实际普中科技的开发板的数码管使用的是74HC245芯片。

嵌入式硬件入门——74HC245三态收发器

普中科技开发板上静态数码管是共阳极接法,因此LED的负极可以直接接到单片机的端口上进行控制。

静态数码管显示程序:

/**************************************************************************************
深圳市普中科技有限公司(PRECHIN 普中)
技术支持:www.prechin.net
PRECHIN
 普中
 
实验名称:静态数码管实验
接线说明:	
实验现象:下载程序后“静态数码管模块”显示数字0
注意事项:																				  
***************************************************************************************/
#include "reg52.h"

typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;

#define SMG_A_DP_PORT	P0	//使用宏定义数码管段码口

//共阴极数码管显示0~F的段码数据
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//共阳极数码管显示0~F的段码数据
//{0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92,0x82, 0xF8, 0x80, 0x90, 0x88, 0x83,0xC6, 0xA1,0x86,0x8E}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	SMG_A_DP_PORT=~gsmg_code[0];//将数组第1个数据赋值给数码管段选口
	while(1)
	{
	   	
	}		
}

开发板上的动态数码管是共阴极接法,因此需要通过74HC245芯片进行驱动

动态数码管:
(1)数码管还是原来的数码管(共阳极或共阴极均可)记住:数码管有2端:COM端和段码端;
(2)段码一侧还是接一个单片机端口;
(3)COM(共极)接单片机一个IO口,多个联排数码管的COM共同接一个IO端口;
分析对比静态和动态数码管,发现本质区别是:静态数码管中只要给了段码数码管就一定工作(显示只取决于段码端),动态数码管中段码端给了段码值后还需要COM端配合才能点亮数码管。
 

 动态数码管如何工作:
(1)在某一特定时间段中,联排数码管中只有一个数码管在工作,其他均在休息(不工作)
(2)COM端选择哪个数码管工作,段码端输出这个数码管要显式的数字的段码;延时;COM端选择下一个数码管工作,同时段码端改输出这个数码管要显示的数字的段码;延时;COM端选择下一个数码管工作······
(3)快速切换工作的数码管,则人看到的是所有的数码管都在亮(其实亮度是比静态驱动低的)。
(4)动态数码管利用了人眼的视觉暂留
搞清楚2点:
第一,宏观上所有的数码管都是同时亮的,所以人以为所有数码管同时工作,所以多个数码管可以合在一起来显示(譬如显示12345678)
第二,微观上数码管是依次亮的,我们可以给不同的数码管送不同的段码,所以不同的数码管可以显示不同的数字。所以相当于8个数码管的显示是独立的。

 38译码器:
(1)38译码器的作用:用3个IO口来控制8路输出。
(2)用38译码器驱动数码管的意义:原来不用38译码器时,8个动态数码管一共使用2个IO端口(16个引脚),现在使用了38译码器后,我们可以用38译码器的3路输入来控制数码管的8路位码,这样总共只需要3+8=11个IO引脚就可以来驱动8个动态数码管了,省了5个IO口。

嵌入式硬件入门——74HC138译码器

动态数码管显示程序:

并且使用了74HC138译码器来控制数码管的阴极,通过单片机配合74HC245芯片控制数码管的阳极。

/**************************************************************************************
深圳市普中科技有限公司(PRECHIN 普中)
技术支持:www.prechin.net
PRECHIN
 普中
 
实验名称:动态数码管实验
接线说明:	
实验现象:下载程序后“数码管模块”显示01234567
注意事项:																				  
***************************************************************************************/
#include "reg52.h"

typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;

#define SMG_A_DP_PORT	P0	//使用宏定义数码管段码口

//定义数码管位选信号控制脚
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

//共阴极数码管显示0~F的段码数据
u8 gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

/*******************************************************************************
* 函 数 名       : delay_10us
* 函数功能		 : 延时函数,ten_us=1时,大约延时10us
* 输    入       : ten_us
* 输    出    	 : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{
	while(ten_us--);	
}

/*******************************************************************************
* 函 数 名       : smg_display
* 函数功能		 : 动态数码管显示
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void smg_display(void)
{
	u8 i=0;

	for(i=0;i<8;i++)
	{
	   	switch(7-i)//位选
		{
			case 0: LSC=1;LSB=1;LSA=1;break;
			case 1: LSC=1;LSB=1;LSA=0;break;
			case 2: LSC=1;LSB=0;LSA=1;break;
			case 3: LSC=1;LSB=0;LSA=0;break;
			case 4: LSC=0;LSB=1;LSA=1;break;
			case 5: LSC=0;LSB=1;LSA=0;break;
			case 6: LSC=0;LSB=0;LSA=1;break;
			case 7: LSC=0;LSB=0;LSA=0;break;
		}
		SMG_A_DP_PORT=gsmg_code[i];//传送段选数据
		delay_10us(100);//延时一段时间,等待显示稳定
		SMG_A_DP_PORT=0x00;//消音
	}
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	while(1)
	{
	   	smg_display();
	}		
}

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

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

相关文章

IDEA 错误:找不到或无法加载主类Main 完美解决方法

今天在运行项目的时候 Rebuild Prodject 后突然出了这样一个错误&#xff1a;IDEA 错误 找不到或无法加载主类,相信只要是用过IDEA的朋友都遇到过它吧&#xff0c;把我自己搞的焦头烂额&#xff01;&#xff01;csdn翻遍了没解决 1&#xff0c;未能成功编译&#xff1b; 尝试&a…

pycharm的一些常用设置

pycharm的一些常用设置 1、最新安装pycharm ,怎么设置解释器如图&#xff1a; 2、可通过鼠标放大缩小配置&#xff1a; 进入setting>Editor>File and Code Templates&#xff0c;点击python script&#xff0c;进行设置&#xff1a; """Author : A Tim…

【C语言初阶】带你轻松掌握指针基础知识完结篇——野指针,指针运算,指针和数组,二级指针

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello&#xff0c;这里是君兮_&#xff0c;今天继续给大家更新0基础入门C语言的内容&#xff0c;我们这次主要更新的依然是初阶指针的基础知识 废话不多说咱们直接开始吧&#xff01;&#xff01; 指针基础 一. 野指针1.…

运输层:TCP报文段的首部格式

1.运输层&#xff1a;TCP报文段的首部格式 笔记来源&#xff1a; 湖科大教书匠&#xff1a;TCP报文段的首部格式 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 为了实现可靠传输&#xff0c;TCP采用了面向字节流的方式。 但TCP在发送数据时&#…

CSS:选择器的各种类型和用法(含有例子和部分动态效果)

目录 css 基本语法一、基本选择器元素选择器 E{}特殊的 * 所有元素选择器属性选址器 E[attr]{}# id选择器. class选择器也可以结合着用selector1 selector2 包含选择器> 子选择器~兄弟选择器选择器组合 二、伪元素选择器第一个字加样式&#xff1a;第一行加样式&#xff1a;…

基于深度学习的高精度猴子检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度猴子检测识别系统可用于日常生活中或野外来检测与定位猴子目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的猴子目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

改进 Elastic Stack 中的信息检索:对段落检索进行基准测试

作者&#xff1a;Grgoire Corbire, Quentin Herreros, Thomas Veasey 在之前的博客文章中&#xff0c;我们讨论了信息检索的常见方法&#xff0c;并介绍了模型和训练阶段的概念。 在这里&#xff0c;我们将检查基准解决方案&#xff0c;以公平的方式比较各种方法。 请注意&…

基于高精度三维机器视觉的螺丝锁付系统应用

Part.1 行业背景 随着社会经济的发展、科技的进步及工业水平的提高&#xff0c;智能工业发展模式在全球范围内备受关注。螺丝锁付作为最常用的装配连接方式&#xff0c;在加工制造的各个环节得到了广泛应用&#xff0c;如&#xff1a;玩具、电子产品、塑胶、汽车零部件、通讯设…

freemark生成pdf

freemark生成pdf 字体库 simsun.ttc 解决中文问题 /*** 生成pdf* param params* param templPath* param ftlName* param htmlPath* param pdfPath* param fontPath* return*/public String processPdf(Map<String, Object> params, String templPath, String ftlName,…

CodeMirror 对 XML 文档熟悉及元素控制自定义

CodeMirror 是一个网络代码编辑器组件。它可以在网站中用于实现支持多种编辑功能的文本输入字段&#xff0c;并具有丰富的编程接口以允许进一步扩展。 本文为 xml 格式的代码提示约束格式规范的自定义示例内容。 先看效果&#xff0c;如下&#xff1a; 官方 Demo 的完整代码如…

【MATLAB第52期】#源码分享 | 基于MATLAB的高斯过程GPR超参数(sigma)自动优化算法 时间序列预测模型 五折交叉验证

【MATLAB第52期】#源码分享 | 基于MATLAB的高斯过程GPR超参数&#xff08;sigma&#xff09;自动优化算法 时间序列预测模型 五折交叉验证 后台私信回复“52期”即可免费获取数据及代码。 一、效果展示 二、优化思路 1.数据 一列时间序列数据 &#xff0c;滑动窗口尺寸为15。…

《前端开发 实践之 Webstorm 学习》

目录 Webstorm 简介官方下载地址安装记录-教程下载其他版本方法 是否推送数据统计许可证激活插件功能版本控制查看代码责任人插件(annotate) Webstorm 简介 作为 jetbrains 公司旗下一款 JavaScript 开发工具&#xff0c;Web前端开发神器之一 个人博客地址&#xff1a; 官方下载…

网络安全自学黑客入门(超详细)

前言 前几天发布了一篇 网络安全&#xff08;黑客&#xff09;自学 没想到收到了许多人的私信想要学习网安黑客技术&#xff01; 却不知道从哪里开始学起&#xff01;怎么学&#xff1f;如何学&#xff1f; 今天给大家分享一下&#xff0c;很多人上来就说想学习黑客&#xf…

银河麒麟服务器V10 SP1 .Net6.0 开机自动启动

开机自动启动&#xff0c;折腾了一小天&#xff0c;设置/etc/init.d/ 、update-rc.d&#xff0c;可能刚开始用&#xff0c;经验不多吧&#xff0c;尝试多种方式我的服务怎么都启动不起来&#xff0c;根据之前nginx和redis的自动启动经验&#xff0c;使用systemd管理服务&#x…

【EXCEL】给数据添加图表(数据条、柱状图、折线图等),快速分析功能图文详解

目录 0.环境 1.背景简介 2.具体实现 2.1 给数据添加数据条 实现效果&#xff1a; 具体操作&#xff1a; 2.2 给数据添加柱状图图表 实现效果&#xff1a; 具体操作&#xff1a; 2.3 给数据添加迷你图&#xff08;在表格中的折线图&#xff09; 实现效果&#xff1a; …

基于PyQt5的桌面图像调试仿真平台开发(13)图像边缘显示

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

JavaWeb学习笔记1

目录 web标准 三个组成部分 HTML 标题标签 水平线标签 换行标签 图片标签 布局标签&#xff1a; 超链接标签 属性&#xff1a; 视频标签&#xff1a; 音频标签&#xff1a; 段落标签&#xff1a; 文本加粗标签&#xff1a; 表格标签 表单标签 表单项 CSS Css引入方式…

1.6 OSI 七层参考模型

OSI 参考模型 OSI参考模型解释的通信过程OSI参考模型数据封装与通信过程物理层功能数据链路层功能网络层的功能传输层功能会话层功能表示层功能应用层功能 开放系统互连 (OSI)参考模型是由国际标准化组织 (ISO) 于1984年提出的分层网络体系结构模型目的是支持异构网络系统的互联…

数学建模--TOPSIS

代码 topsis.m Positivization.m inter2Max.m Mid2Max.m Min2Max.m

C++学习 函数

目录 函数 函数的定义 函数的调用 值传递 常见的样式 函数的声明 函数的分文件编写 1.创建后缀.h的头文件 2.创建后缀.cpp的源文件 3.头文件中写函数声明 4.源文件中写函数定义 5.函数调用 函数 作用&#xff1a; C中的函数充当了组织和重用代码的重要工具&#xff0c;提供了抽…