当前位置: 首页 > news >正文

普中51单片机学习笔记-数码管

目录

动态显示原理

74HC138(3-8译码器)

74HC245(双向总线驱动器)

硬件电路

示例代码

关键要点

总结


动态显示原理

要让多位数码管同时显示不同的数字,需要利用“动态扫描”技术。其核心原理是:

  • 分时点亮:在极短的时间内(例如每位数码管点亮1-2毫秒),依次快速点亮每一位数码管。
  • 段码位码配合:在点亮某一位数码管时,74HC245送出该位需要显示的数字对应的段码,同时74HC138选中这一位数码管。
  • 利用视觉暂留:由于人眼的视觉暂留效应,只要扫描的速度足够快(通常整个循环周期小于20ms),看起来就像是所有数码管在同时稳定显示一样。

74HC138(3-8译码器)

它的角色是“位选”,也就是控制多位数码管中的哪一位被点亮。

它通过3个输入引脚(A0, A1, A2)的二进制组合,来选择8个输出引脚(Y0~Y7)中的一个输出有效电平(通常是低电平),从而选中对应的数码管。

74HC245(双向总线驱动器)

它的角色是“段选”,负责增强单片机IO口的驱动能力,并提供数码管显示具体数字(或字符)所需的段码数据(即控制a, b, c, d, e, f, g, dp这8个段是否点亮)。

硬件电路

示例代码

#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(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();}
}

关键要点

  • 消隐处理:在切换位选时,一定要先关闭段码(清空P0口或发送消隐码)再切换位选,最后送入新的段码。这能有效避免“鬼影”(即数码管显示模糊或不该亮的段微微发亮)。

  • 驱动能力74HC245的主要作用就是提供足够的电流驱动,让数码管亮度足够。如果直接用单片机IO口驱动,可能会因为电流不足导致显示昏暗,甚至损坏单片机。

  • 扫描频率:确保8位数码管整体的扫描频率高于50Hz(即循环一周时间小于20ms),否则会观察到明显的闪烁。

  • 限流电阻:别忘了在74HC245的输出端(或者数码管的段码输入端)串联限流电阻(通常几百欧姆),以保护LED段不被过大的电流烧毁。

总结

总的来说,74HC138负责精准定位到哪一位数码管亮(位选),而74HC245则负责让这位数码管显示出正确的数字(段选),两者配合,通过动态扫描的方式,就能轻松实现多位数码管的稳定显示。

http://www.dtcms.com/a/598179.html

相关文章:

  • Python 开发环境安装与配置全指南(2025版)
  • 上海建设官方网站设计学类包括哪些专业
  • 网站 网页制作南京广告公司黄页
  • 如何用网站做推广网络营销策划书封面
  • 宁波seo建站价格wordpress长文章分页代码
  • AI 赋能教育新生态 | 教学创新、范式转型与实践路径探析
  • 网站开发按钮素材搜索视频 网站开发
  • 二手车网站开发多少钱网站里的课程配图怎么做
  • 网站上传模板后太原制作网站的公司
  • 【复习408】计算机网络应用层协议详解
  • 在那些网站做宣传更好wordpress怎么安装上服务器
  • 2023年php凉透了大连seo顾问
  • Redis的知识整理《1》
  • 怎样免费建一个网站网站开发培训费用
  • 数据产品之数据埋点
  • 7.MySQL这的内置函数
  • 网站建设设计师招募重庆网络seo公司
  • -1网站建设购物中心网站建设
  • 量子计算自学记录
  • 儿童网站建设网站建设要考虑哪些内容
  • office online server
  • 【 Git:本地项目上传至 Gitee 仓库】
  • Hello-Agents task2 大语言模型基础
  • 机器学习“开箱即用“:Scikit-learn快速入门指南
  • 乐迪信息:智慧煤矿井下安全:AI 摄像机实时抓拍违规行为
  • 重庆免费自助建站模板电影网站制作模板
  • 轻松筹 做的网站价格网站建设赠送seo
  • 网站团队网上学习做网站
  • 悬镜安全源鉴SCA(软件成分分析)产品,开源商业化成果获肯定
  • 咸阳企业网站建设阳江做网站多少钱