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

【C51】单片机与LED数码管的动态显示接口案例分析

    当显示位数较多时,静态显示所需的I/O口太多,这时常采用动态显示方式。动态显示方式是将所以LED数码管的段码端的相应段并接在一起,由一个8位I/O口控制,而各位显示位的公共端分别由I/O线控制,称为位选端。 

需求:运用51单片机实现8位8段数码管的动态数字显示,LE数码管的段选信号由51单片机的P0口控制,LED数码管的位选信号由51单片机P2口的低3位控制,8位LED数码管显示0-7这8个十进制数。

效果:

动态数码管

代码:

#include<reg52.h>
#define uchar unsigned char
uchar code  seg[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义了一个名为seg的数组,存储了共阴极数码管显示 0 - 9 数字所需的段码
uchar dis[8]={0,1,2,3,4,5,6,7}; //定义了一个名为dis的数组,可能用于选择数码管的位。这里初始化为 0 - 7

//.延时函数
void delayms(uchar ms)    		
{
  	uchar i;
  	while(ms--)
  	for(i=0;i<123;i++);
}

//主函数
void main(void)
{   
	unsigned char i;
   	while(1)
   	{  for (i=0;i<8;i++)
			{
     	 P0=seg[i];//将seg[i]赋值给P0口。这里P0口可能连接数码管的段选引脚,用于控制数码管显示的数字
			 P2=dis[i];//将dis[i]赋值给P2口。这里P2口可能连接数码管的位选引脚,用于选择要显示的数码管。
				delayms(3);
   	}
	}
}


http://www.kler.cn/a/414956.html

相关文章:

  • 优先算法 —— 双指针系列 - 快乐数
  • Vue构建错误解决:(error TS6133)xxx is declared but its value is never read.
  • vs 项目属性表
  • OpenCV相机标定与3D重建(7)鱼眼镜头立体校正的函数stereoRectify()的使用
  • Elasticsearch:Retrievers 介绍
  • 二,[ACTF2020 新生赛]Include1感谢 Y1ng 师傅供题。
  • ctfshow -web -118-124
  • node + Redis + svg-captcha 实现验证码
  • 大模型实操六、基于华为盘古大模型的基础文本处理(文本摘要、情感分析、关键词提取)
  • 使用经典的Java,还是拥抱新兴的Rust?
  • chapter05-Shell编程之免交互笔记
  • 【MySQL】MySQL中的函数之JSON_ARRAY_INSERT
  • 网络原理(一)—— http
  • Spring Web MVC(详解中)
  • 链表内指定区间反转
  • 如何使用 python 中 pandas 进行数据分析?
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
  • Git仓库迁移到远程仓库(源码、分支、提交)
  • CVE-2022-24124
  • OGRE 3D----3. OGRE绘制自定义模型
  • Centos 使用宝塔安装mysql详细步骤
  • 【第十一课】Rust并发编程(二)
  • Linux(ubuntu)系统的一些基本操作和命令(持续更新)
  • 平安科技大数据面试题及参考答案
  • React前端面试题详解(一)
  • 泷羽sec---shell作业