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

51单片机:数码管

数码管简介

image-20241127175917258点击并拖拽以移动

数码管每段其本质就是个LED灯,只需要控制特定的LED灯亮就能显示数据。普中开发版所使用的是两个并在一起共阴极连接的“4位数码管”,可以同时显示8个数字。数码管的显示可以分成静态显示和动态显示,这里先介绍最简单的静态显示。

image-20241127180727836点击并拖拽以移动编辑

数码管分为共阴极连接和共阳极连接,顾名思义共阴极就是把所有的数码管阴极连接在一起,共阳极就是把数码管所有的阳极连接在一起,之所以这么做是为了节省单片机I/O口。

图(a)是数码管段选位图,以普中51单片机开发版为例,它的数码管采用共阴极(低电平0)连接,所以如果我们想让一个数码管显示数字6,就应当在相应段选位设置为高电平(1),其余设置为低电平(0),如图所示:

image-20241127184928608点击并拖拽以移动编辑

下图是共阴极数码管显示0-F对应的编码(表中省略了dp段0):

image-20241127185200447点击并拖拽以移动编辑

74HC138译码器简介

作用:节省单片机I/O口

image-20241127185807057点击并拖拽以移动编辑

//这里结合两张图片一起介绍
// P2_4 = 1;P2_3 = 1;P2_2 = 1;  控制LED8 
// P2_4 = 1;P2_3 = 1;P2_2 = 0;  控制LED7 
// P2_4 = 1;P2_3 = 0;P2_2 = 1;  控制LED6 
// P2_4 = 1;P2_3 = 0;P2_2 = 0;  控制LED5 
// P2_4 = 0;P2_3 = 1;P2_2 = 1;  控制LED4 
// P2_4 = 0;P2_3 = 1;P2_2 = 0;  控制LED3 
// P2_4 = 0;P2_3 = 0;P2_2 = 1;  控制LED2 
// P2_4 = 0;P2_3 = 0;P2_2 = 0;  控制LED1

点击并拖拽以移动

image-20241127190621212点击并拖拽以移动编辑

到此知识准备结束,现在可以编写第一个程序了。

静态数码管显示

#include<regx52.h>unsigned char Table[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F}; // 数组,定义数字0~9段选void SMG(unsigned char Location,Number) // 定义函数,参数Location是位选,Number段选控制显示的数字。
{switch(Location) // 位选{case 1 : P2_4 = 1;P2_3 = 1;P2_2 = 1;break;case 2 : P2_4 = 1;P2_3 = 1;P2_2 = 0;break;case 3 : P2_4 = 1;P2_3 = 0;P2_2 = 1;break;case 4 : P2_4 = 1;P2_3 = 0;P2_2 = 0;break;case 5 : P2_4 = 0;P2_3 = 1;P2_2 = 1;break;case 6 : P2_4 = 0;P2_3 = 1;P2_2 = 0;break;case 7 : P2_4 = 0;P2_3 = 0;P2_2 = 1;break;case 8 : P2_4 = 0;P2_3 = 0;P2_2 = 0;break;}P0 = Table[Number]; // 段选
}void main()
{
//	P2_2 = 1;  // 这是我做的小实验,不要过多关注
//	P2_3 = 1;
//	P2_4 = 0;
//	P0 = 0X7D; // 这块板子共阴极数码管,38译码器和SMG都是从下往上数	while(1){SMG(5,6); // 第五位显示数字6}
}

点击并拖拽以移动

实验现象:(Proteus仿真中P0端口要有个上拉电阻,这里没截到)

image-20241127202746210点击并拖拽以移动编辑

动态数码管显示

原理:快速扫描逐个显示,利用人眼的余辉效应显示多个数码管,实际上在一个时刻内只有一个数码管点亮。

#include<regx52.h>unsigned char Table[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};void Delay(unsigned int n)  // 延时函数
{unsigned char j;while(n--){for(j = 0; j< 113; j++);}
}void SMG(unsigned char Location,Number)
{switch(Location) // 段选{case 1 : P2_4 = 1;P2_3 = 1;P2_2 = 1;break;case 2 : P2_4 = 1;P2_3 = 1;P2_2 = 0;break;case 3 : P2_4 = 1;P2_3 = 0;P2_2 = 1;break;case 4 : P2_4 = 1;P2_3 = 0;P2_2 = 0;break;case 5 : P2_4 = 0;P2_3 = 1;P2_2 = 1;break;case 6 : P2_4 = 0;P2_3 = 1;P2_2 = 0;break;case 7 : P2_4 = 0;P2_3 = 0;P2_2 = 1;break;case 8 : P2_4 = 0;P2_3 = 0;P2_2 = 0;break;}P0 = Table[Number];			// 位选Delay(1);					// 数码管显示1ms后关闭P0 = 0X00;					// 消影清零,防止上次的数据窜位重影
}
void main()
{while(1){SMG(1,1); // 位选 段选SMG(2,2);SMG(3,3);}
}

点击并拖拽以移动

实验现象:

动画点击并拖拽以移动编辑

http://www.jsqmd.com/news/69359/

相关文章:

  • 江西过碳酸钠生产厂、浙江过碳酸钠生产厂名单精选
  • 江西成膜助剂生产厂、浙江成膜助剂生产厂家精选名单
  • 使用VSCode开发ESP32单片机基于MicroPython-12.8
  • 细胞因子:细胞信使的分子世界与功能解析
  • DBLens 连接数怎么限制?免费 3 个,订阅随便加
  • 过碳酸钠选购指南:优质厂家推荐及欧盟标准供应商盘点
  • 轮询相关算法
  • 数据仓库和数据集市之ODS、CDM、ADS、DWD、DWS - 教程
  • 成膜助剂代理商有哪些?成膜助剂全攻略:成膜助剂进口CIF价格供应商
  • 过碳酸钠供应商大全:实力厂家、制造商及优质批发商推荐指南
  • 完整教程:读后感:《解析极限编程:拥抱变化》
  • 托福备考黄金期,如何精准锁定高性价比机构?
  • 2025托福培训机构怎么选?6大高性价比机构测评+避坑指南
  • 华为fusion-compute-8.x安装
  • 2025年12月广州番禺佛山网站建设,营销网站建设,网站建设推广公司品牌推荐,定制能力与交付效率三维测评
  • 2025雅思一对一机构推荐排行榜:精准提分攻略,考研必看!
  • 2025 雅思报班全攻略:红榜机构测评 + 避坑指南,帮你精准选对课程
  • 2025年12月深圳公装装修公司最新推荐:深圳办公室装修设计、深圳酒店装修设计、深圳展厅装修设计、深圳写字楼装修设计、深圳厂房装修设计、深圳公寓装修设计、八匹马装饰成企业优选
  • GNOME Shell扩展推荐
  • 2025年必备:全国优质租车公司联系电话榜单,包头市租车需要多少钱技术领航,品质之选
  • 2025年12月东莞短视频运营,短视频矩阵,短视频拍摄公司推荐:行业测评与获客指南
  • 2025年12月上海家用软水机厂家标杆推荐:GOOTHO库硕,中央软水机、小型软水机、软水机迷你、软水机家用家庭版、全品类软水解决方案适配多样家庭需求
  • 12月8日总结 - 作业----
  • Redis 数据结构与典型业务映射——五大结构与 Bitmap/HyperLogLog 的适配场景地图
  • 微信小工具的uniapp-vue社团活动管理的高效的系统yagfy
  • 2025雅思报班攻略:高性价比机构+选课避坑指南,帮你精准提分!
  • 解决conda报错:ImportError: cannot import name ‘JSONDecodeError‘ from ‘requests.exceptions‘
  • 「Fire Ball」
  • AI训练成本优化,腾讯云GPU实例选型 - 详解
  • 仿everything制作搞笑检索设计(是的,我没有打错字)